始める

How to Annualize Volatility and Sharpe Without Quietly Corrupting the Number

Scaling daily volatility to annual with the square-root-of-time rule assumes returns are independent. Crypto returns are not, and here is how the shortcut quietly warps your risk number.

The first time I annualized a Sharpe ratio for a strategy, I did what everyone does. I took the daily numbers, multiplied by the square root of some number of periods, and wrote it in the deck. It looked fine. It was also wrong, in a way that took me a while to notice, because the error is invisible right up until it costs you.

The mechanics are simple enough that people stop thinking about them, which is exactly the problem. So here is the whole thing, including the part that breaks in crypto.

The rule, and why it works when it works

Volatility scales with the square root of time. If you have the standard deviation of daily returns and you want annual volatility, you multiply by the square root of the number of trading periods in a year. For daily equity data that is roughly 252 trading days, so you multiply daily vol by the square root of 252, which is about 15.9.

Sharpe scales the same way because it is a ratio of return to volatility. Mean return scales linearly with time and volatility scales with the square root of time, so an annual Sharpe is the daily Sharpe times the square root of the period count. Same 15.9 for daily equity data. This is why a strategy showing a daily Sharpe of 0.1 gets reported as an annual Sharpe of roughly 1.6.

The number you pick for periods depends entirely on your sampling frequency, and this is where people first go wrong. A few rules of thumb:

  • Daily equity returns: 252, since markets are closed on weekends and holidays.
  • Daily crypto returns: 365, because crypto never closes. Using 252 here understates your annual vol by a noticeable margin.
  • Hourly crypto returns: 24 times 365, so 8,760. The square root of that is about 93.6.
  • Weekly returns: 52. Monthly returns: 12.

Mixing these up is the most common mistake I see, and it is the least interesting one, because it is just bookkeeping. Count your periods correctly and you are past it. The real problem is the assumption hiding underneath the whole method.

The assumption nobody states out loud

The square-root-of-time rule only holds if your returns are independent from one period to the next. That is the entire load-bearing assumption. When today's return tells you nothing about tomorrow's, the variances add cleanly, and scaling by the square root of time is exact.

Financial returns are almost never independent. They have autocorrelation, which just means one period's return is statistically related to the next. And the direction of that relationship decides whether the naive scaling overstates or understates your true risk.

If returns are positively autocorrelated, meaning up periods tend to follow up periods and drawdowns tend to persist, then the real annual variance is larger than the square-root rule predicts. Trends compound. A losing streak does not cancel out, it stacks. The naive number understates your risk, which is the dangerous direction, because your reported vol looks tame while the real distribution has fatter tails than you priced in.

If returns are negatively autocorrelated, meaning moves tend to reverse, the real annual variance is smaller than the rule predicts. Here the naive scaling overstates risk. Your Sharpe looks worse than it actually is. This sounds harmless, but it makes you leave size on the table, and it can make a genuinely good mean-reverting strategy look mediocre next to a trend strategy that is secretly riskier than its number suggests.

Crypto tends to exhibit both, depending on the timeframe. Short-horizon microstructure noise often mean-reverts. Longer-horizon regimes trend hard. So the same asset can be understating risk on one timescale and overstating it on another, using the exact same formula.

How to fix it without a PhD

You do not need to abandon the square-root rule. You need to correct it, and the correction is a known adjustment. When returns are autocorrelated, the variance of a multi-period return picks up cross terms between periods. The standard fix is to inflate or deflate your variance estimate by a factor that depends on the autocorrelation at each lag. The finance version of this is the Lo adjustment for Sharpe ratios, which scales the naive annual Sharpe by a factor built from the first several autocorrelation coefficients of your returns.

You do not have to memorize the formula to use the idea. Here is the workflow I actually run:

  1. Compute the autocorrelation of your return series at lags 1 through 10 or so. Most stats libraries do this in one line.
  2. Look at lag 1 first. If it is close to zero, the naive scaling is fine and you can move on. If it is meaningfully positive or negative, the correction matters.
  3. If you see positive autocorrelation, treat your reported annual vol as a floor, not the truth. Your real risk is higher. Size down accordingly.
  4. If you see negative autocorrelation, know that your Sharpe is being penalized by the naive formula, and the strategy may be better than it reads.
  5. For anything going in front of capital, apply the Lo adjustment properly rather than eyeballing it. It is a small amount of code and it removes the guesswork.

One more failure mode worth naming. Sampling frequency changes the autocorrelation structure, so you cannot compute a Sharpe on hourly data and expect the annualized result to match one computed on daily data for the same strategy. They will disagree, and neither is automatically the right one. Pick the frequency that matches how the strategy actually trades and holds, then annualize from there. A strategy that holds for days should be measured on daily returns, not on the minute bars your data feed happens to produce.

What this means in practice

When I look at a backtest now, the annualized Sharpe is the last thing I trust, not the first. I want to see the raw return series, the sampling frequency, the period count used for scaling, and the lag-1 autocorrelation. If someone hands me an annual Sharpe of 2.5 and cannot tell me those four things, the number is decoration. We surface the raw series alongside the headline metrics inside Blockcircle for exactly this reason, because the summary statistic is where the corruption hides and the series is where you can see it.

The honest version of annualization is boring. Count your periods right for the market you are in, check whether your returns are independent, and correct the scaling when they are not. Do that and your annual number stops being a story you tell yourself and starts being something you can size a position on. Skip it and you will eventually meet the gap between your reported risk and your real one, usually at the worst possible time.

執筆者
Blockcircle チーム

暗号資産、株式、コモディティ、貴金属、予測市場を対象とする金融市場インテリジェンス。