⬇ DB

Sweeper — scalp eval

DB: /database/signals.db
Out-of-sample gate edge: -0.029 R /trade · 21 trades, 12 target-hits, 8 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-06): -0.092 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-15 direction
vol_relative -0.471 -0.466 lower → win
vwap_slope_fit -0.135 -0.013 lower → win
pre_cross_depth +0.102 -0.021 higher → win
vol_trend +0.100 +0.083 higher → win
vwap_slope_pct +0.075 -0.021 higher → win
vol_cum_dollar +0.065 -0.008 higher → win
atr_pct -0.054 +0.016 lower → win
stop_atr_mult +0.039 -0.053 higher → win
ema_slope_pct +0.033 -0.002 higher → win
adx -0.033 +0.002 lower → win

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

Out-of-sample verdictno out-of-sample lift
combination testedvol_relative, vwap_slope_fit, pre_cross_depth, vol_trend
trained / tested on8 day(s) → 4 held-out day(s)
base win-rate (test)36%
flagged-promising win-rate41% on 179 flagged
lift (flagged − base)+5 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). 12 day(s) of data.

gatetrades/daywin% avg Rnet R days+ total Rtradeable?
score ≥ 60 (v1)
v1 model-score gate
16.0 52% +0.16 +0.13 8/12 +30.4R ✓ trade
score_v2 ≥ 60
combo-finder model (strict)
4.8 31% +0.17 +0.14 3/7 +9.6R net+, freq off
score_v2 ≥ 55
combo-finder model (looser)
7.3 25% +0.07 +0.04 2/9 +6.6R net+, freq off
current (slope>0 + room>1%)
the live gate
152.5 44% -0.02 -0.05 5/12 -35.9R
current + trend + SPY
trending day AND market with us
3.3 48% -0.02 -0.05 2/3 -0.8R
no gate (all crosses)
baseline — every raw cross
315.9 42% -0.05 -0.08 3/12 -184.9R

Equity curve — score ≥ 60 (v1)

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 32 +25.18 +25.2R ████····································
2026-06-30 15 +0.52 +25.7R ██████··································
2026-07-01 16 +0.94 +26.6R ███████████·····························
2026-07-02 21 +0.24 +26.9R █████████████···························
2026-07-06 8 +4.70 +31.6R ██████████████████████████████████████··
2026-07-07 34 -7.05 +24.5R ········································
2026-07-08 28 +6.52 +31.0R ███████████████████████████████████·····
2026-07-09 5 +0.88 +31.9R ████████████████████████████████████████
2026-07-10 5 -3.65 +28.3R ████████████████████····················
2026-07-13 7 +0.81 +29.1R █████████████████████████···············
2026-07-14 16 -4.28 +24.8R ██······································
2026-07-15 5 -0.18 +24.6R █·······································
total (192 trades) +24.6R

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-15 260 24% +0.06 67% n=3 26% n=38 23% n=219 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-15 260 -0.44 5 40% -0.01 3 67% +0.04 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=3791
v2 ≥ 45
n=303
v2 ≥ 50
n=160
v2 ≥ 55
n=88
v2 ≥ 60
n=58
v2 ≥ 65
n=31
v2 ≥ 70
n=19
measured-move (original) -0.08 42% +0.01 34% +0.08 31% +0.04 25% +0.14 31% +0.28 35% +0.35 42%
0.50× -0.08 77% -0.08 60% -0.03 55% -0.06 50% -0.06 48% -0.02 39% -0.04 47%
0.75× -0.08 71% -0.07 52% -0.04 44% -0.09 35% -0.07 36% +0.02 39% +0.01 47%
1.00× -0.08 66% -0.06 48% -0.05 39% -0.10 32% -0.06 34% +0.02 35% -0.01 42%
1.50× -0.07 58% -0.03 42% -0.01 36% -0.06 28% -0.01 33% +0.08 35% +0.07 42%
2.00× (live) -0.07 51% -0.02 37% +0.01 32% -0.03 27% +0.03 31% +0.15 35% +0.16 42%
2.50× -0.07 47% +0.02 36% +0.05 31% +0.01 26% +0.08 31% +0.22 35% +0.24 42%
3.00× -0.07 44% +0.02 34% +0.05 29% +0.04 25% +0.14 31% +0.28 35% +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 crosses3791 / 3803
expectancy — avg R-0.05
win rate (R > 0)42.0%
total R-184.94
target / stop / EOD865 / 1458 / 1468
EOD share39%
score v1 ≥ 60value
v1 model gate
graded crosses192 / 194
expectancy — avg R+0.16
win rate (R > 0)52.1%
total R+30.40
target / stop / EOD40 / 27 / 125
EOD share65%
score v2 ≥ 60value
v2 (combo-finder) gate
graded crosses58 / 59
expectancy — avg R+0.17
win rate (R > 0)31.0%
total R+9.58
target / stop / EOD13 / 8 / 37
EOD share64%
slope+room gatevalue
the live gate: ema_slope > 0 · room > 1%
graded crosses1830 / 1833
expectancy — avg R-0.02
win rate (R > 0)43.9%
total R-35.89
target / stop / EOD300 / 510 / 1020
EOD share56%

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: 12.