Put–Call Parity and Put–Call Forward Parity (CFA Level 1): Core Principles of No-Arbitrage, Understanding the Basic Put–Call Parity for European Options, and Breaking It Down. Key definitions, formulas, and exam tips.
Sometimes, I remember my first time seeing the put–call parity equation. The professor wrote “C – P = S – PV(K)” on the board and casually said, “This must hold, or there’s an easy arbitrage.” I was like, “Wait, how can something so simple keep the market honest?” But that’s exactly what it does. The put–call parity relationship is a cornerstone in options theory—A guiding principle that shows how calls, puts, and the underlying asset interact under no-arbitrage conditions. And guess what? It becomes even more intriguing when we talk about options on forwards: put–call forward parity. In this section, we’ll dig deep into these relationships, figure out why they matter, and see how they can help avoid mispricings and speculation gone wrong.
Before we dive into the actual formulas, let’s remind ourselves that the put–call parity is fundamentally about no-arbitrage. The no-arbitrage principle states:
This principle is the backbone not only for option pricing but also for the pricing of forwards, swaps, and many other derivatives. A violation of no-arbitrage, even if small, will be ruthlessly exploited by professional traders, quickly pushing prices back in line. It’s a big reason why you won’t last long in derivatives markets if you misprice assets relative to each other.
The standard put–call parity formula for European-style options on a non-dividend-paying stock is often written:
(1)
C – P = S – PV(K)
Where:
In many textbooks or formulas, you might see the discount factor explicitly shown, such as:
PV(K) = K × e^(−rT)
assuming continuous compounding for T years. Or, if we use simple annual compounding, it might be:
PV(K) = K / (1 + r)^T
Whichever way you discount, the principle is the same: the cost of the strike price in today’s dollars. That’s your PV(K).
In other words:
– If you buy a call and lend PV(K) at the risk-free rate, the total cost is C + PV(K). At expiration, you effectively lock in the right to buy the underlying at strike K (because you’ll have exactly K at maturity from the lent funds).
– If you buy a put and the underlying (S), you have the right to sell the underlying at K.
These two positions should lead to the same payoff at expiration if the markets are operating under no-arbitrage conditions. So, that means:
C + PV(K) = P + S
Rearranging to isolate call minus put on one side:
C – P = S – PV(K)
Let’s say we have:
Then PV(K) = 105 / (1 + 0.03) ≈ $101.94
Suppose we observe:
Check if put–call parity holds:
Left side: C – P = $8.50 – $7.00 = $1.50
Right side: S – PV(K) = $100 – $101.94 = –$1.94
Clearly, this doesn’t match. The left side is +$1.50, while the right side is –$1.94—so we have a discrepancy of $3.44. In theory, such a gap signals an arbitrage opportunity. Traders would rush in, buy the underpriced set of instruments, and sell the overpriced set until the prices converge. In real markets, that discrepancy might be quickly traded away.
Many underlying assets pay dividends (for instance, equities) or generate yields (for instance, bonds or currencies with interest rates). In that case, put–call parity modifies to reflect the present value of dividends or the benefit of holding the asset:
When an asset pays known discrete dividends, we subtract the present value of those dividends (PV of Div) from the left-hand side for the call or adjust the S term on the right side:
(2)
C – P = (S – PV of Div) – PV(K)
Alternatively, for continuous dividend yields (q), we discount the stock price by e^(−qT). The concept remains the same: you can’t forget that owning the underlying might come with “benefits,” like dividend cash flows, which reduce the effective cost of holding the position. If you do forget, you’ll misprice the options.
One super-cool insight from put–call parity is how you can build a “synthetic” position:
And so on. Each synthetic replicates the payoff of the “real” position. If at any moment these replicated strategies are cheaper or more expensive than the actual underlying (or the actual call/put), you can do an arbitrage. In practice, transaction costs and margin requirements complicate matters; but the fundamental logic stands.
One of my colleagues in trading used to say, “We basically just rearrange the put–call parity all day and see if there’s free money.” That’s a bit tongue-in-cheek, but not entirely untrue. A lot of sophisticated option trading strategies come back to rearranging or extending put–call parity to more complicated payoffs.
Below is a simple diagram showing how these synthetic relationships connect:
flowchart LR
A["Put–Call Parity <br/> Relationship"] --> B["Synthetic Long <br/> Stock Position"]
A --> C["Synthetic Call <br/> Position"]
A --> D["Synthetic Put <br/> Position"]
As prices fluctuate, these synthetic relationships must remain in equilibrium—or the market collectively corrects them through arbitrage activity.
Now, let’s switch gears to “put–call forward parity.” It’s basically the same concept, but instead of using the spot price S, we consider a forward price F₀,ₜ for some maturity T. If you have a call and a put both on the same forward contract underlying (with same strike and maturity), the relationship becomes:
(3)
C_forward – P_forward = (F₀,ₜ – K) × e^(−rT)
In some versions, you might see F₀,ₜ or simply F. The discount factor e^(−rT) again accounts for the time value of money from now until T. If we break it down:
Often, we see a related form:
C_forward – P_forward = F₀,ₜ – K, if the discounting is implicit or if we assume the forward price is used in place of lending or borrowing the strike. Exactly how it’s expressed can vary in the literature, but the principle is consistent: The cost of a call minus the cost of a put on a forward is effectively the difference between the forward price and the strike, discounted appropriately to the present.
It ensures that the pricing of options on forward contracts remains consistent with the no-arbitrage principle observed in standard put–call parity. If you can price an option on the spot and combine it with a forward, you should arrive at the same total cost if you choose an alternative route (like a synthetic forward or a call–put combination).
If that didn’t hold, again, there would be an arbitrage. Traders would buy or sell whichever side is mispriced and lock in a risk-free profit. That, theoretically, can’t last in an efficient market.
In the perfect theoretical world, these relationships are exact. In real markets, though, there are transaction costs, bid-ask spreads, margin requirements, and sometimes liquidity constraints. While the strict put–call parity remains a guiding principle, you might see small deviations that are equivalent to the magnitude of transaction costs. If a would-be arbitrage yields less than your transaction costs, it’s not profitable at all.
Notice we said “European” put–call parity. For American options—where early exercise is allowed—things get more complicated. The clean formula C – P = S – PV(K) strictly holds for European options because they can only be exercised at expiration. For American options, the possibility of early exercise can make the put–call parity an inequality rather than an equality. Typically:
C – P ≥ S – K
(since an American call on a non-dividend-paying stock is not worth early exercise in most circumstances, but an American put might gain value from early exercise, etc.).
Forward contracts on dividend-paying stocks are priced a bit differently from non-dividend-paying stocks. The forward price might be lower if the underlying is expected to pay dividends because the stock will lose value on ex-dividend dates. So, if you lock in a forward price F₀,ₜ, that forward price must reflect the net cost of carrying the asset, including the missed dividends or the cost of borrowing. The same logic influences how we adapt the put–call parity for forward-based options.
Put–call parity isn’t just for equities. You can apply an analogous relationship for currencies (remember that holding one currency has an opportunity cost of not holding the other), commodities (storage costs or convenience yields come into play), and interest-rate instruments (where the underlying is a bond or an interest rate). Each time, the details of “S” and “PV(K)” get replaced by the relevant cost-of-carry model for that underlying.
Let’s do a short numeric illustration. Suppose you have:
According to the put–call forward parity:
C_forward – P_forward = (F₀,ₜ – K) × e^(−rT)
( F₀,ₜ – K ) = (100 – 95) = 5
Discount factor e^(−0.05 × 1) = e^(-0.05) ≈ 0.95123
So the right side is 5 × 0.95123 ≈ $4.756. That’s the difference between the call and the put. We have the call price = $12, so:
12 – P_forward = 4.756
P_forward = 12 – 4.756 = 7.244
So the forward put should cost about $7.24. If you see the market trading that put at (say) $8.00, that might mean the put is overpriced relative to the call. There might be a potential arbitrage, or it might reflect market frictions.
In practice, financial regulators encourage transparent markets and require consistency in derivative pricing to reduce systemic risks. Under IFRS or US GAAP, the valuations of derivative positions must reflect fair value based on observable market data where possible. The no-arbitrage framework, including put–call parity, helps ensure that reported prices for derivatives are consistent. If your internal models produce values inconsistent with these basic parity relationships, you’ll raise red flags with auditors or risk managers.
Moreover, the CFA Institute Code of Ethics and Standards of Professional Conduct require professionals to practice diligence and care when pricing instruments or providing investment advice. Understanding and applying no-arbitrage principles—like put–call parity—is considered a best practice in fulfilling these ethical obligations.
At the CFA Level I (and advanced levels), you might see direct questions on calculating the price of a missing option using put–call parity—like we just did in the numeric examples. Or you might see conceptual questions that test your understanding of how no-arbitrage arguments hold markets in equilibrium. Put–call parity is also foundational for later topics on exotic options, volatility trading, and risk management strategies that rely on synthetic positions.
Important Notice: FinancialAnalystGuide.com provides supplemental CFA study materials, including mock exams, sample exam questions, and other practice resources to aid your exam preparation. These resources are not affiliated with or endorsed by the CFA Institute. CFA® and Chartered Financial Analyst® are registered trademarks owned exclusively by CFA Institute. Our content is independent, and we do not guarantee exam success. CFA Institute does not endorse, promote, or warrant the accuracy or quality of our products.