Quant from Scratch by QuantWright

Testing Popular Ideas · Lesson 7

Previous day high and low

Two levels from yesterday, two opposite ways to read them, and the 16 versions inside one idea.

Know the basics? Read the lesson notes

Yesterday's high and low

Each day in this market is one session, the hours it is open: 09:30 to 16:00. The prices come as five-minute bars: lesson A12's candles, each holding the open, high, low and close of five minutes of trading, 78 a day. Yesterday's high is the highest price of any of yesterday's bars; yesterday's low is the lowest. Traders draw both as lines across today.

The prices are simulated: made up by a computer, not a real market. Mark yesterday's high and low, then guess: will today's price get to yesterday's low before 16:00?

Yesterday and today, five-minute bars (simulated)

Each bar: a thin line from its low to its high, a box from its open to its close (empty if it closed higher). Dashed: yesterday's high and low.

Your guess
Yesterday's high–
Yesterday's low–
Today's low?

It got there in the very first bar, at 09:30: that bar's low was 107.45, exactly yesterday's low. Later in the day the price fell to 106.86.

Which hours are yesterday?

Here that is easy: one session a day, nothing traded overnight. Many markets trade around the clock, or add a night session. Then "yesterday" needs a rule: when does a day start? Below are made-up hourly prices of a market that trades day and night, seen on Wednesday morning. Try each rule.

One market, three ways to start a day (made up)

Line: the price each hour. Shaded: the hours the rule calls yesterday. Dot: their highest price.

A day runs
Yesterday's high–

Three rules, three highs: 103.6, 104.0 and 102.4. A test has to say which one it uses.

This lesson's simulated market has one session a day, so yesterday means the previous session.

Touch or close through

A level is one price; a bar has four. So "the price got to yesterday's low" needs an exact reading. A bar touches yesterday's low when its low is at or below it. A bar closes through it when its close is below it. At yesterday's high, turn both round: a high at or above it, a close above it.

A bar that touches and closes back on the near side has a wick through: only its wick, the thin line down to its low, went past. Step through this morning's bars.

Today's first bars, against yesterday's low (simulated)

Dashed: yesterday's low, 107.45. Bars are named by the minute they start.

Bar–
Low · close–
Against 107.45–

The 09:30 bar touched (its low, 107.45, equals the level) and closed at 107.50, back above: a wick through. The first close through came in the 09:45 bar, at 107.43. A rule acting on a touch acts at least 15 minutes earlier.

How often is yesterday's high touched?

Traders treat yesterday's high and low as levels prices are drawn to. Before reading anything into a touch, count how often one happens anyway: its base rate. Guess: on how many days in 100 does the price touch yesterday's high?

Days that touched yesterday's high, by where yesterday closed (simulated)

Pooled over 1,000 simulated markets: all their days counted together. Left: yesterday closed near its low; right: near its high.

This market?
1,000 markets?

On this simulated market, 1,332 of 2,606 days: about half. On 1,000 more simulated markets built the same way, 51.3 days in 100 touched yesterday's high.

Why so often? Today starts near yesterday's close, which sits somewhere between yesterday's high and low, and today's prices typically spread about as far as yesterday's did. The nearer yesterday closed to its high, the shorter the way up: from 21 days in 100 when it closed in the bottom fifth of its range to 80 in the top fifth.

For the preciseEvery day from the second to the last of ten years: 2,606 a market. Across the 1,000 simulated markets the share touching yesterday's high ran from 48.3 to 54.5 in 100; yesterday's low was touched on 48.0 days in 100, at least one of the two on 87.4, and both on 12.0. The bars, pooled: 120,954 of 563,518 days (21.5 in 100), 177,179 of 485,230 (36.5), 230,334 of 451,671 (51.0), 328,127 of 502,359 (65.3) and 481,380 of 603,222 (79.8). A day that opens above yesterday's high touches it on its first bar: 15.1 days in 100.

Touched, then what?

So a touch of yesterday's high is common. Is it a sign the price goes on up? Of the days that touched yesterday's high, how many ended the day above it (the 16:00 close)?

That would make a touch a strong sign. Here it wasn't: from the level, the rest of the day went up about as often as down.
That would make the level a wall. Here it wasn't: from the level, the rest of the day went up about as often as down.
On the 1,000 simulated markets, 53.4 in 100 of the days that touched yesterday's high ended above it; on the one market above, 701 of 1,332. A little over half, because some days opened above the level: they count as touches because the high is above the level, though no trade happened at it, and they end above it more often. A touch here says little about where the day ends.

A common event says nothing by itself. What a rule does after it, after costs and against just holding, is what a test reads.

One level, opposite rules

"Trade yesterday's high" is not a rule yet. Two common readings are opposite:

Selling short means selling first and buying back later, so the trade gains when the price falls.

On a touch, a breakout waits with a stop order at the level, an order that fires once the price reaches it (see Orders): it fills at the level, or at the open if the day opened past it. A rejection enters at the close of the first bar back on the near side. On a close through, both first wait for a bar to close past the level. Every rule is out by 16:00. Show both readings at both levels.

Opposite readings on one day at each level (simulated)

Dashed: the level. Orange: from the entry to 16:00.

Level
Reading
Entry
In–
Out at 16:00–
Before costs–

Same level, same day, opposite trades. The day shown for the high, 2017-01-03, is a different day from the one shown for the low (2017-01-10). It opened at 107.19, above yesterday's high of 106.93, so the price never traded at the level, and the breakout on a touch bought at the open, 107.19.

How many versions?

One more choice: when to get out. At 16:00, or with the level exit: at the close of the first bar on the wrong side of the level for the trade, and at 16:00 if none comes. The wrong side is where the trade's reading has failed: for a breakout, back on the near side of the level; for a rejection, past it again.

Each different set of choices is a version: the same idea with different settings (lesson E1, How we test an idea). Level, reading, entry, exit: how many versions?

That adds the choices (2 + 2 + 2 + 2). Every choice goes with every other, so they multiply.
There are four choices of two each, and every one goes with every other, so they multiply.
2 levels × 2 readings × 2 entries × 2 exits = 16 versions.

One version against just holding

Start with one exact rule: breakout at yesterday's high, on a touch, out at 16:00. Call it the baseline version: the one this lesson starts from and sets the others against, not anyone's published rule.

It runs from 2015 to 2021 against just holding: buying on the first day and never selling (lesson E1). Each buy and each sale costs 0.1% of the price (lesson A16, Costs); holding pays that once. Results are in % a year. Holding made 4.4% a year. Where did the baseline version end, after costs?

The baseline version and just holding, 2015–2021, after costs (simulated)

Accounts starting at 100, on a log scale: equal steps up the side are equal percentage gains. Orange: the baseline version. Dotted: holding.

Your guess: it ends
Baseline version?
Holding?

It lost 23.1% a year after costs; before costs it made 0.8% a year. It traded on about 135 days a year, paying 0.1% to buy and 0.1% to sell each time.

A result's lead is its % a year minus holding's, in points (a point is 1% a year): here −23.1 − 4.4 = −27.5 points. One market is one draw, so run it on 1,000 more.

The baseline version's lead over holding on 1,000 simulated markets

Grey bars: markets by size of lead, after costs. Orange outlines: the same markets before costs; the low outlines near −25 to −19 are the few markets that trailed holding that far even before costs, drawn over the grey bars there.

Before costs it beat holding in 116 of the 1,000 simulated markets; after costs, in none.

For the preciseIts lead averaged −7.1 points a year before costs and −30.9 after, across the 1,000 simulated markets.

These markets were built so that past prices say nothing about which way the next move goes, from one day to the next or within a day; they only rise a little on average. So the counts show what these rules produce when there is nothing to find. They cannot show whether these levels work in any real market.

All 16 versions

Here are all 16 versions on the same simulated market and years, 2015 to 2021. Call those the choosing years: a version will be chosen on them. Show them, then turn the costs on.

16 versions: each one's lead over holding, 2015–2021 (simulated)

One bar per version, grouped by level and reading; in each group, left to right: touch then 16:00, touch then level exit, close through then 16:00, close through then level exit. Above the line: beat holding. Black: the baseline version. Solid orange: the best.

Beat holding?
The best?

On this market none of the 16 beat holding, before or after costs. The best after costs was the rejection at the low on a close through, out at 16:00: −21.0 points a year. The baseline version came 14th of 16: its place, counting from the largest lead.

On the 1,000 simulated markets, after costs, at least one of the 16 beat holding in only 2.

For the preciseBefore costs, at least one of the 16 beat holding in 290 of the 1,000 simulated markets.

Does the best stay best?

Before any version was run, 2022 to 2024 were set aside: years held out, to be used once (lesson B10, The held-out test).

On each of the 1,000 simulated markets we took the best of the 16 on the choosing years, after costs, the pick, and ran it once on the held-out years. A blind draw, a version picked at random, would be best there in about 63 of 1,000 (1,000 ÷ 16 = 62.5). Guess how often the pick stayed best.

The pick's held-out place on 1,000 simulated markets, after costs

One bar per place, 1st on the left. Dashed: a blind draw.

Stayed best?

The pick stayed best in 264 of the 1,000 simulated markets, against a blind draw's 63. Yet it beat holding after costs on the held-out years in only 10.

Why 264? The pick was usually a rejection version that waits for a close through. Those trade on about 86.5 and 91.3 days a year (at the low and the high), against 111.3 for all 16 on average, so they pay the least in costs. It is not skill, and it says nothing about a real market.

For the preciseThe pick was a rejection version entering on a close through in 918 of the 1,000 simulated markets. With costs left out, the best before costs still stayed best, before costs, in 138 of the 1,000 simulated markets: in 799 it was a version that buys, and these markets drift up.
Theory

Why touching is common: the reflection principle

Picture every day that touches a level. From that moment, if prices have no pattern in which way they move, the rest of the day is as likely to end above the level as below, like a fair coin (lesson A4). Every day that ends beyond the level touched it on the way. So a touch is about twice as common as ending beyond: the reflection principle (mirror the path after the touch, and an end above becomes an end below).

P(touch) ≈ 2 × P(end beyond)
P(touch)
the chance a price touches the level at some point in a stretch of time, such as a day
P(end beyond)
the chance it ends that stretch beyond the level (above a high, below a low): count it on past days, as below, or read it off the bell curve from the level's distance in typical day's moves (see The bell curve)
≈
about: exact only for prices with no pattern in which way they move, watched at every moment
Worked example: the market you saw

The day ended above yesterday's high on 701 of 2,606 days: 26.9 in 100. The days that touched it: 1,332, which is 51.1 in 100. Twice 26.9 is 53.8, a little above the real 51.1, because gap days (days that open beyond the level) end beyond the level without the halving. And 701 of the 1,332 touches ended above: 52.6 in 100, about half.

Holds when
  • from the level, an up move is as likely as a down move;
  • the price can't jump past the level without trading at it;
  • the drift, the small average rise, is small over a day next to the day's moves.
Breaks when

A gap jumps past the level (a gap: the day opens beyond the level, so the price never trades at it; see Orders), prices drift strongly, or there is a pattern. In the 1,000 simulated markets a day opened above yesterday's high on 15.1 days in 100; those days count as touches because the high is above the level, though no trade happened at it, so 53.4 in 100 touches of the high ended above it (51.0 of the low below it), a little over half.

A market with no pattern touches a level on 40 days in 100. About how many of those 100 days end beyond it?

About half the touching days end beyond: 40 ÷ 2 = 20.
P(touch) ≈ 2 × P(end beyond), so P(end beyond) ≈ 40 ÷ 2 = 20 days in 100.

What this means for your test

  1. Write the exact rule before you run it.

    Which hours make a day; touch or close through; which reading; the price each entry gets; the exit; the costs.

Practice 1 of 3

A post's claim

The situationAn invented post says: "Price takes out yesterday's high on 6 days in 10. Buy the break."

What does the 6 in 10 leave out?

The 6 in 10 is a base rate, how often the price gets there. A rule needs its result after costs, against just holding.
A touch is common even when prices have no pattern: in this lesson's simulated markets yesterday's high was touched on about half of all days.
A higher count would still be a base rate. It says how often the price gets there, not what a trade there made.
Practice 2 of 3

A bigger search

The situationA friend tests four levels (yesterday's high and low, and last week's high and low), both readings, a touch or a close through, and three exits.

How many versions is that?

Hint: multiply the number of choices for each setting.

4 × 2 × 2 × 3 = 48. A blind draw would be best of them in about 1 market in 48.
Every choice goes with every other: 4 levels × 2 readings × 2 entries × 3 exits = 48.
Practice 3 of 3

Two charts, one market

The situationA market trades around the clock. Your chart starts each day at midnight; a friend's starts it at 17:00. You both test "buy on a touch of yesterday's high".

What follows?

Not when the hours differ: in this lesson's made-up example, midnight-to-midnight gave a high of 103.6 and 17:00-to-17:00 gave 104.0.
Both can be right. Which hours count as yesterday is a choice, and each choice is a version.
Which hours count as yesterday is part of the rule. Count it as a version, and say which one a result used.
✓

Lesson done

Yesterday's high and low are the previous session's highest and lowest prices; which hours count as a day is part of the rule. In these simulated markets the price touched yesterday's high on about half of all days, and about half the touches ended the day beyond it. These markets were built so that past prices say nothing about which way the next move goes, so the counts show what these rules produce when there is nothing to find: after costs the baseline version trailed just holding in all 1,000 simulated markets, and the best of 16 stayed best on held-out years in 264 (a blind draw: about 63) because it traded least, not because a level worked. They cannot show whether these levels work in any real market.

Key ideas

Yesterday's high, low
the highest and lowest prices of the previous session; in a market that trades around the clock, which hours count as a day is a choice
Touch, close through
a bar whose high reaches a level (for a low: whose low reaches it); a bar whose close goes past it. A touch that closes back is a wick through
Base rate
how often something happens anyway, before any rule acts on it
Breakout, rejection
opposite readings of a level: the move goes on, or it turns back. Each is a rule to test, not a finding
Selling short
selling first and buying back later; the trade gains when the price falls
Version
the same idea with different settings; count every one

Formulas

P(touch) ≈ 2 × P(end beyond), for prices with no pattern in which way they move, watched at every moment (the reflection principle)

Lesson notes

Yesterday's high and low are the highest and lowest prices of the previous day's session. Traders draw them as levels and read them two opposite ways: a breakout (a price past the level keeps going) or a rejection (a price that went past and came back turns). The level, the reading, touch or close through, and the exit made 16 versions in this lesson; which hours count as a day would add more. The lesson's simulated markets were built so that past prices say nothing about which way the next move goes, from one day to the next or within a day, so its counts show what these rules produce when there is nothing to find. After costs the baseline version trailed just holding (buying on the first day and never selling) in all 1,000 simulated markets. The counts cannot show whether these levels work in any real market; that needs its own test.

The levels, and which hours make a day

The lesson's simulated market (prices made up by a computer) has one session a day, 09:30 to 16:00, cut into 78 five-minute bars, each with an open, high, low and close. Nothing trades between 16:00 and the next 09:30. Yesterday's high is the highest price of any of yesterday's bars, and yesterday's low the lowest.

Many markets trade around the clock or have a night session. Then a day needs a starting time. In the lesson's made-up example of hourly prices, read on a Wednesday morning, a day running midnight to midnight gave yesterday's high as 103.6; a day running 17:00 to 17:00 gave 104.0; daytime hours only (10:00 to 16:00) gave 102.4. Each is a different level, so each is a different version of any rule built on it.

Touch, close through, wick through

A bar touches yesterday's low when its low is at or below it, and closes through it when its close is below it. At yesterday's high both turn round: a high at or above it, a close above it. A bar that touches and closes back on the near side has a wick through. On the lesson's example day, yesterday's low was 107.45; the bar starting at 09:30 had a low of exactly 107.45 and closed at 107.50, a wick through. The first close through came in the bar starting at 09:45, at 107.43. A rule acting on a touch acted in the first bar; one waiting for a close through acted at least 15 minutes later.

The base rate

A base rate is how often something happens anyway, before any rule acts on it. On the lesson's simulated market the price touched yesterday's high on 1,332 of 2,606 days. On 1,000 more simulated markets built the same way, 51.3 days in 100 touched yesterday's high, 48.0 touched yesterday's low and 87.4 touched at least one. The reason: today starts near yesterday's close, which sits between yesterday's high and low, and today's prices typically spread about as far as yesterday's did. When yesterday closed in the bottom fifth of its range, yesterday's high was touched on 21 days in 100; in the top fifth, on 80.

Of the days that touched yesterday's high, 53.4 in 100 ended the day above it, across the 1,000 simulated markets: a little over half, because some days opened above the level: they count as touches because the high is above the level, though no trade happened at it. A touch said little about where the day ended. A common event is not, by itself, a reason to trade; a rule's result after costs, against just holding, is what a test reads.

Opposite readings and 16 versions

A breakout buys at yesterday's high and sells short at yesterday's low; a rejection sells short at the high and buys at the low. Selling short means selling first and buying back later, so the trade gains when the price falls. On a touch, a breakout fills at the level by a stop order (an order that fires once the price reaches the level), or at the open if the day opened past it. On the lesson's example day for the high, 2017-01-03 (a different day from the low's example, 2017-01-10), the day opened at 107.19, above yesterday's high of 106.93, so the price never traded at the level and the breakout bought at the open, 107.19. A rejection enters at the close of the first bar back on the near side. On a close through, both wait for a bar to close past the level first. Every trade ends by 16:00, either at 16:00 or with the level exit: at the close of the first bar on the wrong side of the level for the trade (for a breakout, back on the near side of the level; for a rejection, past it again). Two levels, two readings, two entries and two exits make 2 × 2 × 2 × 2 = 16 versions.

The baseline version and just holding

The baseline version, the lesson's starting point, buys on a touch of yesterday's high and sells at 16:00. Each buy and each sale costs 0.1% of the price; holding pays that once. From 2015 to 2021 on the lesson's simulated market, holding made 4.4% a year. The baseline version lost 23.1% a year after costs and made 0.8% a year before costs: it traded on about 135 days a year, paying 0.1% to buy and 0.1% to sell each time. A result's lead is its % a year minus holding's, in points: −23.1 − 4.4 = −27.5. On the 1,000 simulated markets it beat holding before costs in 116 and after costs in 0; its lead averaged −7.1 and −30.9 points a year, before and after costs.

The best of 16, and held-out years

On the lesson's market none of the 16 versions beat holding over the choosing years (the years a version is chosen on), before or after costs. On the 1,000 simulated markets, after costs, at least one did in 2 markets; before costs, in 290. Before any version was run, 2022 to 2024 were held out. On each market the pick, the best of the 16 after costs on the choosing years, ran once on the held-out years, after costs. It stayed best in 264 of the 1,000 simulated markets, against about 63 for a blind draw (a version picked at random: 1,000 ÷ 16), and beat holding after costs there in only 10. The pick was a rejection version entering on a close through in 918 markets; those versions trade on about 86.5 and 91.3 days a year (at the low and the high), against 111.3 for all 16 on average, so they pay the least in costs. With costs left out, the best before costs still stayed best in 138: in 799 markets it was a version that buys, and these markets rise a little on average. Neither is skill, and neither says anything about a real market.

Formula: the reflection principle

Picture every day that touches a level. From that moment, if prices have no pattern in which way they move, the rest of the day is as likely to end above the level as below. So about half the touching days end beyond the level, and every day that ends beyond it touched it on the way: a touch is about twice as common as ending beyond.

P(touch) ≈ 2 × P(end beyond)
P(touch)
the chance a price touches the level at some point in a stretch of time, such as a day
P(end beyond)
the chance it ends that stretch beyond the level (above a high, below a low): count it on past days, or read it off the bell curve from the level's distance in typical day's moves
≈
about: exact only for prices with no pattern in which way they move, watched at every moment
Worked example: the lesson's market

The day ended above yesterday's high on 701 of 2,606 days: 26.9 in 100. The days that touched: 1,332, or 51.1 in 100. Twice 26.9 is 53.8, a little above the real 51.1, because gap days end beyond the level without the halving. Of the 1,332 touches, 701 ended above: 52.6 in 100.

Holds whenBreaks when

A gap jumps past the level (the day opens beyond the level, so the price never trades at it), prices drift strongly, or there is a pattern. In the 1,000 simulated markets a day opened above yesterday's high on 15.1 days in 100; those days count as touches because the high is above the level, though no trade happened at it, so 53.4 and 51.0 in 100 touches ended beyond the high and the low, a little over half.

One more worked example

Made-up round numbers

A market with no pattern ends the day above a level on 15 days in 100. By the reflection principle it touches the level on about 2 × 15 = 30 days in 100. A rule that buys on every touch trades on about 30 days in 100; about half of those, 15, end above the level. If each trade pays 0.1% to buy and 0.1% to sell, that is 30 × 0.2 = 6% of the price in costs every 100 days, whatever the level does.

Common mistakes

Check yourself

  1. Yesterday's high was 50.00. Today's 10:00 bar had a high of 50.04 and a close of 49.97. Did it touch, close through, or both?
    Answer

    Its high, 50.04, is at or above 50.00: a touch. Its close, 49.97, is below: no close through. It is a wick through.

  2. A market with no pattern touches a level on 46 days in 100. About how many days in 100 end beyond it?
    Answer

    By the reflection principle, about half: 46 ÷ 2 = 23.

  3. A test uses yesterday's high only, both readings, a touch or a close through, and one exit. How many versions?
    Answer

    1 × 2 × 2 × 1 = 4.

  4. In the lesson's simulation, after costs, the best of 16 versions stayed best on held-out years in 264 of 1,000 simulated markets, against about 63 for a blind draw. Does that show the level works?
    Answer

    No. The pick beat holding after costs on the held-out years in only 10 markets. It stayed best mostly because it was usually a version trading on about 86.5 or 91.3 days a year, against 111.3 for all 16 on average, so it paid the least in costs. These markets were built with nothing to find, and a real market needs its own test.

Try it yourself

The rules, written before the code. Five-minute bars, one session a day. Yesterday's high (low) = the highest high (lowest low) of yesterday's bars. Touch: a bar's high at or above yesterday's high (a bar's low at or below yesterday's low). Close through: a bar's close above it (below it). Breakout: buy at the high, sell short at the low; on a touch, a stop order at the level (filled at the open if the day opened past it); on a close through, at that bar's close. Rejection: sell short at the high, buy at the low; after a touch (or a close through), at the close of the first bar back on the near side. No entry at the session's last close. Exit at 16:00, or with the level exit: the close of the first bar back on the wrong side of the level for the trade. One trade a day at most. 0.1% of the price per buy and per sell, or no costs. Compared with buying at the first close and holding, which pays 0.1% once.

Run the script. Every number in this lesson comes from one Python script (below). It imports simmarket.py, the course's simulated market, which must sit in the same folder. Add last week's high and low, or a third exit, and watch the version count and the counts across markets move.

By hand. In a spreadsheet with one row per five-minute bar (date in A, high in C, low in D, close in E), yesterday's high is the largest value in column C on the previous date: =MAXIFS(C:C,A:A,previous date). A touch is a high at or above it; a close through is a close above it.

Written by QuantWright from the plain definition of the levels and the rules above. No code from any indicator script or charting platform.

The code behind every number (Python, imports SimMarket, seed 20261109)
Loading…
For the preciseThe lesson's market: SimMarket Market 1, seed 20261109, effect=False (no planted pattern), five-minute bars built with bridge="normal" (no pull-back within the day); its daily closes are those of lessons E1 to E5. The 1,000 simulated markets: the same generator and setting with seeds 2026170701 to 2026171700, effect off. Choosing years: from the close of 5 Jan 2015 to 31 Dec 2021 (6.99 calendar years); held-out: to 31 Dec 2024 (3.00 years). % a year = (the account's growth factor)1 ÷ years − 1. A long trade's return is exit ÷ entry − 1; a short trade's 1 − exit ÷ entry; after costs each traded day is multiplied by 0.999². The lesson's market: holding 4.38% a year before its cost, 4.36% after (choosing), 10.00% (held-out). Base rates over its 2,606 days: yesterday's high touched on 1,332, yesterday's low on 1,262, at least one on 2,280, both on 314; a five-minute close through the high on 1,194; the day's close above the high on 701, below the low on 647; an open above the high on 384. Baseline version: 0.84% a year before costs, −23.09% after (946 trading days, 135.4 a year), lead −3.53 then −27.45, 14th of 16; held-out lead −30.69, 11th. Its opposite, the rejection at the high on a touch, out at 16:00: −2.30% a year before costs, −22.42% after, lead −26.78, 12th. The best after costs: the rejection at the low on a close through, out at 16:00: lead −5.05 before costs, −21.05 after (87.9 trading days a year); held-out lead −29.36, 6th. The 1,000 simulated markets: touches of the high 51.3 in 100 (48.3 to 54.5), of the low 48.0, five-minute closes through the high 46.7, days ending above the high 27.4. Baseline version: beat holding in 116 before costs and 0 after (choosing years), 0 after costs (held-out); a gain before costs in 618; average lead −7.07 before costs, −30.86 after, −31.05 held-out; 134.0 trading days a year; its trades averaged +0.013% before costs and gained in 49.8 in 100. Its opposite: beat holding in 124 before costs and 1 after. Versions beating holding on the choosing years: 2.12 of 16 on average before costs, 0.01 after. The pick: a rejection version in 933 markets, on a close through in 985, out at 16:00 in 719; a rejection on a close through in 918 (the rejection versions on a close through trade on 86.5 and 91.3 days a year, at the low and the high, against 111.3 for all 16); stayed best in 264, average held-out place 4.2; beat holding in 2 markets on the choosing years and 10 on the held-out years. No market had a tie for first place. The best before costs, judged before costs: stayed best in 138; a version that buys in 799. Of all 16,000 held-out results after costs, 0.66% beat holding.

Honest notes

Where this comes from