Model-free implied distribution and volatility analytics for NSE options
Project description
QFinIndia
QFinIndia is a Python library for extracting market-implied information from option chains.
It provides volatility smile, risk-neutral density (RND), implied distribution, tail risk (VaR/CVaR), and directional bias from options data.
Designed for quant research, derivatives analytics, and market microstructure studies.
🚀 Installation
pip install qfinindia
from qfinindia import SyntheticChain, generate_report
chain = SyntheticChain(
spot=24000,
expiry="2026-06-25"
).build()
print(generate_report(chain))
QFinIndia IMPLIED MARKET REPORT
--------------------------------
Spot: 24000
Forward: 24503 (2.10%)
Expected Move: ±182
ATM Vol: 0.13
Skew: 0.55
VaR 5%: 24342
VaR 1%: 23940
Bias: Bullish
📊 Core Concepts
QFinIndia converts an option chain into:
Volatility smile
Risk-neutral density
Implied price distribution
Tail risk metrics
Directional market bias
The workflow:
OptionChain → Smile → RND → Distribution → Tail Risk → Report
🧱 Build Option Chains
Synthetic Chain (built-in)
from qfinindia import SyntheticChain
chain = SyntheticChain(
spot=24000,
expiry="2026-06-25",
strike_range=(20000, 28000, 250),
base_iv=0.13,
smile=0.35,
time_value=160,
r=0.06,
T=120/365
).build()
From DataFrame
Required columns:
type, strike, expiry, price, iv, oi
from qfinindia import OptionChain
chain = OptionChain.from_dataframe(df, underlying=24000)
📈 Unified Analytics Interface
from qfinindia import Analytics
a = Analytics(chain)
print(a.forward)
print(a.expected_move)
print(a.skew)
print(a.atm_vol)
print(a.var(0.05))
print(a.cvar(0.05))
print(a.bias)
📑 Implied Market Report
Text
from qfinindia import generate_report
print(generate_report(chain))
Dictionary
generate_report(chain, output="dict")
DataFrame
generate_report(chain, output="df")
📉 Plotting Helpers
from qfinindia import plot_smile, plot_rnd, plot_distribution
plot_smile(chain)
plot_rnd(chain)
plot_distribution(chain)
📊 Available Metrics
QFinIndia extracts:
Forward price
Expected move
ATM volatility
Skew
Variance
Risk-neutral density
Implied distribution
VaR
CVaR
Directional bias
🧪 Example: Full Analytics
from qfinindia import SyntheticChain, Analytics
chain = SyntheticChain(24000, "2026-06-25").build()
a = Analytics(chain)
print("Forward:", a.forward)
print("Move:", a.expected_move)
print("Skew:", a.skew)
print("VaR 5%:", a.var(0.05))
print("Bias:", a.bias)
🏗 Architecture
OptionChain
├─ VolSmile
├─ RND
├─ Distribution
└─ TailRisk
↓
Analytics
↓
Report / Plots
🎯 Use Cases
Options market sentiment
Implied distribution research
Risk-neutral density estimation
Volatility surface studies
Tail risk estimation
Quant trading signals
🛣 Roadmap
Multi-expiry surfaces
SABR calibration
Live NSE data loader
Surface arbitrage checks
Greeks extraction
🤝 Contributing
Pull requests and issues welcome.
📜 License
MIT License
👨💻 Author
Dhruv Maheshwari
Quant & Derivatives Analytics
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file qfinindia-0.3.0.tar.gz.
File metadata
- Download URL: qfinindia-0.3.0.tar.gz
- Upload date:
- Size: 10.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
af78a320792f4309c6c19a76a9837784ac8b042a0f28707b27129cc1050d67db
|
|
| MD5 |
d9dbbd143379a849c9b6bfd29df596a8
|
|
| BLAKE2b-256 |
1a614b694f0d2316cb59b942c30e663d5ccb2eff5305726063adc98f0b47dd83
|
File details
Details for the file qfinindia-0.3.0-py3-none-any.whl.
File metadata
- Download URL: qfinindia-0.3.0-py3-none-any.whl
- Upload date:
- Size: 13.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
be29bccbb9b141bd9ceaa185f88fbbd92eaa0fc03cc931a6735af26e8803a3c5
|
|
| MD5 |
baf4f108d8ba7b2845cffa7786a7903c
|
|
| BLAKE2b-256 |
3670bbde0fb44f28809b70820a59b2b7888822e96af6d1a2fa8039dc0fd624e0
|