Quant from Scratch by QuantWright

Options and Derivatives · Lesson 2

What no-arbitrage forbids: option bounds and put–call parity

Nobody can say today what an option will pay. No-arbitrage means no way to lock in a profit with no risk and no money of your own. Some prices would break it: a call dearer than the share, or a call and a put that disagree. Which prices no-arbitrage rules out, and what a broken quote (a price on offer) is worth after costs.

Know the basics? Read the lesson notes

From payoffs to prices

The Introduction's lesson Forwards, futures and options drew what options pay on their last day, their expiry. A call (the right, not the duty, to buy at a fixed price, the strike K) pays max(ST − K, 0); a put (the right to sell at K) pays max(K − ST, 0). ST is the price at expiry; max(a, b) is the larger of a and b. What do those payoffs rule out about prices today?

The made-up world is the one from this course's first lesson (Forwards and futures: the price of waiting). The underlying (the share the options are on) costs S = €100 today and pays nothing before expiry. Money can be borrowed or lent at r = 5% a year (interest added once a year). The options expire in T = 1 year and can be used only then (European options).

What an option would pay if its expiry were today is its intrinsic value: max(S − K, 0) for a call, max(K − S, 0) for a put. Drag today's price, strike €100.

Intrinsic value at today's price, strike €100 (made-up prices)

Across: the share's price today. Up: what each option would pay if used today. Orange: the call. Grey: the put.

Call: intrinsic value€0
Put: intrinsic value€0

In, at or out of the money

Where an option stands today is its moneyness. With intrinsic value above zero it is in the money; with the strike equal to today's price it is at the money; otherwise it is out of the money. The share is at €100. A put with a strike of €110 is:

The right to sell at €110 a share worth €100 would pay max(110 − 100, 0) = €10 today: in the money.
At the money needs the strike equal to today's price. This put's strike is €110 and it would pay max(110 − 100, 0) = €10 today: in the money.
A call with a strike of €110 would be out of the money. The put would pay max(110 − 100, 0) = €10 today: in the money.

Paying for time

A dealer (a made-up firm that quotes prices at which it will buy or sell) quotes the call with a strike of €100 at €10.45, with the share at €100. Its intrinsic value is €0. Why would anyone pay €10.45 for it?

No forecast is needed. Even if a rise and a fall were equally likely, the call would be worth something: it gains from rises, and a fall can't take its payoff below €0.
A year is time for the share to end above €100, and the payoff counts every euro above €100 while a fall can only take it to €0. That chance has a price.
A fee is a small part of a price. Most of the €10.45 pays for the chance that the share ends above €100 within the year, while a fall can only take the payoff to €0.

The part of an option's price above its intrinsic value is its time value: here 10.45 − 0 = €10.45. At expiry it is gone: price and payoff are the same. How big it should be today is pricing, the binomial tree lesson's subject; this lesson asks only which prices are impossible.

Never dearer than the share

Now the dealer quotes a call with a strike of €100 at €104: more than the share itself. You own nothing. Which plan locks in a profit, whatever the share does?

You keep 104 − 100 = €4 today. In a year, if the call's buyer uses it, you hand over the share you hold and receive €100 more; if not, you still own the share. You can't lose.
Whatever anyone expects, selling the call and buying the share keeps €4 today and can't lose later: the share you hold covers anything the call can ask for.
It can pay more only if the share ends above €204, and then the share you bought covers it: you hand it over and receive €100. Selling the call and buying the share keeps €4 at any price.

A right to buy one share can't be worth more than the share: C ≤ S. The put has a limit too. The most it can ever pay is K, if the share falls to €0, and K paid in a year is worth less today. Its present value (what a later amount is worth today) is K ÷ (1 + r)T, with interest added once a year for T years: 100 ÷ 1.05 = €95.24, because €95.24 lent at 5% grows to €100 in a year. So P ≤ K ÷ (1 + r)T (proved a few screens on).

The least a call can cost

Two portfolios (sets of holdings). A: one call with a strike of €100, plus €95.24 lent at 5%, which comes back as exactly €100 in a year. B: one share. Press each price in a year to see what each is worth then.

What each portfolio is worth in a year (made-up prices)

Price in a yearA: call's payoff + €100B: the share
€70??
€100??
€130??

A is worth the larger of the share's price and €100: never less than B. So A can't cost less than B today, or you would buy A and sell B short (borrow a share, sell it now, give one back later), keep the difference, and in a year A covers the share you owe.

So C + 95.24 ≥ 100, which gives C ≥ €4.76: the share's price minus the strike's present value. It also can't cost less than €0 (a right you never have to use can't have a negative price).

Theory

The bounds on an option's price

The limits on the last two screens are the no-arbitrage bounds on European options. Outside them, the option, the share and a loan or deposit lock in a profit with no money of your own and no risk (an arbitrage). They rule prices out; they don't set one.

max(S − K ÷ (1 + r)T, 0) ≤ C ≤ S
max(K ÷ (1 + r)T − S, 0) ≤ P ≤ K ÷ (1 + r)T
time value = price − intrinsic value
C, P
the European call's and put's prices today, same strike and expiry
S
the underlying's price today
K
the strike
r
the interest rate per year, as a decimal (5% is 0.05), the same for borrowing and lending
T
the years until expiry
K ÷ (1 + r)T
the strike's present value: what lent today grows to K at expiry

Why the put's limits hold. A put plus the share pays the larger of ST and K, at least K, so together they cost at least K's present value: P ≥ K ÷ (1 + r)T − S. And if you sell the put and lend K ÷ (1 + r)T, the loan always covers what the put can ask, so P ≤ K ÷ (1 + r)T.

Worked example: this lesson's share

S = €100, r = 0.05, T = 1. Strike €100: 100 ÷ 1.05 = 95.24, so the call costs between 100 − 95.24 = €4.76 and €100, the put between €0 (95.24 − 100 is below 0) and €95.24. Strike €110: the put costs at least 110 ÷ 1.05 − 100 = 104.76 − 100 = €4.76, below its €10 of intrinsic value: a European put's time value can be negative, because its €110 arrives only in a year.

Holds when
  • the options can be used only at expiry;
  • the underlying pays nothing before expiry;
  • one rate serves for borrowing and lending, trades are free and short selling is possible.
Breaks when

A dividend (cash the company pays each shareholder) is paid before expiry: take its present value off S. Options usable early (American) are worth at least their intrinsic value. Costs widen the limits.

The situationA made-up share sells for €50 and pays nothing. Money costs 4% a year. A European put with a strike of €60 expires in one year.

What is the least the put can cost without an arbitrage, in euros?

Hint: the strike's present value is 60 ÷ 1.04. Subtract today's price.

60 ÷ 1.04 = 57.69, and 57.69 − 50 = €7.69. That is below the put's €10 of intrinsic value: a European put can sell for less than it would pay today, because its €60 arrives only in a year.
60 ÷ 1.04 = 57.69, and 57.69 − 50 = €7.69. €10 is the intrinsic value, max(60 − 50, 0); the bound uses the strike's present value, because a European put's €60 arrives only in a year.

Two portfolios, one payoff

Portfolio A again: a call with a strike of €100, plus €95.24 lent, which comes back as €100. Portfolio C: a put with a strike of €100, plus one share. Drag the price in a year and compare.

What each portfolio is worth in a year (made-up prices)

Orange: the option's payoff. Grey: the €100 lent (A) or the share (C).

A: call + €100€130
C: put + share€130

Above €100 the call pays and the put pays nothing; below, the put pays and the call nothing. Both are worth the larger of the price and €100, at every price. In general, call + K: max(ST − K, 0) + K = max(ST, K); put + share: max(K − ST, 0) + ST = max(K, ST). For any strike K both pay the larger of ST and K; holding one and owing the other cancels exactly, so nothing is owed in a year.

Two portfolios that pay the same in a year, with nothing paid in between, must cost the same today: otherwise you buy the cheaper, sell the dearer, and keep the difference. So C + K ÷ (1 + r)T = P + S. This is put–call parity.

Rearranged: C − P = S − K ÷ (1 + r)T = 100 − 95.24 = €4.76. The dealer's call at €10.45 pairs with a put at 10.45 − 4.76 = €5.69. At expiry nothing is left to discount, and parity becomes the payoff form from the Introduction's lesson Forwards, futures and options: call payoff − put payoff = ST − K.

A strike at the forward price

A call and a put on the same share (€100, 5%, one year), both with a strike of €105. Which costs more today?

Parity needs no view on growth: C − P = 100 − 105 ÷ 1.05 = 100 − 100 = 0. They cost the same.
The put's €105 arrives in a year, worth 105 ÷ 1.05 = €100 today. C − P = 100 − 100 = 0: they cost the same.
C − P = 100 − 105 ÷ 1.05 = 100 − 100 = €0.

€105 is the forward price from the lesson Forwards and futures: the price of waiting (the fair price agreed today for delivery in a year), 100 × 1.05. A bought call plus a sold put pays ST − K, like a forward (a promise to buy later) agreed at K; at the fair forward price that is worth nothing today.

Theory

Put–call parity

For a European call and put on the same underlying, with the same strike and expiry, a call plus the strike's present value pays what a put plus the underlying pays, so the two cost the same: put–call parity. Neither price can move alone without leaving an arbitrage.

C + K ÷ (1 + r)T = P + S
C − P = S − K ÷ (1 + r)T
C, P
the European call's and put's prices today, same strike and expiry
S
the underlying's price today
K
the strike
r
the interest rate per year, as a decimal, the same for borrowing and lending
T
the years until expiry
Worked example: your two strikes

Strike €100: C − P = 100 − 95.24 = €4.76, so a call at €10.45 pairs with a put at €5.69. Strike €105: 100 − 105 ÷ 1.05 = 100 − 100 = 0, so the call and the put cost the same.

Holds when
  • both options can be used only at expiry;
  • the underlying pays nothing before expiry;
  • one rate for borrowing and lending, free trades, short selling possible.
Breaks when

A dividend is paid before expiry: use S minus its present value. Options usable early: a pair of limits, not an equality. Trades cost money: a band, on the costs screen.

The situationA made-up share sells for €40 and pays nothing. Money costs 4% a year. A one-year European call with a strike of €44 is quoted at €3.10.

What put price, same strike and expiry, fits parity, in euros?

Hint: C − P = 40 − 44 ÷ 1.04. Work that out, then solve for P.

44 ÷ 1.04 = 42.31, so C − P = 40 − 42.31 = −2.31, and P = 3.10 + 2.31 = €5.41.
44 ÷ 1.04 = 42.31, so C − P = 40 − 42.31 = −2.31. Then P = C + 2.31 = 3.10 + 2.31 = €5.41. Watch the sign: the put is the dearer one here, since the strike's present value is above today's price.

Build a put from the others

Rearrange parity: P = C − S + K ÷ (1 + r)T. A position copied from other contracts like this is a synthetic position. Pick pieces until your line (orange) matches the put's payoff (dashed).

Your position's value in a year, against a put with a strike of €100 (made-up prices)

Across: the price in a year. Up: the position's value then. Dashed: the put's payoff.

Call
Share
Loan or deposit (€95.24)
Cost today€0.00
Matches the put?No

Buy the call, sell the share short, lend €95.24: in a year, max(ST − 100, 0) − ST + 100 = max(100 − ST, 0), the put's payoff. It costs 10.45 − 100 + 95.24 = €5.69 today, the put parity paired with the dealer's call. A bought call plus a sold put is likewise a synthetic forward at K.

When quotes break parity

The dealer now quotes the call at €10.45 and the put at €3.45. Call minus put is €7.00, where parity says €4.76. Parity can't say which quote is wrong, only that the pair is. Sell the dear side, buy the cheap side, and cover the rest: sell the call, buy the put, buy the share, borrow what that needs. Trades are free for now. Fill in the last line.

WhenWhat you doCash
TodaySell the call+€10.45
TodayBuy the put−€3.45
TodayBuy the share−€100.00
TodayBorrow the rest at 5%+€93.00
In a yearHand over the share for €100: above €100 the call's buyer takes it; below, you use your put; at exactly €100, it is worth €100+€100.00
In a yearRepay the loan, 93 × 1.05−€97.65
In a yearNet?

What is the net in a year, in euros?

Hint: add the two cash lines in a year, +100 and −97.65.

100 − 97.65 = €2.35, whatever the share's price in a year, with no money of your own.
In a year you receive €100 for the share either way and repay 93 × 1.05 = €97.65: 100 − 97.65 = €2.35, whatever the share's price.

In today's money, 2.35 ÷ 1.05 = €2.24: the gap 7.00 − 4.76. It is cash-and-carry from the lesson Forwards and futures: the price of waiting (buy the share with borrowed money, sell it later at a fixed price), with a sold call and a bought put in place of the forward. If call minus put were too low, the reverse works: buy the call, sell the put, sell the share short, lend the money.

Costs, and a quote that is nearly off

Real trades cost money (the gap between buying and selling prices, and fees). Say each option bought or sold costs €0.15 and the share €0.10: €0.40 for the three trades, paid today and added to the loan. A second pair of quotes: the call at €10.45, the put at €5.45. Call minus put is €5.00, €0.24 above parity. In a year that is 0.24 × 1.05 = €0.25.

Below are 10,000 made-up prices of the share in a year. Each run is a path: it starts at €100 and moves €1 up or down a day for 250 days, set by a fair coin (heads and tails equally likely) plus a small steady rise. A coin-driven path like this is a random walk: past moves say nothing about which way the next goes. After costs, on how many of the 10,000 does the full trade from the last screen (sell the call, buy the put, buy the share, borrow) make money on this second pair?

Keep your guess in mind. The 10,000 prices are below.

10,000 simulated prices of the share in a year

Each bar counts paths ending at that price. Orange: paths where the chosen trade ends with a gain. Dashed: the strike, €100.

Paths so far0
Result in a year–
Paths with a gain–

On the second pair the full trade ends at +€0.25 before costs but −€0.17 after them (the €0.40 grows to €0.42 by the time the loan is repaid): a loss on 10,000 of 10,000 paths in this simulation. The answer is C. On the first pair it ends at 2.35 − 0.42 = €1.93 after costs, again on every path: the share is always handed over for €100, so where it ends never matters.

Switch to the put alone: bought with borrowed money because it looks cheap, the €3.45 put lost on 7,164 of 10,000 paths, after costs: a bet. So with costs c for the whole trade, a pair is an arbitrage only outside a band: S − K ÷ (1 + r)T − c ≤ C − P ≤ S − K ÷ (1 + r)T + c, here €4.36 to €5.16. The €5.00 sits inside, and no trade pulls it back. The simulation can't show real quotes or costs.

Practice 1 of 3

The reverse trade

The situationA made-up share sells for €50 and pays nothing. Money can be borrowed or lent at 4% a year, and trades are free. One-year European options with a strike of €50: the call is quoted at €3.00 and the put at €3.20. Call minus put is −€0.20, where parity says 50 − 50 ÷ 1.04 = €1.92: too low.

The reverse trade buys the call, sells the put, sells the share short and lends what comes in. How many euros does it lock in, in a year?

Hint: today you receive 50 + 3.20 − 3.00 = €50.20 and lend it at 4%. In a year you get a share for €50 (with your call above €50; below it, the put's buyer sells you one) and give it back to its lender.

50.20 × 1.04 = €52.21 back from the deposit, minus €50 for the share: €2.21, at any price of the share.
Today: +50 from the short sale, +3.20 for the put, −3.00 for the call, so €50.20 to lend. In a year: 50.20 × 1.04 = €52.21, minus the €50 you pay for the share either way: €2.21.
Practice 2 of 3

Off, but inside the costs

The situationA made-up share sells for €80 and pays nothing; money costs 5% a year. One-year European options with a strike of €84 (84 ÷ 1.05 = 80): the call is quoted at €6.10 and the put at €5.80. Selling one option, buying the other and trading the share cost €0.50 in all.

Can anyone lock in a profit?

Parity says C − P = 80 − 80 = 0, and the quotes differ by 6.10 − 5.80 = €0.30. The trade would gain €0.30 before costs and lose €0.20 after the €0.50 of costs.
Parity says C − P = 80 − 84 ÷ 1.05 = 0; the quotes differ by €0.30, inside the €0.50 the trades cost. The pair sits inside the band, so no trade locks in a profit.
A put bought alone gains or loses with the share: a bet, not a locked profit. And the full trade's €0.30 gap is less than its €0.50 of costs.
Practice 3 of 3

"All time value, so it's fair"

The situationA friend sees a one-year European call with a strike of €100 on a made-up €100 share that pays nothing, with money at 5%, quoted at €4.00. "It's at the money, so its intrinsic value is €0. Any price above €0 is fair," they say.

What's right?

The lower bound is 100 − 100 ÷ 1.05 = €4.76, not the €0 of intrinsic value. Buy the call, sell the share short and lend €95.24: 100 − 4.00 − 95.24 = €0.76 today, and the €100 back in a year buys the share to return (through the call above €100, in the market below).
Intrinsic value is what it would pay today; the call has a year left. Its least no-arbitrage price is 100 − 100 ÷ 1.05 = €4.76, so €4.00 is too cheap, not too dear.
100 − 100 ÷ 1.05 = €4.76. Buy the call, sell the share short, lend €95.24: you keep 100 − 4.00 − 95.24 = €0.76 today, and the €100 back in a year gets the share to return, through the call above €100 or in the market below.
✓

Lesson done

No-arbitrage doesn't price an option, but it rules prices out. For European options on an underlying that pays nothing before expiry, with one interest rate, free trades and short selling, each option's price sits between two bounds, and a call minus a put with the same strike and expiry equals S − K ÷ (1 + r)T, because a call plus the strike's present value pays what a put plus the share pays. A pair that breaks parity by more than the trades cost is a profit locked in; a break inside the costs is not.

Key ideas

European option
an option that can be used only at expiry
Intrinsic value
what an option would pay if its expiry were today
Time value
an option's price minus its intrinsic value; gone at expiry
Moneyness
in the money (intrinsic value above zero), at the money (price equal to the strike) or out of the money
Present value
what a later amount is worth today
No-arbitrage bounds
the lowest and highest prices a European option can have without leaving a locked-in profit (underlying paying nothing before expiry, one rate, free trades)
Put–call parity
for European options with the same strike and expiry on an underlying paying nothing before expiry, a call plus the strike's present value costs what a put plus the underlying costs
Synthetic position
a position copied from other contracts, such as a put from a bought call, the share sold short and a deposit

max(S − K ÷ (1 + r)T, 0) ≤ C ≤ S  ·  max(K ÷ (1 + r)T − S, 0) ≤ P ≤ K ÷ (1 + r)T

C − P = S − K ÷ (1 + r)T   (European, no income before expiry, one rate, free trades)

with costs c for the whole trade: S − K ÷ (1 + r)T − c ≤ C − P ≤ S − K ÷ (1 + r)T + c

Lesson notes

Nobody knows today what an option will pay, but no-arbitrage still rules some prices out. For European options (used only at expiry) on an underlying that pays nothing before expiry, with one interest rate r for borrowing and lending, free trades and short selling: a call costs between max(S − K ÷ (1 + r)T, 0) and S; a put between max(K ÷ (1 + r)T − S, 0) and K ÷ (1 + r)T; and a call minus a put with the same strike and expiry equals S − K ÷ (1 + r)T, put–call parity. With trading costs, a pair off parity is a locked-in profit only if the gap is larger than the costs.

Intrinsic value, time value and moneyness

A call is the right, not the duty, to buy the underlying at a fixed price, the strike K, on its last day, the expiry; it pays max(ST − K, 0), where ST is the price at expiry and max(a, b) the larger of a and b. A put is the right to sell at K and pays max(K − ST, 0). The lesson's made-up world: options on a share (their underlying) at S = €100 today that pays nothing before expiry, money at r = 5% a year (interest added once a year), European options expiring in T = 1 year. Intrinsic value, what an option would pay if its expiry were today, is max(S − K, 0) for a call and max(K − S, 0) for a put; its moneyness is in the money (above zero), at the money (S = K) or out of the money. A made-up dealer's call with a strike of €100 at €10.45 has intrinsic value €0, so all €10.45 is time value, the price minus the intrinsic value: the share has a year to end above €100, and a fall can take the payoff only to €0. No forecast is needed for that. At expiry the time value is gone.

The upper bounds

If a call with a strike of €100 were quoted at €104, more than the share, selling the call and buying the share keeps €4 today and can't lose: the share held covers anything the call can ask for. So C ≤ S. A put pays at most K (if the share falls to €0), and K paid in a year has a present value (what a later amount is worth today) of K ÷ (1 + r)T: 100 ÷ 1.05 = €95.24, since €95.24 lent at 5% grows to €100. So P ≤ K ÷ (1 + r)T: selling the put and lending that amount always covers what the put can ask.

The lower bound, from two portfolios

Portfolio A is a call with a strike of €100 plus €95.24 lent; portfolio B is one share. In a year A is worth the larger of the share's price and €100 (at €70: 0 + 100 = €100 against €70; at €130: 30 + 100 = €130 against €130), so never less than B. If A cost less than B today, buying A and selling B short (borrowing a share, selling it now, giving one back later) would keep the difference with nothing owed that A can't cover. So C + 95.24 ≥ 100, or C ≥ €4.76, and C ≥ 0. For the put, a put plus the share pays the larger of ST and K, at least K, so together they cost at least K's present value: P ≥ K ÷ (1 + r)T − S, and P ≥ 0. That bound can be below the put's intrinsic value, because its K arrives only at expiry.

Put–call parity

Portfolio C is a put with a strike of €100 plus one share. At expiry A and C are both worth the larger of the price and €100: above €100 the call pays, below it the put pays. For any strike K, call + K: max(ST − K, 0) + K = max(ST, K); put + share: max(K − ST, 0) + ST = max(K, ST). So holding one and owing the other cancels exactly. Two portfolios that pay the same at expiry, with nothing paid in between, must cost the same today, or buying the cheaper and selling the dearer keeps the difference. So C + K ÷ (1 + r)T = P + S, or C − P = 100 − 95.24 = €4.76: the dealer's €10.45 call pairs with a put at €5.69. With a strike of €105, the forward price from the lesson Forwards and futures: the price of waiting (the fair price agreed today for delivery in a year, 100 × 1.05), C − P = 100 − 105 ÷ 1.05 = €0: the call and the put cost the same, whatever anyone expects. A bought call plus a sold put pays ST − K, like a forward (a promise to buy later at a price agreed today) agreed at K, and at the forward price that forward is worth nothing today. At expiry parity becomes the payoff form, call payoff − put payoff = ST − K.

Synthetic positions

Rearranged, P = C − S + K ÷ (1 + r)T: buying the call, selling the share short and lending €95.24 pays max(ST − 100, 0) − ST + 100 = max(100 − ST, 0), the put's payoff, and costs 10.45 − 100 + 95.24 = €5.69. A position copied from other contracts is a synthetic position.

A broken pair, and costs

With the call at €10.45 and the put at €3.45, call minus put is €7.00 against parity's €4.76; parity can't say which quote is wrong. Sell the call, buy the put, buy the share and borrow the rest, €93. In a year the share is handed over for €100 either way (the call's buyer takes it above €100, you use the put below) and the loan costs 93 × 1.05 = €97.65: €2.35 at any price, before costs, or 2.35 ÷ 1.05 = €2.24 today, the gap 7.00 − 4.76. This is cash-and-carry (buy the share with borrowed money, sell it later at a fixed price) with a sold call and a bought put in place of a forward.

With made-up costs of €0.15 per option and €0.10 for the share, €0.40 added to the loan (€0.42 at repayment), the trade nets €1.93 after costs. A second pair, the put at €5.45 (call minus put €5.00, €0.24 off), nets +€0.25 before costs but −€0.17 after. On 10,000 made-up prices a year ahead (each from €100, 250 daily steps of €1 up or down set by a fair coin, a random walk in which past moves say nothing about which way the next goes, plus a steady rise of €5), each full trade gave the same result on every path (each run is a path) in this simulation; the €3.45 put bought alone with borrowed money lost on 7,164 of 10,000, after costs: a bet. With costs c for the whole trade, only a pair outside S − K ÷ (1 + r)T ± c is an arbitrage: here €4.36 to €5.16, so €5.00 can sit there. The simulation can't show real quotes or costs.

Formula: the bounds on an option's price

Outside these limits, the option combined with the share and a loan or deposit locks in a profit with no money of your own and no risk (an arbitrage). They rule prices out; they don't set one.

max(S − K ÷ (1 + r)T, 0) ≤ C ≤ S
max(K ÷ (1 + r)T − S, 0) ≤ P ≤ K ÷ (1 + r)T
time value = price − intrinsic value
C, P
the European call's and put's prices today, same strike and expiry
S
the underlying's price today
K
the strike
r
the interest rate per year, as a decimal (5% is 0.05), the same for borrowing and lending
T
the years until expiry
K ÷ (1 + r)T
the strike's present value: what lent today grows to K at expiry
Worked example

S = €100, r = 0.05, T = 1. Strike €100: the call costs between €4.76 and €100, the put between €0 and €95.24.

Holds whenBreaks when

The share pays a dividend (cash the company pays each shareholder) before expiry: take its present value off S. Options that can be used early (American) are worth at least their intrinsic value. Costs widen the limits.

Formula: put–call parity

A call plus the strike's present value pays what a put plus the underlying pays, so for European options with the same strike and expiry on an underlying that pays nothing before expiry they cost the same.

C + K ÷ (1 + r)T = P + S
C − P = S − K ÷ (1 + r)T
C, P
the European call's and put's prices today, same strike and expiry
S
the underlying's price today
K
the strike
r
the interest rate per year, as a decimal, the same for borrowing and lending
T
the years until expiry
Worked example

Strike €100: C − P = 100 − 95.24 = €4.76, so a call at €10.45 pairs with a put at €5.69. Strike €105: 100 − 105 ÷ 1.05 = 0, so the call and the put cost the same. A one-year call with a strike of €44 at €3.10 on a €40 share with money at 4%: 44 ÷ 1.04 = 42.31, C − P = −2.31, so P = €5.41.

Holds whenBreaks when

A dividend is paid before expiry: replace S by S minus the dividend's present value. Options that can be used early: parity becomes a pair of limits, not an equality. Trades cost money: a band, S − K ÷ (1 + r)T − c ≤ C − P ≤ S − K ÷ (1 + r)T + c, with c the costs of the whole trade.

One more worked example

New made-up numbers

A made-up share sells for €60 and pays nothing; money costs 10% a year; trades are free. One-year European options with a strike of €66: the call is quoted at €4.00 and the put at €5.00. Do the quotes fit the bounds and parity?

The strike's present value: 66 ÷ 1.10 = €60. Call bounds: max(60 − 60, 0) = 0 up to €60, so €4.00 fits. Put bounds: max(60 − 60, 0) = 0 up to €60, so €5.00 fits.

Parity: C − P should be 60 − 60 = 0, but the quotes give 4.00 − 5.00 = −€1.00: the put is dear relative to the call. The reverse trade: buy the call (−4.00), sell the put (+5.00), sell the share short (+60.00), and lend the €61.00. In a year the deposit returns 61 × 1.10 = €67.10, you pay €66 for a share either way (your call above €66; below it, the put's buyer sells you one) and give it back: €1.10 locked in, which is 1.10 ÷ 1.10 = €1.00 today, the gap. Both quotes sit inside their own bounds and the pair still breaks parity: the bounds are wide, parity is exact.

Common mistakes

Check yourself

  1. A made-up share sells for €80 and pays nothing; money costs 5% a year. What is the least a one-year European call with a strike of €75 can cost?
    Answer

    75 ÷ 1.05 = 71.43, so 80 − 71.43 = €8.57, above its €5 of intrinsic value.

  2. With the lesson's €100 share and 5%, what is the least a one-year European put with a strike of €120 can cost, and what is its intrinsic value?
    Answer

    120 ÷ 1.05 = 114.29, so at least 114.29 − 100 = €14.29. Its intrinsic value is 120 − 100 = €20: a European put can sell below its intrinsic value, because the €120 arrives only in a year.

  3. A made-up share sells for €50 and pays nothing; money costs 5% a year. A one-year European call with a strike of €52.50 costs €7.50. What should the put with the same strike and expiry cost?
    Answer

    52.50 ÷ 1.05 = 50, so C − P = 50 − 50 = 0 and P = €7.50. €52.50 is the one-year forward price, 50 × 1.05.

  4. Which three pieces copy a put, and why does the copy cost what the put should cost?
    Answer

    A bought call, the share sold short and the strike's present value lent. At expiry they pay max(ST − K, 0) − ST + K = max(K − ST, 0), the put's payoff at every price, so by parity they cost C − S + K ÷ (1 + r)T = P.

  5. In the lesson, why did the trade on the broken pair end with the same result on all 10,000 simulated paths, when the put bought alone did not?
    Answer

    In the full trade the share is handed over for €100 whatever its price (through the call sold above €100, the put bought below), so the price at expiry drops out: €1.93 after costs on every path. The put alone pays only when the share ends below €100, so its result depends on where the share ends.

Try it yourself

Run the simulation. The 10,000 prices and every number in this lesson come from one Python script with a fixed random seed (below). Change the quotes, the costs or the steady rise, and see which results move: the full trade's result follows the quotes and costs only; the put alone's counts follow the prices.

Work it out by hand. For any pair of quotes, write the trade as a cash table: today, and at expiry at a price above the strike and one below. If it costs nothing today and leaves the same amount at both prices, that amount is locked in; the call-minus-put that makes it zero is parity's.

The code behind every number (Python, seed 2026111211)
Loading…
For the precise: the simulationSeed 2026111211; 10,000 paths × 250 fair-coin steps of €1, drawn as one block of uniform numbers (a day is up when its number is below 0.5), plus a steady rise of €5 over the year. This script draws its own coins; it does not use the course's shared simulated market. Final prices ran from €45 to €165, averaging €105.00; 6,203 ended above €100 and 3,797 below (with 250 steps and a €5 rise every final price is an odd number of euros, so none ends at exactly €100). The script asserts on every path that call payoff + 100 = put payoff + final price, and that the full trade's result equals 100 − loan × 1.05. The €3.45 put bought alone: lost on 7,164 paths before costs too (the €0.15 moves no path across zero), averaging +€0.32 after costs, from −€3.78 to +€51.22; that average belongs to this simulation's prices, which rise €5 on average and move in €1 steps.

Honest notes

Where this comes from