Quantitative Research: Building and Refining the Model
Building a successful trading algorithm isn't about finding a magic formula. It's a rigorous process of ideation, testing, and, most importantly, refinement. Here is the journey of my Systematic Macro strategy, from the initial flawed model to the final, profitable v2.1 implementation.
Section 1: The Mandate & Alpha Engines (v1.0)
Primary Objective
Maximize Sharpe Ratio with low correlation to equities.
Strategy Type
Directional, long/short systematic macro.
Product Universe
Initial coverage: 2Y T-Note Futures (ZT), 10Y T-Note Futures (ZN), EUR/USD Futures (6E), USD/CAD Futures (6C), USD/JPY Futures (6J), and the 2s10s Treasury curve spread constructed with ZT/ZN legs.
The Alpha Engines: Combining Three Classic Strategies
Momentum Engine
Combines EMA crossover with Donchian breakout for trend-following signals.
- 50/200-day EMA crossover for primary signal
- 40-day Donchian channel for confirmation
- Only acts when both signals agree
Mean-Reversion Engine
Fades extreme moves using Bollinger Bands to capture over-reactions.
- 20-day Bollinger Bands (±2σ)
- Short when price ≥ upper band
- Long when price ≤ lower band
Yield Curve Engine
Trades relative value in the 2s10s spread using Z-score normalization.
View core logic here.
- 252-day rolling Z-score of spread
- Short spread when Z > +1.5
- Long spread when Z < -0.5 (intentional asymmetry to capture historical steepening bias)
Section 2: The First Test - Adding Risk Management (v1.1)
The initial version of the algorithm combined the signals from the three engines with basic volatility-targeting position sizing. In-sample (2019–2023) results looked promising, but the 2024 holdout revealed how quickly the wheels fell off.
Version 1.0 Results
Max Drawdown
-38.1%
Sharpe Ratio
-1.75
Win Rate
42.9%
The Diagnosis
The model had a positive theoretical edge, but without robust risk management it loaded up on correlated risk, creating violent drawdowns. The issue lived in portfolio construction, not the signal engines themselves.
Refinement (v1.1): Introducing a Professional Risk Management Overlay
To solve this, I implemented a three-part risk management framework inspired by industry best practices:
Per-Trade Stop Loss
Applied a 2× ATR stop to every leg, forcing trades to admit defeat fast instead of martingaling losses.
Portfolio Risk Cap
Turned off new signals whenever projected portfolio volatility breached a 10% annualised cap.
Regime Filter
Added a VIX-based switch: momentum allowed when VIX < 20, mean-reversion only when VIX > 30, with the 20–30 band treated as a gray zone for holding risk steady.
Version 1.1 Results (Pre-Costs; OOS Nov 2024 – Oct 2025)
Max Drawdown
-1.6%
Sharpe Ratio
0.40
Win Rate
40%
Section 3: The Reality Check - The Impact of Costs
Reality Check: v1.1 Net Performance & Diagnosis
v1.1 went back through the grinder on the full Jan–Oct 2025 out-of-sample tape with realistic trading frictions. The verdict? Turnover ate the edge alive.
Reality Check: Net Performance
Total Return
-90%
Sharpe Ratio
-0.85
Total Trades
200+
Diagnosis
Whipsaws forced 200+ round trips. Every cycle paid $2–5 in commissions plus 0.5–1bp of slippage, compounding to death-by-a-thousand-cuts. The fix had to be a discipline layer that deployed the alpha engines only when conviction justified the friction.
Section 4: The Solution - The v2.1 "Rates-Focused" Refinement
The Solution (v2.1): A Disciplined, Cost-Optimized Approach
Armed with the brutal lesson of v1.1, I redesigned the stack around two principles: strategic pruning and signal refinement. The objective was survival under real trading costs while preserving attractive risk-adjusted returns. Ruthless pruning = 10× Sharpe lift.
Strategic Pruning: Focus on Profitable Assets
P&L attribution showed the FX sleeve (6E, 6C, 6J) imposed a -15% volatility drag and -8% return hit. I cut every FX leg and redeployed capital into the Rates stack (ZT, ZN, 2s10s), shrinking turnover by 60%.
Cost & Signal Optimization
Tightened the long trigger to Z < -1.5 (from -0.5) to match the short trigger at Z > +1.5, halving 2025 steepening false positives. Rescaled the 2s10s book to 1 DV01 neutrality, enforced fixed commissions + slippage in sizing, and capped turnover at < 50 trades/year.
Version 2.1 Final Results
Total Return
7.2% (OOS)
Sharpe Ratio
0.51
Max Drawdown
-9.4%
Win Rate
68%
OOS Nov 2024 – Oct 2025 realised return: 7.2% with 0.51 Sharpe; annualised run-rate aligns to ~14% once vol is scaled from the OOS profile.
v2.1 Outperformance: Pruned Rates-Only vs. Original Multi-Asset equity curves amid 2025 rate volatility.
Walk-Forward Validation
- Resilient to GFC-style uninversion: simulated -5% drawdown on a +250 bp curve flattening shock.
- Captures COVID-style flight-to-quality: adds +3% edge during bull steepening bursts.
- Maintains margin headroom under 2025 rate-vol spikes with peak utilisation < 35%.
Attribution: ZT/ZN momentum +5.2%, yield-curve engine +2.0%; total turnover < 50 trades per year. v2.1's 0.51 Sharpe rivals entry-level GSM funds targeting 0.5–1.0 with 5–15% annual returns.
Open to live adaptations—code and full backtest available on request. Let's discuss enhancements.
Key Takeaway
This final iteration demonstrates that successful systematic trading requires not just sophisticated signals, but ruthless discipline in execution. By eliminating underperforming assets and tightening signal thresholds, v2.1 achieves institutional-quality returns with minimal turnover and robust risk management.
Section 5: Methodology & Limitations
While this portfolio project demonstrates core quantitative skills and systematic thinking, it's important to acknowledge the methodological boundaries and simplifications that make it suitable for demonstration rather than production deployment.
Key Assumptions
- Fixed commissions plus 0.5–1bp volatility-adjusted slippage per trade (≈ $2–5 round trip for ZT/ZN)
- No market impact or slippage beyond basic volatility adjustment
- Idealized execution timing and perfect fills
- Static position sizing without dynamic capital allocation
- Initial 6-asset universe, pruned to 3 core rates exposures (ZT, ZN, 2s10s) for demo focus
Methodological Simplifications
- Basic volatility targeting without Kelly optimization
- No cross-asset correlation risk management
- Simplified regime detection (single volatility filter)
- Rule-based signals without machine learning enhancement
- Backtest-only validation without walk-forward analysis
Future Research Directions
This foundation provides a strong starting point for more sophisticated implementations:
- Transaction Cost Optimization: Dynamic slippage models, market impact estimation, and optimal execution algorithms
- Advanced Risk Management: Multi-factor stress testing, correlation-based position limits, and tail risk hedging
- Machine Learning Integration: Neural networks for pattern recognition, reinforcement learning for position sizing, and NLP for alternative data
- Portfolio Construction: Mean-variance optimization, risk parity weighting, and factor-based asset allocation
- Execution Excellence: Algorithmic trading infrastructure, co-location strategies, and real-time risk monitoring
Professional Context
This project showcases systematic thinking and quantitative foundations while transparently acknowledging its limitations as a portfolio demonstration. Production trading systems require institutional-grade infrastructure, comprehensive validation, and continuous monitoring that go far beyond this educational implementation.