He descargado datos históricos de FTSE desde 1984 hasta ahora. Lo que me gustaría hacer es graficar la volatilidad como función del tiempo. Lo que he escrito es:
import matplotlib.pyplot as plt
import datetime as dt
import numpy as np
import math
lines = [line.rstrip('\n') for line in open("Data.txt")]
a = list(range(len(lines)))
adjClose = [float(i) for i in lines]
adjClose.reverse()
dates = [line.rstrip('\n') for line in open("Date.txt")]
dates.reverse()
x = [dt.datetime.strptime(d,'%Y-%m-%d').date() for d in dates]
dailyVolatility = np.std(np.diff(np.log(adjClose))).round(4)
# Calculate returns
returns = []
for i in range(len(adjClose[1:])):
element = adjClose[i]/adjClose[i-1]
element = math.log(element)
returns.append((element))
returns = returns[1:]
mean_returns = np.mean(returns)
vol = []
for i in range(len(returns)):
element = (returns[i]-mean_returns)**2
element=math.sqrt((element))
vol.append(element)
for i in range(len(vol)):
vol[i]*=math.sqrt(252)
x = x[2:]
plt.plot(x,vol)
plt.show()
Así que primero cargo los datos y luego calculo los logaritmos de los rendimientos, así como tomo el promedio; además, calculo la desviación estándar para cada par de números en mis logaritmos de los rendimientos. ¿Es correcto mi razonamiento? En este caso no he promediado en absoluto para la fórmula de la desviación estándar, ya que N-1 = 2-1 = 1.
1 votos
Esa es una estimación de volatilidad de un día, lo cual está bien, pero será muy "ruidosa" (es decir, sujeta a fluctuaciones aleatorias). Las personas suelen promediar en un corto período de tiempo (como 20 días o 120 días, etc.) para obtener un estimador de volatilidad más estable y bien comportado. ¿Puedo preguntar cuál es el propósito de este cálculo?
0 votos
@ Alex C Esta es solo una ejercicio que estoy realizando para aprender, y también para ver posibles conexiones entre volatilidad y precio real. Si decido promediar durante 20 días, ¿significa eso que necesito hacer este cálculo cada día i+20 hasta el final de mi lista (que creo que son alrededor de 8500 días ya que estoy obteniendo datos desde 1984)?