[R-SIG-Finance] Excessive data needed for volatility{TTR} calculation?
J Toll
jctoll at gmail.com
Sat May 28 06:25:00 CEST 2011
On Fri, May 27, 2011 at 10:39 PM, Joshua Ulrich <josh.m.ulrich at gmail.com> wrote:
> I think your solution will work, but using 'n' instead of 'n-1'. The
> code below shows the same results using your solution and a formula
> similar to the one found here (which I mis-interpreted when I
> originally wrote the function):
> http://web.archive.org/web/20081224134043/http://www.sitmo.com/eq/172
>
> set.seed(21)
> N <- 260
> n <- 100
> r <- rnorm(n)/100
> last(sqrt(N) * runSD(r, n))
> sqrt(N/(n-1)*sum((r-mean(r))^2))
>
> Thanks!
> --
> Joshua Ulrich | FOSS Trading: www.fosstrading.com
>
Hi Joshua,
Thanks for replying and confirming my suspicions. However, I'm curious
why you would use 'n' rather than 'n-1'. My thinking is that a 10-day
volatility (n = 10) is calculated as the annualized standard deviation
of 9 (n - 1) price returns (i.e. ln(p1/p0), ROC()). The sample
standard deviation of 9 price returns would be the sum of the squared
deviations divided by 9 - 1, or n - 2. Therefore, I believe your line
sqrt(N / (n - 1) * sum((r - mean(r)) ^ 2))
should actually be
sqrt(N / (n - 2) * sum((r - mean(r)) ^ 2))
I've been double-checking my work and went ahead and calculated 10 and
20-day vols by hand and I'm pretty sure
s <- sqrt(N) * runSD(r, (n - 1))
is correct, unless your defining 10-day volatility as 11 days of data
and 10 price returns. Please let me know otherwise. Thanks.
James
More information about the R-SIG-Finance
mailing list