Estimating and Annualizing Volatility from Five-Minute Returns
Summary
The document explains how to estimate volatility from five-minute EUR/USD price observations and distinguish the estimation window from the horizon used to annualize the estimate. Consecutive price ratios minus one give simple five-minute returns; a rolling standard deviation measures their dispersion over the selected window. To express that volatility per year, the answer applies the square-root-of-time rule, scaling by the square root of the number of five-minute intervals in a trading year. It assumes 260 banking days, with 288 five-minute intervals per day.
The example of a ten-day rolling window determines how much recent data enters each estimate; it does not determine the annualization horizon. Rolling the calculation simply advances the window through time. The document gives a conceptual explanation rather than empirical validation. Its annualization relies on the square-root-of-time approximation and the stated trading calendar, and does not discuss how serial dependence, intraday seasonality, or other return features could affect the estimate. An alternative answer briefly recommends exponentially weighted volatility but provides no supporting details.
Key ideas
- Consecutive price ratios minus one define simple returns over each five-minute interval.
- A rolling standard deviation estimates the dispersion of returns within the selected observation window.
- Annualizing five-minute volatility uses the square root of the number of intervals in the assumed trading year.
- The rolling window length and the annualization horizon serve different purposes.
- The square-root-of-time rule is an approximation, and the answer does not examine its assumptions.
Tags
Full text
# Volatility of EUR/USD: is this correct?
# Volatility of EUR/USD: is this correct?
Let `x` be the `closeBid` price of EUR/USD, sampled every 5 minutes during year 2015 (historical data). This is the variation (is it correct to call it 5-minutes returns?) for each 5-minutes period:
```
r = x[1:] / x[:-1] - 1
```
What's the formula to have the (moving) volatility over 1 year?
I tried this way:
```
rolling_stddev(r, 288*10) # 10 days, since 288 periods of 5 minutes in 1 day
```
The results is:
Is it a correct measure of volatility? (i.e. standard deviation of the returns)
## Answer by Richi Wa (score 2, accepted)
https://quant.stackexchange.com/a/22633
First I thought about voting to close this question as it deals with Matlab synthax a lot. I ignore the Matlab stuff.
You have 5-minutes data. So an estmator of volatility over any sample of size $N$ (e.g. 100) will be an estimator of the vol of your 5-min returns. Usually volatility is quotes as "per annum" or "pa". This means that using the square root of time rule you can multiply your estimate by the number of 5-minute intervals in a year. Thus if you want to quote vola pa then $$ T = 12*24*260 = 288*260 $$ assuming 260 banking days and you multiply your estimate by $\sqrt{T}$. If you do the calculation for 10 days then $T=288*10$.
The $T$, the holding period, is independent from the number of returns that you use in order to estimate the 5-minutes vol.
Doing the things rolling does not change anything of the things above. You just push a window forward by 1 return each time.
## Answer by Chris Degnen (score 0)
https://quant.stackexchange.com/a/22636
It's better to use an exponentially weighted moving average.
There's a nice tutorial video by the Bionic Turtle hereShown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.