Skip to content

Summary

Computes the net expected value of a long calendar or diagonal (short front month, long back month) evaluated at the planned front-expiry exit, where the payoff is back-leg value minus front-leg settlement minus debit paid. Two separate IVs capture the term structure, which is the actual edge being traded.

Computation

EV = E[(back-leg value − front settlement − debit) at exit] − commissions − slippage.

Pseudo-formula:

debit     = price(long_strike, dte_back, iv_back) − price(short_strike, dte_front, iv_front)
ev_gross  = Σ_scenarios P(s) · [ back_value(S_T, dte_back−dte_front)
                                 − settlement(short_strike, S_T) ]  − debit
costs     = 3·fee_per_contract·n  +  slippage_pct·debit·100·n   # 2 entry fills + front-leg exit; back leg stays open (marked to model) — eventual back-leg closure cost is a documented assumption outside this receipt
ev_net    = ev_gross − costs / (100·n)
baseline_vrp   = iv_front − 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_front / iv_back number yes IVs of short and long strikes (term structure)
dte_front / dte_back integer yes expirations of short and long legs
short_strike / long_strike number yes equal for a pure calendar; different for a diagonal
option_type string no call or put
contracts integer no size, default 1
fee_per_contract number no per leg per contract
slippage_pct number no fraction of debit
exit_dte_front integer no planned exit point; default 0 (hold to front expiry); 0 ≤ exit ≤ dte_front
iv_front_hist_mean number no historical term-structure context (informational)
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, total_costs, baseline_vrp (front IV minus rv_window), baseline_ev_rv, edge_vs_rv, and a receipt for the run-ev skill.

Limitations

The exit 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); front-leg settlement at expiry uses exact lognormal CDF closed forms and the marked back-leg value uses deterministic high-resolution quadrature in normal space. Front-month vol mean reversion and back-leg vega response to a changed vol surface are TODO(data-feed). Early assignment of short front options near the dividend/ex-date, pin risk at the short strike, and post-exit management of the naked back leg are not modeled. Context: calendar conditions and theta/vega mechanics.

References

  • Natenberg, Option Volatility and Pricing (McGraw-Hill, 1994) — calendar pricing and term structure.
  • Passarelli, Trading Option Greeks, 2e (Bloomberg Press, 2012) — calendar/diagonal mechanics.
  • Hull, Options, Futures and Other Derivatives, 8e (Pearson) — multi-expiry valuation.
  • py_vollib documentation — https://py_vollib.readthedocs.io/

Links