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-17 | direction |
|---|---|---|---|
| vol_relative | -0.393 | -0.391 | lower → win |
| vwap_slope_fit | -0.105 | -0.005 | lower → win |
| vol_trend | +0.082 | +0.063 | higher → win |
| stop_atr_mult | +0.080 | -0.047 | higher → win |
| atr_pct | -0.064 | +0.028 | lower → win |
| vol_cum_dollar | +0.060 | -0.012 | higher → win |
| pre_cross_depth | +0.056 | -0.021 | higher → win |
| vwap_slope_pct | +0.048 | -0.057 | higher → win |
| ema_slope_pct | +0.042 | -0.000 | higher → win |
| score | +0.041 | -0.012 | higher → win |
4321 resolved crosses, 1858 winners · IN-SAMPLE feature weights — a candidate ranking, NOT a verdict.
Δ = shift since the 2026-07-17 snapshot (amber if |Δ|≥0.05). Stable weights = a real signal; big swings = regime-dependent.
| combination tested | vol_relative, vwap_slope_fit, vol_trend, stop_atr_mult |
|---|---|
| trained / tested on | 10 day(s) → 4 held-out day(s) |
| base win-rate (test) | 40% |
| flagged-promising win-rate | 44% on 171 flagged |
| lift (flagged − base) | +4 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 |
15.3 | 54% | +0.17 | +0.07 | 6/14 | +37.4R | net+, freq off |
| score_v2 ≥ 60 combo-finder model (strict) |
4.2 | 31% | +0.17 | +0.07 | 3/9 | +9.8R | net+, freq off |
| score_v2 ≥ 55 combo-finder model (looser) |
6.5 | 26% | +0.08 | -0.02 | 2/11 | +7.1R | — |
| current (slope>0 + room>1%) the live gate |
155.3 | 46% | -0.01 | -0.11 | 5/14 | -13.6R | — |
| 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 |
308.6 | 43% | -0.04 | -0.14 | 3/14 | -181.4R | — |
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 | 9 | -0.18 | -0.2R | ███████████████████████████████········· |
| 2026-06-30 | 24 | +1.28 | +1.1R | ████████████████████████████████████████ |
| 2026-07-01 | 7 | -5.91 | -4.8R | ········································ |
| total (40 trades) | -4.8R | |||
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-17 | 185 | 29% | +0.17 | 100% n=1 | 52% n=21 | 26% n=163 | works |
| 2026-07-16 | 345 | 61% | -0.21 | 0% n=1 | 56% n=39 | 62% 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 | 185 | -0.39 | 6 | 67% | -0.02 | 1 | 100% | +0.72 | 16/96/73 |
| 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=4321 | v2 ≥ 45 n=323 | v2 ≥ 50 n=165 | v2 ≥ 55 n=91 | v2 ≥ 60 n=59 | v2 ≥ 65 n=33 | v2 ≥ 70 n=20 |
|---|---|---|---|---|---|---|---|
| measured-move (original) | -0.07 43% | +0.03 37% | +0.07 31% | +0.05 26% | +0.14 31% | +0.28 36% | +0.37 45% |
| 0.50× | -0.08 77% | -0.07 61% | -0.04 56% | -0.06 52% | -0.06 49% | -0.01 42% | -0.03 50% |
| 0.75× | -0.08 71% | -0.06 54% | -0.04 45% | -0.09 37% | -0.07 37% | +0.02 39% | +0.01 50% |
| 1.00× | -0.08 66% | -0.05 50% | -0.05 40% | -0.10 33% | -0.07 34% | +0.02 36% | -0.00 45% |
| 1.50× | -0.07 58% | -0.01 44% | -0.01 36% | -0.06 30% | -0.01 32% | +0.08 36% | +0.08 45% |
| 2.00× (live) | -0.07 52% | -0.01 39% | +0.00 33% | -0.03 29% | +0.03 31% ◀ | +0.15 36% | +0.16 45% |
| 2.50× | -0.07 48% | +0.03 38% | +0.03 32% | +0.01 27% | +0.08 31% | +0.21 36% | +0.24 45% |
| 3.00× | -0.07 45% | +0.03 36% | +0.04 30% | +0.04 26% | +0.13 31% | +0.28 36% | +0.33 45% |
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 | 4321 / 4333 |
| expectancy — avg R | -0.04 |
| win rate (R > 0) | 43.0% |
| total R | -181.37 |
| target / stop / EOD | 967 / 1647 / 1707 |
| EOD share | 40% |
| score v1 ≥ 60 | value |
|---|---|
| v1 model gate | |
| graded crosses | 214 / 216 |
| expectancy — avg R | +0.17 |
| win rate (R > 0) | 54.2% |
| total R | +37.43 |
| target / stop / EOD | 45 / 28 / 141 |
| EOD share | 66% |
| score v2 ≥ 60 | value |
|---|---|
| v2 (combo-finder) gate | |
| graded crosses | 59 / 60 |
| expectancy — avg R | +0.17 |
| win rate (R > 0) | 30.5% |
| total R | +9.82 |
| target / stop / EOD | 13 / 8 / 38 |
| EOD share | 64% |
| slope+room gate | value |
|---|---|
| the live gate: ema_slope > 0 · room > 1% | |
| graded crosses | 2174 / 2177 |
| expectancy — avg R | -0.01 |
| win rate (R > 0) | 45.6% |
| total R | -13.61 |
| target / stop / EOD | 352 / 599 / 1223 |
| EOD share | 56% |
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.