Free lesson · Arbitrage
Put–call parity from expiration states
Open interactive lessonPractice calculationsExplore labs
Start with the idea
A European call plus strike cash and a matching put plus the asset have identical terminal payoffs in a simple no-dividend model.
Symbols, units & horizon
- C: European call premium USD/unit
- P: matching put premium USD/unit
- S_0: spot USD/unit
- K: strike USD/unit
- r: simple annual financing rate
- T: common maturity in years
When and why to use this
Check option quote consistency and distinguish implied financing from a real executable trade.
A European call plus strike cash and a matching put plus the asset have identical terminal payoffs in a simple no-dividend model.
Above the strike, the call plus strike cash pays the asset price and the put is worthless. Below the strike, the put plus asset pays the strike and the call is worthless.
Invest enough cash today to become the strike at expiration. American exercise, dividends, borrow restrictions and mismatched settlement require a different replication analysis.
Put–call parity from expiration states
- Verify call plus terminal strike equals put plus terminal spot above K.
- Verify both portfolios pay K below K.
- Discount strike cash and rearrange equality C+K/(1+rT)=P+S_0.
Spot 100, strike 102, r=.04 and T=.5 imply present strike 102/1.02=100. A call costing $6 implies a put costing 6−100+100=$6.
Apply it in a strategy
- Check option quote consistency and distinguish implied financing from a real executable trade.
- Record the input timestamp, executable quantity, currency and horizon. Reconcile the result with a cash-flow or state table.
- Stress this failure condition: Midpoint parity residuals may fit entirely inside spreads and borrowing costs.
Research deliverable
Build and explain a put–call parity from expiration states worksheet. Check option quote consistency and distinguish implied financing from a real executable trade.
Evidence boundary: Synthetic arithmetic and scenarios illustrate mechanics. They are not historical returns, a paper replication, or evidence of an executable edge. Research sources and their access limitations are recorded at the end of this module.
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 unless NumPy is imported below.
# Inputs and outputs use the units defined in this lesson. Synthetic teaching example.
def parity_put(spot,strike,call,rate,years):
if min(spot,strike,call,years)<0 or 1+rate*years<=0: raise ValueError("Invalid inputs")
return call-spot+strike/(1+rate*years)
print(parity_put(100,102,6,.04,.5))Continue learning
Arbitrage: Payoffs, Financing and Execution — all lessons- Start with every possible payoff
- Bid, ask and the gross-to-net waterfall
- Put–call parity from expiration states
- Dated cash-and-carry
- Triangular currency conversion
- ETF baskets and creation access
- Haircuts and survival capital
- Size, impact and the research decision
Quantitative finance and development glossary · Python resources and libraries · Research sources and limitations