walk-forward-crypto

Numbers ledger — ground truth for every published figure

Related: Project overview · OOS dashboard · Redaction report

Every number in the case study (README.md) traces to one of three sources in the private research repository:

Cross-check: R and F agree on every overlapping figure (per-year totals, Sharpe, drawdowns) to the fourth decimal.

Headline results (per-year standalone replays, shipped configuration)

Figure Value Source
2026 YTD total (2026-01-01 → 2026-06-10) +45.1% R per_year.2026.total = F metrics.total (0.4508)
2026 YTD Sharpe (annualized, 4h bars, n=961) 2.25 R = F
2026 YTD Sharpe standard error (Lo 2002) ±1.51 → 95% CI ≈ [−0.7, +5.2] R per_year.2026.sharpe_se
2026 YTD max drawdown −21.3% R = F
2026 BTC / ETH buy-and-hold −29.7% / −44.9% R bench.2026 = F bench
2025 frozen replay +54.5%, Sharpe 1.52, maxDD −11.9% R per_year.2025 = F sanity
2025 BTC / ETH −6.6% / −11.4% R bench.2025
2024 frozen replay +16.5%, Sharpe 0.60, maxDD −28.0% R per_year.2024 = F sanity
2024 BTC / ETH +121.1% / +46.8% R bench.2024 (system underperformed BTC in 2024 — stated in README)
2026 per-book: BTC +54.0% (Sh 2.39), ETH +35.3% (Sh 1.82)   F books

Full period (continuous walk-forward, 2024-01-01 → 2026-06-10)

Figure Value Source
Total return +144.5% R full_period.total
CAGR (2.44 years) +44.2%/yr R full_period.cagr
Sharpe (n=5,347 bars) 1.20 ± 0.64 (SE) R full_period.sharpe, .sharpe_se
Max drawdown −28.0% R full_period.max_dd
Realized vol 35.7%/yr R full_period.vol
BTC / ETH same window +46.0% / −27.8% R full_period.bench_total

Note: per-year numbers are standalone replays (selection restarts each Jan 1); the full-period run is continuous. January boundary weeks can differ slightly between the two; both are reported as what they are.

Sizing reference (unleveraged variant of the same machine)

Figure Value Source
2026 / 2025 / 2024 unleveraged +30.2% / +37.4% / +12.6% R reference_unlevered
Drawdowns unleveraged −15.2% / −8.4% / −20.3% R reference_unlevered

The shipped configuration sizes ~1.4× the unleveraged variant at the same Sharpe (2.25/1.52/0.60 vs 2.22/1.54/0.59). The dial is a risk choice.

The graveyard (each rejected idea, recomputed fresh vs the shipped baseline)

All from R graveyard.* (per-year totals + delta_vs_base); chart shows the worst single-year delta.

Rejected idea Worst-year delta All-year deltas (2024/2025/2026)
Daily refit cadence −40.9pp (2025) −33.7 / −40.9 / −25.9
Daily bars −45.7pp (2025) −11.8 / −45.7 / −14.8
1h bars −8.6pp (2024) −8.6 / +6.5 / −1.4 (mixed — see discrepancy log)
Drawdown kill switch (12%) −43.1pp (2026) −5.6 / −17.8 / −43.1
Emergency refit on 5% drawdown −22.1pp (2026) −3.4 / −2.4 / −22.1
Sentiment + positioning signals in the zoo −22.8pp (2025) −13.6 / −22.8 / +6.6 (fails 2 of 3 years)
Fixed leverage ≥1.5x without vol scaling account → $0 B graveyard: five configs, each with a triple-digit best year, all liquidated (four on 2020-03-12, one on 2018-01-16)

Supporting artifact figures quoted in README:

Figure Value Source
Kill switch on/off (top-1 unleveraged variant) 2025: +41.0% → −12.6%; 2024: −6.3% → −20.4% F, kill-switch test artifact
Meta-grid honesty 108 cells, 25% positive in 2026, median −17.9%, worst −41.5% F meta
Weekly hit rate / avg win / avg loss 52% / +4.1% / −2.7% (126 weeks 2024→now, measured on the unleveraged-era config) F notes (quoted); recomputation procedure described there
Refit-weekday dispersion up to ~33pp/yr; Monday top-2 in all 3 years F notes (quoted from the timing-luck study)
Cross-venue agreement Binance vs OKX median 0.6bp, vs Bybit ~4.5bp; results identical to the cent F notes (quoted); reproducible via the cross-venue fetch + blend test

Cost & funding model

Figure Value Source
Cost per side 0.15% on every position change fit pipeline COST constant; charged on the net position delta (switches between similar configs net correctly — verified in the position-stitching step)
Funding real timestamped Binance events, signed funding loader; interval-agnostic by construction (events summed into containing bar). BTC/ETH stayed at 3 events/day through the 2025-09-18 formula change — verified by event counts in the funding data set
Binance VIP-0 fees (for the “0.15% is conservative” claim) spot 0.1%, USDT-perp taker 0.05% external research (mid-2026), from Binance’s published VIP-0 fee schedule

Discrepancy log (early development claims vs current artifact truth)

This log reconciles figures from earlier development notes against the numbers the current code actually produces. It exists so that any older claim a reader might encounter can be traced to why the shipped figure differs. The retired early figures themselves are not published anywhere in the case study; only the current, reproducible numbers are.

  1. An earlier shipped variant (35% vol target, 1× gross, top-1 selection) produced different headline figures. It was replaced for two reasons: top-3 basket selection (the top-1 variant was tie-break-fragile — its yearly total moved by double-digit points from nothing more than a change in how exact score ties break, which is why it was replaced) and the risk dial (vol target 0.50, 1.5× cap). The old top-1 figures are not exactly reproducible by current code and are not published as results; the closest current analogue is the unleveraged reference (+30.2%/+37.4%/+12.6%).
  2. Early top-1 frozen-replay claims for 2024/2025. Same provenance (top-1, unleveraged). Current artifact replays: 2025 +54.5% / 2024 +16.5% (dialed) or +37.4% / +12.6% (unleveraged reference).
  3. “1h and daily bars: 4h dominated.” Confirmed for daily bars (large negative deltas everywhere). For 1h bars the fresh recompute is mixed (−8.6pp 2024, +6.5pp 2025, −1.4pp 2026): at current settings 1h is not consistently worse, it is roughly comparable with more churn. The README states the weaker, accurate version.
  4. Early “kill switch turned +32% into −19% (2025)” note. Directionally confirmed; the current numbers for that variant are +41.0% → −12.6% (values shift with the selection code’s tie-breaking). README uses the current numbers.
  5. Early “emergency refits made 2026 worse” note. Same effect at the current baseline: +45.1% → +23.0% (−22.1pp). README uses the fresh numbers.
  6. “F&G + positioning made all three years worse.” At the current (top-3, dialed) baseline the recompute shows 2 of 3 years materially worse and 2026 slightly better — still rejected (fails the all-years bar), but the README states it precisely.
  7. Early “max 1× gross, no leverage” claim. Outdated: the shipped configuration uses a 1.5× position cap since 2026-06-12. The README describes the current sizing and shows the unleveraged reference.