Interpreting Realized Volatility and Two-Scale Estimates
Summary
The document explains how to interpret realized variance (RV) and two-scale realized volatility (TSRV) calculated from high-frequency log returns. RV is the sum of squared returns over the observation interval; under a continuous-time model without jumps or market microstructure noise, it estimates integrated variance. With jumps it instead captures quadratic variation, while ordinary RV can be distorted by microstructure noise. TSRV combines estimates at slower and faster sampling scales to reduce noise effects and includes a finite-sample adjustment.
Taking the square root of RV or TSRV gives volatility for the same interval covered by the data. The response emphasizes that annualizing or rescaling changes units for comparison, but does not by itself make the estimate a meaningful forecast for a longer horizon; that interpretation requires strong assumptions such as constant variance. Comparisons across intervals are clearest when the estimators span the same period, since volatility can change within a trading day. The discussion offers conceptual interpretation and caveats rather than a detailed validation of the provided implementation.
Key ideas
- Realized variance sums squared high-frequency log returns over the observation interval.
- The square root of RV or TSRV estimates volatility for that same interval.
- Without jumps or microstructure noise, RV is consistent for integrated variance; with jumps it captures quadratic variation.
- TSRV combines sampling scales to address microstructure noise and finite-sample bias.
- Time scaling helps compare units, but interpreting scaled estimates over longer horizons relies on modeling assumptions.
Tags
Full text
# How to interpret Realized Volatility and TSRV using R
# How to interpret Realized Volatility and TSRV using R
I am looking at some high frequency data and I would like to know how to interpret and compare Realized volatility (RV) and Two Scale Realized Volatility (TSRV). References below. Given X is the log return of a stock
$$ [X,X]_{T}^{all} = \sum\limits_{i=1}^{n} (X_{t_{i+1}} - X_{t_{i}})^2 $$
Here subscript all means use all the data. In my case my data is second by second so it would be the sum of the differences of squared log returns 1 second apart.
To compute RV in R I have a function that takes prices, takes there log, then differences, squares them and sums them up:
```
RV<-function(prices)
{
logprices = log(as.numeric(prices))
logreturns = diff(logprices)
return(sum(logreturns^2))
}
```
the Two Scale Realized Volatility (TSRV) partitons the whole sample 1 to n in to K subsamples. In my case K= 300. So there will be a moving window time301-time1, time302 -time 2...and the RV for those windows will be averaged over.
$$[X,X]_{T}^{K} = \dfrac 1K\sum\limits_{i=1}^{n-K+1} (X_{t_{i+K}} - X_{t_{i}})^2 $$ Then $$ \text{TSRV} = \Big(1- \dfrac zn\Big)^{-1}\Big([X,X]_{T}^{K} - \dfrac zn [X,X]_{T}^{all}\Big)$$ where $z = (n-K+1)/K$.
Taking the difference between $$[X,X]_{T}^{K}$$ and $$[X,X]_{T}^{all}$$ cancels the effect of microstructure noise. The factor $(1-z/n)^{-1}$ is a coefficient to adjust for finite sample bias.
In R there is a function to calculate TSRV:
```
myTSRV<-function (pdata, K = 300, J = 1)
{
#pdata contains prices for a stock
#K the slow time scale = 300 seconds
#J is the fast time scale = 1 second
logprices = log(as.numeric(pdata))
n = length(logprices)
nbarK = (n - K + 1)/(K)
nbarJ = (n - J + 1)/(J)
adj = (1 - (nbarK/nbarJ))^-1 #adjust for finite sample bias
logreturns_K = logreturns_J = c()
for (k in 1:K) {
sel = seq(k, n, K)
logreturns_K = c(logreturns_K, diff(logprices[sel]))
}
for (j in 1:J) {
sel = seq(j, n, J)
logreturns_J = c(logreturns_J, diff(logprices[sel]))
}
TSRV = adj * ((1/K) * sum(logreturns_K^2) - ((nbarK/nbarJ) * (1/J) * sum(logreturns_J^2)))
return(TSRV)
}
```
I took tick data for IBM for about $2$ hours and calculated the RV and and TSRV with $K= 300$ seconds and $J= 1$ second for about $2$ hours.
I have a few questions.
- The RV is in the range of .00002 to .00005. How do I interpret this? In the literature RV is also called integrated variance. I want the volatility so do I need to square root these number to get to .0044 to .007?
- Even if I square root them what does .0044 or .007 mean? The volatility for IBm during those 2 hours was .44% to .7%?
- Does .0044 and .007 need to be normalized to an annual or daily number somehow? Can you suggest how?
- How does one compare the RV or TSRV from different length intervals. Let's say I have an RV that is calculated using 2 hours of data. How do I compare it to and RV using 6 hours of data?
References
All of my post is from: https://lirias.kuleuven.be/bitstream/123456789/282532/1/AFI_1048.pdf
original paper for TSRV: http://wwwf.imperial.ac.uk/~pavl/AitSahalia2005.pdf
R code getAnywhere("TSRV")
## Answer by Colin T Bowers (score 3, accepted)
https://quant.stackexchange.com/a/18965
I'll address your questions in order:
1a) For TSRV constructed using high frequency returns from NYSE market open to market close on a single day, the output should be numbers on the order of magnitude of 1e-4 to 1e-5. In other words, your numbers look about right. I got these number from calculating TSRV for IBM data myself using Kevin Sheppard's MatLab code for TSRV.
1b) RV is not called integrated variance in the literature. In a continuous-time modelling framework without jumps or microstructure noise, RV is consistent for integrated variance. If you include jumps, RV incorporates the jump component and so is consistent for quadratic variation = integrated variance plus jump variance. If you include microstructure noise, RV diverges. Note, the other answerer on this question suggested that TSRV is consistent for integrated variance, but not quadratic variation. To my knowledge, this is incorrect. See my comment on that answer for more detail. (UPDATE: The other answerer was thinking of bi-power variation BPV, not TSRV. Lot's of acronyms in this field :-)
1c) If you want an estimate of the volatility of a return spanning market open to market close then take the square root of either RV, or TSRV, (calculated using high frequency data from market open to close) and that is a valid estimator.
2) The interpretation of the square root number is that it is the volatility of a return that spans the same interval as the high frequency data you used to calculate the estimator. In the standard case, that is market open to market close.
3) Let $v_{t_a,t_b}$ denote a variance estimator spanning the interval $[t_a, t_b]$. You can always scale it up or down using the square root of time (or just time if working with volatility) so that all your estimators are on a consistent scale, e.g. annualized variance. But be aware, this is just a scaling trick so everything is measured in comparable units. Your estimator still only relates to the variance of a return spanning the interval $[t_a, t_b]$. Actually interpreting your scaled variance estimator as the variance of a return spanning a longer interval, like a year, is only meaningful under very strict modelling assumptions (e.g. constant variance). Personally, I think it is cleaner to always store with your variance estimator some record of the period it spans and refer to that.
4) See question 3. You can scale your RV from two hours to be in comparable six hour units using the square root of the time (ie multiply by square root of 3). However, see the point I made above. It would be better to compare RV and TSRV estimators that both span the same interval, since if you do a comparison of the two-hour and six-hour estimators, you are implicitly disadvantaging the two-hour estimator unless true variance is constant over the six-hour interval (which it almost certainly is not if you're working with financial data).
## Answer by onlyvix.blogspot.com (score 0)
https://quant.stackexchange.com/a/18960
Removed incorrect answer. Sorry. Thank you Colin T BowersShown 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.