This repository contains implementations of two quantitative trading strategy challenges focused on signal mapping and options-based forecasting.
Both challenges involve developing systematic trading strategies with specific risk-adjusted return objectives. The implementations prioritize robustness, interpretability, and risk management over model complexity.
Create an optimal mapping from 51 input signals (10 long-term + 41 short-term) to portfolio exposure values that beat a provided baseline in risk-adjusted returns.
- Signal Processing: Standardized signal transformations with volatility-based filtering
- Feature Engineering: Signal interactions, momentum indicators, and regime detection
- Model: Ridge regression with walk-forward validation to prevent overfitting
- Risk Management: Dynamic exposure limits with volatility-adjusted position sizing
- Volatility regime detection for conditional signal weighting
- Signal interaction terms to capture non-linear relationships
- Walk-forward validation with expanding windows
- Aggressive leverage in high-conviction scenarios (up to 3.0x)
The strategy is evaluated on:
- Sharpe Ratio: Risk-adjusted returns
- Calmar Ratio: Return relative to maximum drawdown
- Maximum Drawdown: Largest peak-to-trough decline
Challenge1_Signals/QV_Signal_Strategy.py- Main strategy implementationChallenge1_Signals/Signal_Mapping_Analysis.ipynb- Development process and analysisData/QQQ_base - QQQ_base.csv- Baseline signal reference data
Use end-of-day QQQ options data to forecast next-day directional movement with exposure range -1.0 to +1.5 and target Calmar ratio > 2.0.
- Data Source: Millions of rows of end-of-day options prices and Greeks
- Feature Engineering:
- Options sentiment indicators (put/call ratios, skew)
- Volatility surface metrics (IV percentiles, term structure)
- Positioning signals (open interest, volume concentrations)
- Greeks-based risk metrics (gamma exposure, delta imbalance)
- Model: Ensemble approach combining multiple signal types
- Risk Management: Strict exposure limits with downside protection
- Comprehensive options Greeks utilization (delta, gamma, vega, theta)
- Put-call ratio analysis across strikes and expirations
- Implied volatility surface analysis for regime detection
- Open interest and volume flow analysis
- Lookahead bias prevention in all feature calculations
- Calmar Ratio: > 2.0
- Sharpe Ratio: > 1.5
- Exposure Range: -1.0 to +1.5
Challenge2_Options/QV_Options_Strategy.py- Main strategy implementationChallenge2_Options/Options_Strategy_Analysis.ipynb- Development process and analysisData/options_eod_SPY.csv- SPY options end-of-day data (6.5M rows)Data/options_eod_QQQ.csv- QQQ options end-of-day data (5.0M rows)
Due to GitHub's file size limitations, the following large data files are not included in this repository:
Data/options_eod_SPY.csv(~1.35 GB)Data/options_eod_QQQ.csv(~1.04 GB)
Note: These files are required to run the Challenge 2 options strategy. The baseline signal file for Challenge 1 is included.
Data/QQQ_base - QQQ_base.csv- Baseline signal reference for Challenge 1
The SPY and QQQ options datasets (when obtained) contain:
tradeDate: Trading datespotPrice: Underlying price at closestrike: Option strike pricedelta,gamma,vega,theta,rho: Options GreekscallPrice,putPrice: Option pricescallOpenInterest,putOpenInterest: Open interestcallVolume,putVolume: Trading volume
Date range: 2020-present (depending on data availability)
- Python 3.8 or higher
pandas>=1.3.0
numpy>=1.21.0
scipy>=1.7.0
scikit-learn>=1.0.0
matplotlib>=3.4.0
jupyter>=1.0.0
- Clone the repository:
git clone https://github.com/yourusername/Trading-Strategy-Challenges.git
cd Trading-Strategy-Challenges- Install dependencies:
pip install -r requirements.txtOr install manually:
pip install pandas numpy scipy scikit-learn matplotlib jupyterpython Challenge1_Signals/QV_Signal_Strategy.pypython Challenge2_Options/QV_Options_Strategy.pyjupyter notebook Challenge1_Signals/Signal_Mapping_Analysis.ipynb
# or
jupyter notebook Challenge2_Options/Options_Strategy_Analysis.ipynbBoth strategies demonstrate the ability to generate positive risk-adjusted returns through systematic signal processing and disciplined risk management.
- Successfully beats baseline metrics through robust signal combination
- Demonstrates regime-aware exposure management
- Shows consistent performance across walk-forward validation windows
- Achieves target Calmar ratio through comprehensive options analysis
- Utilizes multi-dimensional features from options Greeks and positioning
- Maintains strict exposure discipline while capturing directional opportunities
The Jupyter notebooks document the iterative development process, including:
- Initial feature exploration and analysis
- Model selection and hyperparameter tuning
- Performance evaluation across multiple metrics
- Identification and resolution of lookahead bias
- Walk-forward validation results
Both strategies implement:
- Strict exposure limits to control portfolio risk
- Volatility-based position sizing
- Maximum drawdown monitoring
- Regime-aware signal adjustments
Research conducted with assistance from Perplexity AI.
This code is provided for educational and demonstration purposes.
Will Hammond November 2025