Skip to content

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:

\[ \mathbf{x}_t = \bigl[\text{regime}_t,\; \sigma_{21d},\; z_{\text{VIX}},\; \rho_{\text{strat},\text{SPX}},\; \text{drawdown}_{63d},\; \text{flow\_z},\; \text{COT\_z},\; \text{basis\_z}\bigr] \]

Step 3 -- Meta-label:

\[ y_t = \begin{cases} 1 & \text{if } d_t \cdot r_{t \to t+h} > 0 \text{ (signal was correct)} \\ 0 & \text{otherwise} \end{cases} \]

where \(h\) is the strategy's expected holding period.

Step 4 -- Classifier:

\[ \hat{p}_t = f(\mathbf{x}_t;\; \theta) \quad \text{(random forest or gradient-boosted tree)} \]

Step 5 -- Final sized signal:

\[ w_t = d_t \times \hat{p}_t \times \text{base\_size} \]

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:

\[ \mathbf{o}_t = \bigl[\Delta\text{VIX},\; \text{yield\_curve\_slope},\; \text{credit\_spread},\; \text{DXY\_mom},\; r_{\text{SPX},21d},\; r_{\text{GLD},21d},\; \text{RV}_{21d}\bigr] \]

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:

\[ P(\mathbf{o}_t \mid S_t = k) = \mathcal{N}(\mathbf{o}_t;\; \boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k) \]

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:

\[ \text{hedge\_notional} = \text{portfolio\_NAV} \times \text{hedge\_ratio} \]

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:

\[ \text{hedge\_ratio}_t = \begin{cases} 0.02 & \text{if regime} = \text{risk-on} \\ 0.03 & \text{if regime} = \text{neutral/inflationary} \\ 0.05 & \text{if regime} = \text{risk-off or crisis} \end{cases} \]

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"