Strasmore Research
Learn Matt ConnorBy Matt Connor

How Long a Losing Streak Is Normal

How long a losing streak is normal at a 70 percent win rate: the exact odds of 5, 8 and 10 losses in a row across 200 trades, and what they do not tell you.

How long a losing streak is normal has an exact answer, and the answer runs longer than most people guess. At a 70 percent win rate over 200 trades, the probability of hitting at least one run of five straight losers is 28.6 percent. A run of eight comes in at 0.88 percent, and a run of ten at 0.079 percent. Those figures come from an exact count over every possible sequence rather than a simulation, so two people who compute them get the same digits.

How the odds of a losing streak are computed

No Monte Carlo simulation is needed here. Walk through the 200 trades one at a time and carry a single piece of state: how many losses in a row you are currently sitting on. For a five-loss question that counter can only be 0, 1, 2, 3 or 4. The instant it would reach 5, the streak has happened and that path drops out of the running total.

At each trade the counter either resets to 0 (a win, probability 0.70) or steps up by one (a loss, probability 0.30). Spread the probability across those five counter values, step 200 times, and add up whatever is left. That sum is the probability of finishing 200 trades without a five-loss run. One minus it is the answer. The arithmetic is a handful of multiplications repeated 200 times, and it is exact: no random draws and no seed.

Two properties fall straight out of the recurrence. The chance of a streak of a given length rises as the win rate falls, and it drops as the required streak grows longer. Both hold at every win rate below.

One assumption sits underneath all of it. The trades are treated as independent with a constant win rate, the coin-flip model statisticians call Bernoulli trials. That is a modelling choice, not a fact about any real strategy.

How long a losing streak is normal at different win rates

Each figure below is the probability of hitting at least one run of that length somewhere in a 200-trade series.

QueryChance of at least one losing streak of five, eight or ten in a 200 trade series
The exact SQL behind every number
WITH 200 AS n_trades
SELECT
    concat(toString(toUInt8(round(win_rate * 100))), '%') AS win_rate_pct,
    round(100 * (1 - arraySum(arrayFold(
        (run_mass, trade) -> arrayPushFront(
            arrayMap(mass -> mass * (1 - win_rate), arrayPopBack(run_mass)),
            win_rate * arraySum(run_mass)),
        range(n_trades),
        [1.0, 0.0, 0.0, 0.0, 0.0]))), 3) AS pct_run_of_5,
    round(100 * (1 - arraySum(arrayFold(
        (run_mass, trade) -> arrayPushFront(
            arrayMap(mass -> mass * (1 - win_rate), arrayPopBack(run_mass)),
            win_rate * arraySum(run_mass)),
        range(n_trades),
        [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]))), 3) AS pct_run_of_8,
    round(100 * (1 - arraySum(arrayFold(
        (run_mass, trade) -> arrayPushFront(
            arrayMap(mass -> mass * (1 - win_rate), arrayPopBack(run_mass)),
            win_rate * arraySum(run_mass)),
        range(n_trades),
        [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]))), 3) AS pct_run_of_10
FROM
(
    SELECT arrayJoin([0.75, 0.70, 0.65, 0.60, 0.55]) AS win_rate
)
ORDER BY win_rate DESC
Run this yourself

Read down the five in a row column. Fifteen points of win rate separate a five-loss streak that is unusual from one that is the base case.

The other lever is how many trades you take. Holding the win rate at 70 percent and varying the sample:

QueryChance of at least one five loss run at a 70 percent win rate, by series length
The exact SQL behind every number
WITH 0.70 AS win_rate
SELECT
    concat(toString(n_trades), ' trades') AS series_length,
    round(100 * (1 - arraySum(arrayFold(
        (run_mass, trade) -> arrayPushFront(
            arrayMap(mass -> mass * (1 - win_rate), arrayPopBack(run_mass)),
            win_rate * arraySum(run_mass)),
        range(n_trades),
        [1.0, 0.0, 0.0, 0.0, 0.0]))), 3) AS pct_run_of_5
FROM
(
    SELECT arrayJoin([50, 100, 200, 400, 1000]) AS n_trades
)
ORDER BY n_trades
Run this yourself

A trader at 70 percent passes even odds on a five-loss run a little over 400 trades in. Anyone placing a few trades a day gets there inside a year.

A sharper way to frame it is to ask how long the worst stretch of the series usually is. At 70 percent over 200 trades, the most likely longest losing streak is four, at roughly 40 percent of series. About 68 percent of series contain a run of four or longer, and 98 percent contain a run of three or longer. A four-loss streak at a 70 percent win rate is the single most likely worst moment of the year.

QueryHow long the worst losing run of a 200 trade series usually is, at a 70 percent win rate
The exact SQL behind every number
SELECT
    concat(toString(run_length), ' losses') AS longest_losing_run,
    round(100 * (no_run_of_longer - no_run_of_this), 2) AS pct_of_series_exactly,
    round(100 * (1 - no_run_of_this), 2) AS pct_of_series_at_least
FROM
(
    SELECT
        run_length,
        arraySum(arrayFold(
            (run_mass, trade) -> arrayPushFront(
                arrayMap(mass -> mass * 0.30, arrayPopBack(run_mass)),
                0.70 * arraySum(run_mass)),
            range(200),
            arrayMap(slot -> if(slot = 0, 1.0, 0.0), range(run_length)))) AS no_run_of_this,
        arraySum(arrayFold(
            (run_mass, trade) -> arrayPushFront(
                arrayMap(mass -> mass * 0.30, arrayPopBack(run_mass)),
                0.70 * arraySum(run_mass)),
            range(200),
            arrayMap(slot -> if(slot = 0, 1.0, 0.0), range(run_length + 1)))) AS no_run_of_longer
    FROM
    (
        SELECT arrayJoin([2, 3, 4, 5, 6, 7, 8]) AS run_length
    )
)
ORDER BY run_length
Run this yourself

The mistake: comparing a streak to 0.3 to the fifth power

Here is where intuition breaks. A trader sitting on five losses reaches for the obvious calculation: 0.30 multiplied by itself five times, which is 0.243 percent, about 1 in 411. That number feels like proof something has broken.

It answers a different question. 0.3 to the fifth is the chance that five particular trades, named in advance, all lose. Nobody names them in advance. What actually happened is that a streak turned up somewhere, and a 200-trade series holds 196 overlapping five-trade windows. Across the whole series the probability is 28.6 percent, roughly 118 times the single-window figure.

QueryOne named window against somewhere in a 200 trade series, at a 70 percent win rate
The exact SQL behind every number
SELECT
    concat(toString(streak_length), ' in a row') AS losing_run,
    round(100 * pow(0.30, streak_length), 4) AS pct_in_one_named_window,
    round(100 * series_chance, 3) AS pct_somewhere_in_200_trades,
    round(series_chance / pow(0.30, streak_length)) AS times_more_likely
FROM
(
    SELECT
        streak_length,
        1 - arraySum(arrayFold(
            (run_mass, trade) -> arrayPushFront(
                arrayMap(mass -> mass * 0.30, arrayPopBack(run_mass)),
                0.70 * arraySum(run_mass)),
            range(200),
            arrayMap(slot -> if(slot = 0, 1.0, 0.0), range(streak_length)))) AS series_chance
    FROM
    (
        SELECT arrayJoin([5, 8, 10]) AS streak_length
    )
)
ORDER BY streak_length
Run this yourself

The gap holds at every length. A run of eight is about 135 times more likely across 200 trades than in one pre-chosen window, and a run of ten about 134 times. The single-window number is not wrong. It is the answer to a question nobody asked.

Why streak length says almost nothing about an edge

When an event is common under the hypothesis you want to test, seeing it cannot separate that hypothesis from the alternative. Put two candidate win rates side by side. Under 70 percent, a five-loss run somewhere in 200 trades appears 28.6 percent of the time. Under 60 percent, it appears 71.4 percent of the time. Observing the streak makes the 60 percent story about 2.5 times more likely than the 70 percent one, which is weak evidence by any standard.

An eight-loss run discriminates better, 7.4 percent against 0.88 percent, a ratio near 8.3. It is also an event you might wait years to see, which makes it impractical as a monitoring rule. The information a streak carries and how often you get to use it pull in opposite directions.

The win rate is the quantity actually in question, and the worst stretch is a poor estimator of it. Counting every win and loss over the full sample tells you far more, and bootstrapped confidence intervals put an honest range around that count. A record that looks flawless on paper and falls apart live has usually met look-ahead bias somewhere in its construction, and paper trading first surfaces that gap while nothing is at stake.

What a streak actually costs

Streak length is arithmetic about randomness. The damage is arithmetic about position size, and that part sits under your control. Take a hypothetical account risking a fixed fraction of equity on every trade. Eight straight losses, and then ten, work out to:

QueryDrawdown from an eight and a ten loss streak, by risk per trade
The exact SQL behind every number
SELECT
    concat(toString(toUInt8(round(risk_fraction * 100))), '%') AS risk_per_trade,
    round(100 * (1 - pow(1 - risk_fraction, 8)), 1) AS pct_down_after_8_losses,
    round(100 * (1 - pow(1 - risk_fraction, 10)), 1) AS pct_down_after_10_losses,
    round(100 * ((1 / pow(1 - risk_fraction, 10)) - 1), 1) AS pct_gain_to_recover
FROM
(
    SELECT arrayJoin([0.01, 0.02, 0.03, 0.05]) AS risk_fraction
)
ORDER BY risk_fraction
Run this yourself

Stretch the same streak to ten and the 5 percent line finishes 40.1 percent below its peak, needing a 67 percent gain to climb back. The 1 percent line finishes 9.6 percent down and needs 10.6 percent. Same streak, same randomness. The only variable that changed was size.

That is why position sizing carries its own literature. The Kelly criterion treats size as a growth-rate problem, and the half-Kelly and quarter-Kelly fractions most practitioners actually use are a direct concession to the streak arithmetic above. The depth of the hole a streak digs is maximum drawdown, the standard measure for it, and it moves with size and streak length together.

One caveat worth stating plainly. None of this is a reason to hold a losing position. The calculation describes how random sequences behave over a series, and it says nothing about whether the trade in front of you is worth keeping.

FAQ

How many losses in a row is normal at a 70 percent win rate?

Over 200 trades at a 70 percent win rate, the most likely longest losing streak is four, and about 29 percent of series contain a run of five or more. Five in a row is ordinary. Eight in a row, at 0.88 percent, is genuinely rare.

Does a long losing streak mean a strategy stopped working?

On its own, no. A five-loss run somewhere in 200 trades is about 2.5 times more likely at a 60 percent win rate than at 70 percent, which is weak evidence in either direction. The win-loss count over the whole sample measures the edge far better than its worst stretch does.

How do you calculate the odds of a losing streak?

Carry a counter for the current run length, from 0 up to one below the streak you care about, across all n trades. Move probability back to 0 on a win, up one step on a loss, and discard any path that reaches the full streak. What survives is the probability of no such streak, and one minus that is the answer.

Does a losing streak make the next trade more likely to win?

No. Under the independence assumption these numbers rest on, every trade carries the same win probability whatever preceded it. A streak changes the size of the hole, not the odds of the next result.


Every figure here comes from the same short recurrence and reproduces in about ten lines of code. To put your own win rate and trade count through it, or to check how a real market series has behaved over a stretch, ask the question in plain English on the Strasmore terminal.

#probability#win rate#losing streak#risk management#drawdown