This project involves implementing an arbitrage-free smile interpolator to enhance pricing accuracy and eliminate arbitrage opportunities.
- Implement an arbitrage-free smile interpolator (
SmileAF). - Construct a local volatility model using the interpolator.
- Use a PDE-based approach to price European options with the local volatility model.
- Compare pricing errors of the arbitrage-free interpolator with cubic spline interpolators.
- Explore further improvements for precision and efficiency, particularly in tail construction.
- Ensures monotonicity and convexity of European call prices.
- Guarantees non-negative probability density (butterfly prices).
- Derives a local volatility surface from implied volatility data.
- Uses cubic spline interpolation to ensure smooth volatility surfaces.
- Efficiently prices European options using the local volatility surface.
- Evaluates calibration errors for different smile interpolation methods.
The SmileAF class ensures an arbitrage-free volatility surface by:
- Constructing call price functions with monotonicity and convexity constraints.
- Using quadratic programming to solve for smooth probability densities.
- Providing seamless interpolation of implied volatilities.
- Monotonicity and convexity of call prices.
- Non-negative density functions.
- Exact fit to given strike-volatility marks.
- Spline interpolation for smoothness.
- Quadratic programming (
CVXOPT) ensures precision. - Smooth extrapolation for tail handling.
- Strike-volatility pairs (
k,σ). - Other parameters such as forward price, interest rates, and maturities.
- Arbitrage-free volatility surface.
- European option prices derived from the local volatility model.
- Flat Volatility Surface:
- Baseline testing with no smile.
- Smile with Cubic Spline:
- Mild and strong smiles to test cubic spline performance.
- Arbitrage-Free SmileAF:
- Evaluates performance without arbitrage issues.
- Implied volatility surface plots.
- Calibration error heatmaps.
- Larger calibration errors in short-end, low-strike regions.
- Prone to arbitrage with inconsistent market data.
- Reduces mispricing by enforcing non-arbitrage constraints.
- Improves hedging performance.
- Handles inconsistent data without introducing arbitrage.
- Produces smooth and stable volatility surfaces.
- Ensures better convergence in PDE pricing.
- Implement parametric models to handle extreme moneyness and maturity values.
- Incorporate level, slope, and curvature factors for better interpolation.
- Ensure twice-continuous differentiability for smoother risk-neutral density estimation.
- [Fengler, 2009] Arbitrage-Free Smoothing of the Implied Volatility Surface, Quantitative Finance.
A function to convert fixed<w, b> representation to a real number using two's complement representation for negative numbers.
`# CRR Binomial Tree Model and Greeks Calculation
The Cox-Ross-Rubinstein (CRR) binomial tree model is a discrete-time approach for option pricing. It evaluates the possible paths of an option's price iteratively.
def eurocall_crr(S, K, r, T, sigma, n):
- S: Initial stock price.
- K: Strike price.
- r: Risk-free interest rate.
- T: Time to maturity (in years).
- sigma: Volatility of the stock.
- n: Number of time steps in the binomial tree.
- CRR (Cox-Ross-Rubinstein)
- JRRN (Jarrow-Rudd Natural Measure)
- JREQ (Jarrow-Rudd Equal Measure)
- Tian Calibration
The binomial tree models are used to calculate the prices of financial derivatives (European call and put options). Each model uses its unique calibration for the upward and downward movement factors.
Greeks measure the sensitivity of derivative prices to changes in underlying parameters. The following Greeks are calculated:
- Delta (Δ\DeltaΔ): Sensitivity to underlying price changes.
- Gamma (Γ\GammaΓ): Rate of change of Delta.
- Vega (vvv): Sensitivity to volatility changes.
- Theta (θ\thetaθ): Sensitivity to time decay.
- Rho (ρ\rhoρ): Sensitivity to interest rate changes.
The Greeks are approximated using the following formulas:
-
Delta ((\Delta)): [ \Delta \approx \frac{V(S + \Delta S) - V(S - \Delta S)}{2 \Delta S}, \quad \Delta S = 0.1% \times S ]
-
Gamma ((\Gamma)): [ \Gamma \approx \frac{V(S + \Delta S) - 2V(S) + V(S - \Delta S)}{\Delta S^2} ]
-
Vega ((v)): [ v \approx \frac{V(\sigma + \Delta \sigma) - V(\sigma - \Delta \sigma)}{2 \Delta \sigma}, \quad \Delta \sigma = 0.1% ]
-
Theta ((\theta)): [ \theta \approx \frac{V(t + \Delta t) - V(t)}{\Delta t}, \quad \Delta t = 0.004 ]
-
Rho ((\rho)): [ \rho \approx \frac{V(r + \Delta r) - V(r - \Delta r)}{2 \Delta r}, \quad \Delta r = 0.0001 ]
- greeks_crr: Greeks calculation for CRR model.
- greeks_jrrn: Greeks calculation for JRRN model.
- greeks_jreq: Greeks calculation for JREQ model.
- greeks_tian: Greeks calculation for Tian model.
This homework presents construction, analysis, and visualization of the implied volatility surface for options.
- Calculates the pricing error for binary and European call options using a trinomial tree model.
- Logs and plots the error as a function of steps in the pricing method, showing convergence behavior.
- Implements
strikeFromDelta, which computes the strike corresponding to a given delta using forward delta conventions. - Utilizes numerical methods (e.g., Brent's method) for root-finding.
- Builds a volatility smile using ATM volatilities, butterfly spreads (BF10, BF25), and risk reversals (RR10, RR25).
- Uses cubic spline interpolation to smooth volatility across strike prices.
- Creates a smooth implied volatility surface by interpolating variance across time and strikes.
- Supports partial derivatives (w.r.t. time and strike) for further analysis.
- Generates a 3D plot of the implied volatility surface using the
matplotliblibrary. - Provides a clear view of how volatility changes with respect to time to maturity and strike price.