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-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.
| combination tested | vol_relative, vwap_slope_fit, pre_cross_depth, vol_trend |
|---|---|
| trained / tested on | 8 day(s) → 4 held-out day(s) |
| base win-rate (test) | 36% |
| flagged-promising win-rate | 41% on 179 flagged |
| lift (flagged − base) | +5 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.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.
| gate | trades/day | win% | avg R | net R | days+ | total R | tradeable? |
|---|---|---|---|---|---|---|---|
| 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 | — |
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
| day | trades | day R | cumulative R | curve |
|---|---|---|---|---|
| 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 | |||
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-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 |
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-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 |
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.
| ALL crosses | value |
|---|---|
| every logged cross, unfiltered | |
| graded crosses | 3791 / 3803 |
| expectancy — avg R | -0.05 |
| win rate (R > 0) | 42.0% |
| total R | -184.94 |
| target / stop / EOD | 865 / 1458 / 1468 |
| EOD share | 39% |
| score v1 ≥ 60 | value |
|---|---|
| v1 model gate | |
| graded crosses | 192 / 194 |
| expectancy — avg R | +0.16 |
| win rate (R > 0) | 52.1% |
| total R | +30.40 |
| target / stop / EOD | 40 / 27 / 125 |
| EOD share | 65% |
| score v2 ≥ 60 | value |
|---|---|
| v2 (combo-finder) gate | |
| graded crosses | 58 / 59 |
| expectancy — avg R | +0.17 |
| win rate (R > 0) | 31.0% |
| total R | +9.58 |
| target / stop / EOD | 13 / 8 / 37 |
| EOD share | 64% |
| slope+room gate | value |
|---|---|
| the live gate: ema_slope > 0 · room > 1% | |
| graded crosses | 1830 / 1833 |
| expectancy — avg R | -0.02 |
| win rate (R > 0) | 43.9% |
| total R | -35.89 |
| target / stop / EOD | 300 / 510 / 1020 |
| 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.