Trading Dev AcademyFree quant education

Free lesson · Options

Put–call parity as identical terminal cash flows

Open interactive lessonPractice calculationsExplore labs

Start with the idea

Two portfolios with the same cash flows in every state should cost the same under the frictionless replication assumptions.

Symbols, units & horizon
  • C,P: current European call/put premiums per underlying unit with common strike K and expiry
  • S₀: current underlying currency per unit
  • r: continuously compounded annual financing rate
  • T: years to expiry
  • K: currency per unit
  • zero dividends assumed

When and why to use this

Audit an option chain and identify inconsistent contract or input mapping.

Two portfolios with the same cash flows in every state should cost the same under the frictionless replication assumptions.

For a non-dividend-paying underlying, a call plus a bond paying the strike replicates a put plus one underlying unit at European expiry. This is a cash-flow identity first and a pricing equality only after financing, shorting and simultaneous execution assumptions.

Use executable bid and ask combinations for an actual discrepancy test. American exercise, discrete dividends, borrow restrictions or different settlement conventions require modified analysis; a mid-price gap is only a diagnostic.

C−P=S0−Ke−rT
Terminal payoff identity plus frictionless pricing assumptions

Put–call parity as identical terminal cash flows

  1. At expiry, call payoff plus K equals max(S_T,K).
  2. Put payoff plus S_T also equals max(S_T,K).
  3. Price equal terminal cash flows under frictionless financing: C+Ke^(−rT)=P+S₀, then rearrange.
Work it by hand

S₀=100, K=100, r=0 and T=1 imply C=P. A call at 8 and put at 7 show a one-unit mid-price discrepancy requiring executable costs and contract checks.

Apply it in a strategy

  • Freeze inputs at the stated decision time and record their units.
  • Audit an option chain and identify inconsistent contract or input mapping.
  • Recompute the example, then change the material assumption and explain the difference.

Research deliverable

Put–call parity as identical terminal cash flows: produce the worked calculation, a timestamped input record and a written decision addressing this limitation: A mid-price parity discrepancy is not executable arbitrage after spread, borrow, financing and settlement constraints.

These are synthetic mechanics examples, not historical performance or paper replications. Module evidence and research boundaries record the 12 September 2026 review.

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.

# Python 3.10+; standard library and NumPy only.
# Synthetic teaching inputs; conventions and units are defined in the notation above.
from math import exp

def parity_residual(call,put,spot,strike,rate,years):
    if min(spot,strike)<=0 or years<0: raise ValueError('Positive prices and nonnegative horizon required')
    return call-put-spot+strike*exp(-rate*years)

assert parity_residual(8,7,100,100,0,1)==1
print(parity_residual(8,7,100,100,0,1))

Continue learning

Options: Payoffs, Replication & Hedge Accounting — all lessons
  1. Call and put payoffs versus profit
  2. A bull call spread caps gains and initial cost
  3. Put–call parity as identical terminal cash flows
  4. Replicate a one-step option with stock and cash
  5. Black–Scholes as a conditional benchmark
  6. Delta and gamma are local sensitivities
  7. Cash accounting for a discretely hedged option
  8. Early exercise compares immediate and continuation value

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