Summary¶
Computes the net expected value of a long butterfly (long wings, short 2x body) at expiration, with per-strike IVs so put-skew asymmetry is priced. Butterfly EV is a bet on the shape of the terminal real-world density versus the pricing density — the most sensitive of the four structures to the probability model.
Computation¶
EV = ∫ payoff(S_T) dP_realworld(S_T) − commissions − slippage, with the tent payoff.
Pseudo-formula:
debit = price(lower) + price(upper) − 2·price(body) # per-strike IVs allowed
max_profit = wing_width − debit (S_T = body at expiry; symmetric fly)
max_loss = debit
ev_gross = ∫ tent(S_T) − debit dP_realworld(S_T) # exact lognormal CDF closed forms
tent(S) = max(0, S−lower) − 2·max(0, S−body) + max(0, S−upper)
costs = 4·fee_per_contract·n + slippage_pct·debit·100·n # 4 contract fills
ev_net = ev_gross − costs / (100·n)
baseline_vrp = iv − rv_window # variance risk premium, annualized vols
baseline_ev_rv = SAME structure's EV under the RV distribution (rv_window)
edge_vs_rv = ev_net − baseline_ev_rv
Parameters¶
| Name | Type | Req | Notes |
|---|---|---|---|
| spot | number | yes | underlying price at evaluation |
| iv | number | yes | ATM IV at evaluation |
| dte | integer | yes | days to expiration |
| lower_strike / body_strike / upper_strike | number | yes | wings and short body (2x) |
| option_type | string | no | call or put (equivalent at expiry) |
| contracts | integer | no | size, default 1 |
| fee_per_contract | number | no | per contract fill; four fills per fly (1 lower, 2 body, 1 upper) |
| slippage_pct | number | no | fraction of debit; tight flies slip hardest |
| skew_put / skew_body / skew_call | number | no | per-strike IVs |
| rv_window | number | yes | annualized real-world realized vol estimate (fail-closed) |
| garch_forecast | number | yes | annualized GARCH-class real-world vol forecast (fail-closed) |
What It Reports¶
ev_net, ev_gross, debit, max profit (width − debit at the body), max loss, total_costs, baseline_vrp, baseline_ev_rv, edge_vs_rv, and a receipt for the run-ev skill. When per-strike IVs are absent, baseline_vrp plus the smiles evidence governs interpretation.
Limitations¶
The physical distribution is lognormal under the GARCH forecast (garch_forecast) with equity-premium drift (r + 4% equity risk premium; dividends do not enter the index-price drift for total-return-ignored index options); the density-vs-density comparison uses exact lognormal CDF probabilities. Fat tails, skew of the physical density, and pin risk at the body are TODO(data-feed). Early exit and the short-wings ("broken wing") variant are not modeled. Context: butterfly setup and spread mechanics.
References¶
- Hull, Options, Futures and Other Derivatives, 8e (Pearson) — volatility smiles and implied distributions.
- Natenberg, Option Volatility and Pricing (McGraw-Hill, 1994) — skewed distributions and butterflies.
- Breeden & Litzenberger, "Prices of State-Contingent Claims Implicit in Option Prices," Journal of Business 51(4), 1978 — density implied by butterfly spreads.
- py_vollib documentation — https://py_vollib.readthedocs.io/