Caso con datos reales
Medir la dispersión cuando la media está en cero
Los retornos de 170 acciones del S&P 500, donde el coeficiente de variación se dispara hasta 124,87, y qué pasa si en vez de dividir por la media se divide por el rango.
La pregunta
¿Qué sector de la bolsa tiene los retornos más variables?
Parece una pregunta de una línea, y lo primero que uno haría es calcular el coeficiente de variación de cada acción y promediar por sector. Este caso muestra que ahí se rompe todo, por qué se rompe, y qué alternativas hay —incluida una que no funciona tan bien como parece.
Es el caso más avanzado del sitio y el único que no usa datos argentinos. Sirve para un fin concreto: mostrar qué se hace cuando la medida del manual no aplica.

Los datos
Precios diarios de cierre ajustado de los componentes del S&P 500 entre 2010 y
2024 (conjunto andrewmvd/sp-500-stocks de Kaggle, CC0-1.0). De los 502
símbolos, 170 tienen al menos 1.000 días válidos y sector GICS asignado, lo
que deja 617.169 retornos diarios repartidos en 11 sectores, con una
mediana de 3.767 observaciones por acción.
Que todas las series tengan aproximadamente el mismo largo no es un detalle: es la condición que hace comparables a varias de las medidas, y la sección sobre el rango explica por qué.
Lo primero: el coeficiente de variación se rompe
El retorno diario de una acción es una variable centrada cerca de cero. Su media ronda el 0,05 % y su desvío el 1,5 %. El coeficiente de variación divide lo segundo por lo primero, y eso es dividir por algo que está cerca de cero.
El resultado sobre las 170 acciones:
| Mínimo | Máximo | |
|---|---|---|
| Coeficiente de variación | 14,79 | 124,87 |
| IDRN | 0,061 | 0,175 |
Once acciones (el 6,5 %) superan un coeficiente de variación de 50. Y hay cuatro donde la mediana del retorno es indistinguible de cero, lo que deja indefinidos al IQR/mediana y al MAD/mediana: no es que den un valor raro, es que no se pueden calcular.
No hay relación entre las dos medidas, y no debería haberla: están midiendo cosas distintas. Lo que el gráfico sí muestra es la asimetría de escalas. El eje horizontal abarca todo lo que el IDRN puede valer, y las 170 acciones caben en una franja del 11 % de ese ancho. El eje vertical está recortado en 124,87 porque ahí terminan los datos, no porque la medida termine ahí.
Vale aclarar que esto no es un defecto del coeficiente de variación: es su definición funcionando como corresponde fuera de su terreno. El coeficiente de variación mide dispersión relativa al nivel de la variable, y necesita que ese nivel signifique algo. Con retornos diarios no lo significa.
La idea: normalizar por el rango en vez de por la media
Si dividir por la media falla, hay que dividir por otra cosa. La que usa este caso es el rango.
La razón por la que se puede es una desigualdad elemental. Para cualquier conjunto de datos con rango , el desvío estándar no puede pasar de :
La demostración cabe en dos renglones. Sea el punto medio entre el mínimo y el máximo. Todo dato está a lo sumo a de , así que la suma de cuadrados de las desviaciones respecto de no pasa de ; y como la media es el punto que minimiza esa suma, la de la media es todavía menor. Es un caso particular de la desigualdad de Popoviciu (1935).
Entonces el cociente
vive siempre entre 0 y 1, y se lee como qué fracción de la dispersión que el propio rango habilita está usando el conjunto de datos. Vale 1 solo en el caso extremo de que la mitad de los datos esté en un borde y la otra mitad en el otro.
Dos propiedades salen directo de la fórmula. Primero, no depende de la media, así que no se rompe cuando la media es cero: ese es el punto. Segundo —y esto es tan importante como lo primero— es invariante ante cambios de escala y de posición, o sea que es ciego al nivel de la variable. No responde la pregunta del coeficiente de variación. Es un indicador de forma, emparentado con la curtosis: sobre estas 170 acciones la correlación de Spearman entre los dos es de −0,936.
El problema que arrastra: el rango no converge
Acá aparece el costo de haber cambiado de denominador, y es serio.
El numerador converge: el desvío estándar de 100 datos y el de 10.000 estiman lo mismo. El denominador no converge nunca. Cada dato nuevo solo puede dejar el máximo donde está o empujarlo más arriba. La entrada sobre el rango trae la tabla: en una misma población normal el rango medio pasa de 2,3 desvíos con 5 datos a 7,7 con 10.000.
Así que el índice encoge a medida que se juntan datos, y dos grupos medidos con distinta cantidad de observaciones no son comparables.
La corrección clásica existe hace un siglo y es la de los gráficos de control: dividir por la constante , que es el rango esperado de una muestra normal de tamaño . El script de este caso la verifica por simulación antes de usar nada:
| Rango medio simulado | tabulado | |
|---|---|---|
| 2 | 1,128 | 1,128 |
| 5 | 2,326 | 2,326 |
| 10 | 3,080 | 3,078 |
| 25 | 3,930 | 3,931 |
En este caso el problema queda neutralizado por diseño, porque todas las series tienen alrededor de 3.600 observaciones. Es la condición que hace legítima la comparación que sigue, y conviene no perderla de vista al llevar esto a otros datos.
La prueba exigente: partir la muestra al medio
Con ocho medidas en la mesa —IDRN, Moors, Crow–Siddiqui, Hogg, curtosis, coeficiente de variación, IQR/mediana y MAD/mediana— hace falta un criterio para elegir. El valor p no alcanza, porque con 170 acciones casi cualquier cosa da significativa.
El criterio que usa el caso es de reproducibilidad, y es el aporte metodológico que conviene llevarse:
Se reparten al azar las acciones de cada sector en dos mitades. Con cada mitad por separado se ordenan los once sectores. Si las dos mitades ordenan parecido, la medida capta señal; si no, capta ruido. Se repite mil veces y se mira la distribución de la correlación de Spearman entre los dos ordenamientos.
Es una idea vieja de la psicometría —la confiabilidad por mitades— aplicada a elegir un estadístico descriptivo. Y es mucho más dura que un valor p, porque pregunta si el resultado sobrevive a cambiar las unidades de análisis.
| Medida | Mediana | 5 – 95 % | % negativa |
|---|---|---|---|
| IDRN | 0,655 | 0,436 – 0,836 | 0,0 |
| Moors | 0,527 | 0,191 – 0,782 | 0,1 |
| Crow–Siddiqui | 0,373 | 0,127 – 0,682 | 0,6 |
| Curtosis | 0,300 | −0,055 – 0,609 | 8,3 |
| Coeficiente de variación | 0,145 | −0,227 – 0,573 | 27,0 |
| MAD/mediana | 0,077 | −0,200 – 0,500 | 36,1 |
| IQR/mediana | 0,073 | −0,191 – 0,500 | 35,4 |
| Hogg | 0,036 | −0,236 – 0,364 | 42,2 |
La medida de Hogg se equivoca de dirección en el 42 % de las particiones, que es apenas mejor que tirar una moneda. Y no es una medida mala: en el estudio de simulación del que sale este caso, Hogg es la mejor de las ocho en estabilidad muestral y poder discriminante. Lo que funciona mejor en la simulación no es lo que funciona mejor acá, y ese desacuerdo es, por sí solo, un motivo para no elegir un estadístico solo porque una simulación lo respalda.
Detectar no es lo mismo que reproducir
La pregunta original —¿hay diferencias entre sectores?— se contesta con Kruskal-Wallis, y el tamaño del efecto :
| Medida | ||
|---|---|---|
| Crow–Siddiqui | 0,244 | 0,0000099 |
| IDRN | 0,175 | 0,0010 |
| Moors | 0,159 | 0,0028 |
| IQR/mediana | 0,148 | 0,0053 |
| MAD/mediana | 0,147 | 0,0056 |
| Curtosis | 0,133 | 0,0130 |
| Hogg | 0,106 | 0,057 |
| Coeficiente de variación | 0,104 | 0,061 |
Los dos criterios no coinciden, y las dos tablas hay que leerlas juntas. Crow–Siddiqui detecta la diferencia más grande entre sectores pero la ordena de manera bastante menos reproducible. El IDRN detecta menos y ordena mejor. No hay un ganador: hay dos preguntas distintas.
Quien necesite un orden estable de grupos debería mirar la primera tabla; quien necesite máxima sensibilidad a que exista alguna diferencia, la segunda.
El ordenamiento que resulta, en la escala acotada del índice, va de Energy (0,090), Real Estate (0,092), Consumer Defensive y Utilities (0,096) en los valores más bajos, a Basic Materials (0,120) y Communication Services (0,125) en los más altos.
Marzo de 2020 le fija el denominador a media muestra
Este es el hallazgo del caso, y es una advertencia, no un resultado a favor de nada.
Para cada acción se buscó en qué mes cayó su retorno más extremo, el que fija el rango. Sobre los 180 meses del período aparecen 62 meses distintos. Y uno concentra:
Como el rango lo determinan los extremos, un único evento de mercado le fijó el denominador a casi la mitad de las series al mismo tiempo. Cuando eso pasa, el índice deja de ser una comparación entre series y pasa a ser, en buena medida, un reescalado del desvío estándar por una constante común.
La consecuencia práctica es fea y hay que decirla: ninguna de las ocho medidas reproduce el ordenamiento sectorial entre períodos. Comparando 2010-2017 con 2018-2024, la correlación a nivel de sector da −0,418 para el IDRN, −0,255 para el coeficiente de variación, y la mejor de las ocho llega a +0,155. Con once sectores el error estándar de estas correlaciones ronda 0,3, así que ninguna se distingue del cero: el punto no es que se inviertan, es que no hay señal.
Qué se lleva de acá
Cuatro cosas, y ninguna depende de que el índice prospere:
- El coeficiente de variación necesita que la media signifique algo. Con variables centradas —retornos, diferencias entre dos mediciones, puntajes estandarizados— no la significa, y la medida se dispara o queda indefinida.
- Normalizar por el rango resuelve eso y compra otro problema: el rango no converge, así que el resultado depende de cuántos datos se junten. Solo es comparable entre grupos medidos con cantidades parecidas de observaciones.
- La confiabilidad por mitades es un criterio para elegir un estadístico, y es más exigente que un valor p. Pregunta si el resultado sobrevive a cambiar las unidades, no si es distinto de cero.
- La significación y la reproducibilidad pueden ordenar distinto. Acá lo hacen: la medida que detecta más no es la que ordena mejor.
Reproducirlo
El CSV que se baja de esta página trae las 170 acciones con las ocho medidas ya calculadas y el mes de su retorno más extremo.
# R — las dos medidas centrales sobre una serie de retornos
idrn <- function(x) 2 * sqrt(mean((x - mean(x))^2)) / (max(x) - min(x))
cv <- function(x) sqrt(mean((x - mean(x))^2)) / mean(x)
d <- read.csv2("dispersion-sp500.csv")
range(d$IDRN) # 0,061 0,175
range(d$CV) # 14,79 124,87
# La confiabilidad por mitades, para una medida
mitades <- function(d, m, B = 1000) {
replicate(B, {
d$mitad <- ave(seq_len(nrow(d)), d$Sector,
FUN = function(i) sample(rep_len(1:2, length(i))))
a <- tapply(d[[m]][d$mitad == 1], d$Sector[d$mitad == 1], mean)
b <- tapply(d[[m]][d$mitad == 2], d$Sector[d$mitad == 2], mean)
cor(a, b, method = "spearman", use = "complete.obs")
})
}
median(mitades(d, "IDRN")) # 0,655
median(mitades(d, "CV")) # 0,145
# Python
import pandas as pd, numpy as np
d = pd.read_csv("dispersion-sp500.csv", sep=";", decimal=",")
d[["IDRN", "CV"]].agg(["min", "max"])
d["mes_extremo"].value_counts().head(3) # 2020-03 en 83 series
El script completo es datos/finanzas/preparar-dispersion-sp500.py. Recalcula
las ocho medidas desde los precios crudos —no toma ningún número del trabajo de
investigación— y antes de escribir nada verifica tres cosas: que Moors,
Crow–Siddiqui y Hogg reproduzcan sus valores de referencia publicados bajo
normalidad (1,233 · 2,906 · 2,585), que el rango esperado de muestras normales
reproduzca las constantes , y que su IDRN y su coeficiente de variación
coincidan acción por acción con los del script de R del trabajo original.