STRASMORE/EXPLORE 2,173 QUERIES 22Y EQUITIES · 12Y OPTIONS

2,173 answered market questions

every one with its exact SQL, its result and the date it was computed · free, no signup

How Long a Losing Streak Is Normal
Chance of at least one losing streak of five, eight or ten in a 200 trade seriesranking · 2026-08-17 · 5×4Preview: 5 ranked values, smallest first. Chance of at least one five loss run at a 70 percent win rate, by series lengthranking · 2026-08-17 · 5×2Preview: 5 ranked values, smallest first. One named window against somewhere in a 200 trade series, at a 70 percent win rateranking · 2026-08-17 · 3×4Preview: 3 ranked values, largest first. How long the worst losing run of a 200 trade series usually is, at a 70 percent win rateranking · 2026-08-17 · 7×3Preview: 7 ranked values, largest first. Drawdown from an eight and a ten loss streak, by risk per traderanking · 2026-08-17 · 4×4Preview: 4 ranked values, smallest first.
Chance of at least one losing streak of five, eight or ten in a 200 trade series

Chance of at least one losing streak of five, eight or ten in a 200 trade series

most recentas of ranking 5×4read in context →
Chance of at least one losing streak of five, eight or ten in a 200 trade series — 5 rows by 4 columns, computed from US exchange, SIP and OPRA data.
win_rate_pctpct_run_of_5pct_run_of_8pct_run_of_10
75%13.4440.2210.014
70%28.6270.8850.079
65%49.5282.7960.343
60%71.3717.3561.199
55%87.96916.5273.535
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
$