Inconclusive · Filters · 2026-09-26; timeframe gap fill 2026-10-11
Inside falling markets, does any extra filter help?
What this means
Within the 1,410 15m setups taken while SPY was below its 200-day average, no extra condition passed both the multiple-testing check and the rule of helping in all three bear episodes. 'Moving averages bearish' looked highly significant when pooled, but the saved report shows it helped only in spring 2025 (−0.06, +0.44, −0.05 by episode), and spring 2025 supplied 71% of the bear setups. Pooling let one episode drive the result. With only three independent episodes, nothing here is reliable. With ten years of data the picture changes on 1h: inside falling markets, setups where price had already climbed back to or above its 100-bar average did better in all eight bear episodes since 2016, by about a quarter of an R, and the same split makes no difference in rising markets. That fits a mechanism - in a falling market the bounces that have already reclaimed their average are the ones that keep going. But the 4h survivor points the other way (deeply oversold setups did better), daily finds nothing, and our re-implementation of the search found two weak survivors on 15m where the original found none, so it is somewhat more permissive. It is a lead for the forward test, not a rule.
The explanation is our best reading; the data shows the result but not the cause directly.
By timeframe
| Timeframe | Verdict | n | Result |
|---|---|---|---|
| 15-minute | Not supported | 1,410 | 0 conditions survived (3 episodes) |
| 1-hour | Supported | 2,398 | 8 conditions survive, all of the form 'price near or above its 50- or 100-bar average, or RSI >= 54, at entry'; best: above MA100 +0.24R, positive in all 8 bear episodes; q=0.006 gap fill G4, 2026-10-11 (trade logs) |
| 4-hour | Supported | 683 | 1 condition survives: price >= 8.9% below its 200-bar average +0.51R, positive in 5 of 5 scorable episodes; q=0.006 gap fill G4, 2026-10-11 (trade logs) |
| Daily | Not supported | 380 | 0 conditions survive (4 episodes); best q=0.36 gap fill G4, 2026-10-11 (trade logs) |
- Hypothesis
- Within the 1,410 setups taken while SPY was below its 200-day MA, some condition is positive in all three bear episodes and FDR-significant.
- Method
- 15m TradingView setups (26 features); FDR q<0.05 plus positive lift in each of 3 episodes required.
- Result
- 0 survived. 'MAs bearish' had q=0.000 but helped in only 1 of 3 episodes; RSI at D < 50 was positive in all three (+0.34, +0.40, +0.07) at q=0.099. Gap fill (2026-10-11), same rule (FDR q < 0.05 and positive lift in every bear episode with >= 30 setups) on the 2016-26 logs: 1h 8 conditions survive out of 98 (2,398 bear setups, 8 episodes), all of one kind - price near or above its 50- or 100-bar average, or RSI >= 54, at entry; the strongest, price above MA100, is +0.40R vs +0.16R (+0.24, CI +0.13 to +0.36) and positive in all 8 episodes, while the same split does nothing when SPY is above its 200-day (-0.02). 4h: 1 survivor, price at least 8.9% below its 200-bar average (+0.62R vs +0.11R, positive in 5 of 5 scorable episodes; n = 138). Daily: 0 of 95 (380 setups, 4 episodes). Family-wise (82 gap-fill tests) q = 0.006 for 1h and for 4h.
- How much to trust it
- Medium: only 3 independent bear episodes
- Did it change the live rule?
- No.
- Notes
- The original 15m search script is not in the repo; the gap fill re-implements it (gaps/scripts/a_search.py, G4). Episodes: runs of SPY-below-200-day days, gaps of up to 20 trading days merged.
Scripts and data for this study will be linked here when the research code is published on GitHub.
Education and research only. Not financial advice. Backtests use today's index members (survivorship bias).