Finance & Risk

vega-lab — Options Volatility Analytics Engine

Live implied-volatility surfaces from raw options data — a native C++ Jäckel solver, arbitrage-free eSSVI calibration, and full smile diagnostics across SPX, VIX, SPY, QQQ, ES, and OEX, surfaced through a terminal UI and a web dashboard.

Private Repo — Request Access

Case Study

How it was built

Problem

Quants need a fast feedback loop between raw options market data and a usable volatility surface. Off-the-shelf tools either solve implied vol slowly in pure Python or hide the calibration behind a black box, leaving no way to inspect arbitrage violations strike by strike.

Approach

Built a vertically integrated stack: a native C++ Jäckel solver with OpenMP threading handles implied vol, Python wraps it via zero-copy ctypes, eSSVI surface fitting enforces no-arbitrage through penalty terms, and a Textual TUI plus a Dash/Plotly web dashboard surface the results. Databento OPRA data flows in through a managed Parquet pipeline, and forwards come from a spread-weighted parity regression.

Key Decision

Pushed the solver to native C++ rather than staying in NumPy. The Jäckel method is iterative and runs millions of times per session — keeping it in Python would have made the interactive dashboards unusable. The ctypes bridge takes minutes to write and pays for itself the first time you scan the full SPX chain.

Result

Roughly 8.2 million contracts per second through the solver, eight per-tenor diagnostics computed live, and 189 arbitrage violations flagged on SPY alone (185 butterfly, 4 calendar) in the first full-chain scan.

Results

Key metrics

8.2M

Contracts / Second

8

Per-Tenor Diagnostics

6

Underlyings (SPX/VIX/ES...)

3

Output Modes (TUI/Web/Export)

Approach

Technical overview

Native C++ Implied-Volatility Solver

The Jäckel rational-function method ("Let's Be Rational") is implemented in C++17, compiled with -O3 -march=native and OpenMP, and exposed to Python via zero-copy ctypes over NumPy arrays. Scalar and batch entry points converge in two or three iterations per contract; the batch path processes roughly 8.2 million contracts per second across the full chain, feeding surface fitting directly.

Arbitrage-Free eSSVI Calibration

Surfaces use the extended SSVI parameterization fitted by a nested optimizer — an outer L-BFGS-B pass over the global (η, γ, ρ) parameters wraps an inner per-slice θ solve, parallelized across expiries. Butterfly (convexity) and calendar (non-decreasing total variance) no-arbitrage constraints enter as penalty terms, so fitted surfaces are arbitrage-free by construction.

Forward Extraction & Smile Diagnostics

Per-expiry forwards and discount factors are recovered from a put-call parity regression weighted by inverse bid-ask spread, with an R² confidence score. Each tenor then yields eight diagnostics — ATM IV, 25-delta risk reversal, 25-delta butterfly, skew, a model-free variance-swap rate (trapezoidal integration of OTM prices), forward vol, IV spread, and fit R².

Data Pipeline, Terminal UI & Web Dashboard

Databento OPRA data is fetched, validated, and stored as Parquet across a contract hierarchy spanning index, volatility-index, equity, and futures options (SPX, OEX, VIX, SPY, QQQ, ES). The Textual TUI offers tenor navigation, four coordinate modes (IV, total variance, σ², ATM term structure), series toggles, CSV export, and an arbitrage scanner; the Dash web UI adds a 3D surface viewer, eSSVI fit overlays, ag-Grid strike inspection, and a paginated arbitrage scan that flagged 189 violations (185 butterfly, 4 calendar) on SPY alone.

Gallery

Output & visualizations

Terminal UI — ATM Term Structure
Web — Volatility Smile + eSSVI Fit
Web — Smile Controls + Stats
Web — Surface Diagnostics
Web — Strike Inspector
Web — Arbitrage Scan

Terminal UI — ATM Term StructureTUI home tab showing tenor list, ASCII term structure chart, stats grid, and strike table for SPY

Web — Volatility Smile + eSSVI FitDash dashboard with smile plot, eSSVI fit overlay, stats grid, and strike table for SPY 2025-01-16

Web — Smile Controls + StatsCoordinate mode buttons, series toggles, ATM marker, export, and 8-metric stats grid

Web — Surface Diagnostics3D eSSVI surface, selected-tenor fit slice, residuals, parameter terms, and fit quality by tenor

Web — Strike InspectorStrike table with per-row detail inspector showing moneyness, bid/ask IV, and validity status

Web — Arbitrage Scan189 violations detected (185 butterfly, 4 calendar) with type, expiration, and constraint details

Stack

Technologies used

Language
C++Python
Performance
OpenMP
Bindings
ctypes
Optimization
SciPy
TUI
TextualRich
Web
DashPlotlyag-Grid
Data
DatabentoPolarsNumPy