Characteristic Function Pricing
Heston, Merton, and Variance Gamma models for binary option pricing
Standard Black-Scholes assumes constant volatility and no jumps. Real markets have volatility smiles, sudden jumps, and fat tails. Characteristic function pricing handles all of these by working in Fourier space.
Horizon implements three stochastic models for pricing binary options on prediction markets and equities.
Models
Heston (stochastic volatility)
python
import horizon as hz
params = hz.HestonParams(
v0=0.04, # initial variance
kappa=2.0, # mean reversion speed
theta=0.04, # long-run variance
sigma=0.3, # vol of vol
rho=-0.7, # correlation with price
)
price = hz.heston_binary_price(params, S=100, K=105, T=0.25, r=0.05)
Merton (jump-diffusion)
python
params = hz.MertonParams(
lam=3.0, # jump intensity (jumps per year)
mu_j=-0.02, # mean jump size
sigma_j=0.05, # jump size volatility
)
price = hz.merton_binary_price(params, S=100, K=105, T=0.25, r=0.05, sigma=0.2)
Variance Gamma
python
params = hz.VGParams(
sigma=0.2, # diffusion volatility
theta=-0.1, # drift of the subordinator
nu=0.5, # variance rate of the subordinator
)
price = hz.vg_binary_price(params, S=100, K=105, T=0.25, r=0.05)
Implied volatility from binary prices
python
iv = hz.implied_vol_from_binary(price=0.42, T=0.25, K=105, S=100, r=0.05)
When to use
- Heston: when you see a volatility smile/skew in the options chain
- Merton: when the underlying has occasional large jumps (earnings, events)
- Variance Gamma: when returns have heavier tails than normal but continuous paths