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.
| feature | weight | Δ 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.
| combination tested | vol_relative, vwap_slope_fit, stop_atr_mult, vol_trend |
|---|---|
| trained / tested on | 10 day(s) → 4 held-out day(s) |
| base win-rate (test) | 42% |
| flagged-promising win-rate | 52% on 128 flagged |
| lift (flagged − base) | +10 pts |
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.10R/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.
| gate | trades/day | win% | avg R | net R | days+ | total R | tradeable? |
|---|---|---|---|---|---|---|---|
| score ≥ 60 (v1) v1 model-score gate |
14.9 | 54% | +0.18 | +0.08 | 6/13 | +37.6R | net+, freq off |
| score_v2 ≥ 60 combo-finder model (strict) |
4.1 | 29% | +0.16 | +0.06 | 2/8 | +9.1R | net+, freq off |
| score_v2 ≥ 55 combo-finder model (looser) |
6.4 | 26% | +0.07 | -0.03 | 1/10 | +6.4R | — |
| current (slope>0 + room>1%) the live gate |
145.7 | 47% | +0.02 | -0.08 | 5/13 | +36.8R | — |
| current + trend + SPY trending day AND market with us |
2.9 | 48% | -0.02 | -0.12 | 1/3 | -0.8R | — |
| no gate (all crosses) baseline — every raw cross |
295.4 | 44% | -0.03 | -0.13 | 3/13 | -109.8R | — |
Running cumulative R (net of 0.10R/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
| day | trades | day R | cumulative R | curve |
|---|---|---|---|---|
| 2026-06-29 | 13 | +11.63 | +11.6R | ██████████████████████████████████████·· |
| 2026-06-30 | 3 | +0.44 | +12.1R | ████████████████████████████████████████ |
| 2026-07-02 | 36 | -6.05 | +6.0R | ████████████···························· |
| 2026-07-07 | 1 | -0.80 | +5.2R | █████████······························· |
| 2026-07-13 | 1 | -1.10 | +4.1R | ████···································· |
| 2026-07-14 | 1 | -0.16 | +4.0R | ███····································· |
| 2026-07-15 | 2 | -0.26 | +3.7R | ██······································ |
| 2026-07-16 | 1 | -0.39 | +3.3R | ········································ |
| total (58 trades) | +3.3R | |||
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.
| day | settled | win% | corr | ≥60 | 40–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 |
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 n | all 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 |
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.
| ALL crosses | value |
|---|---|
| every logged cross, unfiltered | |
| graded crosses | 4136 / 4282 |
| expectancy — avg R | -0.03 |
| win rate (R > 0) | 43.6% |
| total R | -109.75 |
| target / stop / EOD | 951 / 1551 / 1634 |
| EOD share | 40% |
| score v1 ≥ 60 | value |
|---|---|
| v1 model gate | |
| graded crosses | 208 / 215 |
| expectancy — avg R | +0.18 |
| win rate (R > 0) | 53.8% |
| total R | +37.56 |
| target / stop / EOD | 45 / 27 / 136 |
| EOD share | 65% |
| score v2 ≥ 60 | value |
|---|---|
| v2 (combo-finder) gate | |
| graded crosses | 58 / 59 |
| expectancy — avg R | +0.16 |
| win rate (R > 0) | 29.3% |
| total R | +9.10 |
| target / stop / EOD | 13 / 8 / 37 |
| EOD share | 64% |
| slope+room gate | value |
|---|---|
| the live gate: ema_slope > 0 · room > 1% | |
| graded crosses | 2040 / 2136 |
| expectancy — avg R | +0.02 |
| win rate (R > 0) | 46.6% |
| total R | +36.79 |
| target / stop / EOD | 346 / 539 / 1155 |
| EOD share | 57% |
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.