Featured image of post MacdCross-4h Passes WFO Final Review: From Backtest Windfall to Earning a Spot in Paper Trading

MacdCross-4h Passes WFO Final Review: From Backtest Windfall to Earning a Spot in Paper Trading

MacdCross-4h, the sole survivor out of 14 strategies x 4 timeframes, goes through rolling-origin out-of-sample validation with fixed public parameters 12/26/9: OOS 5/5 all profitable, MCPT p=0.003, DSR=1.000, parameter plateau 100% profitable — all four statistical gates green, earning its ticket to paper trading.

This is the empirical update for LynxCrypto. The previous tools post covered the methodology; this one is the complete record of actually running that methodology on a strategy: MacdCross-4h, the only survivor across 14 strategies x 4 timeframes, just passed the walk-forward final review and earned its ticket into paper trading.


1. Cold Water First: Why “Backtest +1072” Is Worthless

Let’s align on a fact many people don’t want to accept: any “full-sample backtest windfall” number, by itself, cannot justify going live.

In my gallery backtest, MacdCross(12,26,9) on ZECUSDT 4h: 365 days, 143 trades, net +1072 USDT, Sharpe 2.56. The number looks tempting — and it’s precisely the least trustworthy, because:

  1. It was discovered on the same data it was “validated” on — that’s circular reasoning.
  2. Across 14 strategies x 4 timeframes = 56 combos, some would come out positive by pure luck (the multiple comparisons problem).
  3. After beta-stripping, annualized alpha is 132%, but the t-stat is only 2.35 — below the strict 3.0 bar.

So I didn’t take +1072 to live trading. I sent it into the final review: walk-forward out-of-sample validation plus a triple statistical gauntlet. This post is the complete record of that review.


2. Review Design: Fixed Parameters, No Optimization

This is the most critical — and most counterintuitive — decision of the entire review: I do not optimize parameters.

Many people would ask: why not grid-search the optimal parameters on every fold? Because a statistical strength of t=2.35 cannot support parameter optimization — picking “optimal parameters” on a sample this short is itself overfitting; the parameters you’d pick are most likely noise.

So what I use is rolling-origin out-of-sample validation:

  • MACD parameters are fixed at the public 12/26/9 (this parameter set is a decades-old public classic, not something I tuned).
  • The 365 days of 4h candles are cut into 5 folds; each fold trains on the first 70% and tests out-of-sample on the last 30%, with a 24-hour embargo in between (leakage prevention).
  • The strategy only runs on out-of-sample windows it has never seen, recording net PnL and Sharpe per fold.

This way, if MacdCross’s edge is real, it should hold up on every new stretch of data; if it’s just overfitting, out-of-sample will expose it.


3. Review Results: All Four Statistical Gates Green

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
[full-sample] n=143 net=+1072.08 sharpe=2.56 maxDD=-19.6%

  [fold 0] OOS 2025-11-06..2026-01-04  n=23 net=+122.87 sharpe=2.92
  [fold 1] OOS 2026-01-05..2026-03-06  n=19 net= +27.03 sharpe=0.90
  [fold 2] OOS 2026-03-07..2026-05-06  n=15 net=+316.64 sharpe=7.28
  [fold 3] OOS 2026-05-07..2026-07-06  n=23 net=+169.19 sharpe=4.32
  [fold 4] OOS 2026-07-07..2026-09-05  n=26 net= +47.43 sharpe=1.58

=== Statistical gates ===
  mean OOS Sharpe : +3.40    gate > 0     PASS
  OOS folds net>0 : 5/5
  MCPT p-value    : 0.0030   gate < 0.01  PASS
  DSR (56 trials) : 1.000    gate > 0.95  PASS
  params-plateau  : median +998, 100%>0   PASS

Walking through the four gates one by one:

  • Mean OOS Sharpe +3.40 (>0 to pass): five windows it had never seen, all with positive Sharpe.
  • All 5 OOS folds profitable (5/5): not propped up by one lucky fold.
  • MCPT p=0.003 (<0.01 to pass): Monte Carlo permutation test — randomly shuffling the signs of all trade PnLs 2000 times, only 0.3% of random permutations produce a total return this good. This essentially rules out “pure luck.”
  • DSR = 1.000 (>0.95 to pass): Deflated Sharpe Ratio — after correcting for the fact that I tested 56 combos, this Sharpe is still statistically significant. This is the last gate against “tried too many times.”

There’s also a parameter sensitivity test I added on my own: perturbing fast/slow/signal around 12/26/9 (8/12/17 x 21/26/35 x 7/9/12) — all 18 neighboring combos profitable, 100%, median +998. This shows 12/26/9 is not an isolated spike (isolated spike = overfitting) but a genuine plateau.


4. Honest Reservations: It Passed the Review, but It’s No Money Printer

I have to lay out all the reservations, otherwise this post is just selling dreams:

  1. The sample is still short. Each OOS fold is only about 350 4h candles. 365 days is just one market cycle in crypto — it has never seen a bull-market crash of the 2021 scale.
  2. Sharpe varies wildly. The five folds range from 0.90 to 7.28. This is not steady-state return — it means some months it may make nothing or even lose a little.
  3. It’s a “small edge,” not an “ATM.” The ~132% annualized alpha after beta-stripping sounds high, but it’s built on a small base: 0.2 sizing, 1x leverage, 880 USD principal. Realistically, a reasonable expectation is on the order of 1-2 USD per day, not 200 per day.
  4. Passing the review != ready for live. It only proves “holds up on historical out-of-sample” — it has not yet proven “live trading matches the backtest.” That’s what the next dry-run step is for.

5. Next Step: Paper Trading Dry-Run

Passing the final review means MacdCross-4h is qualified to enter ant-size validation. Next up is Phase 5:

  • Use OKX paper-trading API keys to hook up MacdCross-4h for a dry-run.
  • Run at least 2 weeks, comparing whether live fills match backtest expectations (slippage, funding fees, fill rate).
  • Only if they match do I consider putting in a real-money ant position of no more than 5% of principal.

That’s the whole point of this pipeline: you don’t put in real money because “I feel this strategy works” — you let it pass gate after gate: backtest screening -> beta stripping -> WFO final review -> paper dry-run -> ant-size live. Any gate can kill it. Only what survives to the very end deserves to touch my 880 USD.


This series:

Code lives locally at /home/li/lynxcrypto, all 107 tests green. run_wfo_macd.py reproduces every number in this post. Not investment advice.