Let's consider a period $t\in[0,T]$, and let the simple return over year $t$ ($1\le t\le T$) be $r_t$. Assume $r_t$ are iid normal. The cumualative simple return over the whole period $[0,T]$ is $$R_T=\Pi_{t=1}^T(1+r_t)-1.$$ Question
Is there a nice function form $f(T)$ that can approximately capture the volatility of $R_T$?

Assuming iid, it's not hard to obtain the explicit formula of $\sigma^2(R_T)$ as follows $$ \begin{align} \sigma^2(R_T) &=\Bbb E((\Pi_{t=1}^T(1+r_t))^2)-(\Bbb E(\Pi_{t=1}^T(1+r_t)))^2\\ &=(1+\Bbb E(r_1^2)+2\Bbb E(r_1))^T-(1+\Bbb E(r_1)^2+2\Bbb E(r_1))^T\\ \end{align} $$ Obvously, if you know the mean and the variance of $r_t$ then you are able to completely determine $\sigma(R_T)$ given any $T$. However, what I want is a more or less "easier" form (perhaps approximate) that we can easily fit a curve against, like $\sigma(R_T)\sim aT+b$ or $\sigma(R_T)\sim aT^\alpha + b$ etc.

So far I only know that when $T$ is small, we should expect $\sigma(R_T)\sim \sqrt{T}\sigma(r_1)$, but this approximation fails badly when $T$ is large.


1 Answer 1



It is computationally simple to determine the volatility of any given return series, so in fact there may be no need for this approximation.

Let's start with the annualized return $r_a$, which is $$r_a = \sqrt[T]{1+R_t}-1$$

where $R_t$ is the cumulative return over the whole period $[0,T]$. Consider the Taylor-approximation $$log(1+y) = y - \frac{1}{2}y^2 + \frac{1}{3}y^3 - \frac{1}{4}y^4 +...$$

Taking the first two terms, you obtain: $$log(1+r_a) \approx r_a - \frac{1}{2}\sigma_{r_a}^2$$

However, if $r_a$ is not approximately zero, the error becomes great. The following image shows this error $log(1+y) - y$ within the interval $y \in [-0.8,0.8]$: enter image description here

If any annualized return $r_a$ is smaller than -39% or greater than 52%, the error from the approximation exceeds 10%!

Further, most financial asset returns have negative skewness and leptokurtosis, so the approximation above is biased upwards. In fact, you may adjust for this and use the formula $$log(1+r_a) \approx r_a - k\frac{1}{2}\sigma_{r_a}^2$$ ,where $k$ is an empirical factor (often between 5 and 10), see here.

Re-arranging gives you an approximation for the volatility of the return series: $$\sigma_{r_a} \approx \sqrt{\frac{2r_a - 2log(1+r_a)}{k}}$$


OP is asking on how to fit a curve of $\sigma(R_T)$ in terms of $T$. Let me provide you the results of a simulation run in R. I use 100,000 daily returns following a normal distribution $N(0.01/252, 0.005)$, so i assume a mean return of one percent per year with a standard deviation of 7,94% ($0.005 \cdot \sqrt{252}$):

r = rnorm(100000, .01/252, .005)

## Vector containing the cumulative simple return up to T
cum <- vector(mode = "numeric", length = 100000)

## Vector containing the volatility up to T
vola <- vector(mode = "numeric", length = 100000)

for(i in 1:100000){cum[i] <- prod(1+r[1:i])}
for(i in 1:100000){vola[i] <- sd(cum[1:i])}

## vola[1] is NA due to vola[1] <- sd(cum[1:1]),
## so we set it to zero
vola[1] <- 0

Min.    1st Qu.  Median   Mean    3rd Qu.  Max. 
0.8405  1.2581   2.1961   5.1116  5.0303   36.2721

Min.    1st Qu.  Median   Mean    3rd Qu.  Max. 
0.0000  0.1775   0.4096   1.1516  1.1164   6.3274

The following image shows the variable vola, i.e. $\sigma (R_T)$ for $T \in [0; 100,000]$: enter image description here

We see, that $\sigma (R_T)$ is non-linear and increasing in time. I implement your suggested regression $$\sigma(R_T)\sim aT^\alpha + b$$ using time $T$ with single steps of $\frac{1}{100,000}$, which results in:

## set up variable time
time <- seq(0, 1, 0.00001)

## eliminate first value of time which is zero,
## so we have single time steps of 1/100,000
time <- time[-1]

reg <- nls(vola ~ a*(time^alpha)+b, start = list(a=1, alpha=1, b=1))

       Estimate  Std. Error t value  Pr(>|t|)
a      5.914458   0.003736  1582.9   <2e-16 ***  
b      0.208985   0.001096   190.7   <2e-16 ***
alpha  5.274693   0.006115   862.6   <2e-16 ***
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.245 on 99997 degrees of freedom

Number of iterations to convergence: 7 
Achieved convergence tolerance: 1.396e-06

In summary, your suggested non-linear regression model seems to be useful. However, my starting values were chosen randomly, so you might try to evaluate if other configurations don't affect the results to heavily. You might want to try the glmulti R-package which implements this Automated Model Selection with (Generalized) Linear Models.

  • $\begingroup$ Thanks, but this doesn't actually answer my question. I'm not interested in estimating $r_a$. I know once we know the first and second moments of $r_a$ we can compute explicitly the theoretical value of $\Bbb V(R_T)$. However, what I want is to fit a curve of $\sigma(R_T)$ in terms of $T$. Ideally, it would have a simple form like $aT^\alpha + b$. For what I know so far, $\sigma(R_T)$ is roughly on the magnitude of $T^{1/2}$ when $T$ is small, and of $T^{\ge1}$ (not very sure about this one) when $T$ is large. $\endgroup$
    – Vim
    Commented Jan 12, 2019 at 9:39
  • $\begingroup$ In this case, why don't you just run a non-linear regression $\sigma(R_t)=aT^\alpha + b$? $\endgroup$ Commented Jan 14, 2019 at 9:02
  • $\begingroup$ This particular function form is just for example. The "true" form might be something else. $\endgroup$
    – Vim
    Commented Jan 14, 2019 at 13:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.