Put-Call Parity
Put-call parity is the no-arbitrage relationship that links every call and put at the same strike. The formula, why it's enforced, the synthetic positions it makes possible, and how it behaves for 0DTE.
Calls and puts at the same strike aren't independent prices. There's a fixed relationship between them, enforced by arbitrage, that says: knowing one tells you the other (given the underlying and the time-to-expiration). That relationship is put-call parity — one of the most useful identities in options trading, used to price options, construct synthetic positions, and sanity-check option chains.
The relationship, in plain English
The core identity, in its simplest form — for cash-settled European options where the interest discount is negligible (which describes 0DTE SPX well):
Where C is the call price, P is the put price (same strike, same expiration), S is the underlying, and K is the strike.
A concrete example with 0DTE SPX, all at the 5000 strike:
- SPX at 5020, 5000 call at ~$24, 5000 put at ~$4.
C − P = 20.S − K = 5020 − 5000 = 20. Parity holds. - SPX at 4980, 5000 call at ~$4, 5000 put at ~$24.
C − P = -20.S − K = -20. Parity still holds. - SPX at 5000 (ATM), 5000 call and put at the same price.
C − P = 0.S − K = 0.
The pattern: at any strike, the call minus the put tracks the underlying minus the strike. If the underlying moves up $1, the call gains roughly $1 of value while the put loses roughly $1 — so C − P grows by $1, exactly matching the $1 move in S − K.
Why it's true — the no-arbitrage argument
A no-arbitrage relationship requiring that for European options at the same strike and expiration, the call price minus the put price equals the underlying price minus the present value of the strike. Holds exactly for European cash-settled options. American options can deviate slightly because of the possibility of early exercise.
Parity is enforced by arbitrage. If the relationship were violated — say, the call were overpriced relative to the put — you could sell the overpriced call, buy the put, take a position in the underlying, and lock in the discrepancy as risk-free profit.
To see why, consider the payoff at expiration of "long put + long underlying + short call," all at the same strike K:
- If the underlying ends above
K: the call gets exercised against you (you owe the difference betweenSandK), but the underlying you own offsets that exactly. The put expires worthless. Net at expiration: you haveKworth of value. - If the underlying ends below
K: the call expires worthless. The put pays the difference betweenKandS. The underlying you hold is worth less thanK, but the put exactly makes up the gap. Net at expiration: you haveKworth of value.
Either way, the combined position pays K at expiration. So today, the cost of the position has to equal the present value of K. That cost is S − C + P, and it must equal K · e^(−rT). Rearrange and you get put-call parity. For 0DTE where e^(−rT) is essentially 1, the simplified version holds.
Market makers continuously trade to keep parity true within transaction-cost bounds. When you see calls and puts priced consistently across a chain, you're seeing the result of that enforcement.
The full formula
The complete version includes the time value of money:
The e^(−rT) factor discounts the strike to its present value. A long call gives you the right to pay K in the future; the cash to do that doesn't have to be set aside today, so the strike is worth slightly less to you than its face value. The discount equals the interest you'd earn between now and expiration on the strike amount.
For 0DTE with T measured in hours, the discount is essentially zero — e^(−r · hours/year) rounds to 1 within fractions of a cent. For 30-day options the discount matters by a few cents. For LEAPS (long-dated options) it can matter by dollars.
For dividend-paying underlyings like SPY, an additional term enters: the present value of dividends paid before expiration gets subtracted from S. The SPY-adjusted version is C − P = S − D − K · e^(−rT). For SPX (an index, no direct dividends), the standard form applies as-is.
Synthetic positions
The practical consequence of parity: any one of the four basic positions (long/short underlying, long/short call, long/short put) can be replicated using the other two. These constructions are called synthetic positions.
A combination of options and underlying that replicates the payoff of a single different position. Derived from put-call parity. The three most useful: synthetic long stock (long call + short put), synthetic long call (long underlying + long put), and synthetic long put (short underlying + long call), all at the same strike and expiration.
The three commonly used synthetics, all built at the same strike:
- Synthetic long stock = long call + short put. The combined payoff at expiration equals
S − Kregardless of where the underlying lands — the same dollar-for-dollar exposure as owning the underlying outright. - Synthetic long call = long underlying + long put. The put caps your downside; the underlying captures any upside. Net payoff matches a long call.
- Synthetic long put = short underlying + long call. The call caps your upside loss; the short underlying captures profit if it falls. Net payoff matches a long put.
The synthetic long stock is the easiest to see visually. The chart below plots the long-call payoff and the short-put payoff individually (dashed colored lines), plus the combined payoff (solid). The two option payoffs add together to produce a straight diagonal — the same payoff shape as owning the underlying outright.
- P&L at spot
- $0
- Max profit (range)
- $10,000
- Max loss (range)
- -$10,000
- Net debit
- $0
Drag the slider to move the underlying. The combined P&L moves dollar-for-dollar with S − K, exactly as long stock would. The individual call and put legs do most of the work near the strike; deep ITM in either direction, one leg's payoff dominates and the other approaches a constant.
Why use a synthetic instead of the real thing?
- Capital efficiency. A synthetic stock position ties up the call and put premiums (small) rather than the full notional of the underlying (large). Useful when buying power is constrained.
- §1256 tax treatment on SPX. Options on SPX get the 60/40 blended tax rate (covered in SPX vs SPY vs Equity Options). Synthetic exposure via SPX options preserves that treatment in a way that holding SPY shares does not.
- Shorting without borrow costs. A synthetic short stock (short call + long put) avoids the borrow rate you'd pay to short shares directly.
- Hedging existing positions. A long stock + long put position is mechanically a synthetic long call — a way to convert a stock holding into limited-downside exposure.
One nuance for SPX: the underlying is the index itself, which can't be held directly. "Synthetic stock on SPX" is a conceptual relationship rather than a practical position swap. The synthetics that matter day-to-day are on SPY (where the underlying is tradeable) or as hedge constructions combining SPX options with SPY shares or futures.
What parity says about IV by strike
A subtle implication: strictly, the call and put at the same strike must share the same implied volatility. If they had different IVs, BSM would produce prices that violate parity, and an arbitrageur would close the gap.
In practice, you'll sometimes see slightly different IV quotes for the put and the call at the same strike on a broker chain. That's mostly an artifact of how IV is computed — most platforms back out IV separately for each side using the observed bid or mid, which can be a penny different between the two. The actual no-arbitrage condition holds; the displayed discrepancy is a measurement quirk.
The IV skew is a different phenomenon. Skew refers to different IVs at different strikes — the 4900 put has a different IV than the 5000 put. That's not a parity violation. Parity says calls and puts at the same strike share IV; it says nothing about how IV varies across strikes. The shape of IV-by-strike is covered in The Volatility Smile and SPX Skew.
What this means in practice on 0DTE
A few practical uses of put-call parity for 0DTE traders:
Chain integrity check. Pick any strike, compute C − P from the chain, and compare to S − K. If they're meaningfully off (more than a few cents), something's off — a stale quote, a wrong underlying reference, a feed issue. Useful sanity check before sizing into a trade.
Implicit market-maker pricing. Market makers don't price calls and puts independently. They derive both sides from a single underlying mark and a per-strike IV, with parity holding by construction. When you see tight bid-ask spreads on both sides at a strike, parity is holding tightly.
Multi-leg strategies inherit their risk profile from parity. A vertical spread, a butterfly, an iron condor — any structure combining calls and puts — assumes parity holds in order for its theoretical risk and reward to match reality. If parity broke meaningfully, those structures wouldn't behave as designed.
Synthetic construction for capital efficiency. A 0DTE trader looking for a small directional position can sometimes get it more efficiently through a synthetic than through the underlying directly — particularly when buying power is the binding constraint.
Key takeaways
- Put-call parity says
C − P = S − K(orC − P = S − K · e^(−rT)with the interest discount). It's enforced by arbitrage and holds within transaction-cost bounds. - The relationship lets you construct synthetic positions — replicating one position using the others. Long call + short put = synthetic long stock, and similar identities exist for synthetic calls and puts.
- Synthetics matter in practice for capital efficiency, §1256 tax treatment on SPX, and hedging existing positions.
- Parity ties calls and puts at the same strike. Different IVs at different strikes (the skew) are a separate phenomenon, not a parity violation.
- For 0DTE, the interest discount is essentially zero, so the simple version
C − P = S − Kholds to within pennies.