1 votos

En busca de formas de función agradables (aproximadas) de la volatilidad de los rendimientos simples acumulados

Consideremos un período $t\in[0,T]$ y que el rendimiento simple a lo largo del año $t$ ( $1\le t\le T$ ) sea $r_t$ . Supongamos que $r_t$ son normales iid. El rendimiento simple acumulativo durante todo el período $[0,T]$ es $$R_T=\Pi_{t=1}^T(1+r_t)-1.$$ Pregunta
¿Existe una forma de función agradable $f(T)$ que puede capturar aproximadamente la volatilidad de $R_T$ ?

Pensamientos
Suponiendo iid, no es difícil obtener la fórmula explícita de $\sigma^2(R_T)$ como sigue $$ \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} $$ Obviamente, si se conoce la media y la varianza de $r_t$ entonces es capaz de determinar completamente $\sigma(R_T)$ dado cualquier $T$ . Sin embargo, lo que quiero es una forma más o menos "fácil" (quizás aproximada) con la que podamos ajustar fácilmente una curva, como $\sigma(R_T)\sim aT+b$ o $\sigma(R_T)\sim aT^\alpha + b$ etc.

Hasta ahora sólo sé que cuando $T$ es pequeño, deberíamos esperar que $\sigma(R_T)\sim \sqrt{T}\sigma(r_1)$ pero esta aproximación falla mucho cuando $T$ es grande.

2voto

user29318 Puntos 11

Nota:

Es computacionalmente sencillo determinar la volatilidad de cualquier serie de rendimientos, por lo que, de hecho, puede no ser necesaria esta aproximación.


Empecemos por la rentabilidad anualizada $r_a$ que es $$r_a = \sqrt[T]{1+R_t}-1$$

donde $R_t$ es el rendimiento acumulado durante todo el período $[0,T]$ . Consideremos la aproximación de Taylor $$log(1+y) = y - \frac{1}{2}y^2 + \frac{1}{3}y^3 - \frac{1}{4}y^4 +...$$

Tomando los dos primeros términos, se obtiene: $$log(1+r_a) \approx r_a - \frac{1}{2}\sigma_{r_a}^2$$

Sin embargo, si $r_a$ no es aproximadamente cero, el error se hace grande. La siguiente imagen muestra este error $log(1+y) - y$ dentro del intervalo $y \in [-0.8,0.8]$ : enter image description here

Si cualquier rendimiento anualizado $r_a$ es menor que -39% o mayor que 52%, ¡el error de la aproximación supera el 10%!

Además, la mayoría de los rendimientos de los activos financieros tienen asimetría y leptocurtosis negativas, por lo que la aproximación anterior está sesgada al alza. De hecho, se puede ajustar por esto y utilizar la fórmula $$log(1+r_a) \approx r_a - k\frac{1}{2}\sigma_{r_a}^2$$ donde $k$ es un factor empírico (a menudo entre 5 y 10), véase aquí .

Reordenando se obtiene una aproximación a la volatilidad de la serie de rendimientos: $$\sigma_{r_a} \approx \sqrt{\frac{2r_a - 2log(1+r_a)}{k}}$$

EDITAR

OP está preguntando sobre cómo ajustar una curva de $\sigma(R_T)$ en términos de $T$ . Permítame proporcionarle los resultados de una simulación realizada en R. Utilizo 100.000 rendimientos diarios siguiendo una distribución normal $N(0.01/252, 0.005)$ por lo que asumo una rentabilidad media del 1% anual con una desviación estándar del 7,94% ( $0.005 \cdot \sqrt{252}$ ):

set.seed(100)
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

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

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

La siguiente imagen muestra la variable vola es decir $\sigma (R_T)$ para $T \in [0; 100,000]$ : enter image description here

Vemos que $\sigma (R_T)$ es no lineal y creciente en el tiempo. Implemento la regresión sugerida por usted $$\sigma(R_T)\sim aT^\alpha + b$$ utilizando el tiempo $T$ con pasos simples de $\frac{1}{100,000}$ , lo que da como resultado:

## 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))
summary(reg)

Parameters:
       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

En resumen, el modelo de regresión no lineal que sugieres parece ser útil. Sin embargo, mis valores de partida se eligieron al azar, por lo que podría intentar evaluar si otras configuraciones no afectan demasiado a los resultados. Tal vez quiera probar el glmulti Paquete R que implementa esto Selección automática de modelos con modelos lineales (generalizados) .

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X