Quant from Scratch by QuantWright

Options and Derivatives · Lesson 7

Testing an options idea honestly

In the made-up world below, selling a put every month wins about nine months in ten. Test that rule on many simulated histories of a made-up world with rare crashes: how often three years show no crash at all, what the win rate hides, the worst year, and how it compares with cash and just holding, after costs.

Know the basics? Read the lesson notes

Selling a put

A put is the right, but not the duty, to sell a share at a fixed price, the strike, on one last day. On that day it pays the strike minus the share's price, if that is above zero, and nothing otherwise. This lesson tests a rule that sells them. Every number in it is made up.

The rule: each month, sell a put on a made-up share, with a strike 5% below today's price and a month to go. The seller receives the put's price today and, on the last day, pays whatever the put pays. With the share at €100, the strike is €95 and the price is €0.35 a share.

The share ends the month at €90. What is the seller's result per share, in euros (a loss is negative)?

Hint: the put pays 95 − 90. The seller already has the €0.35.

Received €0.35, paid 95 − 90 = €5: 0.35 − 5 = −€4.65.
The put pays the strike minus the share's price, 95 − 90 = €5, and the seller pays it. With the €0.35 received: 0.35 − 5 = −€4.65, a loss.

The seller's result per share, by the share's price on the last day (made-up, share at €100 today)

Orange: the result. Dashed: the strike, €95.

Received€0.35
Put pays–
Result–

Above €95 the put pays nothing and the seller keeps the €0.35. Below it, the seller loses a euro for every euro the share ends under €95. A small fee most months and a large bill now and then: selling a put works like selling insurance.

A fair price, and a cost

The share lives in the crash world of the lesson "Implied volatility and the smile", now month by month. Its usual moves have a volatility, the typical size of a year's swing, of 15.5% a year. Now and then a month brings a crash, rarely enough that about 1 year in 10 is a crash year: the price falls 22% on top of the usual move. On average the share grows at the interest rate (what cash earns), 5% a year.

Here the €0.35 is the put's fair price: the price at which neither seller nor buyer gains on average (what the put pays out on average, divided by a month's interest). That price is higher than the usual moves alone would justify. Does that extra pay for the crashes, or is it free money for the seller?

The usual volatility leaves the crashes out. The price is the put's average payout with the crashes in, so it is fair; quoted as a volatility it comes out above the usual moves'.
The price averages every month, crash months included. The usual moves alone would justify a lower price; the crash months, when this put pays most, make up the rest.

The extra is what the rare crash costs on average, not a gift. So, before costs, a seller has nothing to find in this world, by design: the lesson asks what testing the rule on past prices shows anyway.

For the precise: how the fair price and its volatility are worked out

In k months the number of crashes j follows a binomial count with chance 8.74 in 1,000 a month; given j, the log of the end price lands on a bell with standard deviation 15.46% × √(k ÷ 12). The fair price is the chance-weighted sum, over j, of the bell-curve price of the put, divided by 1.05k/12: €0.3471 for this put. The script checks it against the average payout over 2,000,000 simulated end prices of its own. Quoted as a volatility, the price is about 17.6%, against the usual moves' 15.5%. That is its implied volatility: the volatility at which the Black–Scholes pricing formula gives the price, 17.62% to two decimals, found by halving as in the lesson "Implied volatility and the smile" and checked by a second method. The usual moves' volatility to two decimals is 15.46%.

Three years of selling

A backtest runs a rule over past prices to see what it would have made; here the past is simulated. The account starts with €10,000 in cash, set aside so the puts can never cost more than it holds: each month it sells puts on as many shares as the cash covers at the strike. The cash earns 5% a year.

Selling costs money. A dealer (a made-up firm that quotes prices) buys options a little below the fair price and sells them a little above; the gap is the bid–ask spread. Here a seller gets €0.05 a share less than the fair price: €0.30, not €0.35, about a seventh of the price, every month. The rule is shown after these costs, and against two others: cash alone, and just holding, €10,000 put into the share once, paying 0.1% for the buy.

One simulated history, three years: the account after costs (made-up world)

The first 20 of the 1,000 simulated histories, one at a time. Orange: selling puts. Grey: just holding. Dotted: cash alone. Dark ticks along the bottom: crash months.

History1 of 20 simulated
Crash months–
Selling puts–
Just holding–

Crash years are independent: whether one year has a crash doesn't change the chance for the next. Of 1,000 such three-year histories, how many have no crash at all?

Each year escapes a crash with chance 0.9, and the years don't affect each other, so all three do with 0.9 × 0.9 × 0.9 = 0.729: about 729 in 1,000.
A crash year is 1 in 10, so three years escape with 0.9 × 0.9 × 0.9 = 0.729: about 729 in 1,000, not half.
About 270 is how many do have a crash. Three years all escape with 0.9 × 0.9 × 0.9 = 0.729: about 729 in 1,000.

This simulation counted 739 of 1,000. History 1, the first drawn, had none: the seller ended at €11,359 after costs, just holding at €6,710 and cash at €11,576.

So most three-year backtests of this rule never meet the event that sets its long-run result. In the 739 without a crash, the seller ended ahead of cash in 549, but ahead of just holding in only 362; in the 261 with a crash, ahead of cash in 0.

Nine wins in ten

Across the 1,000 backtests the rule sold 36,000 puts. Each put's result is measured as if the share started its month at €100. A put is a win when the price received after costs beat what it paid out. The win rate, the share of puts that won, was 90.0%: 32,410 wins.

What did one put make on average, after costs?

€0.30 is what a put that pays nothing leaves. One put in ten did pay, €3.19 on average, and those payouts outweigh the wins.
That counts the wins and forgets the losses. The 1 put in 10 that lost cost €3.19 on average, more than ten wins bring in.
The wins brought in about €0.30 each, but the 1 in 10 that lost cost €3.19 each, and that outweighs nine wins.

36,000 simulated puts by result, and what they added up to (after costs, per share at €100)

Top: how many puts ended with each result. Bottom: the euros all the wins made and all the losses cost.

The wins made €0.295 on average; the 3,590 losses cost €3.192, and the worst lost €25.49. Added up, the wins made €9,560 and the losses cost €11,460. Only 298 losses came in crash months, but they cost €16.19 on average against €2.02 for the rest (ordinary falls of more than about 5%): those few months are where the extra in the price is paid back. The average, about −€0.05, is what the fair price predicts: the spread is the loss.

For the precise: the exact average

A put sold for the fair price P minus the spread pays out on average P × 1.051/12, its price grown by a month's interest. Its average result is −0.05 − 0.3471 × 0.0041 = −€0.0514. The 36,000 simulated puts averaged −€0.0528, with a standard error (the typical distance of such an average from the exact one) of €0.0091.

Theory

Win rate is not the average

How often a rule wins says little on its own. Its average result per trade, its expectancy, weighs each outcome by its size. Results with many small gains and a few large losses have negative skew: a long tail on the losing side. A sold option is the usual example: a high win rate, and an average that can be below zero.

E = p × W − (1 − p) × L
E
the expectancy: the average result per trade
p
the win rate, as a decimal
W
the average win
L
the average loss, as a positive number
Worked example: the 36,000 puts

p = 32,410 ÷ 36,000 = 0.9003, W = €0.295, L = €3.192. E = 0.9003 × 0.295 − 0.0997 × 3.192 = 0.2656 − 0.3182 = −€0.053: about −€0.05 a put, after costs.

Holds when
  • every trade is counted, wins and losses, each with its size;
  • the trades are measured on the same scale (here, per share at €100).
Breaks when

A test run that misses the rare large loss: then L and 1 − p come out too small and E too high: a later theory card counts how often that happens.

A seller wins 90% of months, €0.40 on average, and loses €4.00 on average in the rest. What is the expectancy per month, in euros?

Hint: 0.9 × 0.40, minus 0.1 × 4.00.

0.9 × 0.40 − 0.1 × 4.00 = 0.36 − 0.40 = −€0.04: a loss on average, with 9 wins in 10.
The wins bring 0.9 × 0.40 = 0.36; the losses take 0.1 × 4.00 = 0.40. E = 0.36 − 0.40 = −€0.04.

The worst year

Each backtest has three years: 3,000 in all, 283 of them with a crash. After costs, how bad was the seller's worst year?

−8.7% was the worst year in any backtest without a crash. A crash year went far lower: −36.8%.
A crash takes 22% off on top of the usual move, and the puts pay most of it: the worst year was −36.8%.
Many crash years landed near there, but the worst, with a crash on top of other falls, was −36.8%.

Backtest years by result, after costs (simulated)

Orange: selling puts. Grey: just holding. Each pair of bars counts the years whose result fell in the range, in %, written under it.

The seller's worst year was −36.8%, just holding's −48.7%. That year had 2 crash months and ordinary falls in others; within a year the losses add up. The seller's crash years averaged −12.9%, its other years +6.1%, and its best year was +9.0%: a year of puts earns at most their prices plus interest.

Switch to the backtests with no crash. Of those 739, 608 show no losing year at all, and the worst year in any of them is −8.7%. A backtest's worst year is only the worst year it happened to contain.

Against cash and just holding

Over three years, after costs, the seller beat just holding in 528 backtests of 1,000, about half: it falls less than the share in a crash and gains less in a rise. In the 739 without a crash it averaged +19.6%, against cash's +15.8% and just holding's +25.0%.

For the precise: the three-year averages, split

The seller beat just holding in 362 of the 739 backtests without a crash and 166 of the 261 with one. With a crash, the seller averaged −3.6% and just holding −9.4%. All after costs.

That average depends on which backtests had a crash; a long run gets its share. By how much does the seller's account grow on average a year over a long run, in this world?

The prices are fair, so on average the puts pay back what they brought in, plus interest. What is left is the spread: €0.05 a month for every €95 set aside.
That would be true before costs: fair prices give the puts nothing on average. The spread then takes €0.05 a month for every €95 set aside.
About 6% is near what years without a crash give. The crash years pull the average down to what fair prices allow, cash's 5%, and the spread takes it lower.

Each month the account grows on average by a month's interest, times 1 − 0.05 ÷ 95 for the spread. Over a year: 1.05 × (1 − 0.05 ÷ 95)12 − 1 = 4.34%. Just holding averages 5% a year, less its one 0.1% buy, because in this world the share grows on average at the interest rate.

Over a long run both cash and just holding (about 5% a year) beat the seller's 4.34%. So a three-year backtest that shows the seller ahead of cash is usually showing a stretch without a crash, not the rule's average.

For the precise: the long-run figures by simulation

Run over all six years of every history, the average account grew by the equivalent of 4.23% a year for the seller and 4.76% for just holding. Six years of 1,000 histories hold about 600 crash years, too few to pin a long-run average closely; the exact figures come from the fair price, not from the draws.

Theory

A short sample can miss the rare event

If a rare event comes in any one year with chance q, the same each year and independently of the other years, then a sample of n years misses it entirely with chance (1 − q)n. A rule whose result depends on that event then looks better in most samples than over a long run. Averages from a sample in which a rare, large event never happened are the peso problem, a name from the study of currency prices.

chance of no event in n years = (1 − q)n
q
the chance that a year has the event, as a decimal
n
the number of years in the sample
Worked example: this lesson's backtests

q = 0.1, n = 3: 0.9 × 0.9 × 0.9 = 0.729. So about 729 of 1,000 three-year backtests should show no crash; this simulation counted 739.

Holds when
  • the years are independent of each other;
  • the chance is the same every year.
Breaks when

Crashes come in clusters or their chance changes. And in a real market q is not known: a sample that missed the event can't measure it.

Crash years come 1 in 20. In what share of five-year backtests is there no crash, in percent?

Hint: 1 − 1/20 = 0.95. Multiply 0.95 by itself five times.

0.955 = 0.774: 77.4% of five-year backtests show no crash.
Each year escapes with 0.95; five in a row with 0.95 × 0.95 × 0.95 × 0.95 × 0.95 = 0.774, so 77.4%.

Every strike and length is a version

The rule fixed two settings: a strike 5% below the price, and a month to go. Each other choice is a version: strikes 0%, 2.5%, 5%, 7.5% or 10% below, and 1, 2, 3 or 6 months to go, 20 versions, each with the same €0.05 spread and the same cash set aside. Picking the best backtest of many is the trap of the lesson "The best of many": the best is partly luck.

Below are history 1's first three years for all 20, after costs. Pick the version you would keep. It then runs on the next three years, held out: years never used to choose.

History 1: each version's three-year result after costs (simulated)

Columns: how far below the price the strike is. Rows: months to go. After your pick, the second line in each cell is the held-out result; outlined: the best there.

History 1's held-out years had 2 crash months, and every version lost, from −9.3% to −43.2%.

Across the 1,000 histories, the best version on the first three years was also best on the held-out three in 70. A blind draw, one version taken at random, would be best there in about 1,000 ÷ 20 = 50.

Most three-year stretches have no crash, so the same kind of version tends to lead in both periods (a strike at the price without a crash, one 10% below with one): the common weather, not skill. 70 against 50 is above a blind draw, because most stretches share the same weather, but the held-out result shows no gain. Over the three held-out years, after costs, the picks made +13.8% on average, the average version +13.9%, cash +15.8% and just holding +13.5%.

For the precise: which versions were picked

The most common pick, a strike at today's price with a month to go (155 of 1,000), brings in the most in years without a crash. Its long-run average after costs, 4.37% a year, is among the lowest of the 20 (4.30% to 4.90%), because it pays the spread twelve times a year.

What this simulation can't show

This made-up world has fair prices and a known crash size and chance, by design. Three things a real test would face are missing. Real option prices may sit above or below what the real chances justify, and the real chance of a crash is not known. Liquidity, how easily you can trade without moving the price, was perfect: the spread stayed €0.05 through every crash, where real quotes can widen in a fall. And every put was covered by cash. A seller who sets aside less trades on margin, money borrowed from a broker (the firm that holds the account and makes its trades). The broker can make a margin call: a demand for more cash after a loss, or else the position is closed at whatever price is on offer.

A friend backtests the rule on ten years of real recorded option prices, one crash among them. What can that backtest still not tell?

The win rate over the ten years is in the recorded prices. What one crash in ten years can't show is how large and how often the next ones will be.
Recorded quotes show the spread that was paid. One crash in ten years can't show how large and how often the next ones will be.
One crash is one draw of a rare event: its size and the gap before it say little about the next. The peso problem doesn't go away with real data.
Practice 1 of 2

How long a backtest?

The situationA friend wants a backtest of a put-selling rule long enough that it more likely than not contains a crash year. In this lesson's world a year has a crash with chance 1 in 10, independently of other years.

What is the fewest whole years that does it?

Hint: find the first n for which 0.9n, the chance of no crash, is below 0.5.

0.96 = 0.531, still above a half; 0.97 = 0.478, below it. 7 years: and even then 48 backtests in 100 show no crash.
The chance of no crash in n years is 0.9n: 0.9, 0.81, 0.729, 0.656, 0.590, 0.531, 0.478. The seventh is the first below a half: 7 years.
Practice 2 of 2

A seller's record

The situationA made-up newsletter writes: "Our put-selling version won 94% of months over four years, with no losing year, and beat cash by 5 points after costs. We tested 30 strikes and lengths to find it."

By this lesson, what does that record show?

A high win rate says little about the average, and a crash-free stretch shows no losing year. In this lesson's fair world, with nothing to find, 608 of 739 crash-free backtests had no losing year.
In this lesson's world four years have no crash with chance 0.94 = 0.66, and the best of 30 versions is partly luck. The record leaves out the rare loss that sets the long-run average.
Four years do show things, such as the costs paid and the win rate in calm years. They just can't show the rare crash, and the best of 30 is partly luck.
✓

Lesson done

A rule that sells puts wins most months and loses now and then, sometimes a lot. In this lesson's made-up world, where every option price is fair and 1 year in 10 has a crash, the rule won 90.0% of 36,000 simulated puts and still lost about €0.05 a put on average after costs: the bid–ask spread. 739 of 1,000 three-year backtests had no crash. In those the rule usually looked steady and ahead of cash, though just holding averaged more (+25.0% against +19.6% over three years); over a long run both cash and just holding (about 5% a year) beat the rule's 4.34%. The best of 20 versions stayed best on held-out years in 70 of 1,000, against a blind draw's 50, and on average did no better there than any version. These counts belong to this simulation; it can't show real option prices, real liquidity or margin calls.

Key ideas

Selling a put
receiving the put's price today and paying, on its last day, the strike minus the share's price if that is above zero: small likely gains, rare large losses
Bid–ask spread
the gap between the price a dealer pays for an option and the price it charges; a seller receives less than the middle price, a cost on every trade
Win rate
the share of trades that made money; on its own it says nothing about the average result
Expectancy
the average result per trade, each outcome weighed by its size: E = p × W − (1 − p) × L
Negative skew
results made of many small gains and a few large losses: a long tail on the losing side, as a sold option has
Peso problem
averages from a sample in which a rare, large event never happened; with a yearly chance q, the same each year and independent across years, n years miss it with chance (1 − q)n
Margin call
a broker's demand for more cash after a loss on a position bought or sold with borrowed money; if it isn't met, the position is closed

E = p × W − (1 − p) × L

chance of no event in n years = (1 − q)n (independent years, same chance each year)

Lesson notes

A rule that sells puts wins most months and loses now and then, sometimes a lot, so its win rate says little about its average. In this lesson's made-up world, where every option price is fair (each put's price is its average payout divided by the interest for its time) and 1 year in 10 has a crash, a rule selling a one-month put each month won 90.0% of 36,000 simulated puts and lost about €0.05 a put on average after costs. Most three-year backtests contained no crash; in those the rule usually looked steady and ahead of cash, though just holding averaged more. Over a long run both cash and just holding (about 5% a year) beat its 4.34% after costs. Every count belongs to this simulation; it can't show real option prices, real liquidity or margin calls.

The rule, and a fair price

A put is the right, but not the duty, to sell a share at a fixed price, the strike, on one last day; it then pays the strike minus the share's price if that is above zero. A seller receives the put's price today and pays that amount on the last day. The rule sells, each month, a put with a strike 5% below the share's price and a month to go: with the share at €100, a strike of €95 for €0.35. If the share ends at €90, the seller's result is 0.35 − (95 − 90) = −€4.65; above €95 it keeps €0.35.

The share's usual moves have a volatility (the typical size of a year's swing) of 15.5% a year. Each month a crash comes with chance 8.74 in 1,000, so 1 year in 10 has one; a crash multiplies the price by 0.78. On average the share grows at the interest rate, 5% a year. The €0.35 is the put's fair price, the price at which neither side gains on average, and its implied volatility (the volatility at which the Black–Scholes pricing formula gives that price) is 17.6%, above the usual 15.5%: the extra pays for the crashes, so the seller is not overpaid. Before costs a seller has nothing to find in this world, by design. Costs: a dealer buys a little below the fair price and sells a little above, the bid–ask spread; here the seller receives €0.05 a share less, €0.30, which is 14.4% of the price.

Three-year backtests

The account starts with €10,000 in cash, sells each month puts on as many shares as the cash covers at the strike (so the puts can never cost more than it holds), and earns 5% a year on the cash. It was run, after costs, on 1,000 simulated three-year histories, against cash alone and against just holding (€10,000 into the share once, paying 0.1% for the buy). Since a year escapes a crash with chance 0.9, three years do with 0.9³ = 0.729; this simulation counted 739 of 1,000 histories with no crash. In those 739 the seller ended ahead of cash in 549 but ahead of just holding in only 362; in the 261 with a crash, in 0.

The win rate and the average

The 1,000 backtests sold 36,000 puts, each measured as if the share started its month at €100. The win rate, the share of puts whose price received after costs beat what they paid out, was 90.0% (32,410 wins). The wins made €0.295 on average; the 3,590 losses cost €3.192, the worst €25.49. In total, per share at €100, the wins made €9,560 and the losses cost €11,460. Only 298 losses came in crash months, but they cost €16.19 on average against €2.02 for the ordinary falls of more than about 5%: those few months are where the extra in the price is paid back. The average after costs, about −€0.05, is what fair prices predict: the spread is the loss.

The worst year

The 1,000 backtests hold 3,000 years, 283 with a crash. After costs the seller's worst year was −36.8% and just holding's −48.7%; that year had 2 crash months and ordinary falls in others. The seller's crash years averaged −12.9%, its other years +6.1%, and its best year was +9.0%, since a year of puts earns at most their prices plus interest. Of the 739 backtests without a crash, 608 had no losing year, and the worst year in any of them was −8.7%. A backtest's worst year is only the worst it happened to contain.

Against cash and just holding

Over three years, after costs, the seller beat just holding in 528 of 1,000 backtests: 362 of 739 without a crash, 166 of 261 with one. Without a crash it averaged +19.6% against cash's +15.8% and just holding's +25.0%. Over a long run, fair prices give the puts nothing on average and the spread takes €0.05 a month per €95 of cash set aside, so the account grows on average by 1.05 × (1 − 0.05 ÷ 95)12 − 1 = 4.34% a year, below cash's 5%; just holding averages 5% less its one 0.1% buy. Over a long run both beat the seller. A three-year backtest that shows the seller ahead of cash is usually showing a stretch without a crash.

Every strike and length is a version

Strikes 0%, 2.5%, 5%, 7.5% or 10% below the price, with 1, 2, 3 or 6 months to go, make 20 versions, each with the same spread and cash. In each of the 1,000 histories the version with the best first three years, after costs, was run on the next three, held out (never used to choose). It was best there in 70; a blind draw, one version at random, would be in about 1,000 ÷ 20 = 50. Most three-year stretches have no crash, so the same kind of version tends to lead in both periods (a strike at the price without a crash, one 10% below with one): the common weather, not skill. Over the three held-out years, after costs, the picks made +13.8% on average, the average version +13.9%, cash +15.8% and just holding +13.5%: no gain.

What the simulation can't show

The world is made up, with fair prices and a known crash size and chance. Real option prices may sit above or below what the real chances justify, and the real chance of a crash is unknown. Liquidity, how easily you can trade without moving the price, was perfect: the spread stayed €0.05 through every crash. Every put was covered by cash; a seller who sets aside less trades on margin, money borrowed from a broker (the firm that holds the account and makes its trades), and the broker can make a margin call, a demand for more cash after a loss, or else close the position at whatever price is on offer. Even ten years of real prices with one crash can't show how large and how often the next crashes will be.

Formula: expectancy

The average result per trade, each outcome weighed by its size. Results with many small gains and a few large losses have negative skew; a sold option is the usual example.

E = p × W − (1 − p) × L
E
the expectancy: the average result per trade
p
the win rate, as a decimal
W
the average win
L
the average loss, as a positive number
Worked example

The 36,000 puts: p = 32,410 ÷ 36,000 = 0.9003, W = €0.295, L = €3.192. E = 0.9003 × 0.295 − 0.0997 × 3.192 = 0.2656 − 0.3182 = −€0.053, about −€0.05 a put after costs.

Holds whenBreaks when

The sample misses the rare large loss: L and 1 − p come out too small and E too high.

Formula: the chance a sample misses a rare event

If a rare event comes in any one year with chance q, the same each year and independently of the other years (whether one year has it doesn't change the chance for the next), a sample of n years misses it with chance (1 − q)n. Averages from a sample in which a rare, large event never happened are the peso problem.

chance of no event in n years = (1 − q)n
q
the chance that a year has the event, as a decimal
n
the number of years in the sample
Worked example

q = 0.1, n = 3: 0.9³ = 0.729, about 729 of 1,000 three-year backtests with no crash; the simulation counted 739.

Holds whenBreaks when

Crashes cluster or their chance changes; and in a real market q is not known, since a sample that missed the event can't measure it.

One more worked example

New numbers: a strike 10% below the price

In the same world, a put with a strike of €90 and a month to go, with the share at €100, has a fair price of €0.11. The seller receives €0.05 less, €0.06: the spread is 45.9% of the price, against 14.4% for the €95 strike.

Its fair price is €0.1089 and a month's interest is about 0.41% (1.051/12 − 1 = 0.0041), so the put pays out on average 0.1089 × 1.0041. Its average result per put is −0.05 − 0.1089 × 0.0041 = −€0.0504, about the same loss in euros as the €95 strike's. Per euro set aside it is a little more: the spread takes 0.05 ÷ 90 a month, so the account grows on average by 1.05 × (1 − 0.05 ÷ 90)12 − 1 = 4.30% a year.

Common mistakes

Check yourself

  1. A put with a strike of €95 was sold for €0.35. The share ends at €88. What is the seller's result per share?
    Answer

    It pays 95 − 88 = €7: 0.35 − 7 = −€6.65.

  2. A rule wins 80% of trades, €1.00 on average, and loses €5.00 on average otherwise. What is its expectancy?
    Answer

    0.8 × 1.00 − 0.2 × 5.00 = 0.80 − 1.00 = −€0.20 a trade.

  3. In a world where 1 year in 10 has a crash, independently, what share of four-year backtests show no crash?
    Answer

    0.9⁴ = 0.656: about 66%.

  4. In this world fair prices give the puts nothing on average before costs. Why is the seller's long-run average still below cash's 5% a year?
    Answer

    Fair prices make the puts' average result zero before costs, leaving cash's interest; the bid–ask spread then takes €0.05 a month per €95 set aside, so the account grows on average by 4.34% a year.

  5. The best of 20 versions on the choosing years was also best on held-out years in 70 of 1,000 histories. What would a blind draw give, and what else did the lesson check before reading anything into 70?
    Answer

    About 1,000 ÷ 20 = 50. It also checked the picks' average on the held-out years, +13.8% against +13.9% for the average version: no better.

Try it yourself

Run the simulation. Every number in this lesson comes from one Python script with a fixed random seed (below). Change the crash's chance or size, or the spread, and see how the win rate, the share of crash-free backtests and the long-run average move.

Work it out by hand. Take a win rate, an average win and an average loss from any record and work out p × W − (1 − p) × L; then ask how many years the record covers and work out (1 − q)n for the rare event it might have missed.

The code behind every number (Python, seed 2026111191)
Loading…
For the precise: the world, the account and the versions

The world. A month's log return is c + uZ + ln(0.78) × crash, with Z a standard bell draw, crash chance p = 1 − 0.91/12, u = 15.46% ÷ √12, and c set so the price grows on average by 1.051/12 a month. The usual moves' 15.46% is set so that, with the crashes, the yearly log return's standard deviation is 17.42%, as in the earlier lessons.

The account. Each sale covers cash ÷ strike shares. After a sale the cash, with the price received less the spread, grows by a month's interest (for longer versions, by the interest for their time), and the put's payout is paid in cash on the last day. The spread is €0.05 a share for every €100 of the share's price, whatever the strike or the time to go.

The versions. Long-run averages after costs, exact, by version: from 4.30% (strike 10% below, one month) to 4.90% (strike at the price, six months). The pick's long-run average, averaged over the 1,000 picks, is 4.65%; the 20 versions average 4.67%.

Honest notes

Where this comes from