Trading Dev AcademyFree quant education

Free lesson · Stochastic calc

Put–call parity and a full Greek P&L budget

Open interactive lessonPractice calculationsExplore labs

Start with the idea

Parity compares two portfolios with exactly the same expiry payoff. Greeks instead approximate how one portfolio’s value changes when its inputs move. A parity violation and a model miss are different diagnostic problems.

Symbols, units & horizon
  • C,P: European call and put on the same underlying, strike and expiry
  • S₀: spot
  • K: strike
  • q: continuous dividend yield
  • r: continuous interest rate
  • T: years to expiry
  • ΔV: finite value change
  • Δ: delta sensitivity, distinct from the change operator Δ before a variable
  • Γ: gamma
  • 𝒱: vega per 1.0 absolute volatility change
  • Θ: theta per year of calendar time
  • ρ: rate sensitivity per 1.0 absolute rate change, not correlation here
  • Δσ,Δr: decimal volatility and rate changes
  • Δt: years elapsed

When and why to use this

Use parity for data and quote consistency checks; use signed position Greeks to attribute P&L and design local hedges across an option book.

C−P=S0e−qT−Ke−rT
Payoff identity + no-arbitrage argument

Replicate put–call parity at expiry

  1. For any expiry price Sₜ, (ST−K)+−(K−ST)+=ST−K. The left side is long call/short put; the right side is long stock delivery and a debt payment.
  2. The prepaid stock claim costs S0e−qT and the bond paying K costs Ke−rT. Matching payoffs under the pricing assumptions gives C−P as their difference. Solve for P by rearranging.
Work it by hand

C=10.45,S=K=100,r=.05,q=0,T=1 gives P=C−S+Ke−rT≈5.573.

European call and put prices with the same strike and expiry satisfy this idealised parity relation with continuous dividend yield q. American early-exercise rights and real financing constraints require separate treatment. Use consistent rates, settlement and dividend assumptions.

ΔV≈ΔΔS+12Γ(ΔS)2+𝒱Δσ+ΘΔt+ρΔr
Multivariable Taylor approximation

Build a local multi-input P&L approximation

  1. Taylor-expand V(S,σ,t,r). Keep first derivatives times changes and the spot second derivative term. Identify those derivatives as delta, vega, theta, rho and gamma.
  2. If quoted vega is per volatility percentage point, multiply it by Δσ in percentage points. Theta quoted per day must use days. Multiply unit-option changes by signed contract count and multiplier.
Work it by hand

Δ=.5, Γ=.02, ΔS=2, vega=$.10 per vol point, Δvol=3 points, theta=−$.04/day over one day: P&L≈1+.04+.30−.04=$1.30 per option unit.

Delta and gamma capture spot sensitivities, vega captures volatility, theta calendar time, and rho rates. Check the quoted units: a vega per one percentage point must not be multiplied by a decimal-volatility change without converting. Multiply option-unit Greeks by quantity and contract multiplier for book exposures.

The expansion omits higher-order and cross terms. Jumps, skew changes, discrete hedging and trading costs can dominate the residual. A delta-neutral book still carries gamma, vega, funding and model risk.

Research sources, review dates and limitations

Extend the research question

Compare a model-implied value with a tradable quote and a realized hedging error. Specify which probability measure and rebalancing assumptions each calculation uses.

Continue with the connected research module →

Connect the ideas: Sensitivity and approximation

Retrieve: A local sensitivity describes how a model responds near a specified input.

Check the change: The input, its units and what is held fixed differ across slope, duration and option sensitivities.

Differential calculus → Partial derivatives → Rates, credit & macro → Options → Volatility

Explain it yourself: What must you check before using a small-move approximation for a large scenario?

Self-assessed. Write your explanation before opening this comparison.

Check the expansion point, units, held-fixed inputs, curvature and model domain; compare with a full repricing under the same scenario.

Python implementation

Self-contained teaching example. Python 3.10+; dependencies and input conventions are shown in the code and notation. Run in your own Python environment.

from math import exp

def parity_put(call, spot, strike, dividend_yield, rate, years):
    return call-spot*exp(-dividend_yield*years)+strike*exp(-rate*years)

def greek_pnl(delta, gamma, vega, theta, rho, ds, dvol, dt, dr):
    """Vega/rho per unit decimal; theta per YEAR. Convert vendor Greeks first."""
    return delta*ds+.5*gamma*ds**2+vega*dvol+theta*dt+rho*dr

print(greek_pnl(.5,.02,30,-6,20,2,.01,1/252,.001))

Continue learning

Stochastic Calculus — all lessons
  1. Start with one random step before continuous noise
  2. Before Itô: random walks, Brownian motion and information
  3. Itô integration and quadratic variation
  4. SDEs, Euler–Maruyama and an Ornstein–Uhlenbeck example
  5. Geometric Brownian motion: the model under Black–Scholes
  6. Itô's lemma: why gamma exists
  7. Black–Scholes and delta hedging in production
  8. Put–call parity and a full Greek P&L budget

Quantitative finance and development glossary · Python resources and libraries · Research sources and limitations