Motivation: predicting put prices after a spot move
The project started from a concrete trading problem. When trading 0-DTE BTC puts on Deribit, I needed to predict what a put would be worth after the spot price moved 0.1% to 0.5%. A naive approach uses the Greeks for a Taylor expansion:
$$\Delta P \approx \Delta \cdot \Delta S + \tfrac{1}{2}\Gamma \cdot (\Delta S)^2 + \Theta \cdot \Delta t$$With typical parameters (Delta = -0.29, Gamma = 0.00019, $\Delta S$ = -217 for a -0.3% move), this gives a $\Delta P$ of roughly $67. A full Black-76 repricing gives $67.80. The difference is negligible.
But the real error source is not the pricing model. It is the assumption that IV stays constant when spot moves. It does not. And quantifying how IV shifts with the underlying is where the actual edge lies.
Extracting IV from market data
Implied volatility is the $\sigma$ that satisfies:
$$P_{\text{market}} = P_{\text{Black-76}}(F, K, T, r, \sigma)$$Since there is no closed-form inverse, I use Newton-Raphson with Vega as the derivative:
$$\sigma_{n+1} = \sigma_n - \frac{P_{\text{model}}(\sigma_n) - P_{\text{market}}}{\mathcal{V}(\sigma_n)}$$This converges in 3-5 iterations for most strikes. For deep OTM options where Vega approaches zero and Newton-Raphson becomes unstable, the implementation falls back to Brent's method, which is slower but guaranteed to converge.
Smile regimes on Deribit
The IV surface on Deribit behaves differently from equity markets. Three regimes matter:
Sticky Strike: IV at a given strike $K$ stays constant when spot moves. Your Greeks approximation implicitly assumes this. It works for small moves (under 0.3%) and short time horizons.
Sticky Delta: IV travels with the delta level. If your put moves from -0.29 delta to -0.33 delta, it picks up the IV that was previously at the -0.33 point on the smile. For BTC with its typical skew, this means puts become more expensive than the constant-IV model predicts.
Sticky Moneyness: IV follows the $K/S$ ratio. A middle ground between the other two.
Empirically, BTC on Deribit behaves as a mix of sticky strike and sticky delta, depending on whether the move is driven by spot drift or a volatility event. For small moves in my 0.1-0.5% window, sticky strike dominates. For larger moves, the smile adjustment becomes material.
Smile-adjusted repricing
The improvement over constant-IV repricing is a linear smile adjustment. Compute the local smile slope:
$$\frac{d\sigma}{dK} \approx \frac{\sigma(K_2) - \sigma(K_1)}{K_2 - K_1}$$from two liquid neighboring strikes. When spot moves by $\Delta S$, the adjusted IV becomes:
$$\sigma_{\text{adj}} = \sigma_0 + \frac{d\sigma}{dK} \cdot \Delta K_{\text{eff}}$$where $\Delta K_{\text{eff}}$ depends on which regime you assume. Under sticky delta, the effective strike shift is approximately $-\Delta S$ (the smile slides with the underlying).
A second-order correction adds the smile convexity $d^2\sigma/dK^2$, but in practice this only helps for moves beyond 0.5%, and at 0-DTE the neighboring strikes are often too illiquid for a reliable second derivative. The rule I follow: if the last trade on a neighbor strike is more than 5 minutes old, the convexity estimate is noise, not signal.
Validation framework
Before any model enters the trading workflow, it must be validated against real data. The process: log 50-100 observations. For each, record spot, forward, IV, Greeks, and timestamp at entry. After the move, record the realized midprice and bid. Then compute the prediction error for each method.
The hierarchy of models tested, from simplest to most complex:
- Taylor 2nd order (constant IV) — baseline, fast but ignores IV dynamics
- Black-76 repricing (constant IV) — eliminates Taylor truncation error
- Black-76 + linear smile adjustment — captures the dominant IV shift
- Black-76 + smile convexity — only useful with liquid neighbors
- SABR/SVI fit — fits the entire smile curve, not yet prioritized
The critical test is whether each incremental model reduces prediction error by more than the bid-ask spread. If the smile adjustment does not measurably improve accuracy beyond the spread, the complexity is not justified for the specific strike range and time window I trade.