Quanta Ventures Fellowship Finalist (Top 5%)

Systematic QQQ Strategy
with Macro Regime Awareness

A robust, multi-factor trading strategy achieving 1.55 Sharpe on blind holdout data through Fed liquidity signals, volatility efficiency, and inflation-aware position sizing.

IJ
Ishu Jaswani Quantitative Strategist | Columbia MS Analytics
Holdout Sharpe
1.55
vs QQQ 0.52 (3x improvement)
Total Return
~150%
vs QQQ ~40%
Max Drawdown
-19.7%
vs QQQ -34.0%
Holdout Period
2022-25
Blind out-of-sample test

Holdout Period Equity Curve

Strategy
QQQ Buy & Hold
Strategy vs QQQ Equity Curve

Strategy Architecture

📊

Fed Liquidity Spread

Core positioning based on the spread between 2Y Treasury yields and the Fed Funds rate. When the spread signals cuts are priced in (<-0.25), the strategy goes aggressive. When hikes are expected (>0.25), it becomes defensive.

Volatility Efficiency

Uses Parkinson volatility and a 21-day efficiency ratio (directional move vs path traveled) ranked over 252 days. Scales exposure up in trending markets, down in choppy regimes.

🛡️

Inflation Veto

Hard stop on long exposure when CPI YoY exceeds 3% and Fed is hiking. This protected capital during 2022's inflation-driven selloff while other models got crushed.

🎯

Bear Trap Detection

Microstructure signal identifying false breakdowns: when price dips below the 20-day low but closes back above. Adds 0.5x exposure to capture mean reversion.

📈

Trend Filter (200 MA)

Modulates efficiency multiplier based on whether price is above or below the 200-day moving average. Bullish positioning gets amplified in uptrends, dampened in downtrends.

🔬

Robustness Framework

Strict train/validation/holdout splits (2000-2015 / 2016-2021 / 2022-2025). No lookahead bias. Sensitivity tested with +/-10% parameter shifts. Buffer zones prevent data leakage.

Performance Across Periods

Strategy Period Sharpe Calmar Total Return Max Drawdown
Enhanced Strategy Holdout (2022-2025) 1.55 0.92 ~150% -19.7%
Enhanced Strategy Validation (2016-2021) 1.01 0.71 ~110% -23.5%
Enhanced Strategy Train (2000-2015) 0.63 0.34 ~85% -30.8%
QQQ Benchmark Holdout (2022-2025) 0.52 0.24 ~40% -34.0%
QQQ Benchmark Validation (2016-2021) 1.15 0.89 ~220% -28.6%
QQQ Benchmark Train (2000-2015) 0.36 0.11 ~65% -61.5%

Signal Components

Macro / Fed Signals

DGS2 - FEDFUNDS Spread CPI YoY Change Term Spread 10Y2Y Inflation Veto Logic

Volatility / Efficiency

Parkinson Volatility 21-Day Efficiency Ratio 252-Day Percentile Rank VIX Futures Volume/OI

Trend / Technical

200 MA Trend Filter Bear Trap Detection 20-Day Low Breakout

Sentiment

AAII Bull/Bear Spread UMich Consumer Sentiment

Core Implementation

View on GitHub
qqq_strategy.py
# Fed Liquidity Spread: Core position sizing
spread = df['Macro_Fed_Spread']

# Base sizing based on rate expectations
base_size = pd.Series(0.75, index=df.index)
base_size[spread < -0.25] = 1.0   # Cuts priced in → Aggressive
base_size[spread > 0.25] = 0.5    # Hikes priced in → Defensive

# Efficiency multiplier based on trend
trend_up = df['QQQ_Close'] > df['MA200']
eff_mult = pd.Series(1.0, index=df.index)
eff_mult[trend_up] = 1.0 + (eff_rank[trend_up] * 0.5)   # Max 1.5x
eff_mult[~trend_up] = 1.0 - (eff_rank[~trend_up] * 0.8)  # Min 0.2x

# Inflation veto: hard stop in stagflationary regime
cpi_veto = (df['Macro_CPI_YoY'] > 3.0) & (spread > 0.0)

# Combine + add bear trap alpha
exposure = base_size * eff_mult + (df['Micro_Trap'] * 0.5)
exposure[cpi_veto] = 0.0
exposure = exposure.clip(-1.0, 1.5)

Data Sources

📈 Price Data

QQQ OHLCV Daily 2000-2025

🏛️ Fed / Rates

DGS2 DGS10 FEDFUNDS Term Spread

📊 Volatility

VIX VIX Futures Vol VIX Futures OI

🎯 Macro / Sentiment

CPI INDPRO UNRATE UMCSENT AAII Survey