28-Year Backtest: What We Tested (30+ Exit Candidates)

Protocol for every row: no look-ahead (inputs only from completed bars) · consecutive same-signal days counted as one trade · exit at close of t+h · binomial standard error √(p(1−p)/n) on every rate · samples under n<50 stay out of conclusions. Thresholds were fixed before evaluation. Win rate = fraction with forward return < 0 (price dropped) at 20 days.

Baseline (28 years, Dec 1998 → Aug 2026, 8,450 daily bars)

SignalDefinitionn(20d)Rise @20d± SE
BUYdistribution (MFI ≤ 40, RS < 0) + close < lower band2,40362.7%±1.0pp
CONTINUATIONaccumulation (MFI ≥ 60, RS > 0) + close > upper band3,50160.1%±0.8pp

Everything below is measured against these. The exit-search bar: drop > 55%, n > 500.

Every candidate at a glance — rise @20d, colored by family. The dashed zone marks where a publishable SELL would need to land (≤45% rise). the tested field stays comfortably away from it.
SELL gate zone ≤ 45% rise50%BUY62.7 ±1.0 · n=2,403CONTINUATION ★M1 grey 3rd-dayn=495/124 — small-n leadM1d grey→re-greenM2 isolated CM3 MFI green + red voln=354 / 1,283M4 / M4b short-window MFIn=88 / 64 / 47 — n<100A velocity decay ×3B same-bar confirmB prior-warning confirmC regime-weightedR four-condition comboI-SLOT slot volumeI-PH last-hour weaknessI-AVWAP breakI-FLOW day flow ratio391 / 227I-BEAR3 / I-BEAR556.8 — closest, still risesI-CLV5 flow-weighted CLVI-VB volume barsaxis: 0–100% rise @20d · line start at 0%, value at dot · entries (★) · pattern rules · families A–D · intraday

Pattern-based rules (28y daily)

RuleIdean(20d)Drop @20d± SERiseVerdict
M1 grey 3rd-day2 green continuation days, day-3 above band with MFI < 6049537.4%±2.2pp62.6%momentum
M1d grey→re-greengrey break then re-green — trend broken?12433.9%±4.3pp66.1%small-n lead only
M2 isolated Clone continuation <3 in 5 days = exhaustion2,74840.2%±0.9pp59.8%momentum
M3 MFI green + red volhigh volume red candle while MFI still hot2,50840.3%±1.0pp59.7%momentum
M4 / M4b short-window MFIdaily proxy for a fading intraday MFI354 / 1,28339.0 / 39.9%±2.6 / ±1.4pp61.0 / 60.1%momentum

Candidate families A–D (28y daily)

RuleIdean(20d)Drop @20d± SEvs SPYVerdict
A (θ=1.0/1.5/2.0%)RS-velocity decay + MFI≥60 + vol-z>1.5 on a down day88 / 64 / 47~40%±5pp52–56%n<100 — inconclusive
B same-bar / prior-warnstage-1 warning → stage-2 confirm5,562 / 6,01638.0 / 37.9%±0.7 / ±0.6pp51.6 / 51.3%wide coverage, base-rate result
C regime-weightedRISK_ON extra-strict31441.4%±2.8pp52.5%base-rate result
R four-condition comborecommended combo30941.8%±2.8pp52.4%base-rate result

Intraday candidates (2.9y hourly window, complementing the 28y daily view)

RuleIdean(20d)Drop @20d± SEvs SPYVerdict
I-SLOTsame-clock slot vol-z >1.5 on a down bar71537.2%±1.8pp54.1%base-rate result
I-PHlast-hour weakness28630.8%±2.7pp50.7%in line with base rate
I-AVWAP2h close < 20d-high AVWAP50234.9%±2.1pp53.0%base-rate result
I-FLOWsame-day down/up <0.75 (as written)1,27638.9%±1.4pp57.6%base-rate result
I-BEAR3 / I-BEAR53d / 5d down-up ratio >1.4391 / 22734.0 / 37.4%±2.4 / ±3.2pp54.5 / 59.9%base-rate result
I-CLV55d CLV×vol < 052643.2%±2.2pp59.3%closest of the field
I-VBvolume-bar MFI < 5064837.2%±1.9pp56.2%base-rate result

This window is hotter than 28y (CONTINUATION 66.3% ±2.3pp, n=419) — rates are compared within-window only.

D1 — first day of distribution (28y daily)

ScoreWhat it asks@20d± SEn
Dropdid price fall? (the gate)38.5%±1.8pp758
Riseearly-BUY check61.4%±1.8pp758
vs SPYexcess underperformance50.3%±1.8pp758
Underperform peerscross-sectional (≥5 peers)50.9%±1.8pp758
Rank worsensplace number increases31.0%±1.7pp758
Later prints BUYpath note, (t, t+20]57.5%±1.8pp758

Drop declines with horizon (44.3% @5d → 33.6% @60d) — a bounce-shaped profile. D1 reads as an early-BUY: see why it isn't a SELL.

Hourly money-flow variants (2.9y, designs A/B/C)

The same pattern-based rules evaluated on a 1-hour money-flow indicator (last hour of each session, no 2-hour resampling). Closest: M1c, n=458, drop 38.6% ±2.3pp — consistent with the daily pattern. Results tracked the base rate throughout.

Why it all lands where it does →