Every chart tool that draws a band, sizes a range, or flags an unusual day rests on the same underlying number: an estimate of how much the market has recently been moving. The most common way to produce that number is rolling volatility — and despite the quant-sounding name, the idea fits in a sentence: measure the spread of recent price changes over a fixed lookback window, then slide the window forward one bar at a time.
This primer explains what rolling volatility is, how it's calculated, what the window length changes, and what the estimate is actually good for on a chart. It is descriptive throughout: volatility measures how much price has been moving, not where it's going next.
Volatility is a measure of dispersion — how spread out a market's recent price changes have been. A market that moves about half a percent a day is a low-volatility market; one that swings two percent a day is a high-volatility one. (For a fuller plain-English treatment of dispersion, standard deviation, and what "normal" means statistically, see Is This Price Move Normal? — this primer only needs the headline idea.)
The problem is that volatility isn't constant. A single number computed over a market's whole history would average calm years and crisis years together and describe neither. Rolling volatility solves this by measuring dispersion over a fixed recent window — the last 30, 60, or 90 bars, say — and recomputing on every new bar. The result is not one number but a moving series: an estimate of how volatile the market is right now, updated continuously as the window slides forward.
The standard recipe has three steps, and none of them requires more than a spreadsheet.
Step 1 — convert prices to returns. Take the percentage change from each close to the next (some practitioners use log returns; at daily horizons the difference is small). This step matters more than it looks, and the next section explains why.
Step 2 — take the standard deviation over the window. For each bar, compute the standard deviation of the returns in the lookback window ending at that bar. That single number is the rolling volatility at that bar. A 60-bar window on a daily chart means each day's estimate summarizes roughly the last three months of daily moves.
Step 3 (optional) — annualize. Daily volatility is often scaled to a yearly figure by multiplying by the square root of the number of trading periods in a year (√252 for daily data). That's a unit conversion for comparability — a daily standard deviation of 1% corresponds to roughly 16% annualized — not extra information.
That's the whole construction. No fitting, no tuning, no model assumptions beyond the window itself — which is exactly why it's worth asking, later in this article, whether something this simple actually holds up.
A subtlety that trips up many first implementations: the standard deviation is taken over returns, not raw prices. Dispersion measured on price levels mostly captures how far price has trended, not how much it fluctuates — in a steady uptrend, price-level dispersion balloons even if day-to-day movement is perfectly calm. Measuring in return space separates the size of typical moves from the direction price has been drifting. The difference between these two measurement choices runs deeper than this primer needs to go, and it has visible consequences for how bands behave in trends; Oisigma's How It Works page shows where the return-space choice sits inside a full band construction.
The window is the one real decision in the construction, and it sets the estimate's memory:
There is no universally correct setting — the trade-off is structural, and different lengths emphasize different horizons. A 30-day rolling volatility and a 90-day rolling volatility of the same market are both true; they're just answering the question "how volatile is this market?" over different definitions of "recently." What matters is knowing which question your window is asking.
On its own, a rolling volatility series tells you when a market's typical move size is expanding or contracting — useful context for reading any chart. But its most common practical role is as the engine inside other tools: a rolling volatility estimate is what turns "price is here" into "price is here, and a typical next move is about this big." Expected-range bands, including Oisigma's BTM, are built exactly this way — recent returns in, dispersion measured, a range projected around price, recalculated every bar.
That construction is only as trustworthy as its measured track record, which is a property worth checking rather than assuming — the question the word calibration covers, and the pillar article defines in full. For the rolling-volatility construction specifically, that record is published: in Oisigma's working paper, a band built from rolling volatility contained the next close about 71% of the time at one standard deviation on 97 years of S&P 500 daily data — and about 94% at the outer band across a 40-instrument universe. Historical figures, measured in research; past behavior is not a guarantee of future results.
A fair objection: institutional risk models estimate volatility with far more machinery — GARCH models that let volatility cluster, exponentially weighted schemes that let recent days count more. Surely those beat a plain rolling window?
On the calibration task — does the band's stated coverage match its realized coverage — the published answer is: not measurably. The working paper compared the rolling-window estimate head-to-head against GARCH and exponentially weighted alternatives, and the three were statistically indistinguishable on that task; the summary is on the Proof page. The construction around the estimate mattered far more than the sophistication of the estimate itself. A future article will unpack that comparison properly; the takeaway for this primer is narrower — choosing the simple estimator does not, on the published evidence, cost you calibration.
Honesty about the same published record: a rolling window is, by construction, backward-looking. When volatility spikes faster than recent history can register — the first days of a fast crisis — a rolling estimate lags reality, and a band built on it runs too narrow until the window catches up. That limit is documented, not hidden: it's stated on the Proof page alongside the results. A rolling estimate describes recent behavior faithfully; it does not foresee breaks with that behavior.
Rolling volatility is one of those concepts that clicks fastest when you watch it move: the window sliding forward, the estimate tightening through calm stretches and expanding after big days, the range around price reshaping itself bar by bar. BTM puts that construction on a TradingView chart — an expected range built from rolling volatility, recalculated every bar, with its full methodology published. If you'd like to see the estimate this article describes doing its job on the markets you actually follow, you can start a free 30-day trial and watch the window roll in real time.
Oisigma provides descriptive market analytics for educational use. It is not investment advice, does not predict prices, and does not provide buy or sell signals. Statistics referenced are historical and were measured in our working paper (not peer-reviewed); past behavior is not a guarantee of future results. Trading and investing involve substantial risk of loss, including the possible loss of all capital invested. Leveraged products (futures, options, margin) carry additional risk and can result in losses that exceed your initial investment. Bollinger Bands® is a registered trademark of John Bollinger; Oisigma is not affiliated with or endorsed by Mr. Bollinger. RiskMetrics® is a registered trademark of MSCI Inc.; Oisigma is not affiliated with or endorsed by MSCI Inc. Nothing in this article is a recommendation to use any particular strategy. Read the full Disclaimer →
Try it free for 30 days and see the range update as new bars print, on whatever symbols and timeframes you actually trade.
30 days free, then $15/mo. Cancel anytime from your account.
Pick up where you left off.