StochastiQ
Multi-Model Portfolio Optimization with Stochastic Simulation, Options Overlay, and Regime-Conditional Validation
What we built.
A complete falsifiable empirical pipeline for multi-model portfolio construction, from raw data through statistically rigorous out-of-sample validation.
We selected a seven-asset universe (AAPL, MSFT, JPM, JNJ, XOM, SPY, GLD) spanning equity sectors, geography, and asset classes. We pulled five years of daily price data via yfinance (1,257 training days from 2020 through 2024), holding back the most recent 16 months (332 trading days) as a strict out-of-sample window - never touched during model fitting.
On the training period we calibrated four stochastic-process models for each ticker: Geometric Brownian Motion, Merton jump-diffusion, Constant Elasticity of Variance, and Heston stochastic volatility. We then ran 5,000 correlated Monte Carlo paths per model with Cholesky-injected cross-asset correlation, and built seven optimized portfolios on top: per-model maximum-Sharpe allocations, plus three model-robust formulations (min-max worst-case, equal-blend, KS-weighted blend).
We added a Black-Scholes-Merton options overlay with three classical strategies (covered call, protective put, collar), then validated everything out-of-sample using a stationary block-bootstrap with paired Sharpe-difference inference and pre-registered decision rules. Finally, we conditioned the entire analysis on market regime via a two-state Hidden Markov Model anchored to the VIX, applied Holm-Bonferroni multiple-testing correction across 14 paired tests, and decomposed performance into Calm-day vs. Stress-day CVaR.
The project frames as Project Idea 6 (independent direction, instructor-approved) and incorporates the full blueprint of Project Idea 1 while substantially extending it on the validation, regime-conditioning, and coherent-risk-measure axes.
Eight phases, one cohesive system.
Each phase is a self-contained, runnable contribution committed and pushed independently. The full Git history is preserved in the repository.
Same data. Different verdict.
The central methodological insight of the project: a strategy designed to manage state-contingent risk must be evaluated using a state-contingent risk metric. Sharpe ratio averages over both regimes; CVaR conditions on the left tail.
95% CI = [−1.40, +0.21]
p-value = 0.288
Verdict = Underpowered
Per-Merton: +60 bps
Min-max: +53 bps
Calm CVaR: all worse (cost of insurance)
Built end-to-end in Python.
Production-grade source code under src/, eight Jupyter notebooks orchestrating the pipeline, fully reproducible from a single seed.
I (Anay Abhijit Joshi) would like to express my sincere gratitude to Professor Satyajit Karnik. MGT 6081-A fundamentally changed the way I think about derivative securities and state-contingent risk. The framework you taught us, like specifically coherent risk measures, stochastic-process modeling, and the rigor required to evaluate state-dependent payoffs, etc., is what made this entire project possible...
Coming from a Computer Science background, your lectures provided the necessary bridge to help me develop a genuine passion for finance... Every empirical decision in this work, from the choice of CVaR over Sharpe to the regime-conditional decomposition, traces back directly to the course goals of understanding pricing methodologies, risk-neutral frameworks, and simulations using stochastic differential equations.
Thank you so much for your guidance and for demonstrating how to apply complex financial theory to specific, real-world examples...