Weeknight listicle: vollib (Black/IV/greeks), svi-py 0.5.0 (30 Aug 2026, SVI family + SABR), volsurface (typed Raw SVI/SSVI), QuantLib 1.43 (14 Jul 2026), py_vollib_vectorized. pip plus a synthetic-IV sketch. Not a ranking contest. Not trading or investment advice.
Five libraries you can pip on a weeknight if you want implied vol, a smile parameterisation, and a surface object — not a live options book. This is not a search-volume ranking, not a broker API, not trading advice, and not investment advice. The only course CTA is Introduction to Python Programming.
Related Hub: portfolio risk packages if you wanted GARCH / CVaR instead of a vol surface.
vollib.org and PyPI vollib. Core is Peter Jäckel’s Let’s Be Rational. Canonical import is vollib (1.0.7+); py_vollib.* is a deprecated compatibility namespace. Prices, implied vol, analytical and numerical greeks for Black, Black–Scholes, Black–Scholes–Merton. Use this to turn one synthetic price into one IV, not to fit a 20-expiry surface.
pip install -U vollib
PyPI svi-py 0.5.0 (uploaded 2026-08-30, Marwin Steiner) and marwinsteiner/pysvi. Docs: pysvi.readthedocs.io. Calibrates total-variance slices: raw SVI, SSVI, eSSVI, jump-wings, DirectSVI, SABR via get_model. Python ≥ 3.13. Optional svi-py[numba]. Typical: calibrate_slice then apply_slice on a DataFrame with strike, iv, maturity, implied_forward.
pip install "svi-py==0.5.0"
PyPI volsurface (Casper van der Wouden), cjpvanderwouden/volsurface. Per-expiry Raw SVI or a globally consistent SSVI (ρ, η, γ), put–call-parity forward estimates, butterfly / calendar checks, mypy --strict. Python ≥ 3.10. Optional extras [plot], [yahoo] — this listicle does not fetch live Yahoo chains.
pip install volsurface
QuantLib v1.43 tagged 14 July 2026. Python wheels: pip install QuantLib. Use it when you already want calendars, day counts, and a quoted vol surface object in the C++ sense — not when you only need Let’s Be Rational on a numpy array. 1.43 removes features deprecated in 1.38. The C++ core is not thread-safe; do not share evaluation date / curves across threads.
pip install QuantLib
marcdemers/py_vollib_vectorized, PyPI py-vollib-vectorized. Import monkey-patches py_vollib functions to accept lists / numpy / pandas and uses numba. get_all_greeks / price_dataframe if you do not want the patch. Depends on py-vollib (the older package name). Pair with vollib for the modern import path, or stay on py_vollib if that is what the vectorized package patches in your build — read the import after install.
pip install py_vollib_vectorized
Do not paste this onto a live chain tonight. Fake Black–Scholes call, invert IV, stop.
# Synthetic only. Not a quote. Not trading advice.
S, K, t, r, sigma = 100.0, 100.0, 0.25, 0.01, 0.20
from vollib.black_scholes import black_scholes
from vollib.black_scholes.implied_volatility import implied_volatility
price = black_scholes('c', S, K, t, r, sigma)
iv = implied_volatility(price, S, K, t, r, 'c')
print("vollib price", price, "iv", iv)
If svi-py is installed and you are on Python ≥ 3.13, a toy slice is enough — do not calibrate to a broker dump:
# import pandas as pd
# from pysvi import get_model, calibrate_slice, apply_slice
# df_slice = pd.DataFrame({
# "strike": [90.0, 100.0, 110.0],
# "iv": [0.22, 0.20, 0.21],
# "maturity": [0.25, 0.25, 0.25],
# "implied_forward": [100.0, 100.0, 100.0],
# })
# model = get_model("svi")
# params = calibrate_slice(df_slice, model)
# print(apply_slice(df_slice, params, model)[["strike", "iv", "fitted_iv"]])
If kwargs differ in 0.5.0, read the docstring. Stop after vollib IV or one SVI slice — not both unless you have time.
If Python packaging is the blocker, Introduction to Python Programming, then pip install one of the five and print its version.