⬇ DB
Sweeper — 1-min cross analysis
DB: /database/signals.db
Day-weighted edge:
-0.016 R
/trade · 17149 graded, 9 days, 3/9 positive
Day-weighted is the honest number — trade-weighted (-0.030) lets one busy day dominate.
Strip the 2 best days (2026-07-06, 2026-07-02):
-0.085 R — if this collapses, the edge is just a few lucky days.
⚠ Only 9 day(s) of data — far too few to conclude anything. Collecting.
| outcome mix | value |
| win rate | 44% |
| target / stop / EOD | 4298 / 7019 / 5832 |
| avg win / avg loss | +0.96 / -0.83 |
| profit-loss ratio | 1.17 |
| total R | -521.8 |
| opportunity (MFE) | value |
| median peak reached | +0.61 R |
| mean peak reached | +0.72 R |
| MFE = how high it ran (ceiling you can't fully capture). If median MFE ≫ avg win, the target may be too tight. |
The gate — the tradeable 5–15/day slice (log-only)
A cross gates iff: fired 10:00-14:00 ET · not extended (price_above below the running
80th pct) · rr above the running 99th pct of in-window crosses (~top 10 of ~1,000) ·
≤15/day. Pools seeded from the prior session's window. fwd rows
were stamped live at scan time — the honest forward record; sim rows are the same
code replayed over pre-gate history (in-sample calibration, don't bank it). No orders —
flag only.
| day | mode | gated | avg R | win% | day base R |
| 2026-07-16 |
fwd |
0 |
— |
— |
— |
| 2026-07-15 |
fwd |
11 |
+0.022 |
36% |
-0.054 |
| 2026-07-14 |
fwd |
12 |
-0.369 |
25% |
-0.194 |
| 2026-07-13 |
fwd |
10 |
-0.063 |
50% |
-0.146 |
| 2026-07-10 |
fwd |
10 |
-0.537 |
10% |
-0.060 |
| 2026-07-09 |
sim |
12 |
-0.063 |
58% |
+0.094 |
| 2026-07-08 |
sim |
11 |
-0.251 |
45% |
-0.118 |
| 2026-07-07 |
sim |
6 |
+0.073 |
50% |
-0.133 |
| 2026-07-06 |
sim |
15 |
+0.612 |
80% |
+0.195 |
| 2026-07-02 |
sim |
15 |
+0.349 |
67% |
+0.270 |
| day-weighted |
-0.025 |
4/9 days positive |
Research candidates — B/C/D forward-test slices
These are log-only comparison slices for improving the 1-minute shortlist, measured at
arrival time so they match what could actually be selected live:
B = 10:30-14:00 top 10 by heuristic score, C = 12:00-14:00 with
rr >= 1.4, D = 10:30-14:00 score >= 50. New days stamp arrival fields once;
older unstamped rows are replayed through the same pure scorer for calibration.
| slice | note | n | day-avg R | trade-avg R | win% | pos days |
| Arrival B: 10:30-14 top 10 score |
ranked shortlist |
258 |
+0.131 |
+0.036 |
48% |
6/9 |
| Arrival C: 12-14 rr>=1.4 |
simple prime-window rule |
2402 |
+0.038 |
+0.003 |
47% |
5/9 |
| Arrival D: score>=50 |
heuristic multi-factor score |
630 |
+0.174 |
+0.172 |
53% |
7/9 |
Which indicators separate winners from losers?
Buckets are within-day percentile quintiles (q1 = the day's lowest 20% by
the feature, q5 = highest) with day-weighted avg R — pooled cutpoints let
day-regime drift decide bucket membership; within-day ranking can't be fooled
that way and boundaries don't move as data accumulates. ✓stable = per-day
Spearman(feature, R) kept its sign across days (one dissent allowed; near-zero
days abstain) — the flag that matters. The rho string shows each day's sign
(+/−/·). ✓monotonic = quintile avg R moves one way across all 5 bins. Sorted
best-first. All IN-SAMPLE — a candidate to test out-of-sample, not proof.
| closes above EMA ✓stable ✓monotonic
rho/day:
+···+++
(mean +0.03)
(win 0.59 vs loss 0.58) |
| bucket | n | day-avg R | win% |
| q1 (low) | 2713 |
-0.13 |
38% |
| q2 | 2945 |
-0.12 |
41% |
| q3 | 2823 |
-0.11 |
41% |
| q4 | 2785 |
-0.06 |
42% |
| q5 (high) | 2866 |
-0.01 |
46% |
| R:R ✓stable
rho/day:
++++·+++·
(mean +0.10)
(win 1.38 vs loss 1.38) |
| bucket | n | day-avg R | win% |
| q1 (low) | 3433 |
-0.05 |
43% |
| q2 | 3430 |
-0.05 |
42% |
| q3 | 3430 |
-0.00 |
45% |
| q4 | 3430 |
+0.02 |
46% |
| q5 (high) | 3426 |
+0.01 |
45% |
| turn bars
rho/day:
++−+++−
(mean +0.09)
(win 90.04 vs loss 87.57) |
| bucket | n | day-avg R | win% |
| q1 (low) | 2820 |
-0.05 |
42% |
| q2 | 2829 |
-0.14 |
38% |
| q3 | 2830 |
-0.06 |
43% |
| q4 | 2822 |
-0.09 |
43% |
| q5 (high) | 2831 |
-0.10 |
42% |
| price above
rho/day:
−−−−+−−−+
(mean -0.07)
(win 0.16 vs loss 0.16) |
| bucket | n | day-avg R | win% |
| q1 (low) | 3433 |
+0.02 |
44% |
| q2 | 3430 |
-0.01 |
44% |
| q3 | 3430 |
-0.03 |
43% |
| q4 | 3430 |
-0.01 |
45% |
| q5 (high) | 3426 |
-0.05 |
44% |
| ema-vwap sep
rho/day:
−−·−+−−−+
(mean -0.06)
(win 0.02 vs loss 0.02) |
| bucket | n | day-avg R | win% |
| q1 (low) | 3433 |
+0.02 |
46% |
| q2 | 3430 |
-0.01 |
44% |
| q3 | 3430 |
-0.03 |
44% |
| q4 | 3430 |
-0.01 |
45% |
| q5 (high) | 3426 |
-0.05 |
43% |
| VWAP crossings (chop)
rho/day:
++−+++−
(mean +0.04)
(win 4.19 vs loss 4.19) |
| bucket | n | day-avg R | win% |
| q1 (low) | 2880 |
-0.02 |
44% |
| q2 | 2471 |
-0.09 |
41% |
| q3 | 3458 |
-0.10 |
40% |
| q4 | 2536 |
-0.10 |
41% |
| q5 (high) | 2787 |
-0.10 |
43% |
| day move %
rho/day:
·−−++−·−−
(mean -0.03)
(win 0.02 vs loss 0.07) |
| bucket | n | day-avg R | win% |
| q1 (low) | 3433 |
+0.06 |
48% |
| q2 | 3430 |
-0.06 |
42% |
| q3 | 3430 |
-0.03 |
44% |
| q4 | 3430 |
-0.02 |
44% |
| q5 (high) | 3426 |
-0.03 |
44% |
| efficiency ratio
rho/day:
−−+·−−+
(mean -0.01)
(win 0.28 vs loss 0.26) |
| bucket | n | day-avg R | win% |
| q1 (low) | 2829 |
-0.12 |
41% |
| q2 | 2826 |
-0.13 |
39% |
| q3 | 2827 |
-0.08 |
42% |
| q4 | 2826 |
-0.04 |
44% |
| q5 (high) | 2824 |
-0.05 |
43% |
| CumRVOL (in-play)
rho/day:
+·−·+··
(mean +0.01)
(win 1.05 vs loss 1.03) |
| bucket | n | day-avg R | win% |
| q1 (low) | 2829 |
-0.04 |
43% |
| q2 | 2826 |
-0.11 |
40% |
| q3 | 2827 |
-0.08 |
42% |
| q4 | 2826 |
-0.10 |
42% |
| q5 (high) | 2824 |
-0.10 |
42% |
| vol trend
rho/day:
·−·+··−++
(mean +0.01)
(win 0.35 vs loss 0.27) |
| bucket | n | day-avg R | win% |
| q1 (low) | 3433 |
-0.03 |
43% |
| q2 | 3430 |
-0.03 |
44% |
| q3 | 3517 |
-0.03 |
44% |
| q4 | 3343 |
+0.02 |
46% |
| q5 (high) | 3426 |
-0.01 |
44% |
| first-5min RVOL (in-play)
rho/day:
·+·−·+−
(mean -0.00)
(win 1.02 vs loss 1.03) |
| bucket | n | day-avg R | win% |
| q1 (low) | 2825 |
-0.06 |
43% |
| q2 | 2829 |
-0.09 |
41% |
| q3 | 2831 |
-0.10 |
41% |
| q4 | 2831 |
-0.05 |
44% |
| q5 (high) | 2816 |
-0.13 |
39% |
| VIX level (regime) regime — day-level, needs many days; pooled terciles, no flags
(win 16.40 vs loss 16.40) |
| bucket | n | day-avg R | win% |
| low | 4094 |
-0.10 |
40% |
| mid | 4058 |
-0.10 |
42% |
| high | 5980 |
-0.07 |
42% |
| SPY first-30m ret regime — day-level, needs many days; pooled terciles, no flags
(win 0.05 vs loss 0.04) |
| bucket | n | day-avg R | win% |
| low | 4094 |
-0.10 |
40% |
| mid | 3971 |
-0.17 |
39% |
| high | 6067 |
-0.03 |
44% |
If you took only the top N per day (by feature)
With ~1500 crosses/day, RANKING each day and taking the best N adapts to the day
far better than a fixed threshold (the "stocks in play" approach). Shows the
day-weighted avg R of the top-N slice + lift over the base rate. A
real filter shows positive lift that GROWS as N shrinks (the very best are best).
| rank by first5_rvol (base day-avg -0.087) |
| top N/day | trades | day-avg R | lift | pos days |
| top 10 | 70 |
+0.017 |
+0.104 |
4/7 |
| top 20 | 140 |
+0.065 |
+0.152 |
4/7 |
| top 30 | 210 |
+0.016 |
+0.103 |
3/7 |
| rank by rr (base day-avg -0.016) |
| top N/day | trades | day-avg R | lift | pos days |
| top 10 | 90 |
+0.280 |
+0.296 |
6/9 |
| top 20 | 180 |
+0.001 |
+0.018 |
4/9 |
| top 30 | 270 |
+0.006 |
+0.022 |
4/9 |
| rank by cum_rvol (base day-avg -0.087) |
| top N/day | trades | day-avg R | lift | pos days |
| top 10 | 70 |
-0.029 |
+0.058 |
4/7 |
| top 20 | 140 |
-0.063 |
+0.025 |
3/7 |
| top 30 | 210 |
-0.130 |
-0.042 |
2/7 |
By time of day
The OPEN is noisiest: EMA & VWAP both start ~= the first price, so early "crosses"
are two near-identical lines grazing on noise (not a real EMA-below-then-above
setup — hence low sep). If the 09:30-09:45 bucket has weak/negative day-weighted R
and tiny median sep, those crosses are junk worth filtering. Day-weighted.
| session window | n | win% |
day-avg R | trade-avg R | med sep |
| 09:30-09:45 (open noise) |
3520 |
43% |
-0.026 |
-0.024 |
0.020 |
| 09:45-10:30 (morning) |
4066 |
40% |
-0.124 |
-0.101 |
0.014 |
| 10:30-12:00 (late morning) |
3396 |
44% |
-0.040 |
-0.025 |
0.010 |
| 12:00-14:00 (midday lull) |
3051 |
48% |
+0.033 |
+0.019 |
0.007 |
| 14:00-15:30 (afternoon) |
2117 |
48% |
-0.002 |
-0.011 |
0.007 |
| 15:30-16:00 (power hour) |
999 |
51% |
+0.026 |
+0.022 |
0.009 |
Per-day breakdown
Every day's avg R — so concentration (a few days carrying the edge) is impossible to hide.
| day | n | avg R | total R |
| 2026-07-15 | 2027 |
-0.05 |
-109.3 |
| 2026-07-14 | 1940 |
-0.19 |
-377.1 |
| 2026-07-13 | 2031 |
-0.15 |
-296.1 |
| 2026-07-10 | 2209 |
-0.06 |
-132.8 |
| 2026-07-09 | 2072 |
+0.09 |
+195.4 |
| 2026-07-08 | 1968 |
-0.12 |
-232.0 |
| 2026-07-07 | 1885 |
-0.13 |
-250.6 |
| 2026-07-06 | 1779 |
+0.19 |
+346.2 |
| 2026-07-02 | 1238 |
+0.27 |
+334.4 |