Project / 02
Black–Scholes and Heston Model Comparison

I implemented Black–Scholes and the Heston semi-closed pricing formula, then compared the Heston results with a Monte Carlo simulation using a full-truncation Euler scheme.
The notebook reconstructs implied-volatility surfaces, studies the effect of correlation and vol-of-vol, and checks the numerical results using put–call parity, arbitrage bounds, Monte Carlo standard errors and confidence intervals.
The purpose is to better understand stochastic-volatility models and their numerical implementation rather than to present a calibrated production model.
What I wanted to understand
Understand how stochastic variance changes the shape and term structure of implied volatility relative to a constant-volatility baseline.
What the project covers
- Implement Black–Scholes and Black–76 pricing with a common implied-volatility inversion routine.
- Price Heston options through characteristic-function integration and verify them against full-truncation Euler Monte Carlo.
- Measure Monte Carlo standard errors and confidence intervals, then check put–call parity and no-arbitrage bounds.
- Study the effect of correlation and volatility of volatility and report the Feller-condition diagnostic.
for _ in range(max_iter):
mid = 0.5 * (lo + hi)
error = black76_price(F, K, T, r, mid, option_type) - price
if abs(error) < tolerance:
return midWhat the result does not claim
The Heston parameters are illustrative and are not calibrated to market data. The Monte Carlo method also retains discretisation bias, particularly when the variance process approaches zero.
Selected outputs
A few figures from the notebook.

