Skip to main content

Put-Call Parity from zero

1/5

The identity

Put-call parity is not a model. It is not an approximation. It is an identity — a mathematical fact enforced by arbitrage.

Put-call parity
C P = S K·e⁻ʳᵀ
C = call price. P = put price. Same strike, same expiry.
S = spot price. K·e⁻ʳᵀ = present value of the strike.

The left side is the difference between a call and a put at the same strike and expiry. The right side is spot minus the discounted strike. They are always equal. If they diverge, someone is giving away free money.

Move the sliders below. Watch both sides. They always match — because the call and put prices are computed from the same underlying reality.

C − P
$1.24
$5.73 $4.49
=
S − PV(K)
$1.24
$100.00 $98.76
Parity holds. Both sides equal $1.24.
$100
$100
0.25y
5.0%
20%

No matter how you move spot, strike, volatility, or rates, the two sides stay locked. This is not a coincidence. It is a consequence of the fact that calls and puts are not independent instruments — they are two views of the same forward.

Why it must hold

Build two portfolios. Show they have identical payoffs at expiry. If two things pay the same in every scenario, they cost the same today.

Portfolio A
Long call + K·e⁻ʳᵀ in cash
Buy a call. Set aside enough cash that it grows to exactly K at expiry.
Portfolio B
Long put + Long stock
Buy a put. Buy the stock.

At expiry, both portfolios pay max(S, K):

If S > K: Portfolio A exercises the call, gets the stock worth S. The cash (now K) is not needed. Total: S. Portfolio B lets the put expire, holds the stock worth S. Total: S.

If S < K: Portfolio A lets the call expire, keeps the cash (now K). Total: K. Portfolio B exercises the put, sells the stock at K. Total: K.

Same payoff in every state of the world. Same cost today. That is put-call parity.

K=100Payoff at expirySpot at expiry (S)
Portfolio A: call + K cash
Portfolio B: put + stock
Both pay max(S, K) at expiry. Always. The lines overlap perfectly.
$100

The two lines overlap perfectly. Move the strike — they still overlap. Toggle "Show individual payoffs" to see the components. The call and cash combine to match the put and stock exactly.

Using it to convert

Know any four of {C, P, S, K, r} and the time to expiry. Parity gives you the fifth for free.

This is the most practical use. You see a call price and want to know the fair put. Or you see a put and want to back out the implied call. Rearrange the identity:

Solving for the put
P = C S + K·e⁻ʳᵀ
Solving for the call
C = P + S K·e⁻ʳᵀ

Pick which variable to solve for. Enter the others. The calculator does the rest.

Solve for:
$
$
$
%
years
Put price (P)
$4.21
From: C − P = S − K·e⁻ʳᵀ
Verification
C − P = 10.454.21 = 6.24
S − PV(K) = 105.0098.76 = 6.24

Spotting violations

When parity breaks, there is free money. The question is whether the violation is large enough to cover transaction costs.

The classic arbitrage trades that enforce parity are the conversion and the reversal.

If C − P > S − PV(K): Calls are overpriced. Execute a conversion — sell the call, buy the put, buy the stock, borrow PV(K).

If C − P < S − PV(K): Puts are overpriced. Execute a reversal — buy the call, sell the put, sell the stock, lend PV(K).

Set the prices below to create a violation. The detector shows you exactly which trades to make and the risk-free profit. Try setting the call price too high relative to the put.

$
$
$
$
%
yrs
C − P$7.00
S − PV(K)$6.24
Difference$0.76
Parity violated by $0.76. Calls overpriced relative to puts.
Conversion (sell the overpriced call side):
1Sellthe call at $12.00
2Buythe put at $5.00
3Buythe underlying at $105.00
4Borrow$98.76 at the risk-free rate
Risk-free profit:$0.76
At expiry, you deliver the underlying at K regardless of where spot ends up. The conversion locks in the $0.76 parity difference as risk-free profit.

In practice, the arbitrage is not free. You need margin for the short option and the underlying. Execution risk means prices can move between legs. Cross-venue positions add counterparty risk. The violation must exceed all frictions combined. This is why small deviations persist — they are inside the no-arbitrage band.

PCP in practice

Crypto markets sometimes show parity violations that would be arbed away in seconds in equities. Here is why.

Funding rates. When perp funding is extremely positive (bullish market), carrying a short position in the underlying is expensive. Reversals cost more. This lets puts trade at a relative premium, creating apparent parity violations that reflect real carrying costs.

Cross-venue fragmentation. Options live on Deribit. Spot lives on Binance, Bybit, OKX. You cannot atomically execute all legs of a conversion on one venue. The legs sit on different exchanges with different margin systems. This widens the no-arbitrage band.

Margin costs. Both the short option and the underlying position require margin. Capital locked in a conversion earns a small return but cannot be deployed elsewhere. The opportunity cost of capital is a real friction.

Settlement mechanics. Crypto options can settle in the underlying (inverse) or in USD (linear). The settlement method changes the carry calculation. An inverse-settled BTC option has different economics than a linear one, even at the same strike.

A $0.50 violation on a $100 strike is 0.5%. That is within normal bid-ask spread for crypto options. Not a real violation.

A $5.00 violation on a $100 strike is 5%. That is either a stale quote, a data error, or genuine mispricing that will be arbed within minutes. Before trading it, verify the quotes are live on both sides.

The rule of thumb: if the violation is smaller than the sum of bid-ask spreads on all three legs (call, put, underlying), it is noise. If it is larger, check your data. If the data is right, someone is leaving money on the table.

Where to go next:

Black-Scholes — the pricing model that respects parity

Implied volatility — both legs should imply the same IV

Basis trades — how basis affects the forward and parity