Skip to main content

Module pricing

Module pricing 

Source
Expand description

§Pricing: what an option costs

We have 25 years of stock prices but no historical option quotes. So we reprice options with Black-Scholes, the textbook formula that turns (spot, strike, time, volatility, interest rate) into a fair price.

The one input Black-Scholes cannot know is implied volatility: the market’s own forecast of how much the stock will move. Get that wrong and the whole backtest is fiction, which is why sim.rs uses, in order of preference:

  1. Real Cboe volatility indices (VIX for SPY, VXN for QQQ, VXD for DIA, GVZ for GLD, OVX for USO), daily since 2001-2008; then
  2. a proxy fitted to those indices from realized volatility (Sd2Model::iv_proxy, ρ ≈ 0.94), clearly flagged in every report.

Volatility indices measure a 30-day variance swap level, which sits a little above at-the-money implied volatility because of put skew; we take ATM IV = 0.88 × index and add a simple linear skew so that out-of-the-money puts cost more than calls, as they do in real life.

Enums§

Kind

Constants§

ATM_FROM_INDEX
ATM implied vol from a vol-index level (both annualized, as fractions).

Functions§

bs_price
Black-Scholes price per share. t in years, sigma annualized.
implied_abs_move
Mean absolute move implied by an annualized vol over days trading days: σ·√(days/252)·√(2/π). Comparable to SD’s expected_move_pct.
norm_cdf
Standard normal CDF (Abramowitz & Stegun 7.1.26 via erf, |error| < 1.5e-7).
skewed_iv
Skewed implied vol at strike: puts below spot are dearer.