# H31 — Horizon-diversified BTC trend book (A1) — PRE-REGISTRATION

_Registered 2026-07-30 BEFORE any return statistic was computed. House style per R1/R2/H21
registrations: locked grid, locked splits, decisive gates, N charged to DSR. Proposal source:
program review 2026-07-30 ("A1" recommendation); literature anchor Liu-Tsyvinski (RFS 2021) —
crypto TS-momentum is strongest at 1-day→4-week horizons, which this program has NEVER tested
(only 252d was). H1TrendEnsemblePortfolioAlgorithm already implements the exact construction
(1/N equal-weight average of per-lookback long/flat sub-signals) — no new strategy code._

## Hypothesis

The program's one surviving edge (BTC 252d TS-trend) has ~2 effective OOS bets (permutation
timing-p 0.41). Cross-ASSET diversification was killed (H18: dilutes BTC). Horizon is the one
remaining dimension along which genuinely different bets on the SAME asset exist: a 5d-sign
flip and a 252d-sign flip are different decisions at different breadth. Averaging long/flat
sub-signals across horizons {5,21,63,126,252} should keep the Sharpe of the 252d core while
raising breadth and cutting drawdown — or fail and show the short horizons are the same
long-bias with more turnover.

## Locked design

- **Algorithm:** `H1TrendEnsemblePortfolioAlgorithm` (existing, unchanged). `symbols=BTCUSD`,
  `long_only=true`, `use_vol_target=false`, `base_weight=1.0`, `rebalance_days=1`,
  `rebal_threshold=0.05`, `periods_per_year=365`. Position = fraction of horizon sub-signals
  agreeing (graded {0, .2, …, 1} for the 5-lookback cells).
- **Cadence note:** `rebalance_days=1` (daily check, 5% trade threshold) — the original 21d
  cadence would stale a 5d signal. To keep the comparison honest, the single-252 CONTROL is
  ALSO run at reb=1 (cadence confound isolated).
- **Instrument/data:** Coinbase BTCUSD daily 2015-07-20→2026-07-01 (the program's locked
  continuous series). **Splits (locked, program-wide):** IS 2015-07-20→2021-12-31,
  OOS 2022-01-01→2026-07-01.
- **Grid (locked, in full):** horizon-configs × costs × periods:
  - singles: lookbacks ∈ {5, 21, 63, 126, 252}
  - ensembles: `ens-core` = {63,126,189,252} (E.1 adopted form, control),
    `ens-all` = {5,21,63,126,252} (PRIMARY CANDIDATE),
    `ens-short` = {5,21,63} (short-horizon isolation)
  - costs: 4.5 / 25 / 50 bps per side (4.5 = Binance perp taker level — the venue a
    short-horizon sleeve would actually trade on; 50 = Coinbase taker, the program standard).
  - Total: 8 configs × 3 costs × 2 periods = **48 runs**. Selection menu N=8 (horizon-configs)
    charged to DSR; cost levels are robustness axes, not selection DOF.
- **Venue-fee caveat (disclosed):** the 4.5bps cell applies Binance-perp fee levels to the
  Coinbase price series. Cross-venue BTC basis at daily horizon is immaterial for a
  sign-of-trailing-return signal; disclosed, not hidden.

## Gates (primary read at 4.5bps; 50bps = robustness read)

**PASS requires ALL:**
1. OOS Sharpe(ens-all) ≥ OOS Sharpe(single-252, reb=1) at 4.5bps — short horizons must not cost Sharpe.
2. OOS maxDD(ens-all) ≤ 32% (single-252's OOS DD) OR bootstrap Sharpe-CI narrower than single-252's [0.06, 1.80].
3. CPCV (N=6,k=2, purged + 21d embargo) on ens-all OOS daily returns: median fold-Sharpe > 0, ≥70% folds positive.
4. Random-timer permutation on **ens-short** OOS (20k paths, matched exposure & segment count): P(random ≥ strategy) < 0.10.
5. effN-DSR > 0.5 (effective-N from the 5 single-horizon OOS streams, empirical cross-trial V).

**KILL (any one):**
- OOS Sharpe(ens-all) < OOS Sharpe(single-252 reb=1) at 4.5bps AND no DD improvement → short horizons = same edge, more turnover.
- OOS Sharpe(ens-short) ≤ 0 at 4.5bps → no short-horizon edge at all at viable fees.
- OOS Sharpe(ens-all) < 0.7 at 4.5bps → below the program's crypto bar.

**MIXED cap (house precedent, BTC trend):** gates 1–3 pass but gate 4 fails (perm-p ≥ 0.10) →
MIXED: "keep, gate on live"; no timing-skill claim for the short sleeve.

## Offline statistics (computed from the committed LEAN result JSONs only)

- Stationary bootstrap (mean block 21/63d, B=5000) Sharpe 95% CI on OOS daily returns: ens-all vs single-252.
- CPCV path distribution (N=6,k=2, embargo 21d) on ens-all OOS.
- Random-timer permutation (20k) matched to ens-short's realized exposure/segment count.
- Effective-N: avg pairwise OOS correlation of the 5 single-horizon streams → N_eff = M/(1+(M−1)ρ̄) and eigenvalue (Σλ)²/Σλ².
- DSR (`tools/dsr_helper.py`) with empirical cross-trial Sharpe variance.

## Honest prior

LOW-MEDIUM. Modal outcome per program base rate (1 survivor in ~30 families) is MIXED/KILL.
The two live risks: (a) 5d/21d sign-flips are noise → turnover drag without breadth (perm test
decides); (b) short-horizon sleeves are just a faster trailing stop — and trailing stops were
foreclosed on BTC (same vol makes crashes and pullbacks deep). The one thing this test has that
the failed overlays lacked: a peer-reviewed, positive horizon-specific literature signal that
this program has never measured on its own data.

## Execution

Driver `tools/h31_driver.py` (runlib-based; LEAN result JSONs are the sole KPI source) →
`backtests/H31HorizonTrend/{runs,results.tsv}` → offline stats `tools/h31_analysis.py` →
registry records per `BACKTEST_STANDARD.md` via `tools/register_h31.py`.
