UnifiedVol is a C++20 quantitative finance library for volatility surface modeling and calibration.
-
Full enforcement of static no-arbitrage conditions:
- Calendar arbitrage
- Butterfly spread arbitrage
- Positive minimum variance
- Roger Lee’s asymptotic wing slope bounds
-
Calibration methodology:
- Sequential Quadratic Programming (SQP) with constraint handling via NLopt
- Closed-form analytical gradients for improved speed and numerical stability
- Post-calibration validation to confirm absence of arbitrage violations
- SVI Calibration Fits (PDF)
- Market implied volatilities vs fitted SVI curves (SPY 2025-04-07) :

Planned extensions include:
- SSVI (Stochastic Volatility Inspired) parameterization
- SABR stochastic volatility model
- Heston stochastic variance model
- Stochastic Local Volatility (SLV) frameworks
- Integration with PDE solvers for local volatility pricing
- Roger W. Lee (2003), The Moment Formula for Implied Volatility at Extreme Strikes
- Jim Gatheral & Antoine Jacquier (2014), Arbitrage-Free SVI Volatility Surfaces
- Zeliade Systems (2012), Quasi-Explicit Calibration of Gatheral’s SVI Model (White Paper)
- Tahar Ferhati (2020), Robust Calibration for SVI Model Arbitrage-Free
Sample surfaces calibrated in this project are derived from publicly available option data:
- CMake ≥ 3.22
- Visual Studio 2022 with C++ support
- vcpkg (manifest mode enabled)
rm -r -fo build; cmake -S . -B build -G "Ninja Multi-Config" -DCMAKE_TOOLCHAIN_FILE="C:/vcpkg/scripts/buildsystems/vcpkg.cmake" -DVCPKG_MANIFEST_MODE=ON -DUNIFIEDVOL_BUILD_EXAMPLE=ON; cmake --build build --config Release ./build/Release/unifiedvol_example.exe
This repository is under active development. Interfaces, APIs, and model implementations are subject to further changes.