CFA Level I Exam · Option Replication Using Put-Call Parity
Arbitrage When Put-Call Parity Is Violated
Updated 7 October 2026 · Fact-checked
Put-call parity says a fiduciary call (call plus bond) must equal a protective put (put plus stock) in value. If the two sides differ, sell the expensive side, buy the cheap side, and keep the difference today. The payoffs cancel at expiry, so the profit is riskless.
Understand Arbitrage When Put-Call Parity Is Violated
Put-call parity links four prices: the European call (c), the European put (p), the underlying (S0) and a zero-coupon bond that pays the exercise price X at expiry. Two portfolios give the same payoff at expiry in every state of the world. A fiduciary call is a call plus a bond worth X ÷ (1 + r)^T. A protective put is a put plus the underlying. Both pay max(S_T, X) at expiry.
The law of one price says identical payoffs must have identical costs. If they do not, you can buy the cheaper portfolio and sell the dearer one. At expiry the two payoffs cancel exactly, so you owe nothing and receive nothing. The gap in prices today is your riskless profit. You need no capital of your own, because you sell something that more than funds what you buy.
To find the mispricing, compute both sides: c + X ÷ (1 + r)^T and p + S0. The larger side is overpriced. You sell that side and buy the other. Selling a bond means borrowing. Selling a stock means short selling. Selling an option means writing it.
Dividends change the stock leg. If the underlying pays known dividends before expiry, the stock holder receives them, not the option holder. So the stock leg is worth S0 − PV(D) when you compare it with the call side. Parity becomes c + PV(X) = p + S0 − PV(D), or equivalently c + PV(X) + PV(D) = p + S0.
The forward version replaces the stock with a forward contract. Buying the stock is equivalent to buying a forward at F0(T) and holding a bond worth F0(T) ÷ (1 + r)^T. So parity becomes c + PV(X) = p + PV(F0(T)), or c − p = PV(F0(T) − X). This form already handles dividends and carry costs, because they sit inside the forward price.
Key formulas to remember
- Put-call parity (no dividends)
- c + X ÷ (1 + r)^T = p + S0
- European options, same X and T, same underlying. Left side is the fiduciary call, right side is the protective put.
- Parity with discrete dividends
- c + X ÷ (1 + r)^T = p + S0 − PV(D)
- PV(D) is the present value of dividends paid before expiry. Dividends lower the stock leg.
- Forward-based parity
- c + X ÷ (1 + r)^T = p + F0(T) ÷ (1 + r)^T
- Equivalent to c − p = [F0(T) − X] ÷ (1 + r)^T. Use when a forward price is given.
- Continuous version
- c + X e^(−rT) = p + S0 e^(−qT)
- q is the continuous dividend yield. Use only if the question gives continuous rates.
- Arbitrage profit
- Profit today = |Fiduciary call value − Protective put value|
- Per unit of the position, received at time 0 and riskless.
How to solve Arbitrage When Put-Call Parity Is Violated questions
Use the same sequence for every parity arbitrage question. Work from prices, not from intuition.
- 1List c, p, S0, X, r and T. Check the options are European with the same X and T.
- 2Find the present value of X (and of any dividends, or of the forward price if given).
- 3Compute the fiduciary call value: c + PV(X).
- 4Compute the protective put value: p + S0 (less PV of dividends if any).
- 5Compare. The larger side is overpriced. The smaller side is underpriced.
- 6Sell the overpriced portfolio and buy the underpriced one. Translate: selling a bond is borrowing, selling stock is short selling, selling an option is writing it.
- 7Net the cash flows at time 0. The net inflow is the riskless profit.
- 8Confirm that the payoff at expiry is zero in both S_T > X and S_T < X.
Quickest way: Compare, then flip the dearer side
When to use it: Use for any three-option MCQ asking which trade or what profit.
- Compute c − p and compare it with S0 − PV(X) (or S0 − PV(D) − PV(X), or PV(F0 − X)).
- If c − p is larger than the right side, the call is too dear or the put too cheap: sell the call, buy the put, buy the stock, borrow.
- If c − p is smaller, do the reverse: buy the call, sell the put, short the stock, lend.
- The profit is the absolute gap between the two sides.
- Check the answer options. Two options will have the wrong direction; the third has the right direction and the right size.
Common mistakes in Arbitrage When Put-Call Parity Is Violated
Using X instead of PV(X) in the comparison.
Many students recall the formula as c + X = p + S0 and skip the discounting.
Fix: Always write X ÷ (1 + r)^T as the bond leg. Without it the gap is wrong.
Reversing the trade direction.
Students buy the overpriced portfolio because they focus on the label rather than the price.
Fix: Sell whichever side has the higher value and buy the lower side. Then check that time 0 cash is positive.
Ignoring dividends paid before expiry.
The basic formula has no dividend term, so students forget it.
Fix: If dividends are mentioned, subtract PV(D) from S0 on the stock leg before comparing.
Reporting the profit at expiry instead of today.
Students compound the gap forward by habit.
Fix: The riskless profit is the price gap at time 0. Expiry payoffs net to zero. Use the future value only if the question asks for it.
Applying parity to mismatched options.
The call and put may differ in strike or expiry.
Fix: Parity holds only for European options with the same underlying, strike and expiry.
Mixing up the forward parity form.
Students discount F0(T) with the wrong period or forget to discount it.
Fix: Discount both X and F0(T) over the same T at the risk-free rate. Then c − p = PV(F0 − X).
Worked examples
Example 1
A stock trades at $50. A European call with strike $50 and one year to expiry costs $6.00. The matching put costs $3.00. The annual risk-free rate is 4%, and the stock pays no dividends. Which trade locks in a riskless profit, and how much is it per share (nearest cent)? Options: A) Sell call, buy put, buy stock, borrow: $0.65; B) Sell call, buy put, buy stock, borrow: $1.08; C) Buy call, sell put, short stock, lend: $1.08
Show the solution
- PV(X) = 50 ÷ 1.04 = 48.0769.
- Fiduciary call = 6.00 + 48.0769 = 54.0769.
- Protective put = 3.00 + 50 = 53.00.
- The fiduciary call is larger, so it is overpriced. Sell the call, borrow PV(X) (sell the bond), and buy the put and the stock.
- Profit = 54.0769 − 53.00 = 1.0769, about $1.08.
- Check direction first. C has the reversed direction, so eliminate it even though its amount is right. A has the right direction but the wrong amount, so eliminate it. Only B has the right direction and the right amount.
Answer: B. Sell the call, buy the put, buy the stock and borrow. The riskless profit is about $1.08 per share.
Example 2
A European call (strike $40, six months) costs $4.50 and the matching put costs $2.00. The stock trades at $41. The stock pays a $1.00 dividend in three months. The six-month risk-free rate is 3%, so the six-month discount factor is 1.03. The three-month factor is 1.03^0.5 = 1.0149. Is parity violated, and what is the arbitrage profit per share?
Show the solution
- PV(X) = 40 ÷ 1.03 = 38.8350.
- PV(D) = 1.00 ÷ 1.0149 = 0.9853.
- Fiduciary call = c + PV(X) = 4.50 + 38.8350 = 43.3350.
- Protective put with dividend adjustment = p + S0 − PV(D) = 2.00 + 41 − 0.9853 = 42.0147.
- The fiduciary call is larger by 43.3350 − 42.0147 = 1.3203, so parity is violated.
- Trade: sell the call, buy the put, buy the stock, and borrow PV(X) + PV(D) = 38.8350 + 0.9853 = 39.8203.
- Cash today: +4.50 − 2.00 − 41.00 + 39.8203 = +1.3203.
- At three months the dividend of $1.00 is received and repays the PV(D) part of the borrowing. The rest of the borrowing grows to $40 at six months.
- At six months the stock plus the long put pays max(S_T, 40), and the short call costs max(S_T − 40, 0). The net is exactly $40 in every state. This $40 repays the remaining loan, so the position ends at zero and the $1.32 received today is riskless profit.
Answer: Parity is violated. Sell the call, buy the put, buy the stock and borrow. The riskless profit today is about $1.32 per share.
Exam tips
- Write both portfolios as numbers before choosing an option. Check direction first, then size of the profit.
- Read for dividends or a forward price. If a forward price is given, use the forward form and discount it.
- Remember the profit is received at time 0. Do not compound it unless asked.
- On the BA II Plus, compute PV(X) with 1.04 y^x 1 then 1/x, or enter X ÷ (1+r)^T directly: 50 ÷ 1.04 =. On the HP 12C use 50 ENTER 1.04 ÷ for one period.
- If both options are priced consistently, no trade exists; do not force an arbitrage.
Practice questions from Option Replication Using Put-Call Parity
- An analyst wants to replicate a long position in a European put option using put-call parity on a non-dividend-paying stock. Which combinati…
- A non-dividend stock trades at 40. A six-month European call (strike 40) trades at 3.00 and the matching put trades at 2.50. The continuousl…
- A trader observes that a put is priced above the level implied by put-call parity. Holding the call, stock and bond prices constant, which s…
- When put-call parity is violated and an arbitrageur executes the correct offsetting trades, the most likely effect on market prices is that:
- A share trades at 80. A European put (X = 80, one year) costs 5.00 and a European call with the same terms costs 8.20. The risk-free rate is…
Arbitrage When Put-Call Parity Is Violated in other exams
The same ground in other exams, if you are preparing for more than one or want another angle on it.
Arbitrage When Put-Call Parity Is Violated: frequently asked questions
How do I know which side of put-call parity is overpriced?
Compute the fiduciary call (c + PV of X) and the protective put (p + S0, adjusted for dividends). The larger value is overpriced. You sell it and buy the other.
Does put-call parity work for American options?
No. The exact parity relationship holds for European options. Early exercise of American options breaks the equality, so only inequalities apply.
How do dividends change put-call parity?
Dividends paid before expiry reduce the value of holding the stock for the option side. You subtract the present value of dividends from S0, or add it to the bond leg, before comparing.
What is the forward version of put-call parity?
It is c + X ÷ (1 + r)^T = p + F0(T) ÷ (1 + r)^T, or c − p = [F0(T) − X] ÷ (1 + r)^T. It is useful because the forward price already includes dividends and carry costs.