Pricing Models: Theoretical Background¶
This document provides rigorous mathematical derivations and theoretical foundations for all pricing models implemented in Neutryx.
Table of Contents¶
- Black-Scholes-Merton Model
- Stochastic Volatility Models
- Heston Model
- SABR Model
- Rough Bergomi Model
- Jump-Diffusion Models
- Merton Jump-Diffusion
- Kou Double Exponential
- Variance Gamma
- Local Volatility Models
- Interest Rate Models
- Vasicek Model
- Cox-Ingersoll-Ross (CIR)
- Hull-White Model
Black-Scholes-Merton Model¶
Historical Context¶
The Black-Scholes-Merton model [Black & Scholes, 1973; Merton, 1973] revolutionized finance by providing the first closed-form solution for European option pricing. It earned Scholes and Merton the 1997 Nobel Prize in Economics.
Reference: [Black & Scholes, 1973]; [Merton, 1973]; [Hull, 2022], Chapter 15
Model Specification¶
Under the risk-neutral measure \(\mathbb{Q}\), the stock price \(S_t\) follows geometric Brownian motion:
where: - \(r\): risk-free interest rate (constant) - \(\sigma\): volatility (constant) - \(W_t^{\mathbb{Q}}\): Brownian motion under \(\mathbb{Q}\)
Solution: By Itô's lemma (see Mathematical Foundations):
Black-Scholes PDE Derivation¶
Consider a European option with payoff \(g(S_T)\) and value \(V(S, t)\). Construct a self-financing hedged portfolio:
where \(\Delta_t = \frac{\partial V}{\partial S}\) (delta hedge).
Step 1: Apply Itô's lemma to \(V(S_t, t)\):
Step 2: Compute portfolio change:
(stochastic terms cancel by construction)
Step 3: No-arbitrage condition: \(d\Pi_t = r \Pi_t \, dt\)
Black-Scholes PDE:
with terminal condition \(V(S, T) = g(S)\).
Reference: [Hull, 2022], Chapter 15; [Wilmott et al., 1995]
Black-Scholes Formula¶
For a European call option with strike \(K\) and maturity \(T\):
where:
and \(\Phi(\cdot)\) is the standard normal cumulative distribution function.
Put-Call Parity:
Derivation: Using risk-neutral pricing:
Substituting the lognormal distribution of \(S_T\) and completing the square yields the formula.
Reference: [Black & Scholes, 1973]; [Hull, 2022], Chapter 15
Greeks¶
Delta (\(\Delta\)): First derivative with respect to underlying
Gamma (\(\Gamma\)): Second derivative (curvature)
where \(\phi(\cdot)\) is the standard normal PDF.
Vega (\(\mathcal{V}\)): Sensitivity to volatility
Theta (\(\Theta\)): Time decay
Rho (\(\rho\)): Interest rate sensitivity
Reference: [Hull, 2022], Chapter 19; [Haug, 2007]
Implementation: src/neutryx/models/bs.py (analytical formulas), src/neutryx/valuations/greeks/greeks.py (JAX autodiff)
Model Limitations¶
- Constant volatility: Violated by volatility smile/skew
- Log-normal distribution: Underestimates tail risk (fat tails in reality)
- Continuous trading: Transaction costs ignored
- No jumps: Cannot capture gap risk
Empirical violations: Implied volatility varies with strike and maturity (volatility surface).
Extensions: Stochastic volatility (Heston, SABR), jump models (Merton), local volatility (Dupire)
Stochastic Volatility Models¶
Motivation¶
Market-observed implied volatility surfaces exhibit: - Smile/Skew: Implied vol varies with strike - Term structure: Implied vol varies with maturity
Black-Scholes cannot capture these. Stochastic volatility models allow volatility to evolve randomly.
Heston Model¶
Model Specification¶
Heston (1993) introduced the most popular stochastic volatility model with semi-analytical solutions.
Parameters: - \(v_t\): instantaneous variance (stochastic) - \(\kappa > 0\): mean-reversion speed - \(\theta > 0\): long-term variance level - \(\sigma_v > 0\): volatility of volatility (vol-of-vol) - \(\rho \in [-1, 1]\): correlation between price and volatility
Feller Condition: To ensure \(v_t > 0\), require:
If violated, \(v_t\) can reach zero (boundary attainable).
Reference: [Heston, 1993]; [Gatheral, 2006], Chapter 3
Implementation: src/neutryx/models/heston.py
Characteristic Function¶
The key to Heston's tractability is the characteristic function of \(\log S_T\):
Heston characteristic function:
where \(C(\tau, u)\) and \(D(\tau, u)\) satisfy complex-valued Riccati ODEs:
with \(D(0, u) = C(0, u) = 0\).
Analytical solution (using matrix exponentials):
where:
Reference: [Heston, 1993], Appendix A; [Gatheral, 2006], Section 3.2
Option Pricing via FFT¶
Given the characteristic function, option prices can be computed using Carr-Madan FFT [Carr & Madan, 1999]:
where \(k = \log(K/S_0)\), \(\alpha > 0\) is a damping parameter, and:
The FFT computes option prices across many strikes simultaneously in \(O(N \log N)\) time.
Reference: [Carr & Madan, 1999]; [Gatheral, 2006], Chapter 2
Implementation: src/neutryx/models/fft_pricing.py, src/neutryx/engines/fourier.py
Simulation Schemes¶
Euler Scheme: Simple but can produce negative variance.
Milstein Scheme: Higher-order accuracy.
Quadratic-Exponential (QE) Scheme [Andersen, 2008]: Ensures non-negativity and preserves moments.
Split based on \(\Psi_t = \frac{\sigma_v^2 e^{-\kappa\Delta t}}{4\kappa} \left(1 - e^{-\kappa\Delta t}\right)\):
- If \(\Psi_t \leq \Psi_c\) (critical threshold): quadratic form
- If \(\Psi_t > \Psi_c\): exponential form (handles tail)
Reference: [Andersen, 2008]; [Glasserman, 2004], Section 3.4
Implementation: src/neutryx/models/heston.py:simulate() (supports all three schemes)
Volatility Smile¶
Heston generates volatility smile through:
- Vol-of-vol (\(\sigma_v\)): Increases curvature (smile)
- Correlation (\(\rho < 0\)): Creates skew (OTM puts more expensive)
- Mean-reversion (\(\kappa\)): Controls term structure
Stylized fact: Equity options have \(\rho \approx -0.7\) (leverage effect).
Reference: [Gatheral, 2006], Chapter 3
SABR Model¶
Model Specification¶
The SABR (Stochastic Alpha Beta Rho) model [Hagan et al., 2002] is an industry-standard for modeling the volatility smile, particularly in interest rate markets.
Parameters: - \(F_t\): forward price (or forward rate) - \(\alpha_t\): stochastic volatility - \(\beta \in [0, 1]\): CEV exponent (0 = normal, 1 = lognormal, 0.5 = shifted lognormal) - \(\nu > 0\): vol-of-vol - \(\rho \in [-1, 1]\): correlation
No drift: Model is directly for forward prices (already under forward measure).
Reference: [Hagan et al., 2002]; [Gatheral, 2006], Chapter 4
Implementation: src/neutryx/models/sabr.py
Hagan's Approximation¶
Hagan derived an asymptotic expansion for implied volatility as a function of strike:
where:
At-the-money (\(F = K\)):
Calibration: Fit \(\{\alpha, \beta, \rho, \nu\}\) to market implied volatilities (often fix \(\beta\)).
Reference: [Hagan et al., 2002], Section 3; [Gatheral, 2006], Section 4.2
Implementation: src/neutryx/models/sabr.py:implied_volatility(), src/neutryx/calibration/sabr.py
Density and Risk Management¶
SABR also provides the probability density via:
computed numerically from the implied volatility surface.
Application: Risk-neutral density, arbitrage detection (density must be non-negative).
Reference: [Hagan et al., 2002], Section 5
Rough Bergomi Model¶
Rough Volatility¶
Recent empirical studies [Gatheral et al., 2018] show that realized volatility exhibits roughness with Hurst exponent \(H \approx 0.1\) (anti-persistent, rougher than Brownian motion).
Traditional SV models: Assume \(H = 0.5\) (Brownian volatility)
Rough volatility: \(H < 0.5\) (fractional Brownian motion)
Model Specification¶
The Rough Bergomi model [Bayer et al., 2016] uses fractional Brownian motion:
where: - \(W_t^H\): fractional Brownian motion with Hurst parameter \(H \in (0, 1)\) - \(\xi_0(t)\): forward variance curve (deterministic) - \(\eta > 0\): vol-of-vol - \(\rho = \langle dW_t^S, dW_t^H \rangle / dt\): correlation (generalized)
Properties of fBm: - \(W_t^H \sim \mathcal{N}(0, t^{2H})\) - Covariance: \(\mathbb{E}[W_s^H W_t^H] = \frac{1}{2}(s^{2H} + t^{2H} - |t-s|^{2H})\) - Not a semimartingale for \(H \neq 1/2\) (no Itô calculus)
Reference: [Bayer et al., 2016]; [Gatheral et al., 2018]
Implementation: src/neutryx/models/rough_vol.py
Simulation via Cholesky¶
Since fBm is Gaussian, simulation uses Cholesky decomposition of the covariance matrix:
- Discretize: \(W_{t_i}^H\) for \(i = 0, \ldots, N\)
- Compute covariance matrix: \(\Sigma_{ij} = \mathbb{E}[W_{t_i}^H W_{t_j}^H]\)
- Cholesky: \(\Sigma = L L^T\)
- Generate: \(\mathbf{W}^H = L \mathbf{Z}\), where \(\mathbf{Z} \sim \mathcal{N}(0, I)\)
Complexity: \(O(N^3)\) for Cholesky, \(O(N^2)\) for sampling
Alternative: Hybrid scheme [McCrickerd & Pakkanen, 2018] reduces to \(O(N \log N)\) using FFT.
Reference: [Bayer et al., 2016], Section 3; [Gatheral et al., 2018]
Empirical Fit¶
Rough Bergomi with \(H \approx 0.1\) fits: - Short-dated skew: Steeper than traditional SV models - Term structure: Flatter vol-of-vol structure
Advantage: Fewer parameters, better empirical fit
Disadvantage: Computationally intensive, no characteristic function
Reference: [Gatheral et al., 2018]; [Fukasawa, 2011]
Jump-Diffusion Models¶
Motivation¶
Empirical evidence for jumps: - Discontinuous price movements (earnings announcements, geopolitical events) - Implied volatility smile not fully captured by diffusion models - Fat tails in return distributions (excess kurtosis)
Merton Jump-Diffusion¶
Model Specification¶
Merton (1976) added a compound Poisson jump process to GBM:
where: - \(J_t = \sum_{i=1}^{N_t} (Y_i - 1)\): compound Poisson process - \(N_t\): Poisson process with intensity \(\lambda\) - \(Y_i \sim \text{LogNormal}(\mu_J, \sigma_J^2)\): jump sizes (independent, i.i.d.) - \(\bar{J} = \mathbb{E}[Y - 1] = e^{\mu_J + \sigma_J^2/2} - 1\): mean jump size
Interpretation: Between jumps, \(S_t\) follows GBM; at jump times, \(S\) multiplies by \(Y_i\).
Reference: [Merton, 1976]; [Cont & Tankov, 2004], Chapter 9
Implementation: src/neutryx/models/jump_diffusion.py
Characteristic Function¶
Under risk-neutral measure \(\mathbb{Q}\):
where:
Application: FFT pricing via Carr-Madan or COS method.
Reference: [Merton, 1976]; [Carr & Madan, 1999]
Implementation: src/neutryx/engines/fourier.py
Analytical Pricing (Series Expansion)¶
European call price is a weighted sum of Black-Scholes prices:
where:
Interpretation: Condition on number of jumps \(n\), then use Black-Scholes with adjusted parameters.
Convergence: Truncate series when terms become negligible (typically \(n < 20\)).
Reference: [Merton, 1976]; [Haug, 2007], Section 5.6
Implementation: src/neutryx/models/jump_diffusion.py:price_european()
Kou Double Exponential¶
Model Specification¶
Kou (2002) introduced asymmetric exponential jumps:
where jumps have double exponential distribution:
Parameters: - \(p \in (0, 1)\): probability of upward jump - \(\eta_u > 1\): decay rate of upward jumps - \(\eta_d > 0\): decay rate of downward jumps
Motivation: Captures asymmetry (negative jumps are larger, matching empirical data).
Reference: [Kou, 2002]; [Cont & Tankov, 2004], Section 9.2
Implementation: src/neutryx/models/kou.py
Characteristic Function¶
Asset price CF:
Reference: [Kou, 2002]
Analytical Tractability¶
Kou model admits closed-form solutions for: - European options (via Wiener-Hopf factorization) - Barrier options - Lookback options - Perpetual American options
Advantage: More tractable than Merton for path-dependent options.
Reference: [Kou, 2002], Sections 3-5
Variance Gamma¶
Model Specification¶
The Variance Gamma (VG) model [Madan et al., 1998] is a pure jump Lévy process (infinite activity, no Brownian component).
Time change representation:
where \(X_t = \theta G_t + \sigma W_{G_t}\) and: - \(G_t \sim \text{Gamma}(\nu t, \nu)\): gamma time change with rate \(\nu\) - \(W_t\): Brownian motion (independent of \(G_t\)) - \(\omega\): drift correction for martingale property
Parameters: - \(\theta\): drift of Brownian motion - \(\sigma > 0\): volatility of Brownian motion - \(\nu > 0\): variance rate of gamma process
Interpretation: VG is a Brownian motion subordinated by gamma time (random time change).
Reference: [Madan et al., 1998]; [Cont & Tankov, 2004], Section 8.4
Implementation: src/neutryx/models/variance_gamma.py
Lévy Density¶
VG has infinite activity (infinite number of jumps in any interval) with Lévy density:
Small jumps dominate (consistent with high-frequency price changes).
Reference: [Cont & Tankov, 2004], Section 8.4
Characteristic Function¶
Moments: - Mean: \(\mathbb{E}[X_t] = \theta t\) - Variance: \(\text{Var}(X_t) = (\sigma^2 + \theta^2 \nu) t\) - Skewness: Nonzero (controlled by \(\theta\)) - Kurtosis: Excess kurtosis \(3\nu / T\) (heavy tails)
Reference: [Madan et al., 1998]
Option Pricing¶
VG pricing uses: - FFT methods: Carr-Madan, COS - Numerical integration: Direct integration of CF - Monte Carlo: Simulate \(G_t\) then \(W_{G_t}\)
Advantage: Fits smile better than Black-Scholes with fewer parameters than stochastic volatility.
Reference: [Madan et al., 1998]; [Carr & Madan, 1999]
Local Volatility Models¶
Dupire's Local Volatility¶
Model Specification¶
Dupire (1994) showed that any arbitrage-free implied volatility surface can be realized by a deterministic local volatility function \(\sigma_{\text{loc}}(S, t)\):
Key insight: Local volatility is a function of current stock price and time, not constant.
Reference: [Dupire, 1994]; [Gatheral, 2006], Chapter 5
Implementation: src/neutryx/models/local_vol.py, src/neutryx/models/dupire.py
Dupire's Formula¶
Given the market prices \(C(K, T)\) for all strikes \(K\) and maturities \(T\):
Derivation: From the forward Kolmogorov equation (Fokker-Planck) for the probability density \(p(S, t)\):
Taking derivatives of the call price \(C(K, T) = \int_K^\infty (S - K) p(S, T) dS\) yields Dupire's formula.
Alternative form (in terms of implied volatility \(\sigma_{\text{imp}}(K, T)\)):
Reference: [Dupire, 1994]; [Gatheral, 2006], Section 5.1
Calibration¶
Steps: 1. Interpolate market implied volatility surface \(\sigma_{\text{imp}}(K, T)\) 2. Compute derivatives: \(\frac{\partial \sigma_{\text{imp}}}{\partial K}\), \(\frac{\partial \sigma_{\text{imp}}}{\partial T}\), \(\frac{\partial^2 \sigma_{\text{imp}}}{\partial K^2}\) 3. Apply Dupire's formula to obtain \(\sigma_{\text{loc}}(K, T)\)
Challenges: - Noisy derivatives (need smoothing/regularization) - Arbitrage-free constraints: \(\frac{\partial C}{\partial T} \geq 0\), \(\frac{\partial^2 C}{\partial K^2} \geq 0\) (no arbitrage) - Extrapolation in low-liquidity regions
Reference: [Gatheral, 2006], Section 5.2; [Guyon & Henry-Labordère, 2014]
Implementation: src/neutryx/calibration/local_vol.py
Properties¶
Advantages: - Perfectly fits market prices (by construction) - Deterministic (no randomness in volatility path) - Arbitrage-free
Disadvantages: - No forward smile (future implied volatilities collapse to flat) - Underestimates vega risk - Requires entire surface (data-intensive)
Forward smile problem: Local vol predicts \(\sigma_{\text{imp}}^{\text{forward}}(K, t, T) \to\) constant as \(t \to T\), contradicting market observations.
Extension: Stochastic-Local Volatility (SLV) combines stochastic and local volatility.
Reference: [Gatheral, 2006], Section 5.3
Interest Rate Models¶
Vasicek Model¶
Model Specification¶
Vasicek (1977) introduced the first mean-reverting short rate model:
Parameters: - \(r_t\): instantaneous short rate - \(\kappa > 0\): mean-reversion speed - \(\theta\): long-term mean level - \(\sigma > 0\): volatility
Properties: - Ornstein-Uhlenbeck process: Gaussian, mean-reverting - \(\mathbb{E}[r_t | r_0] = \theta + (r_0 - \theta) e^{-\kappa t}\) - \(\text{Var}(r_t | r_0) = \frac{\sigma^2}{2\kappa} (1 - e^{-2\kappa t})\) - Stationary distribution: \(r_\infty \sim \mathcal{N}\left(\theta, \frac{\sigma^2}{2\kappa}\right)\)
Limitation: \(r_t\) can become negative (unrealistic, though \(\mathbb{P}(r_t < 0)\) can be small).
Reference: [Vasicek, 1977]; [Brigo & Mercurio, 2006], Section 3.2
Implementation: src/neutryx/models/vasicek.py
Zero-Coupon Bond Pricing¶
A zero-coupon bond pays \(1\) at maturity \(T\):
Vasicek bond price (analytical formula):
where:
Derivation: Solve the PDE via separation of variables (affine term structure).
Reference: [Brigo & Mercurio, 2006], Section 3.2; [Björk, 2009], Chapter 21
Bond Option Pricing¶
European options on zero-coupon bonds have closed-form solutions (Jamshidian, 1989):
where \(d_1, d_2\) are analogous to Black-Scholes (with bond volatility \(\sigma_P\)).
Reference: [Brigo & Mercurio, 2006], Section 3.3
Cox-Ingersoll-Ross (CIR)¶
Model Specification¶
Cox, Ingersoll, and Ross (1985) ensured non-negative rates with:
Key difference: Volatility proportional to \(\sqrt{r_t}\) (square-root diffusion).
Feller Condition: To ensure \(r_t > 0\) always:
If satisfied, \(r_t > 0\) for all \(t\) almost surely. If violated, \(r_t\) can reach zero (absorbing boundary).
Reference: [Cox et al., 1985]; [Brigo & Mercurio, 2006], Section 3.1
Implementation: src/neutryx/models/cir.py
Bond Pricing¶
CIR also admits closed-form bond prices:
where:
where \(\gamma = \sqrt{\kappa^2 + 2\sigma^2}\).
Reference: [Cox et al., 1985]; [Brigo & Mercurio, 2006], Section 3.1
Simulation¶
Exact simulation: \(r_t | r_0\) follows a scaled non-central chi-squared distribution:
where \(\chi'^2(\delta)\) is a non-central chi-squared distribution with \(\nu = \frac{4\kappa\theta}{\sigma^2}\) degrees of freedom and non-centrality parameter \(\delta\).
Euler/Milstein: Simpler but requires care near zero (use \(\max(r_t, 0)\) or absorbing).
Reference: [Glasserman, 2004], Section 3.3
Hull-White Model¶
Model Specification¶
Hull and White (1990) extended Vasicek to fit the initial term structure:
where \(\theta(t)\) is a time-dependent function chosen such that:
(i.e., the model reproduces the observed yield curve at \(t=0\)).
Calibration formula:
where \(f(0, t)\) is the instantaneous forward rate.
Reference: [Hull & White, 1990]; [Brigo & Mercurio, 2006], Section 3.4
Implementation: src/neutryx/models/hull_white.py
Bond Pricing¶
Hull-White retains the affine structure:
with \(B(t, T) = \frac{1 - e^{-\kappa(T-t)}}{\kappa}\) (same as Vasicek) and:
Reference: [Brigo & Mercurio, 2006], Section 3.4
Caps and Floors¶
Caplet formula (closed-form):
where \(L_t\) is the LIBOR rate and \(d_1, d_2\) are Black-like terms with volatility derived from Hull-White parameters.
Application: Calibrate to cap/floor market (swaption volatilities).
Reference: [Brigo & Mercurio, 2006], Section 3.5
Summary¶
This document provided rigorous mathematical foundations for:
- Black-Scholes-Merton: Foundational model with closed-form solutions
- Stochastic Volatility: Heston, SABR, Rough Bergomi for smile modeling
- Jump-Diffusion: Merton, Kou, Variance Gamma for tail risk
- Local Volatility: Dupire's formula for perfect calibration
- Interest Rate Models: Vasicek, CIR, Hull-White for rates derivatives
All models are implemented in Neutryx with: - Analytical formulas where available - Numerical methods (MC, PDE, FFT) for general cases - Calibration routines to market data - Validation against academic benchmarks
Next: Numerical Methods Theory | Calibration Theory
References: See Bibliography for complete citations.