Package Python ivsurface : données options réelles (yfinance), pricing Black-Scholes, calibration SVI/SSVI/Heston, Monte Carlo et app Streamlit.
IVSurface (ivsurface) est un projet open source éducatif pour construire et calibrer une surface de volatilité implicite à partir de données d’options réelles. Le package couvre l’ingestion et le nettoyage de chaînes options (via yfinance), le pricing Black-Scholes et l’inversion IV, la calibration SSVI (surface globale cohérente), SVI slice par slice, le modèle Heston (Carr-Madan), ainsi que des simulations Monte Carlo et du delta-hedging.
Application Streamlit interactive, notebooks pédagogiques et suite pytest complète. Code public : khonen-git/ImpliedVolatilitySurface.
pip install -e .) avec lint ruff et CI localeLa volatilité implicite condense l’information du marché options au-delà du mouvement spot. Pour un profil quant orienté recherche FX, ce projet complète mon lab EURUSD en explorant l’autre jambe de la microstructure : le pricing dérivés et la structure par terme et par moneyness.
Contrairement au lab privé, tout le code est public : données téléchargées à la volée (SPY par défaut), cache parquet local, aucune contrainte IP.
^IRX (3M) → ^TNX (10Y), interpolation linéaire en maturitéshort / long / mixed via FetchConfigLa fonction prepare_options_chain() nettoie bid/ask, filtre strikes aberrants et produit un DataFrame prêt pour calibration. Les chaînes sont mises en cache sous data/cache/ (non versionnées).
Marché nettoyé → IV implicite
├── SSVI (surface globale cohérente, primaire)
├── SVI brut (fit slice par slice, comparaison smile)
├── Heston (modèle dynamique, calibré sur mid prices)
└── Comparaison marché / SSVI / SVI / Heston (Streamlit, notebooks)
Module ivsurface.pricing : pricing vanilles, sensibilités (delta, gamma, vega, theta, rho) et inversion IV numérique. Point de départ du notebook 01_black_scholes.ipynb.
API principale :
from ivsurface.viz import run_svi_pipeline, run_heston_pipeline, run_full_pipeline
svi = run_svi_pipeline(df, stats)
sigma = svi.svi_surface(t_years, log_moneyness)
heston = run_heston_pipeline(df, stats)
result = run_full_pipeline(df, stats, heston_use_svi_guess=True)
heston_use_svi_guess=True)simulation : Monte Carlo, delta-hedging, pricing d’exotiques (notebook 05_simulation_hedging.ipynb)streamlit run src/ivsurface/viz/app.py
Deux modes :
data/cache/{TICKER}_clean_*.parquetVisualisations Plotly : smiles 2D/3D, comparaison modèles, diagnostics de fit.
| Notebook | Contenu |
|---|---|
01_black_scholes.ipynb | Pricing BS, Greeks, inversion IV |
02_iv_surface.ipynb | Surface IV, interpolation 2D |
03_svi_calibration.ipynb | Calibration SVI par maturité |
04_heston.ipynb | Heston Carr-Madan, comparaison SVI vs marché |
05_simulation_hedging.ipynb | Monte Carlo Heston, delta-hedge, exotiques |
Extra [viz] requis pour Plotly/Matplotlib ; [dev] pour pytest et ruff.
pytest # tous les tests
pytest -m integration # réseau (yfinance)
pytest -m "not integration" # local uniquement (CI)
Markers integration pour isoler les tests réseau ; la CI locale exécute la suite hors intégration.
src/ et tests/pip install -e ".[dev,viz]"uv sync --extra dev --extra vizsrc/ivsurface/
├── data/ # fetch & nettoyage
├── pricing/ # Black-Scholes, Greeks, IV
├── surface/ # grille & interpolation
├── models/ # SVI, SSVI, Heston
├── simulation/ # Monte Carlo, hedging, exotiques
└── viz/ # Plotly & Streamlit
Python 3.11+
yfinance · pandas · parquet cache
SciPy (optimisation) · Carr-Madan FFT · calibration SVI/SSVI
Plotly · Matplotlib · Streamlit
pytest · ruff · markers integration
python scripts/fetch_spy.pyCe projet est volontairement pédagogique : il ne vise pas la production trading options, mais une compréhension hands-on de la surface IV et des modèles standard de la industrie. Il complète mon profil quant en montrant une brique dérivés equity, distincte du lab FX tick-level.
src/ layout), extras [dev] / [viz]run_full_pipeline)Documentation Python
Documentation officielle du langage Python
SciPy
Algorithmes scientifiques : optimisation, statistiques, algèbre linéaire
Jupyter
Notebooks interactifs pour l'exploration de données et la recherche
Matplotlib
Visualisation de données et graphiques en Python
Quant Guild
Ressources pour maîtriser la finance quantitative