Vender volatilidad no es dinero gratis: las tres cifras que separan cobrar prima de donarla
El martes que la vol no revirtió
Es un martes por la mañana. Abres el terminal, miras ese valor que llevas semanas siguiendo y su volatilidad implícita a 30 días imprime 48, pegada al techo de su rango anual.
La vol revierte a la media. Lo sabe todo el mundo. Así que haces lo obvio: vendes el straddle. Quizá, si eres prudente, un iron condor.
Dos días después la implícita imprime 61. Tu corto está muy por debajo del agua y la reversión que te habían prometido no aparece por ninguna parte. La posición acaba volviendo —casi entera— tras una semana en la que duermes mal.
¿Qué salió mal? En realidad, nada. Acertaste en que la vol revierte. Pero estabas mirando los árboles sin ver el bosque: un único número de volatilidad implícita, por sí solo, no te dice casi nada sobre si debes venderla, comprarla o dejarla tranquila.
Para operar la reversión de verdad necesitas tres cosas que no se pueden leer en ese único print. Conseguir las tres es lo que separa cobrar prima de donarla. Este artículo es una investigación completa de esas tres cifras — IV/HV Premium, IV Rank y Vol-of-Vol — con las fórmulas, los números del estudio original de Quant Galore × Alphanume Research, una validación independiente con datos reales del VIX y el código para reproducirlo todo.
La reversión existe, pero no es gratis
La reversión a la media de la volatilidad es una de las regularidades más fiables de todos los mercados: la vol salta con el miedo y sangra de vuelta cuando el miedo se desvanece. Es tan fiable que todo el complejo short-vol — cada vendedor de iron condors, cada overwriter de FinTwit — es, en el fondo, la misma apuesta: la vol elevada de hoy estará más baja mañana.
Matemáticamente, la intuición se ancla bien en un proceso de Ornstein-Uhlenbeck. Si la volatilidad $\sigma_t$ siguiera uno:
$$d\sigma_t = \kappa\,(\theta - \sigma_t)\,dt + \xi\,dW_t$$
donde $\theta$ es el nivel de largo plazo, $\kappa$ la velocidad de reversión y $\xi$ la volatilidad de la propia volatilidad (guárdate ese $\xi$, volverá). La vida media de un shock — cuánto tarda en disiparse la mitad — es:
$$t_{1/2} = \frac{\ln 2}{\kappa}$$
Y ahí está el primer problema: el modelo que justifica tu operación tiene dos parámetros que no estás mirando. Un $\kappa$ alto te devuelve la vol en días; un $\kappa$ bajo te deja semanas nadando contra corriente. Y un $\xi$ alto convierte la espera en una pelea de cuchillos. "La vol revierte" sin $\kappa$ ni $\xi$ es una frase, no una operación.
El segundo problema es de referencia. El instinto dice: ve vol alta, véndela; ve vol baja, cómprala; cobra la diferencia. Pero ¿alta respecto a qué? Un 48% para una utility regional somnolienta es un incendio de cinco alarmas. Para una biotech pequeña a las puertas de un readout de datos, es barato. El número no significa nada hasta que lo anclas a algo, y "tengo la sensación de que está elevada" no es el ancla que usan los profesionales.
La pregunta correcta se divide en tres:
- ¿Es cara de verdad? ¿Te están pagando por venderla, en relación con lo que la acción realmente se mueve?
- ¿Es cara para este nombre? ¿Está estirada dentro de su propio rango histórico, o es simplemente normal-para-ella?
- ¿Cómo de estable es la propia vol? ¿La reversión volverá como una deriva suave o como una pelea de cuchillos?
Tres preguntas, tres números. Vamos una por una.
¿Cara respecto a qué? La prima de riesgo de volatilidad
La primera acepción de "vol cara" es cara respecto a lo realizado. Es la clásica volatility risk premium (VRP): la brecha entre lo que las opciones están precificando (vol implícita) y lo que la acción realmente entrega (vol realizada).
La vol realizada se estima del histórico de precios. El estimador más simple es el close-to-close:
$$\hat{\sigma}_{CC} = \sqrt{\frac{252}{N}\sum_{t=1}^{N} r_t^2}, \qquad r_t = \ln\frac{S_t}{S_{t-1}}$$
y una versión más eficiente estadísticamente es el estimador de Parkinson, que usa el rango máximo-mínimo de cada sesión:
$$\hat{\sigma}_{P} = \sqrt{\frac{252}{N}\sum_{t=1}^{N}\frac{1}{4\ln 2}\left(\ln\frac{H_t}{L_t}\right)^2}$$
Con ambas en la mano, la VRP se expresa como spread $s_t = IV_t - HV_t$ o, más limpio y comparable entre nombres, como ratio:
$$\rho_t = \frac{IV_{30,t}}{HV_{30,t}}$$
Cuando la implícita a 30 días supera a la realizada a 30 días, $\rho > 1$ y te están pagando más en prima de lo que la acción se ha estado moviendo. Ese es el quid del feed IV/HV Premium: por nombre y por día, implícita contra realizada, como spread y como ratio, rankeado a lo largo de todo el universo.
¿Y por qué debería pagarte ese gap? Porque existe un vínculo teórico directo entre el gap y el P&L esperado. Para un straddle corto cubierto en delta, la contabilidad por unidad de tiempo es, a primer orden:
$$\mathbb{E}[\Pi] \;\approx\; \underbrace{\vphantom{\tfrac{1}{2}}\Theta\,\Delta t}_{\text{lo que cobras}} \;-\; \underbrace{\tfrac{1}{2}\,\Gamma\, S^2\,\sigma_r^2\,\Delta t}_{\text{lo que pagas}} \;=\; \tfrac{1}{2}\,\Gamma\, S^2\,\bigl(\sigma_i^2 - \sigma_r^2\bigr)\,\Delta t$$
Fíjate en el detalle que casi nadie comenta: el edge esperado es proporcional a la diferencia de varianzas, no de volatilidades. Eso significa que crece con el cuadrado del gap: un ratio de 1.5 no es un 50% más de edge que 1.0, es $(1.5^2 - 1) = 1.25$ unidades de varianza contra $(1.1^2 - 1) = 0.21$. Casi seis veces más. Por eso el filtro de "riqueza" no es cosmético: es la diferencia entre operar con viento a favor o remar contra la corriente.
Los datos lo confirman con una claridad incómoda. Alineando la reversión forward por bucket de ratio IV/HV, vender vol donde el ratio está por debajo de 1 sangra — los nombres baratos siguieron subiendo de vol. El edge del vendedor solo se enciende por encima de 1.0, y en el extremo más rico, alrededor de 1.5×, el corto capturó unos 7 puntos de vol de reversión:

¿Cara para este nombre? IV Rank
La segunda acepción es cara respecto a su propia historia. Una vol de 48 que vive en el percentil 95 de su rango anual es un animal muy distinto de una vol de 48 que ha sido el suelo todo el año. La herramienta es el IV Rank: la implícita de hoy (y la realizada) colocada dentro de la banda trailing de 52 semanas del propio nombre, como un rank de 0 a 100:
$$IVRank_t = \frac{IV_t - \min\limits_{252}(IV)}{\max\limits_{252}(IV) - \min\limits_{252}(IV)} \times 100$$
Ojo con no confundirlo con el IV Percentile, que cuenta la fracción de días por debajo del nivel actual:
$$IVPct_t = \frac{1}{252}\sum_{i=1}^{252} \mathbb{1}\{IV_{t-i} < IV_t\} \times 100$$
El rank te dice dónde estás dentro del rango; el percentile te dice cuánto tiempo has pasado por debajo. Tras un único spike violento, el rank puede marcar 95 mientras el percentile se queda en 60. Para cazar estiramientos extremos, el rank es el instrumento más sensible.
Y la reversión, medida desde el rank, es brutalmente limpia. El estudio agrupó cada nombre del universo por su IV rank y miró qué hizo su implícita a 30 días durante el mes siguiente. El patrón es de lo más monocromo que verás en mercados:

Cuanto más alto el rank, más fuerte tira la reversión. Esta es la señal que hay debajo de la intuición de todo el mundo, hecha medible.
Apilando el edge: el screen completo
Junta las dos patas y la corazonada se convierte en un screen robusto. La versión insignia es el conditioned premium sell, y corre en cinco pasos:

- Universo: el feed IV/HV Premium del día, solo filas asentadas (
only_final=true), para no operar sobre un print intradía provisional. - Riqueza: filtra a lo alto de la distribución del ratio IV/HV (
min_ratio_rank=1.25o más). Es la puerta de "¿me están pagando de verdad?". - Estiramiento: cruza con IV Rank y quédate solo con nombres altos en su propia banda trailing (
min_iv_rank=70). Es el brazo de "¿es probable la reversión?". - Estructura: el corto como strangle o iron condor alrededor del rango implícito ATM, dimensionado al movimiento que la cadena implica — no a tu convicción. Los breakevens de un straddle son $BE_{\pm} = K \pm (C + P)$; la estructura debe respetarlos, no tu entusiasmo.
- Cosecha: deja que la reversión trabaje las semanas siguientes, mientras la vol rica y estirada hace lo que la vol rica y estirada hace.
La diferencia entre correr este screen y vender lo que "parezca alto" no es teórica. Midiendo los puntos de vol capturados al ponerse corto de vol a 30 días y mantener un mes, según cómo filtras:

Este es, honestamente, todo el argumento. El mecanismo general de vender vol implícita alta nunca fue un secreto ni algo propietario. Lo que no podías hacer sin los datos es condicionar la operación lo bastante fino como para estar del lado correcto.
Vol-of-Vol: el tercer número
Queda una pregunta que las dos primeras no pueden responder: una vez dentro, ¿cómo de violento será el viaje?
Eso es la Vol-of-Vol — el $\xi$ del proceso de OU con el que abrimos. Mide la inestabilidad de la vol del propio nombre, por ejemplo como la desviación estándar de los cambios diarios de la implícita en la ventana trailing:
$$VoV_t = \operatorname{sd}_{21}\bigl(\Delta IV_t\bigr)$$
Una lectura baja: la vol está bien educada, muele alrededor de un nivel. Una lectura alta: la vol va dando latigazos, saltando entre regímenes. Mismo corto (ricos + alto rank), partido por vol-of-vol:

La vol-of-vol es, en la práctica, un dial de sizing que te dice a qué tipo de operación te estás apuntando:
- VoV baja → ingreso estable tipo theta. Reversiones más pequeñas, pero puedes dimensionarlas grandes y dormir durante el proceso.
- VoV alta → aquí viven los grandes snapbacks, porque la vol se estiró violentamente para empezar. Pagan más y aciertan más a menudo, pero también te regalarán una semana o dos de retortijones antes de resolver. Dimensiona pequeño.
Hay más que vender vol: el lado largo
Cuando sale el tema de operar volatilidad, la conversación casi siempre se sesga a vender y cobrar prima. Pero si le das la vuelta a cada signo, la misma maquinaria te señala qué vol comprar.
Cuando un nombre se sienta en el decil inferior de su IV rank, la misma matemática de reversión dice que su implícita sube ~+32% el mes siguiente. Es el setup clásico de long-gamma: vol barata respecto a su propia historia, con el tirón hacia arriba la mayoría de las veces.
La versión más fina cruza IV rank con HV rank: cuando la implícita araña el suelo de su rango mientras la realizada ya empieza a arrastrarse por encima, estás ante un nombre cuyas opciones están precificadas para una calma que la acción ha dejado de entregar discretamente. Largo el straddle — o lo que te dé el gamma más limpio — y deja que la implícita persiga a la realizada que ya se está moviendo:

Validación independiente con datos reales
Los números del estudio vienen de un feed propietario (Alphanume). ¿Se reproduce el patrón con datos públicos? Lo comprobamos con la serie oficial del VIX del CBOE — 2,711 observaciones entre 2015 y 2026 — aplicando exactamente la misma mecánica: rank de 252 días del VIX, deciles, y cambio forward a 21 días:

La estructura es la misma que en el universo de acciones: cuanto más estirado está el índice de miedo dentro de su propio rango, más fuerte tira la reversión. Distinto instrumento, distinta fuente de datos, misma ley.
Nota de método: lo que esto es y lo que no es
Estos son pulls reales de datos, no un backtest llave en mano. La reversión medida es un mark-to-market sobre la propia vol en una ventana forward de un mes. El camino realizado y los costes de ejecución son riesgos vivos que se sientan encima del movimiento de la vol — y la sección de vol-of-vol trata precisamente de respetar el primero.
Traducción a griego llano: aunque la implícita caiga como predice el rank, un straddle corto puede perder dinero si la acción se mueve más que lo que la vol cayó. La ecuación del P&L no miente:
$$\Pi \approx \tfrac{1}{2}\,\Gamma S^2\bigl(\sigma_i^2 - \sigma_r^2\bigr)\Delta t - \text{costes}$$
y $\sigma_r$ es una realización, no una promesa. El punto de esta investigación es el filtrado apropiado y la demostración de que estas tres cifras mueven las probabilidades de forma medible y apilable. Lo que construyas encima es la parte divertida.
Conclusión: tres preguntas, tres números
Todo el mundo sabe que la vol revierte a la media. Ese conocimiento, por sí solo, no vale casi nada — y por eso tanta gente vende vol "alta" y aun así consigue perder.
El edge está en saber, antes de comprometer un dólar:
| Pregunta | Número | Umbral del estudio |
|---|---|---|
| ¿Me están pagando de verdad? | IV/HV Premium — ratio $\rho = IV/HV$ | $\rho \gtrsim 1.25$ (edge muere bajo 1.0) |
| ¿Está estirada en su propio rango? | IV Rank (0–100, 52 semanas) | $\geq 70$ (D10 revierte ~-18%/mes) |
| ¿Cómo de duro será el viaje? | Vol-of-Vol — $\operatorname{sd}_{21}(\Delta IV)$ | dial de sizing, no de entrada |
Si alguna vez vendiste un straddle a corazonadas y lo viste saltar en tu contra, ya sabes exactamente cuánto valen estas tres cifras.
Este artículo expande el estudio "A Common Sense Guide to Volatility Trading" de Quant Galore × Alphanume Research (junio 2026). Las cifras del estudio por deciles, ratio y filtros son las reportadas por ellos, redibujadas con nuestro estilo; la validación sobre VIX es cálculo propio con datos oficiales del CBOE. Nada de esto es consejo de inversión.
Código: réplica completa
El estudio original publica sus scripts en el Strategy Lab de GitHub (carpeta Stock Volatility Trading) usando la API de Alphanume. Aquí va nuestra versión autocontenida, con datos 100% públicos, que reproduce el gráfico de validación del VIX de arriba y deja montada la caja de herramientas (HV close-to-close, Parkinson, IV Rank, Vol-of-Vol) para aplicar a cualquier nombre:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# ---------------------------------------------------------------
# TOOLBOX: realized vol, IV rank, vol-of-vol
# ---------------------------------------------------------------
def hv_close_to_close(px: pd.Series, window: int = 30) -> pd.Series:
"""Annualized close-to-close realized vol."""
r = np.log(px / px.shift(1))
return np.sqrt(252.0 / window * (r**2).rolling(window).sum())
def hv_parkinson(high: pd.Series, low: pd.Series, window: int = 30) -> pd.Series:
"""Annualized Parkinson (high-low range) realized vol."""
hl = np.log(high / low) ** 2
return np.sqrt(252.0 / window * (hl / (4 * np.log(2))).rolling(window).sum())
def iv_rank(iv: pd.Series, window: int = 252) -> pd.Series:
"""Position of today's vol inside its own trailing range, 0-100."""
lo, hi = iv.rolling(window).min(), iv.rolling(window).max()
return (iv - lo) / (hi - lo) * 100
def vol_of_vol(iv: pd.Series, window: int = 21) -> pd.Series:
"""Instability of vol itself: sd of daily IV changes."""
return iv.diff().rolling(window).std()
# ---------------------------------------------------------------
# STUDY: VIX 252d-rank deciles -> forward 21d change (CBOE data)
# ---------------------------------------------------------------
URL = "https://cdn.cboe.com/api/global/us_indices/daily_prices/VIX_History.csv"
vix = pd.read_csv(URL, parse_dates=["DATE"])
vix = vix[vix["DATE"] >= "2015-01-01"].reset_index(drop=True)
c = vix["CLOSE"].astype(float)
rank = iv_rank(c, window=252) # VIX vs its own 52w range
fwd = c.shift(-21) / c - 1 # forward 1M (~21 trading days)
df = pd.DataFrame({"rank": rank, "fwd": fwd}).dropna()
df["decile"] = pd.qcut(df["rank"], 10, labels=False) + 1
g = df.groupby("decile")["fwd"].mean() * 100
print(g.round(2))
print("top decile, share negative :",
round((df[df.decile == 10]["fwd"] < 0).mean() * 100, 1), "%")
print("bottom decile, share positive :",
round((df[df.decile == 1]["fwd"] > 0).mean() * 100, 1), "%")
g.plot(kind="bar", color=["#2d7ff9" if v > 0 else "#ff6e1a" for v in g])
plt.ylabel("mean fwd 21d dVIX (%)"); plt.xlabel("VIX rank decile")
plt.axhline(0, color="grey", lw=1); plt.show()Salida esperada (los números del gráfico de validación):
decile
1 11.67
2 12.84
3 10.51
4 9.87
5 8.65
6 4.88
7 0.39
8 0.04
9 -5.74
10 -13.69
top decile, share negative : 77.9 %
bottom decile, share positive : 72.8 %Para llevarlo a acciones individuales solo necesitas una fuente de vol implícita a 30 días por nombre (la de tu broker, ORATS, o la API de Alphanume con una key gratuita) y cruzarla con el OHLC diario: hv_close_to_close te da la realizada, iv_rank el estiramiento, vol_of_vol el temperamento. El screen completo es literalmente tres líneas de pandas sobre esas columnas — el resto es disciplina.