Backtest Results & Adaptive Allocation
HKD 200K — Spread-Aware Backtest ({START_DATE} → {END_DATE})
Win Rate
79.2%
320W / 84L
Profit Factor
4.51
Gross W / Gross L
Max Drawdown
-12,547
-3.1% of 400K
Equity Curve — HKD 200K base
Monthly P&L
| Month | n |
WR | P&L | Cumul |
| 2023-07 |
14 |
78.6% |
+21,530 |
+21,530 |
| 2023-08 |
19 |
73.7% |
+6,017 |
+27,547 |
| 2023-09 |
16 |
81.2% |
+26,922 |
+54,469 |
| 2023-10 |
17 |
47.1% |
+7,875 |
+62,345 |
| 2023-11 |
18 |
77.8% |
+25,586 |
+87,931 |
| 2023-12 |
12 |
91.7% |
+10,775 |
+98,706 |
| 2024-01 |
16 |
75.0% |
+10,591 |
+109,298 |
| 2024-02 |
5 |
40.0% |
-3,656 |
+105,641 |
| 2024-03 |
7 |
100.0% |
+8,410 |
+114,051 |
| 2024-04 |
15 |
93.3% |
+30,438 |
+144,489 |
| 2024-05 |
15 |
80.0% |
+19,031 |
+163,519 |
| 2024-06 |
15 |
73.3% |
+16,881 |
+180,401 |
| 2024-07 |
12 |
83.3% |
+18,308 |
+198,709 |
| 2024-08 |
19 |
68.4% |
+13,787 |
+212,496 |
| 2024-09 |
12 |
91.7% |
+15,033 |
+227,529 |
| 2024-10 |
2 |
100.0% |
+9,950 |
+237,479 |
| 2024-11 |
10 |
80.0% |
+28,902 |
+266,381 |
| 2024-12 |
10 |
50.0% |
-2,172 |
+264,210 |
| 2025-01 |
13 |
84.6% |
+21,567 |
+285,776 |
| 2025-02 |
11 |
100.0% |
+20,384 |
+306,160 |
| 2025-03 |
7 |
85.7% |
+7,590 |
+313,750 |
| 2025-05 |
6 |
100.0% |
+10,169 |
+323,919 |
| 2025-06 |
11 |
81.8% |
+10,596 |
+334,515 |
| 2025-07 |
11 |
81.8% |
+9,928 |
+344,444 |
| 2025-08 |
13 |
84.6% |
+15,985 |
+360,429 |
| 2025-09 |
12 |
75.0% |
+15,931 |
+376,360 |
| 2025-10 |
7 |
71.4% |
+2,972 |
+379,331 |
| 2025-11 |
11 |
90.9% |
+19,669 |
+399,000 |
| 2025-12 |
8 |
100.0% |
+19,446 |
+418,446 |
| 2026-01 |
14 |
85.7% |
+19,143 |
+437,589 |
| 2026-02 |
15 |
66.7% |
+21,470 |
+459,060 |
| 2026-03 |
17 |
94.1% |
+32,008 |
+491,068 |
| 2026-04 |
10 |
60.0% |
-15 |
+491,053 |
| 2026-05 |
4 |
75.0% |
+3,915 |
+494,968 |
Walk-Forward OOS
| OOS Window | Mult |
n | WR | PF | P&L |
| 2025-07-01→2025-09-30 |
2.50 |
36 |
80.6% |
6.46 |
+78,065 ✅ |
| 2025-10-01→2025-12-31 |
2.50 |
26 |
88.5% |
11.22 |
+78,688 ✅ |
| 2026-01-01→2026-03-31 |
2.50 |
46 |
82.6% |
6.76 |
+148,196 ✅ |
| 2026-04-01→2026-04-30 |
2.50 |
10 |
60.0% |
1.00 |
-38 ❌ |
Strategy Breakdown
| Strategy | n |
WR | PF | P&L |
| HSTECH |
118 |
79.7% |
5.94 |
+203,560 |
| HSI |
252 |
82.1% |
5.08 |
+265,260 |
| SL_REV |
34 |
55.9% |
1.75 |
+26,148 |
HKD 20K Fixed-Base Projection (÷10, no reinvestment)
Results scaled linearly from 200K backtest. Position sizing uses fixed 20K base each month — profits not reinvested. Recommendation: use BASE_FRAC=0.20 (instead of 0.25) at 20K to keep a 20% cash buffer, since on agree days the system can deploy up to 100% of capital.
Projected 3yr P&L
+49,497
HKD 20K base
Return on 20K
247.5%
3yr cumulative
Expectancy / trade
+123
HKD
20K Cumulative P&L Growth
Adaptive Allocation — Regime A / B / C (Forward Spec)
The current system uses a flat 2× multiplier on agree days. Adaptive Allocation tiers the scale based on volatility, improving risk-adjusted returns by reducing exposure on marginal days.
| Tier | Conditions |
n | WR |
Current P&L |
Adaptive P&L |
Delta |
| Regime A |
Agree + σ≤1.60% (Full) |
40 |
95.0% |
+126,805 |
+126,805 |
+0 |
| Regime B |
Solo / Agree σ>1.60% (Std) |
307 |
77.2% |
+258,754 |
+235,189 |
-23,565 |
| Regime C |
σ≥1.90% (Reduced) |
57 |
78.9% |
+109,408 |
+41,094 |
-68,315 |
Adapt. Total P&L
+403,088
Current vs Adaptive Equity
Forward Spec — config.py Changes
# ── Adaptive Allocation (Phase 1 forward spec) ─────────────────────
REGIME_A_SIGMA_MAX = 1.60 # agree + σ ≤ 1.60% → full 2× (Regime A)
REGIME_C_SIGMA_MIN = 1.90 # any day with σ ≥ 1.90% → reduce (Regime C)
REGIME_C_SCALE = 0.50 # 0.5× scale on Regime C days
Forward Spec — live_trader.py Changes
def _adaptive_scale(self, base_scale: float) -> tuple[float, str]:
"""Return (adjusted_scale, tier) based on current σ."""
sigma = self.sigma_ht or 0
if sigma >= config.REGIME_C_SIGMA_MIN:
log.info(f" Adaptive: σ={sigma:.2f}% → Regime C ({config.REGIME_C_SCALE}×)")
return config.REGIME_C_SCALE, "C"
if base_scale > 1.0 and sigma <= config.REGIME_A_SIGMA_MAX:
log.info(f" Adaptive: agree + σ={sigma:.2f}% → Regime A ({base_scale}×)")
return base_scale, "A"
log.info(f" Adaptive: σ={sigma:.2f}% → Regime B (1.0×)")
return 1.0, "B"
# In _execute_regime(), replace scale= with:
scale, tier = self._adaptive_scale(config.AGREE_MULT)
log.info(f" Regime tier: {tier} effective scale: {scale}×")
trade_db.log_daily_note(self.mode, f"Adaptive tier {tier} σ={self.sigma_ht:.2f}% scale={scale}", "info")