8.4 KiB
Pairs Trading Cointegration Pro Suite (Standard & MTF)
1. Summary
The Pairs Trading Cointegration Pro Suite is an institutional-grade, high-performance statistical arbitrage trading suite comprising four advanced indicators:
PairsTrading_Pro(Z-Score separate window oscillator)PairsTrading_Bands_Pro(Main-chart overlay bands)PairsTrading_MTF_Pro(Multi-Timeframe separate window oscillator)PairsTrading_Bands_MTF_Pro(Multi-Timeframe main-chart overlay bands)
Based on Modern Portfolio Theory and econometric cointegration, the suite decomposes the pricing relationship of two correlated assets into a stationary, volatility-normalized spread.
While traditional retail pairs trading methods rely on simple price correlation (which is highly unstable and prone to structural drift), this suite utilizes a dynamic rolling Ordinary Least Squares (OLS) mathematical engine. It dynamically calculates the rolling Hedge Ratio (\beta) and Intercept (\alpha) between any two assets to extract the true stationary spread.
Featuring VWAP-style Anchored Resets (Session, Weekly, Monthly, and Custom Session), the indicators can completely isolate intraday/intraweek price relationships from overnight gaps and illiquidity, delivering a highly visual and robust quantitative scanner system.
2. Mathematical Foundations and Calculation Logic
The statistical calculations operate on synchronized close prices for Asset A (P_{A,t}) and Asset B (P_{B,t}) over an active rolling or anchored window of size N (window_size):
A. Rolling Ordinary Least Squares (OLS)
The calculator computes the rolling mean of Asset A (\bar{A}) and Benchmark B (\bar{B}). It solves the OLS regression of A on B to find the dynamic Hedge Ratio (\beta) and Intercept (\alpha):
\beta_i = \frac{\text{Covariance}(A, B)}{\text{Variance}(B)}
\alpha_i = \bar{A}_i - (\beta_i \times \bar{B}_i)
B. Dynamic Spread and Standard Deviation
The spread at each bar t within the window is calculated. Because we subtract the OLS intercept (\alpha_i), the rolling mean of this spread over the window is algebraically guaranteed to be exactly 0.0:
\text{Spread}_{t} = P_{A,t} - \beta_i P_{B,t} - \alpha_i \quad \text{for } t = i-N+1 \dots i
The sample standard deviation (\sigma_{\text{spread}}) of the spread over the active window is computed as:
\sigma_{\text{spread}} = \sqrt{\frac{1}{N-1} \sum_{k=0}^{N-1} (\text{Spread}_{i-k})^2}
C. Volatility-Normalized Z-Score (PairsTrading_Pro)
The final Z-Score is calculated, representing how many standard deviations the current spread has drifted away from its statistical equilibrium of 0.0:
Z_i = \frac{P_{A,i} - \beta_i P_{B,i} - \alpha_i}{\sigma_{\text{spread}}}
3. Cointegration Bands (Main Chart Projection)
By rearranging the spread equation back to the price space of Asset A, the suite projects the dynamic statistical boundaries directly onto the main price chart:
\text{Center Line (Equilibrium / } Z=0.0\text{):} \quad \hat{P}_{A,i} = \beta_i P_{B,i} + \alpha_i
\text{Outer Upper Band (Extreme / } Z=+M_{\text{outer}}\text{):} \quad \text{Band}_{\text{up, outer}} = \hat{P}_{A,i} + M_{\text{outer}} \times \sigma_{\text{spread}}
\text{Outer Lower Band (Extreme / } Z=-M_{\text{outer}}\text{):} \quad \text{Band}_{\text{low, outer}} = \hat{P}_{A,i} - M_{\text{outer}} \times \sigma_{\text{spread}}
\text{Inner Upper Band (Warning / } Z=+M_{\text{inner}}\text{):} \quad \text{Band}_{\text{up, inner}} = \hat{P}_{A,i} + M_{\text{inner}} \times \sigma_{\text{spread}}
\text{Inner Lower Band (Warning / } Z=-M_{\text{inner}}\text{):} \quad \text{Band}_{\text{low, inner}} = \hat{P}_{A,i} - M_{\text{inner}} \times \sigma_{\text{spread}}
4. The Pure vs. Hybrid MTF Dilemma
When trading in a Multi-Timeframe (MTF) environment (e.g. tracking M5 cointegration on an M1 chart), a distinct structural divergence occurs between the main-chart bands and the separate-window oscillator:
A. The Discrepancy
You may observe the lower timeframe price (M1) pierce the M5 outer band on the main chart, while the separate-window MTF Z-Score remains neutral (Gray).
- The Reason: The main chart compares the live, real-time lower-timeframe price (
P_{A, \text{ltf}}) against the static higher-timeframe band. If the price spikes violently during the 5-minute interval, it will visually pierce the band. However, the Pure MTF Oscillator computes the Z-Score using the closed higher-timeframe price (P_{A, \text{htf}}). Since the 5-minute candle hasn't closed yet or its average close is lower, the pure HTF Z-Score remains neutral.
B. Pure MTF vs. Hybrid MTF Configuration
- Pure MTF (Default): Calculates everything strictly on the higher timeframe. It provides the highest statistical stability and filters out intraday/micro-timeframe false breakouts.
- Hybrid MTF (Optional Custom Setup): Uses the higher timeframe's stable structural parameters (
\beta_{\text{htf}},\alpha_{\text{htf}}, and\sigma_{\text{spread, htf}}), but computes the Z-Score numerator using the live lower-timeframe price (P_{A, \text{ltf}}).\text{Z}_{\text{hybrid}} = \frac{P_{A, \text{ltf}} - \beta_{\text{htf}} P_{B, \text{ltf}} - \alpha_{\text{htf}}}{\sigma_{\text{spread, htf}}}Under this hybrid model, the separate window Z-Score is mathematically guaranteed to cross the\pm 2.0boundaries at the exact second the price pierces the bands on the main chart.
5. Parameters
A. Common Parameters
- Symbol A (
InpSymbolA): The primary asset to trade (Default:"UKOIL"- Brent Crude Oil). - Symbol B (
InpSymbolB): The secondary benchmark asset (Default:"USOIL"- WTI Crude Oil). - Anchor Reset (
InpAnchor): The reset anchor period (None, Session, Week, Month, Custom Session). - Lookback (
InpLookback): The rolling regression window size (Used if Anchor = None). - Custom Start (
InpCustomStart): Session start time in format "HH:MM" (Used if Anchor = Custom). - Custom End (
InpCustomEnd): Session end time in format "HH:MM" (Used if Anchor = Custom).
B. Bands Specific Parameters
- Draw Center Line (
InpDrawCenterLine): Toggle to draw the gold Equilibrium Center Line (Z=0.0). - Draw Inner Bands (
InpDrawInnerBands): Toggle to draw the dotted Coral/LightSkyBlue Warning Bands (Z=\pm 1.5). - Inner Band Multiplier (
InpInnerMultiplier): The Z-Score multiplier for the inner bands (Default:1.5). - Draw Outer Bands (
InpDrawOuterBands): Toggle to draw the dashed Crimson/DeepSkyBlue Extreme Bands (Z=\pm 2.0). - Outer Band Multiplier (
InpOuterMultiplier): The Z-Score multiplier for the outer bands (Default:2.0).
6. Optimized Global Multi-Asset Presets
To ensure statistical validity, only trade assets that share a fundamental, structural, or macroeconomic link. Below are the most robust, cointegrated global pairs optimized for live execution, mapped in PairsTrading_Preset_Manager.mqh:
| Asset Class | Symbol A | Symbol B | Recommended TF | Lookback / Anchor | Inner / Outer Mult | Trading Style & Concept |
|---|---|---|---|---|---|---|
| Energies | UKOIL (Brent) |
USOIL (WTI) |
M5 / M15 |
120 / ANCHOR_NONE |
1.5 / 2.0 |
Crude Oil Spread. Sweet/Light vs. Heavy/Sour grade arbitrage. Heavily mean-reverting. |
| Precious Metals | XAUUSD (Gold) |
XAGUSD (Silver) |
M15 / H1 |
120 / ANCHOR_WEEK |
1.5 / 2.0 |
Gold-to-Silver Ratio. Decades-old commodity value parity. Highly stable weekly anchors. |
| Forex Majors | EURUSD |
GBPUSD |
M5 / M15 |
120 / ANCHOR_CUSTOM_SESSION (e.g., 09:00 - 18:00) |
1.5 / 2.0 |
European Relative Value. High cointegration due to close UK-Eurozone macro ties. Custom session filters out overnight illiquidity. |
| Forex Commodity | AUDUSD |
NZDUSD |
M15 / H1 |
120 / ANCHOR_SESSION |
1.5 / 2.0 |
Aussie vs. Kiwi. Commodity export-driven Oceanic currencies. Daily reset captures session shifts beautifully. |
| Equity Indices | US100 (Nasdaq) |
US500 (S&P500) |
M15 / H1 |
144 / ANCHOR_WEEK |
1.5 / 2.0 |
Growth vs. Broad Market. Tech sector rotations vs. global indexing. Excellent weekly trend reversion. |
| Equity Indices | DE40 (DAX) |
EU50 (Stoxx50) |
M15 / H1 |
120 / ANCHOR_WEEK |
1.5 / 2.0 |
Group Arbitrage. High European index cointegration due to shared Eurozone macro factors. |