Quant from Scratch by QuantWright

Testing Popular Ideas · Lesson 12

SMC: liquidity sweeps (failed breakouts)

A price that runs past a level and comes back: how often it happens when there is nothing to find, and the 24 versions of a rule built on it.

Know the basics? Read the lesson notes

Past the level, then back

Several lessons cover ideas that traders group under “smart money concepts” (SMC): fair value gaps, order blocks, liquidity sweeps, market structure. They spread through free video lectures and are now taught by many educators, each with their own definitions. We code one common reading, show the switches where readings differ, and test that. It is our reading, not anyone's official method.

A liquidity sweep, also called a failed breakout, is a price that goes a little past a level many traders watch, then comes back within minutes. The level here is yesterday's low: the lowest price of the previous day's session (see the Previous day high and low lesson).

The prices are simulated: made up by a computer, not a real market. These markets were built so that past prices say nothing about which way the next move goes; only the size of moves clusters, in calm and wild spells. So the counts in this lesson show what sweep rules produce when there is nothing to find. They cannot show whether the idea works in any real market.

Each five-minute bar below holds five minutes of trading: a thin line from its low to its high, a box from its open (its first price) to its close (its last price). Play the morning.

The first bars of one day, against yesterday's low (simulated)

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

Yesterday's low–
Lowest so far–
Last close–

The 09:30 bar fell to 105.76, below yesterday's low of 105.88, and closed below it, at 105.84. The 09:35 bar closed back above, at 106.01: past the level, then back within ten minutes. (Later that day the price fell to 105.14.)

Why “liquidity”?

The name comes from a story about orders. Many traders leave stop orders just past such levels: orders that sell once the price falls to a set price (see the Orders lesson). Orders waiting to be filled are called liquidity. The story says large traders push the price past the level to trade against those orders, then let it turn. A test needs neither to believe nor to doubt the story. It needs exact words for “past” and “back”.

Take this lesson's first reading: any amount past, then a close back above within 15 minutes, which is the bar that went past and the next two. Yesterday's low was 50.00. Which is a sweep?

It went past, but no close came back above 50.00 within the three bars: under this reading it is a break (the price staying past the level), not a sweep.
A low of exactly 50.00 only reaches the level; it never goes past it.
Past the level (49.97 is below 50.00), then a close back above it in the next bar, well within 15 minutes.

Three choices inside “swept”

Each word in the definition hides a choice.

Try each switch on the same day.

One day, read by each switch (simulated)

Dashed: the chosen level. Marked: the bar that went past, and the close back.

Level
How far
How fast
Went past–
Back in time–

On this day yesterday's low counts as swept under every reading except “same bar”: the 09:30 bar closed below it. The swing low, 104.41, was never reached. Each set of choices marks different days.

The Previous day high and low lesson's rejection reading, which trades against the level once the price has gone past and closed back, is one more version: any amount past, back at any time before 16:00.

How often, with nothing to find?

Before reading anything into a sweep, count how often one happens anyway: its base rate. Guess: on how many days in 100 is yesterday's low swept by any amount, with a close back above within 15 minutes?

Days with a sweep of yesterday's low that came back, by switch (simulated)

Pooled over 1,000 simulated markets: all their days counted together. Pale: any amount past. Dark: at least 0.1%.

This market?
1,000 markets?

On this simulated market, 766 of 2,606 days; on 1,000 more built the same way, 28.3 days in 100.

Yesterday's low was swept by any amount on 47.6 days in 100, and 59.4 in 100 of those sweeps closed back above within 15 minutes. Why so often? At the moment it crosses the level, a price with no pattern is as likely to go on as to turn, so it soon crosses back; the Theory card puts a number on it. A sweep of at least 0.1% starts further past, and then 31.4 in 100 came back within 15 minutes.

For the preciseEvery day from the second to the last of ten years: 2,606 a market. Yesterday's high was swept by any amount on 50.9 days in 100, and 58.7 in 100 of those sweeps came back within 15 minutes. The swing levels sit further away: the swing low was swept on 4.0 days in 100, the swing high on 4.7. Of the sweeps of yesterday's low, 29.0 in 100 came on a day that opened below it (a gap).

Back above, then what?

So a sweep that comes back is common. Does it say where the rest of the day goes? Buy at the close of the bar back above yesterday's low (within 15 minutes, as above), sell at 16:00. Of those trades, how many ended higher, before costs (leaving out what trading costs)?

That would make the turn a strong sign. Here it wasn't: from the close back above, the rest of the day went up about as often as down.
That would make the sweep a sign that the fall goes on. Here it wasn't: from the close back above, the rest of the day went up about as often as down.
Across the 1,000 simulated markets, 50.7 in 100 gained before costs, and the average trade was +0.018%: about zero, a little above it because of the drift (the slow average rise) built into these markets.

The sweep and the turn back happened; what came after went either way. What a rule makes after costs, against just holding, is what a test reads.

How many versions?

Now the rule. At a low, buy at the close of the first bar back above the level. At a high, sell short (sell first and buy back later, which gains when the price falls) at the close of the first bar back below. Close the trade at 16:00. One trade a day at most.

Each different set of choices is a version: the same idea with different settings (the How we test an idea lesson). Four levels (yesterday's high and low, the swing high and low), two distances, three speeds: how many versions?

The first reading, yesterday's low, any amount past, back within 15 minutes (so it buys), is the baseline version: this lesson's starting point, not anyone's published rule.

That leaves out one switch. Every level goes with every distance and every speed.
That adds the choices (4 + 2 + 3). Every choice goes with every other, so they multiply.
4 levels × 2 distances × 3 speeds = 24 versions.

One version against just holding

Run the baseline version from 2015 to 2021 against just holding: buying on the first day and never selling. Each buy and each sale costs 0.1% of the price (the Costs lesson); holding pays that once. Results are in % a year: the steady yearly growth that gives the same total. 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. Orange: the baseline version. Dotted: holding.

Your guess: it ends
Baseline version?
Holding?

It lost 14.5% a year after costs; before costs it lost 0.3% a year. Even before costs it trailed holding, because it holds a position only until 16:00 and sits in cash otherwise. It traded on about 77 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 −14.5 − 4.4 = −18.9 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.

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

For the preciseIts lead averaged −6.97 points a year before costs and −20.67 after, across the 1,000 simulated markets; it traded on 72.9 days a year on average.

All 24 versions

Here are all 24 versions on the same simulated market and years, 2015 to 2021. Show them, then turn the costs on.

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

One bar per version, grouped by level; in each group, any amount past then at least 0.1%, each by same bar, 15 minutes, 1 hour. Above the line: beat holding. Black: the baseline version. Solid orange: the best.

Beat holding?
The best?

On this market none of the 24 beat holding, before or after costs. The best after costs, the swing low with at least 0.1% past and back in the same bar, trailed holding by 4.1 points a year. It traded on only 9 days in seven years, so it held cash almost all the time and missed holding's rise. The baseline version came 21st of 24: its place, counting from the largest lead.

On the 1,000 simulated markets, after costs, at least one of the 24 beat holding in 168.

Does the best stay best?

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

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

The best version'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 best stayed best in 116 of the 1,000 simulated markets, against a blind draw's 42.

Why 116? The best was nearly always a version that rarely trades: a swing level in 951 of the 1,000, at least 0.1% past in 857. It traded on about 3.0 days a year, against 29.8 for all 24 on average, so it paid the least in costs. Every version loses on costs each time it trades, so the one that trades least loses least in any years; that is why it stayed near the top. The fair comparison is with the least-trading version, not a blind draw. It beat holding on the held-out years in 202 markets, 193 of them markets where holding itself lost money there: cash beat a falling market. That is not skill, and it says nothing about a real market.

Theory

Why most sweeps come back: the Sparre Andersen theorem

Picture the price at the moment it crosses a level. Suppose each next move is as likely a rise of any size as a fall of the same size, independently of the others. The chance that the next n closes all stay past the level is then qn, whatever the size of the moves: the Sparre Andersen theorem (the SMC: market structure lesson used the same qn for swings). So the chance that at least one of those closes is back on the near side is 1 − qn.

P(back within n closes) ≈ 1 − qn,   qn = ½ × ¾ × ⅚ × … × (2n − 1) ÷ (2n)
n
the closes counted, starting with the bar in which the price crosses the level: 3 for 15 minutes of five-minute bars
qn
the chance all n closes stay past the level, when each move is as likely a rise of any size as a fall of the same size, independently, never exactly zero
P(back within n closes)
the chance at least one of them is back on the near side, for a price that starts at the level, under the same conditions
Worked example: 15 minutes

n = 3: q3 = ½ × ¾ × ⅚ = 5/16 = 0.3125, so 1 − 0.3125 = 0.6875: about 69 in 100. Across the 1,000 simulated markets, of the sweeps of yesterday's low by any amount on days that did not open below it (days with no gap: a day that opens past the level never trades at it), 72.6 in 100 closed back above within 15 minutes. Within an hour (n = 12): 86.1 counted, against 1 − q12 = 83.9.

Holds when
  • a rise of any size is as likely as a fall of the same size;
  • moves are independent of each other;
  • the price starts at the level: it crosses it rather than jumping past.
Breaks when

The price starts further past: a sweep of at least 0.1% (31.4 in 100 back within 15 minutes), or a day that opens past the level (a gap: 29.0 in 100 sweeps of yesterday's low began that way, left out of the 72.6). The counts sit a little above the rule because the crossing comes partway through a bar and the generator draws each bar's wicks. A real market needs its own count.

Within 10 minutes (n = 2), for a price that starts at the level in a market with no pattern: about how many in 100 come back?

q2 = ½ × ¾ = 3/8 = 0.375; 1 − 0.375 = 0.625: 62.5 in 100.
q2 = ½ × ¾ = 3/8 = 0.375, the chance both closes stay past. Back within 2: 1 − 0.375 = 62.5 in 100.

What this means for your test

  1. Write every switch down before you run it.

    Which level, and which hours make its day; how far past; how fast back; the entry, the exit and the costs.

Practice 1 of 3

A post's claim

The situationAn invented post says: “When price sweeps a level, it reverses within the hour 85% of the time. Trade the reversal.”

What does the 85% leave out?

A price with no pattern comes back within 12 closes about 1 − q12 = 84 times in 100 anyway, so 85% is about what noise gives.
A higher count would still be a base rate: how often the price comes back, not what a trade after it made.
The 85% is a base rate, and close to the 84 in 100 a price with no pattern gives (1 − q12). A rule needs its result after costs, against just holding.
Practice 2 of 3

A bigger search

The situationA friend tests six levels (the highs and lows of yesterday, of last week, and swing highs and lows), three distances, four speeds and two exits, then checks whether the best stays best on held-out years across 1,000 simulated markets.

In about how many of the 1,000 would a blind draw be best?

Hint: first multiply the choices to get the number of versions, then divide 1,000 by it.

6 × 3 × 4 × 2 = 144 versions; 1,000 ÷ 144 = 6.9. More versions make a blind draw less likely to be best.
Versions: 6 levels × 3 distances × 4 speeds × 2 exits = 144. A blind draw is best in about 1,000 ÷ 144 = 6.9 of 1,000. More versions make a blind draw less likely to be best.
Practice 3 of 3

Half an hour to come back

The situationA friend's sweep rule allows 30 minutes on five-minute bars for a close back, which is n = 6 closes, in a made-up market where each move is as likely a rise of any size as a fall of the same size, independently.

For a price that starts at the level, about how many sweeps in 100 come back in time?

Hint: q6 = ½ × ¾ × ⅚ × ⅞ × 9/10 × 11/12. Then take 1 − q6.

q6 = 231/1024 = 0.2256; 1 − 0.2256 = 0.7744: 77.4 in 100.
q6 = ½ × ¾ × ⅚ × ⅞ × 9/10 × 11/12 = 231/1024 = 0.2256. Back within 6: 1 − 0.2256 = 77.4 in 100.
✓

Lesson done

A liquidity sweep is a price that goes past a watched level and comes back within minutes; which level, how far past and how fast back made 24 versions here. These simulated markets were built so that past prices say nothing about which way the next move goes, so the counts show what sweep rules produce when there is nothing to find: yesterday's low was swept on about half of all days, and 59.4 in 100 of those sweeps came back within 15 minutes (72.6 when days that opened past the level are left out, against 68.75 from the Sparre Andersen theorem); after costs the baseline version beat just holding in 1 of 1,000 simulated markets, and the best of 24 stayed best on held-out years in 116 (a blind draw: about 42) because it traded least. The counts cannot show whether sweeps work in any real market.

Key ideas

Liquidity sweep
a price that goes past a watched level, then closes back on the near side within a set time; also called a failed breakout
Liquidity
orders waiting to be filled, such as stop orders resting just past a level
Near side
the side of the level the price came from: above a low, below a high
Base rate
how often something happens anyway, before any rule acts on it
Version
the same idea with different settings; count every one

Formulas

P(back within n closes) ≈ 1 − qn, qn = ½ × ¾ × … × (2n − 1) ÷ (2n), for a price that starts at the level, when each move is as likely a rise of any size as a fall of the same size, independently, never exactly zero (the Sparre Andersen theorem)

Lesson notes

A liquidity sweep, one of the ideas traders group under smart money concepts (SMC) and also called a failed breakout, is a price that goes a little past a level many traders watch, such as yesterday's low, then comes back within minutes. Which level, how far past and how fast back are the settings of a rule; each different set of settings is a version, and this lesson has 24 of them. Its simulated markets were built so that past prices say nothing about which way the next move goes, so its counts show what sweep rules produce when there is nothing to find. There, sweeps that came back were common, the rest of the day went either way after them, and a rule that traded each one trailed just holding (buying on the first day and never selling) after costs in all but one of 1,000 simulated markets. The counts cannot show whether sweeps work in any real market; that needs its own test.

Past the level, then back

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. Yesterday's low is the lowest price of the previous day's bars. On the lesson's example day, 2017-01-19, yesterday's low was 105.88. The bar starting at 09:30 fell to 105.76 and closed below the level at 105.84; the 09:35 bar closed back above it, at 106.01.

The name comes from a story: traders leave stop orders (orders that sell once the price falls to a set price) just past such levels, orders waiting to be filled are called liquidity, and large traders are said to push the price past the level to trade against them before it turns. A test needs exact words for “past” and “back”, not a view on the story.

Three switches

Which level: yesterday's high or low, or the latest swing high or low that no later day has gone past (a swing high is a day whose high is above the highs of the 5 days before and the 5 days after it; a swing low the same, below). How far past: any amount, or at least 0.1%. How fast back: a close back on the near side (above a low, below a high) in the same bar, so only the bar's wick went past; within 15 minutes (that bar and the next two); or within an hour. On the example day, yesterday's low counted as swept under every reading except “same bar”, and the swing low, 104.41, was never reached. The rule buys at the close of the first bar back above a low, or sells short (sells first and buys back later, gaining when the price falls) at the close of the first bar back below a high, and closes the trade at 16:00. Four levels, two distances and three speeds make 4 × 2 × 3 = 24 versions.

How often, with nothing to find

A base rate is how often something happens anyway, before any rule acts on it. On the lesson's market, yesterday's low was swept by any amount and back above within 15 minutes on 766 of 2,606 days; on 1,000 more simulated markets built the same way, on 28.3 days in 100. Yesterday's low was swept by any amount on 47.6 days in 100, and 59.4 in 100 of those sweeps came back within 15 minutes. A sweep of at least 0.1% starts further past: 31.4 in 100 came back within 15 minutes. After the close back above, the rest of the day went either way: buying there and selling at 16:00 gained before costs (leaving out what trading costs) in 50.7 trades in 100, and averaged +0.018% a trade, a little above zero because of the drift (the slow average rise) built into these markets.

The baseline version and just holding

The baseline version, the lesson's starting point, is yesterday's low, any amount past, back within 15 minutes; it buys. 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 (% a year: the steady yearly growth that gives the same total). The baseline version lost 14.5% a year after costs and 0.3% a year before costs, trading on about 77 days a year. Even before costs it trailed holding, because it holds a position only until 16:00 and sits in cash otherwise. Its lead, its % a year minus holding's in points, was −14.5 − 4.4 = −18.9. On the 1,000 simulated markets it beat holding before costs in 167 and after costs in 1.

The best of 24, and held-out years

On the lesson's market none of the 24 versions beat holding over the choosing years (2015 to 2021, the years a version is chosen on), before or after costs; the best after costs traded on only 9 days in seven years and trailed holding by 4.1 points a year. On the 1,000 simulated markets, after costs, at least one of the 24 beat holding in 168. Before any version was run, 2022 to 2024 were held out (set aside, to be used once). On each market the pick, the best of the 24 after costs on the choosing years, ran once on the held-out years. It stayed best in 116 of the 1,000 simulated markets, against about 42 for a blind draw (a version picked at random: 1,000 ÷ 24). The pick was nearly always a version that rarely trades (a swing level in 951 markets), trading on about 3.0 days a year against 29.8 for all 24 on average, so it paid the least in costs. Every version loses on costs each time it trades, so the one that trades least loses least in any years; that is why it stayed near the top. The fair comparison is with the least-trading version, not a blind draw. It beat holding on the held-out years in 202 markets, 193 of them markets where holding itself lost money there. Neither count is skill, and neither says anything about a real market.

Formula: why most sweeps come back

Picture the price at the moment it crosses a level. If each next move is as likely a rise of any size as a fall of the same size, independently, the chance that the next n closes all stay past the level is qn, whatever the size of the moves (the Sparre Andersen theorem); so the chance that at least one comes back is 1 − qn.

P(back within n closes) ≈ 1 − qn,   qn = ½ × ¾ × ⅚ × … × (2n − 1) ÷ (2n)
n
the closes counted, starting with the bar in which the price crosses the level: 3 for 15 minutes of five-minute bars
qn
the chance all n closes stay past the level, when each move is as likely a rise of any size as a fall of the same size, independently, never exactly zero
P(back within n closes)
the chance at least one of them is back on the near side, for a price that starts at the level, under the same conditions
Worked example: 15 minutes

n = 3: q3 = ½ × ¾ × ⅚ = 5/16 = 0.3125, so 1 − 0.3125 = 0.6875, about 69 in 100. Across the 1,000 simulated markets, of the sweeps of yesterday's low by any amount on days that did not open below it, 72.6 in 100 closed back above within 15 minutes. Within an hour (n = 12): 86.1 counted, against 1 − q12 = 83.9.

Holds whenBreaks when

The price starts further past: a sweep of at least 0.1% (31.4 in 100 back within 15 minutes), or a day that opens past the level (a gap: 29.0 in 100 sweeps of yesterday's low began that way). The lesson's counts sit a little above the rule because the crossing comes partway through a bar and the generator draws each bar's wicks. A real market needs its own count.

One more worked example

Made-up round numbers

A rule allows 20 minutes on five-minute bars: n = 4. q4 = ½ × ¾ × ⅚ × ⅞ = 35/128 = 0.273, so in a market with no pattern about 1 − 0.273 = 72.7 sweeps in 100 come back in time. If the price crosses a watched level on 50 days in 100, the rule trades on about 50 × 0.727 = 36 days in 100. At 0.1% to buy and 0.1% to sell, that is 36 × 0.2 = 7.2% of the price in costs every 100 days, whatever the sweeps do afterwards.

Common mistakes

Check yourself

  1. Yesterday's high was 80.00. Today's 11:00 bar had a high of 80.06 and a close of 80.03; the 11:05 bar closed at 79.98. Is that a sweep of yesterday's high by any amount, back within 15 minutes? Within the same bar?
    Answer

    Within 15 minutes, yes: the high went past 80.00 and the next bar closed back below it. Within the same bar, no: the 11:00 bar itself closed above 80.00.

  2. A market with no pattern; a price that starts at the level. About how many in 100 come back within one close (n = 1)?
    Answer

    q1 = ½, so 1 − ½ = ½: about 50 in 100.

  3. A test uses yesterday's high and low only, one distance and three speeds. How many versions?
    Answer

    2 × 1 × 3 = 6.

  4. In the lesson's simulation, after costs, the best of 24 versions stayed best on held-out years in 116 of 1,000 simulated markets, against about 42 for a blind draw. Does that show sweeps work?
    Answer

    No. The pick was nearly always a version that rarely traded (about 3.0 days a year, against 29.8 for all 24 on average), so it paid the least in costs, and most of its held-out wins over holding came in markets where holding lost money. 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. Levels: yesterday's high (low) = the highest high (lowest low) of yesterday's bars; the swing high (low) = the latest day whose high is above (low is below) those of the 5 days either side, known 5 days later, that no day since has gone past. A sweep of a high: the first bar whose high goes above the level (or reaches 0.1% above it), then a close back below the level in that bar, or within the next 2 bars, or the next 11; a low the other way round. No close back in time: no trade that day. Sell short at a high, buy at a low, at the close of the bar back; out at 16:00; no entry at the last close; one trade a day. 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 a stop just past the sweep's extreme, or last week's high and low, and watch the version count and the counts across markets move.

By hand. In a spreadsheet with one row per five-minute bar (low in D, close in E) and yesterday's low in G, a bar went past it when =D2<G2; it is back above when =E2>G2. Mark the first bar of the day that went past, then look for a close back above in it or the next two rows.

Written by QuantWright from a plain-word definition of a liquidity sweep 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), the bars of the Previous day high and low lesson. The 1,000 simulated markets: the same generator and setting with seeds 2026231201 to 2026232200. 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). Sweeps of yesterday's low over its 2,606 days: 1,253 by any amount (536 back in the same bar, 766 within 15 minutes, 929 within an hour), 1,116 by at least 0.1%. Baseline version: −0.26% a year before costs, −14.47% after (537 trading days, 76.9 a year), lead −4.63 then −18.83, 21st of 24; held-out lead −22.72, 18th. The best after costs (swing low, at least 0.1%, same bar): lead −3.85 before costs, −4.09 after (9 trading days); held-out lead −9.63, 4th. The 1,000 simulated markets: sweeps of yesterday's high by any amount on 50.9 days in 100 (58.7 in 100 of them back within 15 minutes, 72.5 within an hour); of yesterday's low 47.6 (59.4, 73.5); the swing low had a level on 97.2 days in 100, the swing high on 89.0. The rule of thumb against the counts (sweeps of yesterday's low by any amount, not on a gap; 880,195 sweeps): within 1 close 50.8 in 100 (rule 50.0), 3 closes 72.6 (68.8), 12 closes 86.1 (83.9). Baseline version: beat holding in 167 before costs and 1 after (choosing years), 10 after costs (held-out); average lead −6.97 before costs, −20.67 after; 72.9 trading days a year; its trades averaged +0.018% before costs and gained in 50.7 in 100. Versions that buy averaged between +0.014% and +0.025% a trade before costs, versions that sell short between −0.032% and −0.020%. Versions beating holding on the choosing years: 3.76 of 24 on average before costs, 1.73 after; at least one in 283 markets before costs, 168 after. The pick: a swing level in 951 markets, at least 0.1% past in 857, back in the same bar in 666; stayed best in 116, average held-out place 5.9; beat holding in 168 markets on the choosing years and 202 on the held-out years; holding lost money on the held-out years in 218 markets. Two markets had a tie for first place on the held-out years, so a blind draw's expected count is 41.7. Of all 24,000 held-out results after costs, 12.83% beat holding.

Honest notes

Where this comes from