Documentation
Everything you need to fit arbitrage-free implied volatility surfaces with Volptima.
Overview
Volptima provides CVI (Convex Volatility Interpolation), a volatility surface fitter built on convex optimization. Instead of starting from a parametric model, CVI formulates the calibration as a sparse quadratic program, enforcing no-butterfly and no-calendar arbitrage as hard constraints, and more generally encoding the structural properties of the volatility surface. You send market data (strikes, bid/ask vols, forwards, discount factors), and get back a fitted surface you can interpolate at any strike.
There are two ways to use Volptima, depending on your setup:
Choosing Your Setup
API Client
Python SDK that works with both a cloud backend and a local Rust backend. The simplest way to get started.
- Python-only interface
- Cloud fitting (REST API) or local fitting (via grafit)
- Built-in Plotly dashboard
Read the docs →
Grafit
The Rust engine directly, with bindings for Python, C, and more. For when you need low-level control or non-Python languages.
- Python, C/C++ bindings (other languages coming soon)
- JSON-in / JSON-out API
- No network dependency
Read the docs →
Architecture
There are two entry points into Volptima. The API Client is a Python SDK with interchangeable backends. Grafit can also be used directly from Python, C, or any language via the JSON interface.
Your Python Code
VolptimaClient
volptima-api-client
CloudBackend
HTTPS to cloud
LocalBackend
In-process Rust
Cloud API
Hosted API
Grafit
Rust engine
or
or
Your Code
Python, C, C++, ...
Grafit
JSON in / JSON out
Use the Rust engine directly via language bindings — no Python SDK needed
SaaS clients use the API Client with CloudBackend (cloud fitting, no local install). Grafit clients can use the API Client with LocalBackend, or call Grafit directly from any supported language.
What You Get
Regardless of which setup you choose, the fitter takes market data and returns a fitted volatility surface with these parameters per expiry:
| Field | Description |
|---|---|
atm_vol | At-the-money implied volatility |
s | Normalized ATM skew parameter |
c_array | Normalized convexity array (smile curvature at each node) |
std_dev_array | Standard deviation nodes where the smile is evaluated |
anchor_atm_vol | Reference volatility used for normalization |
The fitted surface is arbitrage-free by construction: no butterfly arbitrage (PDF ≥ 0) and no calendar arbitrage (total variance non-decreasing).