⬇ DB

Sweeper — scalp eval

DB: /database/signals.db
Out-of-sample gate edge: -0.015 R /trade · 24 trades, 13 target-hits, 9 days
This is the honest number — each day scored by a model trained ONLY on prior days (the in-sample gated stats below are circular: score_v2 was fit on the crosses it gates). Stripping the 2 best days (2026-07-14, 2026-07-16): -0.063 R — the concentration check.
⚠ No out-of-sample edge yet. Do NOT trade real capital on the in-sample numbers. Watch this climb positive (and the target-hit count grow 3-4×) before it's proven — that's the gate for a live-data subscription.

Which combination flags a promising cross?

A logistic model ranks which of the ~18 logged columns carry weight for predicting a WIN (resolved target/stop only). Big |weight| = signal; near-zero = noise/redundant. But the ranking is IN-SAMPLE — a candidate list, not a verdict. The verdict is the out-of-sample test below.

featureweight Δ vs 2026-07-16 direction
vol_relative -0.444 -0.425 lower → win
vwap_slope_fit -0.127 -0.019 lower → win
stop_atr_mult +0.108 -0.083 higher → win
vol_trend +0.090 +0.067 higher → win
pre_cross_depth +0.080 -0.033 higher → win
vol_cum_dollar +0.063 -0.012 higher → win
atr_pct -0.060 +0.024 lower → win
vwap_slope_pct +0.059 -0.055 higher → win
score +0.039 -0.006 higher → win
ema_slope_pct +0.039 -0.006 higher → win

4136 resolved crosses, 1804 winners · IN-SAMPLE feature weights — a candidate ranking, NOT a verdict.
Δ = shift since the 2026-07-16 snapshot (amber if |Δ|≥0.05). Stable weights = a real signal; big swings = regime-dependent.

Out-of-sample verdictHELPS out-of-sample
combination testedvol_relative, vwap_slope_fit, stop_atr_mult, vol_trend
trained / tested on10 day(s) → 4 held-out day(s)
base win-rate (test)42%
flagged-promising win-rate52% on 128 flagged
lift (flagged − base)+10 pts

Gate board — which gate to trade?

Candidate gates side by side on the axes that decide tradeability. A gate qualifies (green ✓) when its expectancy is positive net of cost, it trades in your 10–20 trades/day band, and it was net-positive on a majority of days. Resolved trades only (target/stop). Cost = 0.03R/trade — this is slippage (Alpaca fees are ~0: no commission, TAF ≈0.0003R). ~1c/side ≈ 0.02R at typical risk. (0.02 · 0.03 · 0.05 · 0.10). 14 day(s) of data.

gatetrades/daywin% avg Rnet R days+ total Rtradeable?
score ≥ 60 (v1)
v1 model-score gate
14.9 54% +0.18 +0.15 9/13 +37.6R ✓ trade
score_v2 ≥ 60
combo-finder model (strict)
4.1 29% +0.16 +0.13 2/8 +9.1R net+, freq off
score_v2 ≥ 55
combo-finder model (looser)
6.4 26% +0.07 +0.04 2/10 +6.4R net+, freq off
current (slope>0 + room>1%)
the live gate
145.7 47% +0.02 -0.01 6/13 +36.8R
current + trend + SPY
trending day AND market with us
2.9 48% -0.02 -0.05 2/3 -0.8R
no gate (all crosses)
baseline — every raw cross
295.4 44% -0.03 -0.06 4/13 -109.8R

Equity curve — current + trend + SPY

Running cumulative R (net of 0.03R/trade) for the chosen gate, plus each day's R. A steady climb = a real edge; a jagged line carried by one day = luck. Pick a gate: score · score_v2 · score_v2 · current · current · no

daytradesday Rcumulative Rcurve
2026-06-29 9 +0.45 +0.5R ██████████████████······················
2026-06-30 24 +2.96 +3.4R ████████████████████████████████████████
2026-07-01 7 -5.42 -2.0R ········································
total (40 trades) -2.0R

Does score v2 work? — per day

Tracks whether score v2 (the combo-finder model) predicts out-of-sample, each session. A working day: the ≥60 band wins more than the <40 band and the corr (score↔win) is positive. A flat/negative day = v2 isn't generalizing yet. Settled = any graded outcome (EOD counted at close). Watch the pattern across days — one day proves nothing.

daysettledwin% corr ≥6040–59<40 verdict
2026-07-16 345 61% -0.19 0% n=1 62% n=39 61% n=305 inverted
2026-07-15 260 24% +0.07 50% n=2 27% n=37 23% n=221 flat
2026-07-14 302 35% -0.07 0% n=1 38% n=50 35% n=251 inverted
2026-07-13 282 44% -0.01 0% n=1 41% n=29 44% n=252 flat
2026-07-10 330 40% +0.03 36% n=39 40% n=291 flat
2026-07-09 259 44% +0.01 53% n=34 42% n=225 flat
2026-07-08 332 41% -0.05 41% n=29 41% n=303 inverted
2026-07-07 334 31% +0.05 0% n=1 34% n=70 30% n=263 flat
2026-07-06 320 63% -0.06 66% n=41 63% n=279 inverted
2026-07-02 420 48% -0.43 6% n=36 27% n=119 63% n=265 inverted
2026-07-01 275 33% +0.11 43% n=47 31% n=228 flat
2026-06-30 353 49% +0.01 67% n=3 44% n=39 49% n=311 flat
2026-06-29 324 47% +0.13 92% n=13 52% n=46 44% n=265 works

Day cohorts

Per-session summary, newest first. avg R is the per-trade edge (EOD counted at close value). The v1 and v2 blocks show the two score gates (≥60) per day — watch whether their avg R stays positive across days (a gate that holds day to day is real; one that flips is regime noise).

day all nall avg R v1 n v1 win%v1 avg R v2 n v2 win%v2 avg R t/s/e
2026-07-17 134 5 0 0/0/0
2026-07-16 345 +0.22 16 75% +0.45 1 0% -0.29 86/93/166
2026-07-15 260 -0.44 5 40% -0.01 2 50% -0.03 33/155/72
2026-07-14 302 -0.19 16 25% -0.24 1 0% -0.06 49/124/129
2026-07-13 282 -0.04 7 57% +0.15 1 0% -1.00 65/105/112
2026-07-10 330 -0.14 5 0% -0.70 0 53/118/159
2026-07-09 259 -0.08 5 60% +0.21 0 55/105/99
2026-07-08 332 -0.12 28 64% +0.26 0 58/138/136
2026-07-07 334 -0.28 34 41% -0.18 1 0% -0.70 57/164/113
2026-07-06 320 +0.37 8 88% +0.62 0 117/73/130
2026-07-02 423 +0.29 23 29% +0.04 37 6% -0.07 140/98/182
2026-07-01 278 -0.24 16 44% +0.09 0 54/129/92
2026-06-30 355 +0.07 15 53% +0.06 3 67% +0.25 107/118/128
2026-06-29 328 -0.00 32 84% +0.82 13 92% +0.99 77/131/116

ATR target — which multiple pays best?

The live ATR target = entry + 2.0× ATR (adaptive to each stock's range). This sweeps the multiple by net R (expectancy − 0.03R slippage), per gate. Best per gate marked. Pattern: on ungated crosses tighter is less-bad; on GATED (good) trades expectancy rises with the multiple — good setups run to a wider target. EOD (unreached) counted at 0R (conservative).

target no gate
n=4136
v2 ≥ 45
n=318
v2 ≥ 50
n=163
v2 ≥ 55
n=90
v2 ≥ 60
n=58
v2 ≥ 65
n=32
v2 ≥ 70
n=19
measured-move (original) -0.06 44% +0.04 36% +0.08 31% +0.04 26% +0.13 29% +0.27 34% +0.35 42%
0.50× -0.08 78% -0.07 61% -0.02 56% -0.06 51% -0.06 48% -0.01 41% -0.04 47%
0.75× -0.08 72% -0.06 53% -0.03 45% -0.09 37% -0.07 36% +0.02 38% +0.01 47%
1.00× -0.07 67% -0.05 49% -0.04 40% -0.10 32% -0.07 33% +0.01 34% -0.01 42%
1.50× -0.06 59% -0.02 43% +0.00 37% -0.06 29% -0.02 31% +0.08 34% +0.07 42%
2.00× (live) -0.06 53% -0.00 39% +0.02 33% -0.02 28% +0.02 29% +0.14 34% +0.16 42%
2.50× -0.06 48% +0.03 37% +0.04 32% +0.01 27% +0.08 29% +0.21 34% +0.24 42%
3.00× -0.06 45% +0.03 35% +0.05 30% +0.04 26% +0.13 29% +0.27 34% +0.32 42%

Cell = net R · win%. ◀ / amber outline = the current live setup (2× ATR target, gated score_v2 ≥ 60). Green cell = best net R in that column. Caveat: the score-gated columns are THIN (small n) — the direction (wider helps on gated trades) is the signal; the exact best multiple is noisy until more days accumulate.

Edge check — all vs gated

ALL crossesvalue
every logged cross, unfiltered
graded crosses4136 / 4282
expectancy — avg R-0.03
win rate (R > 0)43.6%
total R-109.75
target / stop / EOD951 / 1551 / 1634
EOD share40%
score v1 ≥ 60value
v1 model gate
graded crosses208 / 215
expectancy — avg R+0.18
win rate (R > 0)53.8%
total R+37.56
target / stop / EOD45 / 27 / 136
EOD share65%
score v2 ≥ 60value
v2 (combo-finder) gate
graded crosses58 / 59
expectancy — avg R+0.16
win rate (R > 0)29.3%
total R+9.10
target / stop / EOD13 / 8 / 37
EOD share64%
slope+room gatevalue
the live gate: ema_slope > 0 · room > 1%
graded crosses2040 / 2136
expectancy — avg R+0.02
win rate (R > 0)46.6%
total R+36.79
target / stop / EOD346 / 539 / 1155
EOD share57%

R = risk multiple (1R = entry→stop distance). avg R = expectancy per cross. Compare each gate's expectancy to ALL to see the lift from filtering — the score gates (esp. v2) should beat both ALL and the slope+room gate. Pending: 146.