⬇ 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 mixvalue
win rate44%
target / stop / EOD4298 / 7019 / 5832
avg win / avg loss+0.96 / -0.83
profit-loss ratio1.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.

daymodegatedavg Rwin%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.

slicenotenday-avg Rtrade-avg Rwin%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)
bucketnday-avg Rwin%
q1 (low)2713 -0.13 38%
q22945 -0.12 41%
q32823 -0.11 41%
q42785 -0.06 42%
q5 (high)2866 -0.01 46%
R:R ✓stable rho/day: ++++·+++· (mean +0.10) (win 1.38 vs loss 1.38)
bucketnday-avg Rwin%
q1 (low)3433 -0.05 43%
q23430 -0.05 42%
q33430 -0.00 45%
q43430 +0.02 46%
q5 (high)3426 +0.01 45%
turn bars rho/day: ++−+++− (mean +0.09) (win 90.04 vs loss 87.57)
bucketnday-avg Rwin%
q1 (low)2820 -0.05 42%
q22829 -0.14 38%
q32830 -0.06 43%
q42822 -0.09 43%
q5 (high)2831 -0.10 42%
price above rho/day: −−−−+−−−+ (mean -0.07) (win 0.16 vs loss 0.16)
bucketnday-avg Rwin%
q1 (low)3433 +0.02 44%
q23430 -0.01 44%
q33430 -0.03 43%
q43430 -0.01 45%
q5 (high)3426 -0.05 44%
ema-vwap sep rho/day: −−·−+−−−+ (mean -0.06) (win 0.02 vs loss 0.02)
bucketnday-avg Rwin%
q1 (low)3433 +0.02 46%
q23430 -0.01 44%
q33430 -0.03 44%
q43430 -0.01 45%
q5 (high)3426 -0.05 43%
VWAP crossings (chop) rho/day: ++−+++− (mean +0.04) (win 4.19 vs loss 4.19)
bucketnday-avg Rwin%
q1 (low)2880 -0.02 44%
q22471 -0.09 41%
q33458 -0.10 40%
q42536 -0.10 41%
q5 (high)2787 -0.10 43%
day move % rho/day: ·−−++−·−− (mean -0.03) (win 0.02 vs loss 0.07)
bucketnday-avg Rwin%
q1 (low)3433 +0.06 48%
q23430 -0.06 42%
q33430 -0.03 44%
q43430 -0.02 44%
q5 (high)3426 -0.03 44%
efficiency ratio rho/day: −−+·−−+ (mean -0.01) (win 0.28 vs loss 0.26)
bucketnday-avg Rwin%
q1 (low)2829 -0.12 41%
q22826 -0.13 39%
q32827 -0.08 42%
q42826 -0.04 44%
q5 (high)2824 -0.05 43%
CumRVOL (in-play) rho/day: +·−·+·· (mean +0.01) (win 1.05 vs loss 1.03)
bucketnday-avg Rwin%
q1 (low)2829 -0.04 43%
q22826 -0.11 40%
q32827 -0.08 42%
q42826 -0.10 42%
q5 (high)2824 -0.10 42%
vol trend rho/day: ·−·+··−++ (mean +0.01) (win 0.35 vs loss 0.27)
bucketnday-avg Rwin%
q1 (low)3433 -0.03 43%
q23430 -0.03 44%
q33517 -0.03 44%
q43343 +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)
bucketnday-avg Rwin%
q1 (low)2825 -0.06 43%
q22829 -0.09 41%
q32831 -0.10 41%
q42831 -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)
bucketnday-avg Rwin%
low4094 -0.10 40%
mid4058 -0.10 42%
high5980 -0.07 42%
SPY first-30m ret regime — day-level, needs many days; pooled terciles, no flags (win 0.05 vs loss 0.04)
bucketnday-avg Rwin%
low4094 -0.10 40%
mid3971 -0.17 39%
high6067 -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/daytradesday-avg Rliftpos days
top 1070 +0.017 +0.104 4/7
top 20140 +0.065 +0.152 4/7
top 30210 +0.016 +0.103 3/7
rank by rr (base day-avg -0.016)
top N/daytradesday-avg Rliftpos days
top 1090 +0.280 +0.296 6/9
top 20180 +0.001 +0.018 4/9
top 30270 +0.006 +0.022 4/9
rank by cum_rvol (base day-avg -0.087)
top N/daytradesday-avg Rliftpos days
top 1070 -0.029 +0.058 4/7
top 20140 -0.063 +0.025 3/7
top 30210 -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 windownwin% day-avg Rtrade-avg Rmed 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.

daynavg Rtotal R
2026-07-152027 -0.05 -109.3
2026-07-141940 -0.19 -377.1
2026-07-132031 -0.15 -296.1
2026-07-102209 -0.06 -132.8
2026-07-092072 +0.09 +195.4
2026-07-081968 -0.12 -232.0
2026-07-071885 -0.13 -250.6
2026-07-061779 +0.19 +346.2
2026-07-021238 +0.27 +334.4