Window: 2023-10-26 .. 2025-10-11 (352 days, 336 gate60-long days) | feature: pullback depth = 1 - close / trailing-N-day-high (N=5/10/20) while gate60 ON | shifted +1d | gross returns
| Variant | Days | LongDays | Ret | Sharpe | PF | MaxDD |
|---|
| baseline (gate60) | 352 | 336 | +112.56% | 1.53 | 1.25 | -31.95% |
| skip pb5<0.02 | 352 | 143 | +39.96% | 0.98 | 1.26 | -24.63% |
| skip pb5<0.03 | 352 | 115 | +4.72% | 0.32 | 1.09 | -29.60% |
| skip pb5<0.05 | 352 | 58 | +0.00% | 0.17 | 1.06 | -17.33% |
| skip pb5<0.08 | 352 | 30 | +14.32% | 0.68 | 1.38 | -13.33% |
| skip pb5<0.10 | 352 | 13 | +10.75% | 0.73 | 1.75 | -8.59% |
| skip pb5<0.15 | 352 | 2 | +16.76% | 1.34 | inf | 0.00% |
| enter only pb5>=0.05 (strict) | 352 | 58 | +0.00% | 0.17 | 1.06 | -17.33% |
| enter only pb5>=0.10 (deep) | 352 | 13 | +10.75% | 0.73 | 1.75 | -8.59% |
| skip pb10<0.02 | 352 | 178 | +62.81% | 1.26 | 1.29 | -20.64% |
| skip pb10<0.03 | 352 | 151 | +29.30% | 0.81 | 1.19 | -24.85% |
| skip pb10<0.05 | 352 | 106 | +39.39% | 1.03 | 1.31 | -20.04% |
| skip pb10<0.08 | 352 | 62 | +54.41% | 1.48 | 1.67 | -13.33% |
| skip pb10<0.10 | 352 | 39 | +27.35% | 1.00 | 1.56 | -13.33% |
| skip pb10<0.15 | 352 | 8 | +17.92% | 1.28 | 4.02 | -3.79% |
| enter only pb10>=0.05 (strict) | 352 | 106 | +39.39% | 1.03 | 1.31 | -20.04% |
| enter only pb10>=0.10 (deep) | 352 | 39 | +27.35% | 1.00 | 1.56 | -13.33% |
| skip pb20<0.02 | 352 | 205 | +41.27% | 0.95 | 1.20 | -22.51% |
| skip pb20<0.03 | 352 | 182 | +19.35% | 0.62 | 1.13 | -26.13% |
| skip pb20<0.05 | 352 | 147 | +37.70% | 0.96 | 1.24 | -22.00% |
| skip pb20<0.08 | 352 | 101 | +70.35% | 1.65 | 1.58 | -13.33% |
| skip pb20<0.10 | 352 | 74 | +43.60% | 1.32 | 1.56 | -13.33% |
| skip pb20<0.15 | 352 | 21 | +42.80% | 2.38 | 6.46 | -3.79% |
| enter only pb20>=0.05 (strict) | 352 | 147 | +37.70% | 0.96 | 1.24 | -22.00% |
| enter only pb20>=0.10 (deep) | 352 | 74 | +43.60% | 1.32 | 1.56 | -13.33% |
gate60-long-day forward returns by pullback depth quintile
| pb10 bucket | Mean daily ret | Days |
|---|
| 0-2% | +0.219% | 158 |
| 2-5% | +0.264% | 72 |
| 5-8% | -0.167% | 44 |
| 8-15% | +0.585% | 54 |
| >15% | +2.173% | 8 |
IS/OOS split at 2025-01-01 (rule picked by IS Sharpe, frozen before OOS)
Top-5 rules on IS:
- skip pb20<0.15: IS Sharpe 2.58
- skip pb10<0.02: IS Sharpe 1.66
- skip pb5<0.15: IS Sharpe 1.58
- skip pb10<0.15: IS Sharpe 1.51
- skip pb5<0.02: IS Sharpe 1.30
| Segment | Variant | LongDays | Ret | Sharpe | PF | MaxDD |
|---|
| IS | baseline | 246 | +63.75% | 1.47 | 1.24 | -29.34% |
| IS | skip pb20<0.15 | 19 | +37.92% | 2.58 | 5.94 | -3.79% |
| OOS | baseline | 90 | +29.81% | 1.68 | 1.28 | -22.71% |
| OOS | skip pb20<0.15 | 2 | +3.54% | 2.34 | inf | 0.00% |
OOS gated long-days: 2 | mean +1.7625% | bootstrap p(gate adds nothing): 0.787 | NULL-R permutation p (2000): 0.249
Rule neighbors (pb20 family), full window
| Variant | LongDays | Ret | Sharpe | PF |
|---|
| skip pb20<0.02 | 205 | +41.27% | 0.95 | 1.20 |
| skip pb20<0.03 | 182 | +19.35% | 0.62 | 1.13 |
| skip pb20<0.05 | 147 | +37.70% | 0.96 | 1.24 |
| skip pb20<0.08 | 101 | +70.35% | 1.65 | 1.58 |
| skip pb20<0.10 | 74 | +43.60% | 1.32 | 1.56 |
| skip pb20<0.15 | 21 | +42.80% | 2.38 | 6.46 |
| enter only pb20>=0.05 (strict) | 147 | +37.70% | 0.96 | 1.24 |
| enter only pb20>=0.10 (deep) | 74 | +43.60% | 1.32 | 1.56 |
Confound controls (full window)
| Control variant | LongDays | Ret | Sharpe | PF |
|---|
| control: skip if prior-day | ret | >3% | 229 | +175.56% |
| control: skip if prior-day ret<0 | 183 | -9.66% | -0.03 | 0.99 |
| winner AND skip prior | ret | >3% | 13 | +15.78% |
| half size when NOT in pullback zone | 336 | +82.55% | 1.96 | 1.35 |
Per-year: baseline vs winner
| Year | Base ret | Gated ret | Base LD | Gated LD |
|---|
| 2023 | +25.42% | +0.00% | 64 | 0 |
| 2024 | +36.42% | +33.30% | 182 | 19 |
| 2025 | +33.48% | +3.52% | 90 | 2 |
Cross-coin: same frozen rule via vectorized twin
| Coin | Variant | LongDays | Ret | Sharpe | PF | MaxDD |
|---|
| BTC | baseline | 522 | +149.14% | 1.60 | 1.28 | -24.05% |
| BTC | skip pb20<0.15 | 90 | +41.56% | 1.26 | 1.57 | -9.46% |
| SOL | baseline | 379 | +293.61% | 1.80 | 1.30 | -49.24% |
| SOL | skip pb20<0.15 | 171 | -18.69% | -0.03 | 0.99 | -49.65% |
Decision memo
- Winner frozen from IS:
skip pb20<0.15.
- OOS evidence: bootstrap p=0.787, permutation p=0.249.
- Adopt ONLY if: OOS Sharpe/Ret improves, p<0.05, neighbors non-knife-edge, cross-coin consistent.
- Otherwise: reject and ledger.
VERDICT (2026-08-25): REJECT — family to ledger
The full-window grid shows scattered improvements at extreme thresholds
(pb20>=0.15: Sharpe 2.38, 21 days; pb20>=0.08: Sharpe 1.65, 101 days) but
every adoption criterion fails:
- OOS: IS winner
skip pb20<0.15 deployed on only 2 OOS days (+3.5% vs
+29.8% baseline). Statistically meaningless — 2 observations cannot
validate anything.
- Significance: bootstrap p=0.787, permutation p=0.249. No signal.
- Knife-edge: the 0.15 cell (2.38 Sharpe) sits between 0.10 (1.32) and
zero — classic threshold-fitting artifact with n=21.
- Cross-coin: SOL goes from +293.6% to -18.7% under this rule — the effect
is not general.
- Per-year: 2025 captures only +3.5% vs +33.5% baseline — massive missed
opportunity.
- Confound: "skip if prior-day |ret|>3%" (shock-day family) alone achieves
Sharpe 2.28 with 229 days — the pullback depth adds nothing beyond the
shock-day effect already tested in round 2.
The less extreme pb20>=0.08 variant (101 days, Sharpe 1.65) has the best
balance of trade count and Sharpe, but its edge is modest (+0.12 Sharpe
points over baseline) and it wasn't the IS-picked winner — using it would
be post-hoc data-dredging. The pullback mechanism per se does not add
exploitable timing information for gate60 longs at daily cadence.