AlphaGoCapital
简中繁中ENSign in

Research note · full experiment log

Can Monte Carlo policy iteration time the market? — No

Published 2026-10-24 · out-of-sample 2010–2026, 202 months walk-forward · verdict: MCPI loses to static 50/50 on every metric — not shipped.

Method

  1. <b>MDP:</b> state = SPY trend × 21d vol bucket × momentum breadth (12 cells); action = momentum weight {30,40,50,60}%; reward = next-month net portfolio return.
  2. <b>Learning:</b> each month builds the empirical MDP on history only (Laplace-smoothed transitions + per-cell reward pools), Monte-Carlo policy evaluation γ=0.95, 300 episodes × 12 steps × 40 iterations + greedy improvement — strictly no look-ahead.
  3. <b>Accounting:</b> independent leg drift, monthly reset, fees identical to the production engine (equities 0.1% / ETFs 0.02%).

Results · 202 OOS months

StrategyCAGRMaxDDSharpeVol
static50 · current12.88%−16.64%0.9114.43%
static6014.37%−20.42%0.8717.08%
voltarget11.22%−16.07%0.8713.05%
MCPI learned12.78%−20.36%0.8714.89%

The learned policy nearly degenerates: 11 of 12 states pick mom_w=60%; the single "risk-off cell" (post-crash rebound) has too few samples to pay off out-of-sample.

Interpretation

  1. The momentum leg's risk-adjusted return is strong enough that <b>conditional timing carries no alpha at 12-cell granularity</b> — momentum's worst drawdowns come in fast signal-flip windows a monthly state cannot catch.
  2. vol_target remains the only variant that durably lowers vol/drawdown (cost ~1.7pt CAGR) — kept as a possible conservative tier.
  3. Reproduce: balanced_mcpi.py → balanced_mcpi_policy.csv / balanced_mcpi_oos.csv. Corroborates the <a href="/research/drl-allocation">RL allocation experiment</a>: no alpha in timing the split.

Research note, not investment advice; simulated results are not indicative of future performance. · ← Research index