The 3-5-7 Rule in Options, Examined
The 3-5-7 rule caps risk at 3% per trade, 5% per underlying and 7% of the account. Where the folk rule came from, and how it holds up against the data.
The 3-5-7 rule is a position sizing convention repeated across options forums and broker blogs: risk at most 3% of the account on a single trade, at most 5% on a single underlying, and at most 7% of the account across every open position at once. It governs size, never selection. Nothing in it says what to trade, and it cannot manufacture an edge that is not already there.
What the 3-5-7 rule says
The three numbers apply to money at risk, not to money deployed.
- 3% per trade. The maximum loss on one position stays under 3% of account equity. On a hypothetical $100,000 account, that ceiling is $3,000.
- 5% per underlying. Every position on the same stock counts once. A long call, a call spread, and a short put on one name draw from a single 5% budget.
- 7% in aggregate. Summed maximum loss across all open positions stays under 7% of equity at any moment.
The first limit bounds one wrong idea. The second bounds the same wrong idea expressed three ways. The third bounds the session when several positions move together.
Options make the first number unusually easy to compute. For a long call or put, the premium paid is the maximum loss, so a 3% cap is a cap on premium at risk. Take an illustrative account of $100,000 and a contract quoted at $4.50: one contract covers 100 shares, costs $450, and six of them put $2,700 at risk, inside the $3,000 line. For a defined risk spread, the maximum loss is the width of the strikes minus the credit received. For an undefined risk position such as a naked short call, no arithmetic maximum exists at all, and the rule as usually quoted has nothing to say about it. Swapping in the margin requirement, or a mental stop, in place of a true maximum loss quietly breaks the arithmetic the rule depends on.
Where the rule comes from
Search results present the 3-5-7 rule as settled practice. It is folk wisdom. No paper, no dataset, and no published derivation stands behind those three integers, and older circulating versions describe share trading rather than options. The right weight to give the specific values is the weight given to a convention, not to a finding.
The family the rule belongs to is far better documented. Fixed fractional sizing, in which every position risks a constant share of equity, runs through twentieth century trading literature. Its formal ancestor is the Kelly criterion (John Kelly, 1956), which derives an optimal fraction from an estimated edge and the payoff odds, and whose practical use in markets is almost always a half or a quarter of the formula's output, since an over-estimated edge produces ruinous sizing. The 3-5-7 rule skips the estimate and picks a small number. That substitution is the entire design: robust to knowing nothing, optimal for nothing.
What a 5% per-underlying cap is measured against
A per name cap only means something next to how far a single name travels. The panel below takes seven household tickers over the twelve months ending June 30, 2026, and measures close to close moves on regular session prices.
The exact SQL behind every number
WITH daily AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
toFloat64(argMax(close, window_start)) AS px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'KO', 'JNJ', 'AAPL', 'MSFT', 'NVDA', 'TSLA')
AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2025-07-01')
AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY ticker, d
),
moves AS (
SELECT ticker, d,
100 * (px / any(px) OVER (PARTITION BY ticker ORDER BY d
ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) - 1) AS move_pct
FROM daily
)
SELECT ticker,
count() AS sessions,
round(quantileDeterministic(0.5)(abs(move_pct), cityHash64(ticker, d)), 2) AS median_abs_move_pct,
round(quantileDeterministic(0.95)(abs(move_pct), cityHash64(ticker, d)), 2) AS p95_abs_move_pct,
round(100 * countIf(abs(move_pct) >= 3) / count(), 1) AS pct_days_beyond_3,
round(min(move_pct), 2) AS worst_day_pct
FROM moves
WHERE isFinite(move_pct)
GROUP BY ticker
ORDER BY p95_abs_move_pctThe range across one year is wide. The steadiest name on the panel, SPY, posted a median absolute one-day move of 0.46% and spent 0% of its 250 sessions moving 3% or more in either direction. The busiest, TSLA, ran a median of 1.83%, crossed the 3% mark on 30.4% of sessions, and printed a single worst session of -8.39%. Its 95th percentile day, 5.45%, is more than three times the 1.62% figure at the top of the table.
One fixed percentage cap is doing very different work on different names. A 5% underlying budget on a name with a 0.46% typical day is a loose constraint. The same 5% on a name that moves 1.83% on a median day, and much further on an outlier, is spent quickly. Sizing conventions that scale the cap by the underlying's own volatility exist for exactly this gap, and liquid versus volatile options walks through how the difference shows up in the contracts themselves.
Losses arrive in clusters
The 7% aggregate limit is the part of the rule carrying the most weight, and it is aimed at a real property of markets: bad sessions are not spread evenly. The next panel measures the same seven names over the same window, tracking the worst five session stretch and the deepest fall from a running high inside the window.
The exact SQL behind every number
WITH daily AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
toFloat64(argMax(close, window_start)) AS px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'KO', 'JNJ', 'AAPL', 'MSFT', 'NVDA', 'TSLA')
AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2025-07-01')
AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY ticker, d
),
win AS (
SELECT ticker, d, px,
any(px) OVER (PARTITION BY ticker ORDER BY d
ROWS BETWEEN 5 PRECEDING AND 5 PRECEDING) AS px_5_ago,
max(px) OVER (PARTITION BY ticker ORDER BY d
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS running_high
FROM daily
)
SELECT ticker,
round(min(100 * (px / px_5_ago - 1)), 2) AS worst_5_session_pct,
round(min(100 * (px / running_high - 1)), 2) AS deepest_drawdown_pct,
round(100 * countIf(px / running_high - 1 <= -0.1) / count(), 1) AS pct_days_10pct_below_high
FROM win
WHERE isFinite(px_5_ago)
GROUP BY ticker
ORDER BY deepest_drawdown_pctThe deepest in-window fall belongs to MSFT at -34.99%, and that name sat more than 10% under its running high on 59% of the window's sessions. Its worst five session stretch measured -14.41%. At the other end, KO bottomed -8.49% under its running high and spent 0% of sessions that far down. Every reading here starts its running high on July 1, 2025, so these are in-window figures rather than all-time ones.
Read that against a 3% per trade cap. A trader holding three positions, each sized at the full 3% ceiling, is carrying 9% at risk, above the 7% aggregate limit already, and those three positions can easily be one exposure wearing three names. The aggregate cap and the per underlying cap are the parts of the rule doing the hard work, which is also the subject of concentration risk.
The index tells a similar story on a longer clock. Eleven calendar years of one-day moves in the S&P 500 tracker:
The exact SQL behind every number
WITH daily AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
toFloat64(argMax(close, window_start)) AS px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2015-12-01')
AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY d
),
moves AS (
SELECT d,
100 * (px / any(px) OVER (ORDER BY d ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) - 1) AS move_pct
FROM daily
)
SELECT toYear(d) AS year,
count() AS sessions,
countIf(move_pct <= -1) AS days_down_1pct,
countIf(move_pct <= -3) AS days_down_3pct,
round(min(move_pct), 2) AS worst_day_pct
FROM moves
WHERE isFinite(move_pct) AND toYear(d) >= 2016
GROUP BY year
ORDER BY yearSessions closing 3% or more lower cluster into a handful of years rather than arriving on a schedule. 2020 carried 16 of them and a worst session of -11.63%, while 2017 carried 0. The count of sessions closing 1% or more lower swings from 4 in the quietest year to 65 in the busiest. The final row covers 123 sessions ending June 30, 2026, so it is a partial year. A fixed 7% aggregate cap is calibrated for the quiet years by construction and meets its real test in the loud ones. A long option can also lose its entire premium overnight with no daily move of that size ever printing on the underlying, the mechanism overnight gaps describes.
What the rule handles, and what it leaves out
A fixed fraction rule handles the failure mode that empties accounts fastest: one position large enough to matter. Any small constant beats no constant, and a memorable one gets applied under pressure, which is when sizing decisions actually get made.
What it leaves out is most of the detail. It does not scale with volatility, so a 3% stake in a steady name and a 3% stake in a name moving 1.83% a day count as the same bet. It ignores correlation across tickers, so a portfolio of seven positions inside the caps can still be one trade. It says nothing about time decay, which erodes a long option's value on quiet sessions with no adverse move at all (option theta covers the mechanics). It ignores costs, and commissions plus the bid-ask spread are a recurring drag a percentage cap never sees (what it costs to trade options puts figures on that). It also assumes the maximum loss is knowable, which is false for short undefined risk positions.
FAQ
What is the 3-5-7 rule in options trading?
It is a position sizing convention: no more than 3% of account equity at risk on one trade, no more than 5% on any one underlying, and no more than 7% at risk across all open positions at once. The numbers describe maximum loss, not capital deployed.
Is the 3-5-7 rule an official or proven rule?
No. It circulates as trading folk wisdom, with no published derivation or supporting study behind the specific figures. The broader family it belongs to, fixed fractional sizing, is well documented, and the Kelly criterion is its formal version.
How does the 3-5-7 rule apply to a long call or put?
The premium paid is the maximum loss on a long option, so the 3% limit caps total premium in one trade. On an illustrative $100,000 account that is $3,000 of premium, which at a $4.50 quoted contract price works out to six contracts.
Why does the 5% per-underlying limit exist separately?
Several positions on one stock behave as one exposure during a large move in that stock. Over the twelve months ending June 30, 2026, TSLA moved 3% or more on 30.4% of sessions, and separate contracts on that name would have moved together on each of those days.
Does the rule fit covered calls and other income positions?
The maximum loss on a covered call is the stock position itself minus the premium collected, which usually sits far above 3% of an account, so the cap gets applied to the share position rather than to the option leg. Covered calls sets out the payoff arithmetic.
Every figure above comes from a stored query over real market data, and each panel's SQL is one click away if you want to re-run it against a different set of names on the Strasmore terminal.