En este artículo, vamos a explorar los estimadores de volatilidad más ampliamente utilizados en el ámbito del trading. Explicaremos tanto sus ventajas como sus limitaciones y proporcionaremos cualquier otra información relevante. Además, para poner en práctica estos conceptos, presentaremos una implementación en el lenguaje de programación Python.
Es importante tener en cuenta que la elección del estimador de volatilidad puede variar según el activo y el marco de tiempo que se esté analizando. No es adecuado evaluar un activo utilizando el enfoque de volatilidad “close to close” (C2C), que captura la volatilidad diaria completa, cuando se trata de una operación que ha durado solo unos pocos minutos en el mercado. Para estos casos, es necesario utilizar un estimador de volatilidad más apropiado.
El objetivo final de este artículo es lograr un mejor entendimiento de los métodos de decisión para utilizar un estimador.
Estimadores de Volatilidad : Close to Close (C2C)
Para comenzar con los estimadores, el punto de partida es el estimador de volatilidad “Close to Close” (C2C), el cual incorpora en su cálculo la variación desde el cierre del día anterior hasta el cierre del día actual. Se basa en una función de intervalo de tiempo fijo, donde cada punto tiene la misma duración, lo cual es la forma más común de medir la volatilidad.
Es la forma más natural e intuitiva de medir la volatilidad de un activo. Aunque no está claramente definido quién formuló por primera vez la noción de volatilidad o este estimador, uno de los nombres que ha estado estrechamente relacionado con el estudio de la volatilidad desde sus inicios es el de Louis Bachelier, un matemático francés que en 1900 presentó su Teoría de la especulación. En esta teoría, Bachelier incluyó el uso de las diferencias entre los precios de cierre como un indicador de volatilidad, entre otros métodos.
Más adelante, alrededor de 1960, Paul Samuelson y Robert C. Merton, en sus investigaciones, se centraron en la creación de un método de valoración de opciones financieras que ha perdurado hasta nuestros días, conocido como el método Black-Scholes. Una de las contribuciones más disruptivas de la publicación de este modelo fue considerar la volatilidad como un factor crucial en la determinación del precio de una opción. Este enfoque revolucionario reconoció que la volatilidad del activo subyacente desempeña un papel fundamental en la valoración de las opciones financieras.
Otro nombre relevante en el desarrollo de la formulación matemática de la volatilidad es Robert Engle, quien desarrolló el modelo ARCH (Autoregressive Conditional Heteroskedasticity) en la década de 1980. El modelo ARCH representó un avance significativo en la modelización de la volatilidad. Este enfoque permitió capturar y modelar las fluctuaciones cambiantes en la volatilidad a lo largo del tiempo, reconociendo así la naturaleza heteroscedástica de la volatilidad en los datos financieros. El modelo ARCH y sus posteriores extensiones han sido ampliamente utilizados en la estimación y predicción de la volatilidad en los mercados financieros.
Fórmula del Close to Close.
$$
\sigma_{c2c}=\sqrt{\frac{1}{N} \sum_{i=1}^{N} x_{i}^{2}}
$$
Donde:
$N$ – Numero de dias en la muestra
$x$ – Retorno en el dia
Consideraciones Estimadores
Esta fórmula es ampliamente utilizada debido a su simplicidad en el cálculo, aunque no tiene en cuenta ciertas dinámicas que suelen presentarse en los mercados financieros. Los dos supuestos clave son:
- Los rendimientos no tienen por qué tener autocorrelación entre ellos (no hay que asumir tendencia o regresión a la media).
- Algunos activos se operan en tiempo discreto (intervalos fijos), esto permite aprovechar una estructura de varianza de volatilidad, lo que solo es posible si se participa en la subasta previa ofrecida por el bróker, generalmente 15 minutos antes de apertura.
El primer supuesto es generalmente confiable, pero el segundo supuesto es inexacto en aproximadamente el 99% de los casos, ya que rara vez se utilizan intervalos de tiempo discretos o fijos. Un ejemplo ilustrativo es el caso de los operadores que solo operan al cierre o apertura del mercado, o en momentos de liquidez similar. Estos operadores suelen estar interesados en tomar posiciones con el día cerrado, como en el caso de los volswaps/varswaps.
Codigo Python Estimador
Vamos a crear un código, Que calcule la volatilidad Close to Close de un activo, en un periodo determinado. Para ello, vamos a utilizar las librerías básicas de Python como son:
- pandas: Como base de todo. Utilizaremos los dataframes, y las funciones building, para ganar simplicidad, estabilidad y fluidez.
- numpy: Utilizaremos matrices para transformar ágilmente la data, al tener una integración total con pandas, simplifica toda la labor al usuario
- yfinance: Descargaremos la data en cierre diario, la necesaria para el cálculo de nuestra volatilidad close to close de Yahoo, mediante la librería yfinance. Que tiene total integración con pandas.
Gracias a estas librerías, podemos realizar los cálculos, en unas simples líneas.
### QUANTARMY 2023 - [jcx@QA]#
### GNU PUBLIC LICENSE CODE
#IMPORTS
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import yfinance as yf
#INPUTS
T = 100
s = 'GME'
#Descarga de datos
data = yf.download(s)[['Adj Close']].dropna()
#Calculo de la volatilidad Close to Close (C2C)
data['c2c'] = np.sqrt(252) * pd.DataFrame.rolling(np.log(data.loc[:, 'Adj Close'] / data.loc[:, 'Adj Close'].shift(1)),
window=T).std().values
PythonEn la sección de imports, cargamos todas las librerías necesarias. En la sección de inputs, seleccionamos el período (T) para el cálculo de la volatilidad y el activo (s) que queremos calcular.
Posteriormente, hacemos una llamada a yf.download para descargar la columna ‘Adj Close’ del ticker s, en este caso ‘GME’. Además, especificamos que queremos eliminar los valores NA.
Una vez tenemos un dataframe en formato de series temporales con los precios de cierre ajustados del activo s, creamos una nueva columna llamada ‘C2C’ donde realizamos los cálculos matemáticos. Comenzamos calculando el logaritmo de la razón del cierre de ayer respecto al de hoy. Luego, aplicamos una ventana rodante de T días y calculamos su desviación estándar utilizando .std(). La terminación .values se incluye para evitar problemas con los índices y solo incluir los valores numéricos en el cálculo.
Resultados

Calculo de la volatilidad Close To Close con el codigo explicado anteriormente