Aan de slag

Rolling vs Full-Sample Risk Statistics and Why a Single Sharpe Hides the Story

One lifetime Sharpe averages over regimes that behaved nothing alike. Here is how to compute rolling Sharpe, volatility, and downside deviation, and how to read the resulting time series.

A friend pastes me a backtest and the headline is one number. Sharpe of 1.4 over eight years. Looks great, and I get why it feels like a verdict. But that number is an average over eight years of behavior, and eight years is long enough to contain two or three completely different markets stitched together. A single Sharpe tells you the strategy was net positive relative to its wiggle. It does not tell you whether the edge was steady, whether it lived entirely in one violent 2020-style window, or whether it quietly died two years ago and the old glory is still propping up the mean.

The fix is not complicated. Instead of computing your risk stats once over the whole history, you compute them over a sliding window and plot the result as a time series. You stop asking what the Sharpe was and start asking what the Sharpe was doing.

What a full-sample number quietly averages away

Say a strategy earned most of its return in a single 18-month stretch and roughly broke even the rest of the time. The full-sample Sharpe can still print as respectable because the good stretch drags the mean up and the flat periods barely move volatility. You would look at that 1.4 and size into it as if it were dependable. It was never dependable. It was one good idea that worked for a while and then stopped, dressed up by arithmetic that has no sense of time.

Volatility hides the same way. A lifetime vol of, say, 15 percent annualized can be the blend of a sleepy 8 percent regime and a chaotic 30 percent regime. If you size positions off the 15, you are chronically undersized in calm markets and dangerously oversized when things get loud, because the single number never told you which regime you were standing in.

Computing the rolling versions

Start from a return series, daily is fine. Pick a window length, call it N. Then for each point in time you compute the statistic using only the last N returns, step forward one day, and repeat. You end up with a series that shows how each measure evolved.

  • Rolling Sharpe. Over each window, take the mean return, subtract the per-period risk-free rate if you care about it, divide by the standard deviation of returns in that window, then annualize by multiplying by the square root of the periods per year. Roughly 252 for daily.
  • Rolling volatility. The standard deviation of returns inside the window, annualized the same way with the square root of 252. This is the cleanest of the three to read because it responds fast to regime changes.
  • Rolling downside deviation. Same idea as volatility but you only count returns below a threshold, usually zero or the target return. Square the shortfalls, average them over the full window count not just the down days, take the square root, annualize. This is the denominator of the Sortino ratio, and it separates strategies that are volatile because they rip upward from ones that are volatile because they bleed.

One thing that trips people up. When you compute downside deviation, divide the sum of squared shortfalls by the total number of observations in the window, not by the number of negative days. Dividing by the negative count inflates the measure and makes it jumpy, and it stops being comparable across periods with different hit rates.

Reading the series once you have it

The plot is where the story lives. A healthy edge shows a rolling Sharpe that wobbles around a positive level and keeps returning to it. A decaying edge shows a rolling Sharpe that steps down to a new, lower plateau and stays there. That second pattern is the one that matters, because it is invisible in the full-sample number and it is usually the truth about a strategy that got crowded or whose signal stopped working.

Here is the workflow I actually run when someone hands me a track record:

  1. Compute rolling Sharpe, vol, and downside deviation over a medium window and plot all three against the equity curve.
  2. Look for the rolling Sharpe dropping to a lower plateau and staying there. A dip that recovers is a drawdown. A step that never comes back is decay.
  3. Check whether the current rolling vol is near the full-sample vol or far from it. If it is far, your position sizing built on the lifetime number is wrong right now.
  4. Compare rolling downside deviation against rolling vol. If downside deviation is climbing while total vol looks flat, the character of the returns is getting worse even though the headline risk looks calm.
  5. Only then look at the full-sample stats, as a summary, not as the finding.

The failure mode I see most is trusting a strong lifetime Sharpe on a strategy whose rolling Sharpe has been sitting near zero for the back third of the sample. The mean is still good. The recent behavior is not. You are sizing off history that no longer describes the thing.

The window length tradeoff

Everything above depends on N, and there is no free choice here. A short window, say a couple months of daily data, reacts fast. It will catch a regime change quickly, which is what you want, but it is also noisy. With few observations the standard deviation estimate is unstable, so the rolling Sharpe swings around wildly and you will see edges appear and vanish that were never really there.

A long window, say a year or more, is smooth and trustworthy per point, but it lags. By the time a one-year rolling Sharpe rolls over, the edge may have been gone for months, because the window is still carrying all that old good data. You are looking at a measurement that is partly a memory.

The rule of thumb I use is to look at two windows at once, a short one for responsiveness and a long one for stability, and treat a signal as real when both agree. If the short window drops and the long window follows a while later, that is decay you can believe. If only the short window is thrashing, that is usually noise. Match the window to the frequency of the effect you care about too. Do not use a two-week window to judge a swing strategy that holds for weeks, and do not use a one-year window to monitor something that trades intraday. This kind of regime-aware reading is baked into how we show performance in the market scorecards on Blockcircle, because a single lifetime stat gives people false confidence more often than it helps.

None of this replaces the full-sample number. It just refuses to let it be the whole answer. Compute the rolling version, plot it, and let the shape of the line tell you when the edge was working and when it stopped. Most of the time the full-sample Sharpe was hiding exactly the part you needed to see.

GESCHREVEN DOOR
Blockcircle-team

Financiële marktinformatie over crypto, aandelen, grondstoffen, edelmetalen en voorspellingsmarkten.