September 9, 2026 · research

Why Your Backtest’s Volatility Target Misses the Risk It’s Supposed to Control

Why Your Backtest’s Volatility Target Misses the Risk It’s Supposed to Control

A strategy targets 10% annualized volatility. Its backtest reports 10.2%. That sounds close enough until you find the sizing spreadsheet used yesterday’s volatility estimate, the simulator charged no fee when leverage changed, and one overnight jump did more damage than the target was built to describe.

Take a simple BTC perpetual strategy: it holds a directional signal, sizes exposure to a 10% annualized volatility budget, and updates the position once per day. The rule is common because it’s easy to explain and easy to code. Here’s what happens when you take one day’s position apart.

The signal: a desired direction with no risk units

At Monday’s close, the signal says long. That answers which way the strategy wants to face; it says nothing about how much BTC to hold. The volatility target supplies the missing scale.

Suppose the account has $100,000 of equity and the strategy estimates daily BTC volatility at 2%. Its 10% annual target corresponds to roughly 0.63% daily volatility, using 10% divided by the square root of 252 trading days. The raw leverage is therefore about 0.63% / 2%, or 0.315 times equity: $31,500 of BTC exposure.

Already, there’s an assumption packed into that tidy calculation: BTC volatility behaves enough like a stable distribution that recent daily variation can guide tomorrow’s exposure. A volatility estimate describes recent movement. It doesn’t put a ceiling on the next move.

The estimator: which two percent?

Use a 20-day close-to-close standard deviation, annualized by the square root of 365 because the perpetual trades every day. At 2% daily volatility, that’s about 38.2% annualized. Using 252 instead gives about 31.7%, a meaningful sizing difference caused by calendar convention alone.

A 20-day window reacts quickly, but one quiet fortnight can shrink the estimate just before volatility expands. A 90-day window is steadier and slower. Exponentially weighted volatility sits between those choices, with its own half-life and dependence on the initialization. There’s no universal winner; the backtest should name the estimator and keep its settings fixed when comparing results.

Estimator choiceWhat changesFailure to watch
20-day rolling standard deviationFast response to recent movesExposure rises quickly after a quiet patch
90-day rolling standard deviationSlower, smoother sizingExposure stays high into a new volatility regime
EWMA, 10-day half-lifeRecent returns count moreResults depend on decay and warm-up choices

The timestamp: known when?

If Monday’s close is included in the estimate, the strategy can use that estimate only after Monday’s close is complete. It can then submit an order for a later execution opportunity, such as Tuesday’s first available price in the simulator. Filling at Monday’s close would let the size react to a return that had not finished yet.

This also means a daily rebalance does not continuously protect the account during the day. Monday’s position stays on through Tuesday’s jump, even if the signal or volatility changes at 10:00 UTC. That’s a design choice; the paper account should run the same schedule.

The order: exposure changes have a price

On Tuesday, the estimate rises from 2% to 3%. The target exposure falls from $31,500 to $21,000. Selling $10,500 of the perpetual isn’t free. At a 5 basis point taker fee, the fee alone is $5.25. If the strategy crosses the spread and incurs 3 basis points of impact, that adds about $3.15. Funding is separate: its cash flow depends on the position held at the funding timestamp and the rate actually applied.

Small amounts add up when a strategy cuts risk after every burst and restores it after every lull. Report turnover from the sizing rule itself, plus fees, spread and impact for those trades. A frictionless volatility target can quietly become a high-turnover strategy.

The result: a target is not a tail-risk promise

Imagine volatility estimates 2% daily and the strategy holds $31,500 notional against $100,000 equity. BTC then falls 12% before the next scheduled rebalance. The rough mark-to-market loss is $3,780, or 3.78% of equity, before fees and funding. A 10% annualized target didn’t prevent that loss; it translated an estimate of ordinary variation into a position size.

$31,500initial notional at 2% daily volatility
$10,500notional to unwind when volatility reaches 3%
3.78%equity loss on a 12% move at initial size

The risk is sharper if the rule has no leverage cap. After a long quiet stretch, estimated volatility can become tiny and the formula can demand a position larger than the account’s margin or the market’s capacity. Put a cap in the sizing rule and include it in the backtest. Then track how often it binds; a cap that binds frequently means the advertised target rarely governs actual exposure.

The audit: replay the rule, not just its curve

For each rebalance, record the return window, volatility estimate, annualization factor, target, leverage cap, desired notional, executed notional, turnover, fees, impact and funding. When target and realized volatility diverge, these fields let you see whether the estimator lagged, trading costs ate into returns, or exposure limits changed the strategy.

Finally, run the same sizing code and rebalance timing in paper trading. Compare desired exposure with actual position and note missed or delayed orders. A risk target becomes useful when every step from estimate to held position can be explained; the percentage on the dashboard is only the first step.

volatility targetingposition sizingcrypto futuresbacktesting
← All posts