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.
Replicate put–call parity at expiry
- For any expiry price Sₜ, . The left side is long call/short put; the right side is long stock delivery and a debt payment.
- The prepaid stock claim costs and the bond paying K costs . Matching payoffs under the pricing assumptions gives C−P as their difference. Solve for P by rearranging.
C=10.45,S=K=100,r=.05,q=0,T=1 gives .
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.
Build a local multi-input P&L approximation
- 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.
- 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.
Δ=.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
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.Explain it yourself: What must you check before using a small-move approximation for a large 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- Start with one random step before continuous noise
- Before Itô: random walks, Brownian motion and information
- Itô integration and quadratic variation
- SDEs, Euler–Maruyama and an Ornstein–Uhlenbeck example
- Geometric Brownian motion: the model under Black–Scholes
- Itô's lemma: why gamma exists
- Black–Scholes and delta hedging in production
- Put–call parity and a full Greek P&L budget
Quantitative finance and development glossary · Python resources and libraries · Research sources and limitations