Setup
When Analytic Greeks Are Not Available
The Black-Scholes Greeks derived in the previous module are available in closed form because the pricing function C(S,K,r,σ,T) is differentiable and explicit. In practice, most pricing functions used on a derivatives desk are not:
- Exotic options (barriers, Asians, lookbacks) have prices computed by Monte Carlo or finite difference solvers — no analytic formula.
- Stochastic vol models (Heston, SABR) have semi-analytic prices but whose derivatives with respect to model parameters involve numerical quadrature.
- Calibrated models where the volatility surface itself depends on the market inputs in a non-trivial way.
For all such cases, bump-reval (finite difference approximation of derivatives) is the standard method on trading desks. It is computationally expensive but model-agnostic: the same procedure works for any pricing function.
Notation
Let f:Rn→R be a pricing function. We want to estimate the partial derivative ∂f/∂xi at a base point x. The bump-reval approach: evaluate f at a perturbed point x+hei (where ei is the i-th unit vector and h is the bump size), and form a finite difference quotient.
Forward Differences
∂xi∂f≈hf(x+hei)−f(x).
Error analysis. By Taylor expansion:
f(x+hei)=f(x)+h∂xi∂f+2h2∂xi2∂2f+O(h3).
Subtracting and dividing by h:
hf(x+hei)−f(x)=∂xi∂f+2h∂xi2∂2f+O(h2).
The truncation error is O(h): first-order accurate. The error decreases linearly as the bump h shrinks.
Cost: 1 repricing per Greek (plus the base price). For n inputs: n+1 total repricings.
Backward Differences
∂xi∂f≈hf(x)−f(x−hei).
Truncation error is also O(h), with the same leading coefficient but opposite sign:
hf(x)−f(x−hei)=∂xi∂f−2h∂xi2∂2f+O(h2).
Forward and backward differences have the same O(h) accuracy. Backward difference is useful when a positive bump is not feasible (e.g., interest rates near zero cannot be bumped upward without changing the sign regime).
Central Differences
∂xi∂f≈2hf(x+hei)−f(x−hei).
Error analysis. Subtract the two Taylor expansions:
f(x+h)=f+hf′+2h2f′′+6h3f′′′+O(h4),
f(x−h)=f−hf′+2h2f′′−6h3f′′′+O(h4).
Subtracting: f(x+h)−f(x−h)=2hf′+3h3f′′′+O(h5). Dividing by 2h:
2hf(x+h)−f(x−h)=f′+6h2f′′′+O(h4).
The truncation error is O(h2): second-order accurate. Central differences are far more accurate than one-sided differences at the same bump size.
Cost: 2 repricings per Greek (up and down bump). No base-price reuse possible. For n inputs: 2n repricings.
Second-Order Derivative (for Gamma)
∂xi2∂2f≈h2f(x+hei)−2f(x)+f(x−hei).
Error: Adding the two Taylor expansions: f(x+h)+f(x−h)=2f+h2f′′+12h4f(4)+O(h6). Subtracting 2f and dividing by h2: truncation error O(h2).
Gamma via bump-reval uses this formula with xi=S, bump h=ϵ⋅S (a relative bump of typically ϵ=1%):
Γ^=h2C(S+h)−2C(S)+C(S−h).
Cost: 2 additional repricings (the up and down bumps also give delta via central difference, so gamma is free once delta is computed by central differences).
Step Size Selection: The Accuracy-Stability Tradeoff
There are two sources of error in numerical differentiation:
- Truncation error: from the Taylor approximation. For central differences: ∼6h2∣f′′′∣/∣f′∣ (relative).
- Round-off error: from finite-precision arithmetic. The computed value of f(x+h) carries a rounding error of order εmach⋅∣f∣, where εmach≈10−16 (double precision). The finite difference quotient amplifies this by 1/h: round-off error ∼εmach∣f∣/h.