G. ML & Meta Strategies (G.27--G.28) + H. Tail Hedge (H.29)
Machine learning overlays that gate and size base strategy signals, plus a structural tail hedge providing always-on drawdown protection.
ML Pipeline Architecture
graph TB
subgraph "Base Strategies"
A[A.1-A.5<br/>Macro Regime]
B[B.6-B.9<br/>Curve & Carry]
C[C.10-C.13<br/>Stat Arb]
D[D.14-D.18<br/>Positioning]
E[E.19-E.22<br/>Options]
F[F.23-F.26<br/>Micro]
end
subgraph "ML Layer"
META[G.27 Meta-Labeller<br/>Binary classifier]
REG[G.28 Regime Classifier<br/>HMM + random forest]
end
subgraph "Output"
SIZED[Sized Signals]
TAIL[H.29 Tail Hedge<br/>Always-on overlay]
end
A & B & C & D & E & F --> META
META --> SIZED
REG --> META
SIZED --> PORT[Portfolio<br/>Constructor]
TAIL --> PORT
G.27 Meta-Labeller
Status: Planned
Reference implementation: qgtm_strategies/ml_ensemble.py (to be extended)
Economic Rationale
Base strategies produce directional signals, but not all signals are equally reliable. A meta-labelling model (Lopez de Prado, 2018) takes the base signal direction as given and learns a binary classifier: should we trust this signal in the current market state? The meta-model does not generate its own directional view -- it only decides "trade" or "don't trade" and sizes the bet.
This separation of concerns (direction vs. sizing) reduces overfitting because the meta-model has fewer degrees of freedom than a full signal generator.
Signal Formula (Proposed)
Step 1 -- Base signal produces direction \(d_t \in \{-1, 0, +1\}\).
Step 2 -- Feature vector for meta-model:
Step 3 -- Meta-label:
where \(h\) is the strategy's expected holding period.
Step 4 -- Classifier:
Step 5 -- Final sized signal:
Only trade when \(\hat{p}_t > 0.55\) (probability threshold). Size proportional to confidence.
Training Protocol
| Aspect | Specification |
|---|---|
| Method | Walk-forward cross-validation (purged + embargo) |
| Train window | 3 years |
| Test window | 6 months |
| Embargo | 5 days (avoid leakage from autocorrelation) |
| Retraining frequency | Monthly |
| PBO check | Required (Probability of Backtest Overfitting < 0.5) |
Expected Impact
- Sharpe lift: +0.1 to +0.3 SR on top of base strategy
- Drawdown reduction: 15--25%
- Win rate improvement: 5--10 percentage points
- Kill condition: Meta-model accuracy < 52% on OOS data for 3 consecutive months
References
- Lopez de Prado (2018) Advances in Financial Machine Learning Ch. 3, 5
- Lopez de Prado (2018) "The 10 Reasons Most Machine Learning Funds Fail"
G.28 Regime Classifier
Module: qgtm_strategies/regime_detector.py
Class: RegimeDetector
ID: regime_detector
Economic Rationale
Markets cycle through distinct regimes (risk-on, risk-off, inflationary, deflationary, crisis). Each regime favors different strategies. A Hidden Markov Model (HMM) with observable state features classifies the current regime, and the portfolio allocator uses the classification to weight strategies accordingly.
Model Architecture
Observable features:
Hidden states (5 regimes):
| State | Label | Characteristics | Favored strategies |
|---|---|---|---|
| 0 | Risk-on | Low vol, rising equities | C (stat arb), E (short vol) |
| 1 | Risk-off | VIX spike, equity selloff | A.4 (haven), H.29 (tail) |
| 2 | Inflationary | Rising breakevens, weak DXY | A.1, A.3, D (flows) |
| 3 | Deflationary | Falling breakevens, strong DXY | Short gold signals |
| 4 | Crisis | VIX > 40, correlations spike | A.4, H.29, G.27 override |
HMM emission probabilities:
Transition matrix \(\mathbf{A}\) is estimated via Baum-Welch on rolling 5-year windows.
Regime Decision Flow
graph TD
OBS[Observable Features] --> HMM[HMM Inference]
HMM --> PROB[State Probabilities<br/>p1...p5]
PROB --> BLEND{Max p > 0.6?}
BLEND -- Yes --> ASSIGN[Assign regime<br/>Weight strategies]
BLEND -- No --> MIX[Mixed regime<br/>Equal-weight blend]
Capacity & Decay
- Role: Filter, not standalone strategy
- Retraining: Quarterly (Baum-Welch on updated data)
- Kill condition: Regime misclassification rate > 40% on labeled historical crises
- Expected impact: 0.2--0.4 SR improvement on aggregate portfolio via regime-appropriate weighting
References
- Hamilton (1989) "A New Approach to the Economic Analysis of Nonstationary Time Series and the Business Cycle"
- Ang & Bekaert (2002) "Regime Switches in Interest Rates"
- Guidolin & Timmermann (2007) "Asset Allocation Under Multivariate Regime Switching"
H.29 Tail Hedge
Status: Planned
Economic Rationale
A structural tail-hedge overlay that is always on, bleeding theta/carry in normal markets but providing convex payoff during extreme drawdowns (4+ sigma events). The hedge protects the aggregate portfolio from correlated blowups where all alpha strategies fail simultaneously (e.g., 2008 correlations-go-to-one events).
Construction (Proposed)
Primary instrument: OTM put spreads on GLD (15--25 delta puts).
Sizing rule:
Default hedge ratio: 2--5% of NAV allocated to premium spend.
Roll schedule: Monthly. Roll when remaining DTE < 14 or delta drifts inside 30-delta.
Dynamic adjustment:
Expected Properties
| Metric | Value |
|---|---|
| Annual theta bleed | -1.5% to -3% of NAV |
| Expected payout in 4-sigma event | +8% to +15% of NAV |
| Payoff ratio | 3x to 5x premium spent |
| Max historical drawdown protection | 50--70% of tail event loss |
Kill Condition
Never killed. The tail hedge is structural insurance. However, if the cost exceeds 4% of NAV annually for 2 consecutive years without a significant payoff, the hedge ratio is reduced to minimum (2%).
References
- Taleb (2007) The Black Swan
- Bhansali (2014) "Tail Risk Hedging"
- Israelov & Nielsen (2015) "Still Not Cheap: Portfolio Protection in Calm Markets"