Skip to content

Greeks: The Complete Reference, From Delta to Veta

Every first- and second-order Greek under Black-Scholes, derived: the one identity that powers all the simplifications, what each sensitivity manages in a hedging book, and the P&L-explain discipline that tests the whole system.

3 of 12 ~14 min

A “Greek” is a partial derivative of an option price with respect to an input. Delta is the famous one — your broker’s app prints it on the options chain — but it is merely the first of about a dozen sensitivities that anyone running a derivatives book has to manage as a set. This article derives all of them. The derivations are not hard; the trick is not getting lost: every simplification runs on the same single identity, every formula must reconcile against the same PDE, and the practical meaning of the whole apparatus ultimately lands on one discipline called P&L explain. I work in the Black-Scholes setting throughout; most conclusions carry over, with caveats, to stochastic vol, jump-diffusion, and local vol — we return to that at the end.

The Setup, One More Time

The Black-Scholes formula for a European call on a non-dividend stock:

C=SN(d1)−Ke−rTN(d2)C = S N(d_1) - K e^{-rT} N(d_2)

with

d1=ln⁡(S/K)+(r+12σ2)TσT,d2=d1−σTd_1 = \frac{\ln(S/K) + (r + \tfrac{1}{2}\sigma^2) T}{\sigma \sqrt{T}}, \quad d_2 = d_1 - \sigma\sqrt{T}

Write ϕ(x)=12πe−x2/2\phi(x) = \frac{1}{\sqrt{2\pi}} e^{-x^2/2} for the standard normal density, so N′(x)=ϕ(x)N'(x) = \phi(x) and N′′(x)=−xϕ(x)N''(x) = -x\phi(x).

Before differentiating anything, prepare one tool. Expand the ratio ϕ(d1)/ϕ(d2)\phi(d_1)/\phi(d_2): since d12−d22=(d1−d2)(d1+d2)=2[ln⁡(S/K)+rT]d_1^2 - d_2^2 = (d_1 - d_2)(d_1 + d_2) = 2[\ln(S/K) + rT],

S ϕ(d1)=Ke−rTϕ(d2)S\,\phi(d_1) = K e^{-rT} \phi(d_2)

This identity is the engine of every simplification that follows — whenever a differentiation produces the pair Sϕ(d1)S\phi(d_1) and Ke−rTϕ(d2)Ke^{-rT}\phi(d_2), they cancel. Keep it in view and the derivations run smoothly.

Delta: ∂V/∂S\partial V / \partial S

Delta is the slope of the option price in the underlying. Differentiate the call term by term, remembering that d1d_1 and d2d_2 both contain SS:

ΔC=∂C∂S=N(d1)+Sϕ(d1)∂d1∂S−Ke−rTϕ(d2)∂d2∂S\Delta_C = \frac{\partial C}{\partial S} = N(d_1) + S \phi(d_1) \frac{\partial d_1}{\partial S} - K e^{-rT} \phi(d_2) \frac{\partial d_2}{\partial S}

Since ∂d1∂S=∂d2∂S=1SσT\frac{\partial d_1}{\partial S} = \frac{\partial d_2}{\partial S} = \frac{1}{S\sigma\sqrt{T}}, the last two terms are exactly the shape the identity kills:

ΔC=N(d1)\boxed{\Delta_C = N(d_1)}

One widespread slip deserves correcting here: N(d1)N(d_1) is not the risk-neutral probability that the option expires in the money — that is N(d2)N(d_2) (look at the second term of the formula: it multiplies the Ke−rTKe^{-rT} you pay on exercise). N(d1)N(d_1) is the exercise probability under the stock numéraire, which is why the first term SN(d1)S N(d_1) reads as an expected receipt measured in stock. The gap between the two probabilities is one source of the option’s time value.

For the put, use parity: differentiating C−P=S−Ke−rTC - P = S - Ke^{-rT} in SS,

ΔP=ΔC−1=N(d1)−1=−N(−d1)\Delta_P = \Delta_C - 1 = N(d_1) - 1 = -N(-d_1)

ΔC−ΔP=1\Delta_C - \Delta_P = 1 holds exactly, not approximately. Geometrically, delta is the slope of the V(S)V(S) curve at the current spot; it is also the hedge ratio — a delta-neutral portfolio of NN options carries −N⋅Δ-N \cdot \Delta shares.

Gamma: ∂2V/∂S2\partial^2 V / \partial S^2

Delta is a slope; how fast does the slope change? Since ΔC=N(d1)\Delta_C = N(d_1):

Γ=∂2C∂S2=ϕ(d1)∂d1∂S=ϕ(d1)SσT\Gamma = \frac{\partial^2 C}{\partial S^2} = \phi(d_1) \frac{\partial d_1}{\partial S} = \frac{\phi(d_1)}{S \sigma \sqrt{T}}

Gamma is identical for calls and puts — the linear part of parity vanishes under the second derivative. ATM options carry the highest gamma; deep ITM and OTM options carry almost none, because N(d1)N(d_1) is a sigmoid: steep in the middle, flat in the tails.

Gamma is why delta hedging costs money: between rebalances, delta drifts by Γ⋅ΔS\Gamma \cdot \Delta S, and the P&L of that drift, integrated over the path, is what option sellers collect as the “gamma premium” through theta. A long-gamma book bleeds theta on quiet days; a short-gamma book bleeds on the big ones — two faces of the same coin, and the discrete-hedging section below turns this sentence into a formula.

Vega: ∂V/∂σ\partial V / \partial \sigma

Differentiate in σ\sigma:

V=∂C∂σ=Sϕ(d1)∂d1∂σ−Ke−rTϕ(d2)∂d2∂σ\mathcal{V} = \frac{\partial C}{\partial \sigma} = S \phi(d_1) \frac{\partial d_1}{\partial \sigma} - K e^{-rT} \phi(d_2) \frac{\partial d_2}{\partial \sigma}

We need

∂d1∂σ=−ln⁡(S/K)+rTσ2T+T2\frac{\partial d_1}{\partial \sigma} = -\frac{\ln(S/K) + rT}{\sigma^2 \sqrt{T}} + \frac{\sqrt{T}}{2}

and ∂d2/∂σ=∂d1/∂σ−T\partial d_2/\partial \sigma = \partial d_1/\partial \sigma - \sqrt{T}. Substitute, invoke the identity again — the two contributions of ∂d1/∂σ\partial d_1/\partial \sigma cancel, and only the −T-\sqrt{T} piece survives:

V=Sϕ(d1)T\boxed{\mathcal{V} = S \phi(d_1) \sqrt{T}}

Vega is positive for long positions (calls and puts alike), peaks at the money, and dies off in both wings. Units are currency per unit of vol; divide by 100 when vol is quoted in percentage points. Desks each have their own risk-bucket conventions — equity desks typically quote vega per 1-vol-point move and convert everything into notional vega or vega-weighted positions.

Theta: ∂V/∂t\partial V / \partial t

Theta prices the passage of time. First, dissolve a common sign confusion: because VV depends on time only through the remaining maturity T−tT - t, we have ∂V/∂t=−∂V/∂T\partial V/\partial t = -\partial V/\partial T — the two conventions are the same number. The real differences are reporting conventions: some systems report this quantity directly (negative for long calls), others report “time value lost per calendar day” (a positive number), and units vary between per-year and per-day. Learn your system’s convention rather than memorizing signs.

For a European call (written with T−tT - t to stress the convention):

ΘC=∂C∂t=−Sϕ(d1)σ2T−t−rKe−r(T−t)N(d2)\Theta_C = \frac{\partial C}{\partial t} = -\frac{S \phi(d_1) \sigma}{2\sqrt{T-t}} - r K e^{-r(T-t)} N(d_2)

The two terms have separate identities: the first is time value evaporating alongside gamma; the second is interest on the discounted strike — carrying the obligation to pay KK at expiry costs more when rr is higher. For puts, the second term flips:

ΘP=−Sϕ(d1)σ2T−t+rKe−r(T−t)N(−d2)\Theta_P = -\frac{S \phi(d_1) \sigma}{2\sqrt{T-t}} + r K e^{-r(T-t)} N(-d_2)

Short-dated ATM options have the fiercest theta: the T−t\sqrt{T-t} in the first denominator accelerates the decay into expiry. For 0-DTE options the formula degenerates while the limit stays finite; as an order of magnitude, an ATM index option one day from expiry can shed a few percent of its price per hour.

Rho: ∂V/∂r\partial V / \partial r

ρC=∂C∂r=KTe−rTN(d2)\rho_C = \frac{\partial C}{\partial r} = K T e^{-rT} N(d_2) ρP=∂P∂r=−KTe−rTN(−d2)\rho_P = \frac{\partial P}{\partial r} = -K T e^{-rT} N(-d_2)

Positive for calls, negative for puts. Mostly ignored for short-dated equity options; promoted to a primary risk for long-dated equity options, rate derivatives, and bond options.

Reconciliation: The PDE Identity

The four first-order Greeks are not independent — the Black-Scholes PDE ties them together:

Θ+12σ2S2Γ+rSΔ−rV=0\Theta + \frac{1}{2}\sigma^2 S^2 \Gamma + r S \Delta - r V = 0

(with Θ=∂V/∂t\Theta = \partial V/\partial t). This is just the PDE rearranged. Its practical value is as a checksum: feed your risk system’s Greeks into it, and if the identity holds, the numerics are self-consistent; if not, there is a bug. Writing this assertion costs five minutes and saves many late nights.

The Second-Order Greeks

Anyone running a book soon finds first order is not enough: the P&L of rebalancing depends on how the Greeks themselves move. The second-order names are standard; the formula conventions vary by book — everything below follows this article’s notation, and every formula checks out against finite differences.

Vanna, ∂2V/∂S∂σ\partial^2 V / \partial S \partial \sigma. How delta moves when vol moves; equivalently, how vega moves when spot moves (mixed partials commute). Differentiate V=Sϕ(d1)T\mathcal{V} = S\phi(d_1)\sqrt{T} in SS and simplify:

Vanna=−ϕ(d1) d2σ\boxed{\text{Vanna} = -\frac{\phi(d_1)\, d_2}{\sigma}}

The sign is governed by d2d_2: at typical ATM and OTM-call levels d2<0d_2 < 0, so vanna is positive — vol up, delta up. It changes sign where d2=0d_2 = 0, roughly at the forward. Market makers manage the joint exposure to SS and σ\sigma, and vanna is exactly the coupling term; on days when an index sells off and vol spikes, vanna flow is often among the largest hedge flows in the market. The mechanism behind the early-2021 “gamma squeeze” episodes has been widely discussed as dealer gamma and vanna hedging flows feeding on themselves — details remain debated, but feedback loops of this type are real.

Charm, ∂2V/∂t∂S\partial^2 V / \partial t \partial S, a.k.a. delta decay. Time passes, SS stays put — where does delta drift? It answers “what is my delta tomorrow morning?”:

Charm=∂Δ∂t=−ϕ(d1)⋅2rT−d2σT2σTT\text{Charm} = \frac{\partial \Delta}{\partial t} = -\phi(d_1) \cdot \frac{2rT - d_2 \sigma \sqrt{T}}{2\sigma T \sqrt{T}}

For short-dated options, day-over-day delta changes are mostly charm. A delta computed at 9:30 AM without a charm correction is already a stale hedge by the close.

Vomma (a.k.a. volga), ∂2V/∂σ2\partial^2 V / \partial \sigma^2. Vega’s sensitivity to vol, which decides how far a vega hedge stretches:

Vomma=Sϕ(d1)T⋅d1d2σ\text{Vomma} = S \phi(d_1) \sqrt{T} \cdot \frac{d_1 d_2}{\sigma}

Watch the sign: it follows d1d2d_1 d_2. Options somewhat away from the money (d1d_1, d2d_2 same sign) have positive vomma — vega grows as vol rises, convexity on the long’s side. But in the narrow band where d1>0>d2d_1 > 0 > d_2 (roughly around the money) the product is negative and vomma is near zero or negative. Hence the textbook long-vomma position is the OTM strangle, not the at-the-money straddle — the straddle is where vomma is smallest.

Veta, ∂2V/∂t∂σ\partial^2 V / \partial t \partial \sigma. The time decay of vega. Differentiate V\mathcal{V} in tt and simplify (verifiable by finite differences):

Veta=∂V∂t=Sϕ(d1)T[r d1σT−1+d1d22T]\text{Veta} = \frac{\partial \mathcal{V}}{\partial t} = S \phi(d_1) \sqrt{T}\left[\frac{r\, d_1}{\sigma \sqrt{T}} - \frac{1 + d_1 d_2}{2T}\right]

Near the money the bracket is dominated by −(1+d1d2)/(2T)-(1+d_1d_2)/(2T), making veta negative: vega leaks away with time, faster at shorter maturities. A book holding long-dated options should schedule for the fact that its vega position is shrinking on its own; a LEAP loses a meaningful vega position over a year from time passage alone.

Vera and other cross terms. rr-mixed derivatives like ∂2V/∂r∂σ\partial^2 V/\partial r \partial \sigma are small for short-dated equity options and matter for bond options, caps, and exotics. The derivations are all the same routine: differentiate, simplify, apply the identity.

Numerical Greeks: The Real-World Caveats

Outside the reach of closed forms, everything runs on finite differences, and four things will burn you. First, bump size: bumping SS by 0.01 gives a noise-dominated difference, bumping by 10 mixes in higher-order effects; the convention is 0.5%-2% of SS for delta, 1 vol point for vega, 1 calendar day for theta. Second, sticky-strike versus sticky-delta: after spot moves, do you re-mark the option at the same strike or the same delta? The two conventions give different vega numbers; reality is closer to sticky-delta but market-dependent. Third, the yield curve: with multi-curve or stochastic rates you need key-rate durations, and a single parallel rho is wrong — equity desks routinely ignore this and rate-sensitive books regret it. Fourth, discontinuous payoffs: digitals, barriers, and lookbacks have discontinuous Greeks at the boundary and finite differences explode there; use analytics or pathwise Monte Carlo with adjoints (Wilmott, 2007).

import numpy as np
from scipy.stats import norm

def greeks(S, K, r, sigma, T, kind='call'):
    if T <= 0:
        return {'delta': 1.0 if S > K else 0.0}
    d1 = (np.log(S / K) + (r + 0.5 * sigma**2) * T) / (sigma * np.sqrt(T))
    d2 = d1 - sigma * np.sqrt(T)
    if kind == 'call':
        delta = norm.cdf(d1)
        rho   =  K * T * np.exp(-r * T) * norm.cdf(d2)
        theta = -(S * norm.pdf(d1) * sigma) / (2 * np.sqrt(T)) \
                - r * K * np.exp(-r * T) * norm.cdf(d2)
    else:
        delta = norm.cdf(d1) - 1
        rho   = -K * T * np.exp(-r * T) * norm.cdf(-d2)
        theta = -(S * norm.pdf(d1) * sigma) / (2 * np.sqrt(T)) \
                + r * K * np.exp(-r * T) * norm.cdf(-d2)
    gamma = norm.pdf(d1) / (S * sigma * np.sqrt(T))
    vega  = S * norm.pdf(d1) * np.sqrt(T)
    return dict(delta=delta, gamma=gamma, vega=vega, theta=theta, rho=rho,
                d1=d1, d2=d2)

That covers most of what people mean by “give me the Greeks”; the second-order Greeks live in the same code with two more derivatives.

Greeks Under Stochastic Volatility

Now to settle the caveat deferred at the start. Under Heston or SABR, the analytic BS Greeks no longer equal the correct hedge ratios: what a model computes is the sensitivity to its own current parameters (v0v_0, ρ\rho, vol-of-vol included), while the position’s real risk depends on parameters the BS Greeks simply do not contain. The standard patch is to add sensitivities to the volatility state — define Λ=∂V/∂v0\Lambda = \partial V/\partial v_0, compute it by finite difference, and report Δ,Γ,Vega,Λ\Delta, \Gamma, \text{Vega}, \Lambda separately. Many desks skip explicit Λ\Lambda tracking and hedge it indirectly through diversification across maturities and strikes — the exposure remains real, it just has no line in the ledger. The takeaway: a “Greek-neutral” portfolio with Δ\Delta, Γ\Gamma, Vega\text{Vega} all hedged to zero is not riskless under stochastic vol; it carries residual exposure to v0v_0 and ρ\rho.

Greeks Under Discrete Hedging

Continuous rebalancing is a textbook assumption; a real book adjusts every Δt\Delta t, and the realized P&L departs from what the Greeks predict. Two main corrections.

First, the gamma P&L. Between rebalances, the P&L of the delta-hedged position is driven by the gap between realized (ΔS)2(\Delta S)^2 and the implied expectation, summed leg by leg:

P&Lhedge=∑i12 Γti[(ΔSi)2−σ2Sti2 Δt]\text{P\&L}_{\text{hedge}} = \sum_i \frac{1}{2}\,\Gamma_{t_i}\left[(\Delta S_i)^2 - \sigma^2 S_{t_i}^2\, \Delta t\right]

The bracket is exactly “realized variance minus implied variance.” This is the market maker’s gamma-scalping ledger: long gamma profits when realized beats implied and pays theta otherwise; short gamma is the mirror. The sentence from the gamma section has become a formula.

Second, the spot-vs-forward delta convention. FX markets conventionally distinguish spot delta from forward delta, which differ by a discount factor:

Δfwd=Δspot⋅e(r−q)τ\Delta_{\text{fwd}} = \Delta_{\text{spot}} \cdot e^{(r - q)\tau}

(τ\tau the remaining maturity, qq the foreign rate or dividend yield). In equities r−qr - q is small and the distinction is usually ignored; in high-carry currency pairs (JPY crosses, for example) the convention gap can reach 1-2% of delta, and reporting the wrong convention means reporting the wrong position.

Finite Differences in Practice

Products without analytics use bump-and-revalue: shift an input, reprice, divide by the bump. The details make the quality. Central differences (V(x+h)−V(x−h))/(2h)(V(x+h) - V(x-h))/(2h) are second-order accurate, one-sided differences only first — use central where you can. Bump sizes as above. Repricing cost is the binding constraint: closed-form pricers are sub-millisecond, but Monte Carlo must rerun the whole simulation — and subtracting two noisy estimates leaves noise larger than signal unless both runs use common random numbers, so the noise cancels in the difference. That is rule number one of MC Greeks. Beyond it, adjoint / pathwise derivatives deliver all first-order Greeks for the cost of one extra pricing run (not one per parameter); path-dependent payoffs need care about differentiability, but the principle is the same.

A Diagnostic That Saves Careers

The final exam for the whole Greek apparatus is whether it can explain where your money went. Define:

P&L explain=Δ⋅dS+12Γ⋅(dS)2+Vega⋅dσ+Θ⋅dt+…\text{P\&L explain} = \Delta \cdot dS + \frac{1}{2} \Gamma \cdot (dS)^2 + \text{Vega} \cdot d\sigma + \Theta \cdot dt + \ldots

Compare it against each day’s realized P&L; the residual

ϵ=Realized P&L−∑iGi⋅Δxi\epsilon = \text{Realized P\&L} - \sum_i G_i \cdot \Delta x_i

is tracked per day, per book, per trader. Small residual: the risk system is credible. Large residual: fix the system before trading on it. The residual’s shape even localizes the disease: growing linearly in time, your gamma is wrong; growing with ∣ΔS∣2|\Delta S|^2, your vol sensitivity is wrong; tracking some sector index absent from your risk model, a correlation is missing. The discipline of “explain your P&L with your Greeks” is the line between risk management and accounting after the fact.

Which Greeks actually get used day to day? Most option traders watch delta and gamma; vol books add vega, short-premium books add theta, rate-sensitive books add rho. Second order follows the strategy. A vol-of-vol book’s primary metric is vomma — the P&L of a vol move is Vega⋅dσ+12Vomma⋅dσ2\text{Vega} \cdot d\sigma + \frac{1}{2}\text{Vomma} \cdot d\sigma^2, and a vega-positive, vomma-positive position earns more than linear on big vol moves. A gamma scalper’s overnight exposure is set by charm — hedged at 4 PM, not at the open, charm is the drift of delta in between. Long-dated books watch rho and veta together.

The production flow: one pricing function per instrument, Greeks per instrument on a bump-and-revalue schedule, aggregation into risk buckets (by expiry 1M/3M/6M/1Y/2Y, by delta, by underlier), limits applied on the totals. Empirically, most reporting errors originate in the aggregation step — sign and scale conventions slip exactly where analytic and finite-difference Greeks get mixed. Nail the conventions down, or you will be explaining P&L forever.

A closing sentence for the boundary of the whole apparatus: Greeks assume a model. When the market moves in a way that breaks the model — realized vol doubling in a day — you lose money even with every Greek flat. They are sensitivities at a point; they do not cover tail risk, jump risk, or hedge ratios failing under stress. Greeks are a language for describing risk, not the risk itself; the market maker’s real risk lives in vol-of-vol and surface dynamics, which belong to the volatility-surface articles.


Reading list. Hull, Options, Futures, and Other Derivatives, 10th ed. (2018), chapters on the Greek letters. Wilmott, Paul Wilmott on Quantitative Finance, 2nd ed. (2007), including pathwise and adjoint sensitivities. Luenberger, Investment Science (2013), for the PDE interpretation of cross-Greeks. Press et al., Numerical Recipes, 3rd ed. (2007), for the pitfalls of numerical differentiation.