Strategy backtest
The exact rules that run our simulated portfolios every day, replayed one trading day at a time over ~5 years of real closing prices. Same code, same stops, same sizing — only the stock-picking step is swapped for a transparent mechanical rule, because the AI cannot be replayed. Generated 2026-08-23 03:19 UTC.
- This is the mechanical-rules baseline, with the AI switched off. The live funds get their names and daily KEEP/SELL/ACCUMULATE calls from an AI that has no history to replay, so the backtest uses a transparent stand-in: 12-1 month momentum above the 200-day average, risk-profiled by volatility, rebalanced monthly. Everything else — trailing stops, ratchet, conviction sizing, drawdown regime, liquidity floor, same-close fills — is the exact production code (
services/strategy.js). The AI's added value is measured live against this baseline. - Survivorship bias. The universe is the names we track today (120 US, 120 ASX, largest by market cap). Companies that failed or delisted before now are not in it, which flatters results.
- Costs. Decisions and fills happen on the same end-of-day close, like the live simulation. 10 basis points per side are charged on every fill. No dividends are credited (understates total return, especially for low-risk books).
- Past performance — simulated or real — does not predict future results. Not investment advice.
US · 120 stocks · benchmark SPY 2021-06-30 → 2026-08-21
| Book | CAGR | SPY CAGR | Alpha | Sharpe | Max DD | Bench DD | Trades | Win rate | Turnover/yr |
|---|---|---|---|---|---|---|---|---|---|
| HIGH | +13.33% | +11.98% | +1.35% | 0.7 | −28.05% | −25.36% | 401 | 47.63% | 7.33× |
| MEDIUM | +22.37% | +11.98% | +10.39% | 1.08 | −17.79% | −25.36% | 167 | 58.08% | 7.96× |
| LOW | +20.23% | +11.98% | +8.25% | 0.97 | −18.13% | −25.36% | 150 | 58% | 8.01× |
Year by year
| Book | 2021 | 2022 | 2023 | 2024 | 2025 | 2026 |
|---|---|---|---|---|---|---|
| HIGH | +6.46% | -16.42% | +11.52% | +48.82% | -1.31% | +30.53% |
| MEDIUM | +2.05% | +8.57% | +18.44% | +49.44% | +13.88% | +26.46% |
| LOW | -1.69% | +7.48% | +15.08% | +48.05% | +17.00% | +22.43% |
| SPY | +10.96% | -19.48% | +24.29% | +23.30% | +16.35% | +12.29% |
HIGH · $10,000 → $19,007.43
■ HIGH ▪ benchmark (same start value)
MEDIUM · $10,000 → $28,212.98
■ MEDIUM ▪ benchmark (same start value)
LOW · $10,000 → $25,762.24
■ LOW ▪ benchmark (same start value)
HIGH exits: rebalance 166 (+$3258.63) · stop-loss 214 (+$3603.64) · regime-switch 21 (+$1517.15) · avg win $122.71 · avg loss $-71.71
MEDIUM exits: rebalance 153 (+$17994.73) · stop-loss 14 (+$435.32) · avg win $284.94 · avg loss $-131.56
LOW exits: rebalance 128 (+$19897.71) · stop-loss 22 ($-4107.74) · avg win $321.02 · avg loss $-192.68
ASX · 120 stocks · benchmark STW.AX 2021-06-28 → 2026-08-21
| Book | CAGR | STW.AX CAGR | Alpha | Sharpe | Max DD | Bench DD | Trades | Win rate | Turnover/yr |
|---|---|---|---|---|---|---|---|---|---|
| HIGH | +28.50% | +3.41% | +25.09% | 1.25 | −19.37% | −17.5% | 399 | 47.37% | 9.49× |
| MEDIUM | +23.62% | +3.41% | +20.21% | 1.03 | −21.54% | −17.5% | 167 | 57.49% | 8.15× |
| LOW | +21.71% | +3.41% | +18.30% | 0.98 | −20.66% | −17.5% | 219 | 53.88% | 10.26× |
Year by year
| Book | 2021 | 2022 | 2023 | 2024 | 2025 | 2026 |
|---|---|---|---|---|---|---|
| HIGH | +58.00% | -6.05% | +1.48% | +86.17% | +28.98% | +0.51% |
| MEDIUM | +24.98% | +4.27% | -3.83% | +52.74% | +31.21% | +18.59% |
| LOW | +28.86% | +5.16% | -6.47% | +47.65% | +48.91% | -1.34% |
| STW.AX | +1.00% | -7.82% | +7.32% | +7.47% | +6.39% | +4.05% |
HIGH · $10,000 → $36,319.9
■ HIGH ▪ benchmark (same start value)
MEDIUM · $10,000 → $29,755.41
■ MEDIUM ▪ benchmark (same start value)
LOW · $10,000 → $27,466.65
■ LOW ▪ benchmark (same start value)
HIGH exits: rebalance 178 (+$6545.96) · stop-loss 187 (+$13998.24) · regime-switch 34 (+$5320.13) · avg win $250.52 · avg loss $-102.3
MEDIUM exits: rebalance 132 (+$22551.93) · stop-loss 35 ($-6769.45) · avg win $381.6 · avg loss $-293.67
LOW exits: rebalance 124 (+$28092.16) · stop-loss 86 ($-9282.48) · regime-switch 9 ($-1231.36) · avg win $334.47 · avg loss $-216.72
What the rules are
- Selection (every HIGH 1 month(s) / MEDIUM 1 month(s) / LOW 1 month(s)): the top names by 12-1 month momentum that trade above their 200-day average, drawn from the least volatile share of the universe — HIGH 100% / MEDIUM 80% / LOW 80%. HIGH 8 / MEDIUM 6 / LOW 5 names, sized by conviction tercile (1.3 / 1 / 0.7), hard cap 25% per name.
- Stops: initial stop from entry HIGH -25% / MEDIUM -20% / LOW -15%; once a position is up HIGH 5% / MEDIUM 12% / LOW 12% the stop trails the high-water mark by HIGH -18% / MEDIUM -18% / LOW -18% and never moves down.
- Circuit breaker: a drawdown from peak beyond HIGH -12% / MEDIUM -25% / LOW -20% flips the book to DEFENSIVE — lowest-volatility names, trailing stops HIGH -8% / MEDIUM -6% / LOW -4%, at most 50% deployed — until the drawdown halves.
- Liquidity floor on new buys: US ≥ $5 and $2B market cap; ASX ≥ A$0.5 and A$300M. Idle cash above 20% is re-deployed into the next-best names after a 5-day cooldown.
- Costs: 0 bps per side on every fill; decisions and fills on the same end-of-day close.