Why Black-76, not Black-Scholes

Most introductions to options pricing start with Black-Scholes. But on Deribit, where BTC options are futures-settled, Black-76 is the native pricing model. The difference is a single substitution, but it matters conceptually.

Black-Scholes prices options on a spot price $S$ that drifts with the risk-free rate $r$:

$$P_{BS} = K e^{-rT} N(-d_2) - S \cdot N(-d_1)$$ $$d_1 = \frac{\ln(S/K) + (r + \sigma^2/2)T}{\sigma\sqrt{T}}, \quad d_2 = d_1 - \sigma\sqrt{T}$$

Black-76 prices options on a forward price $F$ that has no drift, because the futures contract already incorporates carry costs:

$$P_{76} = e^{-rT}\left[K \cdot N(-d_2) - F \cdot N(-d_1)\right]$$ $$d_1 = \frac{\ln(F/K) + (\sigma^2/2)T}{\sigma\sqrt{T}}, \quad d_2 = d_1 - \sigma\sqrt{T}$$

The key difference: $S$ is replaced by $F$, and the $+r$ term vanishes from $d_1$. Since $F = S \cdot e^{rT}$, substituting back recovers Black-Scholes exactly. They are not two different models. Black-76 is Black-Scholes applied to a forward instead of a spot.

For BTC on Deribit, the practical implication is straightforward. You hedge with the perpetual or quarterly future, not by buying Bitcoin. The relevant price is $F$, not $S$. At 0-DTE with 19 hours remaining, $F \approx S$ (the basis is typically under 0.1%), so numerically the results are nearly identical. But using Black-76 keeps you consistent with Deribit's own mark prices, displayed Greeks, and IV calculations.

The inverse contract adjustment

Deribit quotes option prices in BTC, not USD. After computing the USD price from Black-76, the final step is:

$$P_{\text{BTC}} = \frac{P_{\text{USD}}}{F}$$

This is the inverse contract structure. Forgetting this step means comparing USD model prices with BTC market prices during validation, which produces nonsensical errors.

Greeks as partial derivatives

Each Greek is a partial derivative of the option price with respect to one input. The implementation computes them analytically from the Black-76 formula and cross-validates numerically using finite differences.

For a put under Black-76:

$$\Delta = -e^{-rT} \cdot N(-d_1)$$ $$\Gamma = \frac{e^{-rT} \cdot \phi(d_1)}{F \sigma \sqrt{T}}$$ $$\mathcal{V} = F \cdot e^{-rT} \cdot \phi(d_1) \cdot \sqrt{T}$$ $$\Theta = -\frac{F \cdot e^{-rT} \cdot \phi(d_1) \cdot \sigma}{2\sqrt{T}} + rKe^{-rT}N(-d_2)$$

where $\phi$ is the standard normal PDF and $N$ is the CDF. Delta tells you directional exposure, Gamma tells you how fast that exposure changes, Vega measures sensitivity to IV shifts, and Theta is the daily time decay.

Practical validation

With real parameters from a 0-DTE BTC put on Deribit (F = 72,474, K = 71,500, T = 19/8760, $\sigma$ = 0.52, r = 0), the pricer outputs approximately $72-75 USD, which matches Deribit's mark price to within the bid-ask spread. This level of accuracy confirms the implementation is correct for the core pricing engine.

Visualizing N(x): the normal distribution lookup

The function $N(x)$ in the pricing formula is the cumulative standard normal distribution. It answers: what fraction of the area under the bell curve lies to the left of $x$? This is not something you compute by hand. In Python, scipy.stats.norm.cdf(x) does the lookup.

-0.571 your -d₁ 0 28.4% Total area under curve = 100% Left of -0.571 = 28.4% → N(-d₁) = 0.284 ≈ |Delta| N(0) = 0.500 ATM: 50% chance ITM N(-0.571) = 0.284 Your OTM put N(-2.0) = 0.023 Deep OTM: 2.3% from scipy.stats import norm

With the parameters from the 0-DTE BTC put (F = 72,474, K = 71,500, $\sigma$ = 0.52, T = 19/8760), $d_1$ comes out to approximately 0.571. The put formula uses $N(-d_1)$, which is $N(-0.571) = 0.284$. This is close to the put's delta of -0.29, which is not a coincidence: for European options, $|\Delta_{\text{put}}| \approx N(-d_1)$.

Where it breaks down

The model assumes constant volatility. Markets deliver nothing of the sort. This gap is what motivated the implied volatility analysis project: if you plug market prices back into Black-76 and solve for $\sigma$, the surface you get is anything but flat. Understanding that surface is where the real edge lies.