Analyst Dojo
Lesson 3 of 4 6–9% of the exam

Put–call forward parity

A long forward plus a bond paying F₀(T) replicates the share, so parity becomes F₀(T)(1 + r)^−T + p₀ = c₀ + X(1 + r)^−T. Equivalently p₀ − c₀ = (X − F₀(T))(1 + r)^−T: when X equals the forward price, the put and call cost the same.

6 min cram, 24 min full read. Based on the 2027 CFA® Program Level I curriculum, Derivatives, Learning Module 9. Also part of the 2026 curriculum, so it applies to the November 2026 exam too.

Tailor this to you: take the self-assessment

Before this: Building synthetic positions with put–call parity, Forward price vs forward value: at initiation, during the life, at expiry

On the exam

  • Explain put–call forward parity for European options

Explain put–call forward parity for European options. Expect to solve for the put or call given F₀(T), to recognize the synthetic protective put, and to know that X = F₀(T) makes the call and put equal.

How deeply to learn each part
Know the idea
Understand it in general. It frames other topics, but you will not calculate with it.
Use it
Understand it well enough to solve a question with it. Recognize when it applies.
Memorize
Learn it by heart. The exam will not give it to you.

You know this one. The full lesson is folded away. The takeaways, formulas and checkpoint below are your quick refresher, and the checkpoint is a fair test of whether you still do.

You tested strong here. The full lesson is folded away. The takeaways, formulas and checkpoint below are your quick refresher, and the checkpoint is a fair test of whether you still know it.

Cram mode: the one-screen version of this lesson. Switch to Full for the explanations, worked examples and interactives.

How does parity look when the share is replaced by a forward?

Swap the share for a forward and a bond. An earlier lesson showed that a long forward plus a risk-free bond paying the forward price F₀(T) replicates the share. Its cost today is the present value of the forward price , F₀(T)(1 + r)^−T, which equals S₀ when the asset pays no income.

Share as forward plus bond Use it
S0=F0(T)(1+r)−TS_0 = F_0(T)(1 + r)^{-T}

Put this into the protective put. The synthetic protective put is a long forward, a bond paying F₀(T), and a long put. The fiduciary call is unchanged: a long call and a bond paying X. Both pay the greater of S_T and X at expiry, so they cost the same. That is put–call forward parity .

Put–call forward parity Memorize
F0(T)(1+r)−T+p0=c0+X(1+r)−TF_0(T)(1 + r)^{-T} + p_0 = c_0 + X(1 + r)^{-T}

Rearranged, the gap between put and call depends only on strike versus forward price.

Put minus call Memorize
p0−c0=[X−F0(T)](1+r)−Tp_0 - c_0 = \left[X - F_0(T)\right](1 + r)^{-T}
What a forward does inside parity
Share = long forward + bond paying F₀(T)replace S₀ with PV(F₀(T)) in put–call parity
  • Synthetic protective put Memorize long forward + bond paying F₀(T) + long put
  • Fiduciary call Memorize unchanged: long call + bond paying X
  • Long put + short call Use it short forward + bond paying X − F₀(T)
  • Long call + short put Use it long forward + bond paying F₀(T) − X
InteractivePut–call forward parity on a balance

Try this 0 of 3

  • Set X equal to the forward price
  • Raise X above the forward price
  • Switch to solving for the call
Put price, p₀ (solved)55.39
PV(F)2,019.90
PV(X)1,980.30
p₀ − c₀−39.61
  • PV of the forward price
  • Put
  • Call
  • PV of X
PV(F) + putcall + PV(X)PV(F) 2,020p 55.39+39.61PV(X) 1,980c 95.00balanced

Call dearer than put by 39.61, which is |X − F₀(T)| = 40.00 discounted for 0.5 years.

Large blocks are broken: only the part above the smaller PV is drawn to scale. A long forward plus a bond paying F₀(T) copies the underlying, so it takes the share's place in S₀ + p₀ = c₀ + PV(X).

Show working

F₀(T)(1 + r)−T + p₀ = c₀ + X(1 + r)−T, so p₀ − c₀ = (X − F₀(T))(1 + r)−T.

PV(F) = 2,040.00 ÷ 1.020.5 = 2,019.90; PV(X) = 2,000.00 ÷ 1.020.5 = 1,980.30

p₀ = c₀ + (X − F₀(T))(1 + r)−T = 95.00 + (2,000.00 − 2,040.00) ÷ 1.020.5 = 95.00 − 39.61 = 55.39

Check: 2,019.90 + 55.39 = 2,075.30; 95.00 + 1,980.30 = 2,075.30.

Trap: forgetting to discount gives 95.00 − 40.00 = 55.00.

On your calculator
  1. 1.02y^x0.5=1/x×40+|-=−39.61, (X − F) discounted
  2. +95=55.39, the put

y^x power · 1/x reciprocal · +|- change sign

  1. 2000ENTER2040−1.02ENTER0.5y^x÷−39.61, (X − F) discounted
  2. 95+55.39, the put

ENTER enter (on the HP, puts the number on the stack) · y^x power

Replace the share with a forward and the same parity holds.

The rows of the tree follow from payoffs. A long put plus a short call pays X − S_T at expiry. A short forward at F pays F − S_T, and a bond paying X − F pays the rest. A long call plus a short put pays S_T − X, which is a long forward plus a bond paying F − X. That pair is a synthetic forward .

Rearrange itPut–call forward parity: solve for any input
The question asks for
A forward contract on an index has a forward price of 2,040.00 and 0.5 years to expiry. A European call with an exercise price of 2,000.00 and the same expiry costs 95.00. The risk-free rate is 2.00%. The price of the European put with the same exercise price and expiry is closest to:

95.00 + (2,000.00 − 2,040.00) × (1 + 0.02)^−0.5 = 95.00 + -39.61 = 55.39

Put price, p₀55.39

On your calculator
  1. 1.02y^x0.5+|-=×(2000−2040)+95=55.39

y^x power · +|- change sign

  1. 2000ENTER2040−-40.00
  2. 1.02ENTER0.5CHSy^x×95+55.39

ENTER enter (on the HP, puts the number on the stack) · CHS change sign · y^x power

Exam tip Memorize p − c = (X − F)PV. If X is above F the put is dearer; if X is below F the call is dearer; if they are equal the two cost the same.

What happens when the strike equals the forward price?

The put and the call cost the same. In the example, if X were 2,040 instead of 2,000, then X − F = 0 and p₀ = c₀. A long call and short put at that strike then form a forward with a value of zero at inception, which links to the forward lessons.

Go deeper Why forward parity is handy for indexes and commodities

Indexes and commodities are hard or costly to hold, so the share price S₀ may not be easy to observe or trade. A forward price is directly quoted. Because the forward price already includes income and storage costs through the cost of carry, forward parity works without adding them back separately.

Memorize this

MemorizeForward parity

PositionEquivalent to
Sharelong forward + bond paying F0(T)F_0(T)
Synthetic protective putlong forward + bond paying F0(T)F_0(T) + long put
Fiduciary calllong call + bond paying XX
Long put + short callshort forward + bond paying X−F0(T)X - F_0(T)
Long call + short putlong forward + bond paying F0(T)−XF_0(T) - X

Memory hook Same parity, with the share swapped for a forward plus a bond. The put–call gap is just the discounted gap between X and F.

Know it cold F0(T)(1+r)−T+p0=c0+X(1+r)−TF_0(T)(1+r)^{-T} + p_0 = c_0 + X(1+r)^{-T}, so p0−c0=(X−F0(T))(1+r)−Tp_0 - c_0 = (X - F_0(T))(1+r)^{-T}. If X=F0(T)X = F_0(T) then p0=c0p_0 = c_0.

What a forward does inside parity
Share = long forward + bond paying F₀(T)replace S₀ with PV(F₀(T)) in put–call parity
  • Synthetic protective put Memorize long forward + bond paying F₀(T) + long put
  • Fiduciary call Memorize unchanged: long call + bond paying X
  • Long put + short call Use it short forward + bond paying X − F₀(T)
  • Long call + short put Use it long forward + bond paying F₀(T) − X
Share as forward plus bond Use it
S0=F0(T)(1+r)−TS_0 = F_0(T)(1 + r)^{-T}
Quick example

Forward price 2,040, r = 2%, T = 0.5, no income. A long forward plus a bond paying 2,040 costs 2,040 × 1.02^−0.5 = 2,019.90, which equals the spot price.

On your calculator
  1. 1.02y^x0.5+|-=×2040= 2019.90

y^x power · +|- change sign

  1. 1.02ENTER0.5CHSy^x2040× 2019.90

ENTER enter (on the HP, puts the number on the stack) · CHS change sign · y^x power

Put–call forward parity Memorize
F0(T)(1+r)−T+p0=c0+X(1+r)−TF_0(T)(1 + r)^{-T} + p_0 = c_0 + X(1 + r)^{-T}
Quick example

F = 72, X = 68, r = 6%, T = 1, call 8.50. p = 8.50 + (68 − 72) ÷ 1.06 = 8.50 − 3.77 = 4.73.

On your calculator
  1. 68−72=÷1.06= −3.77
  2. +8.5= 4.73
  1. 68ENTER72−1.06÷ −3.77
  2. 8.5+ 4.73

ENTER enter (on the HP, puts the number on the stack)

Put minus call Memorize
p0−c0=[X−F0(T)](1+r)−Tp_0 - c_0 = \left[X - F_0(T)\right](1 + r)^{-T}
Quick example

F = 84, X = 80, r = 3%, T = 1, put 5.20. p − c = (80 − 84) ÷ 1.03 = −3.88, so the call is 5.20 + 3.88 = 9.08.

On your calculator
  1. 80−84=÷1.03= −3.88
  2. +|-+5.2= 9.08

+|- change sign

  1. 80ENTER84−1.03÷ −3.88
  2. CHS5.2+ 9.08

ENTER enter (on the HP, puts the number on the stack) · CHS change sign

How it is asked

  1. Solve for the put or call

    F = 84, X = 80, r = 3%, T = 1, put 5.20. Call?

    5.20 − (80 − 84) ÷ 1.03 = 9.08. Traps: 9.20 (no discounting), 1.32 (wrong sign).

  2. Identify the synthetic protective put

    A long put plus what makes a synthetic protective put?

    Long forward + risk-free bond paying the forward price. Trap: call + bond paying X (fiduciary call).

  3. Strike equals forward

    X = F₀(T). How do the call and put compare?

    Equal: p − c = (X − F)PV = 0.

  4. Sign of put minus call

    X below the forward price. Is p − c positive or negative?

    Negative: (X − F) < 0, so the call is worth more.

Exam traps

  • Using F₀(T) without discounting it: the bond pays F at expiry, so it costs PV(F).
  • Writing c − p = (X − F)PV. It is p − c that equals (X − F)PV; the sign flips for c − p.
  • Forgetting that X = F₀(T) makes the put and call equal.
  • Mixing up the synthetic protective put (forward + bond F + put) with the fiduciary call (call + bond X).

Checkpoint

5 exam-style questions. About 90 seconds each.

  1. 1A one-year forward price on an asset is 61. A European put and a European call both have an exercise price of 60 and expire in one year. The put costs 3.50 and the risk-free rate is 4%. The call price is closest to:

  2. 2A synthetic protective put consists of a long put plus:

  3. 3When the exercise price of European options equals the forward price for the same expiry, the call is worth:

  4. 4A one-year forward price is 105 and the risk-free rate is 5%. A European call with an exercise price of 100 and one year to expiry costs 9.00. The price of the European put with the same terms is closest to:

  5. 5A trader holds a long European put and a short European call with the same exercise price and expiry. The exercise price is below the forward price for that expiry. The value of the combined position today is:

Key takeaways

  • A long forward plus a bond paying F₀(T) replicates the share.
  • F₀(T)(1 + r)^−T + p₀ = c₀ + X(1 + r)^−T.
  • p₀ − c₀ = (X − F₀(T))(1 + r)^−T: put minus call is the discounted gap between strike and forward price.
  • When the strike equals the forward price, the put and call have the same value.
Share as forward plus bond Use it
S0=F0(T)(1+r)−TS_0 = F_0(T)(1 + r)^{-T}
Quick example

Forward price 2,040, r = 2%, T = 0.5, no income. A long forward plus a bond paying 2,040 costs 2,040 × 1.02^−0.5 = 2,019.90, which equals the spot price.

On your calculator
  1. 1.02y^x0.5+|-=×2040= 2019.90

y^x power · +|- change sign

  1. 1.02ENTER0.5CHSy^x2040× 2019.90

ENTER enter (on the HP, puts the number on the stack) · CHS change sign · y^x power

Put–call forward parity Memorize
F0(T)(1+r)−T+p0=c0+X(1+r)−TF_0(T)(1 + r)^{-T} + p_0 = c_0 + X(1 + r)^{-T}
Quick example

F = 72, X = 68, r = 6%, T = 1, call 8.50. p = 8.50 + (68 − 72) ÷ 1.06 = 8.50 − 3.77 = 4.73.

On your calculator
  1. 68−72=÷1.06= −3.77
  2. +8.5= 4.73
  1. 68ENTER72−1.06÷ −3.77
  2. 8.5+ 4.73

ENTER enter (on the HP, puts the number on the stack)

Put minus call Memorize
p0−c0=[X−F0(T)](1+r)−Tp_0 - c_0 = \left[X - F_0(T)\right](1 + r)^{-T}
Quick example

F = 84, X = 80, r = 3%, T = 1, put 5.20. p − c = (80 − 84) ÷ 1.03 = −3.88, so the call is 5.20 + 3.88 = 9.08.

On your calculator
  1. 80−84=÷1.03= −3.88
  2. +|-+5.2= 9.08

+|- change sign

  1. 80ENTER84−1.03÷ −3.88
  2. CHS5.2+ 9.08

ENTER enter (on the HP, puts the number on the stack) · CHS change sign

All Derivatives formulas, every lesson

Practice exam-style questions on Put–Call Parity and Option Replication

Questions about this lesson?

Where this comes back

Questions candidates ask

What is put–call forward parity?

Put–call parity with the share replaced by a long forward and a bond paying the forward price: F₀(T)(1 + r)^−T + p₀ = c₀ + X(1 + r)^−T. It is the same no-arbitrage argument, with PV(F) in place of the share price.

What is a synthetic protective put?

A long forward, a risk-free bond paying the forward price F₀(T), and a long put. The forward and bond replicate the share, so the package behaves like a share protected by a put.

Why are calls and puts equal when the strike equals the forward price?

Put minus call equals (X − F₀(T))(1 + r)^−T. When X equals F₀(T) the bracket is zero, so p₀ = c₀. A long call and short put at that strike is a forward with zero value.

Spotted an error? Tell us and we will fix it.

  1. Put–call parity: fiduciary call = protective put
  2. Building synthetic positions with put–call parity
  3. Put–call forward parity
  4. Equity and debt as options on the firm

Ask Sensei Listen instead

Questions on Put–call forward parity

Learn with Sensei, out loud The voice tutor, in early access

Sensei teaches the lesson aloud and stops when you interrupt: "wait, why is the geometric mean lower?" It answers with the lesson's own example, then quizzes you by voice. Every account can try Sensei on one module, with one voice question.

USD 149 a month founding price (regular USD 199), kept for as long as you stay subscribed. Everything in Plus included.

In active development and improving every day. Send feedback · Plans and pricing

Analyst Dojo Plus

Your free review list holds 10 items.

Plus keeps everything you save, for USD 19 a month. To make room on the free plan, remove something from your review list.

See Plus

Lessons, checkpoints and the lesson questions in practice stay free. Compare plans