Fuerza relativa de ETFs y atribución de alfa
La fuerza relativa clasifica ETFs según su rendimiento frente al SPY en veinte sesiones. Analice cómo la atribución de alfa ajusta el intercepto al validar el benchmark.
Cómo funciona la regla de fuerza relativa de los ETFs
La fuerza relativa es una comparación, no un rendimiento. Un fondo que sube un 3% en 20 sesiones mientras el índice de referencia sube un 5% tiene una fuerza relativa negativa. Un fondo que cae un 1% mientras el índice de referencia cae un 4% tiene una fuerza relativa positiva. El número sobre el que se clasifica es el exceso de rentabilidad: el cambio porcentual del fondo en un periodo fijo, menos el cambio porcentual del índice de referencia en ese mismo periodo, medido sesión a sesión.
Existen dos decisiones clave. El periodo de observación (lookback) determina cuánta historia considera la clasificación; 20 sesiones equivalen aproximadamente a un mes bursátil. El periodo de tenencia establece cuánto tiempo permanece un ganador en la cartera. Cuando ambos son iguales, toda la cartera rota en una sola fecha al mes y el resultado depende de la fecha de inicio. Las carteras solapadas (overlapping sleeves) eliminan esa dependencia: se ejecutan varias copias de la misma regla escalonadas por unas pocas sesiones, asignando a cada una una fracción del capital, de modo que la cartera combinada mantiene una mezcla continua en lugar de una apuesta basada en una única fecha de inicio.
El panel a continuación ejecuta el paso de clasificación sobre un universo de nueve ETFs de mercado amplio, sectoriales, internacionales y de metales, utilizando los últimos 21 cierres diarios para que el rendimiento abarque exactamente 20 sesiones.
El SQL exacto detrás de cada cifra
WITH bounds AS
(
SELECT
min(d) AS first_day,
max(d) AS last_day
FROM
(
SELECT date AS d
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
AND date >= today() - 120
GROUP BY d
ORDER BY d DESC
LIMIT 21
)
)
SELECT
sleeve.ticker AS etf,
sleeve.ret_pct AS return_pct,
round(sleeve.ret_pct - bench.ret_pct, 2) AS excess_vs_spy_pct
FROM
(
SELECT
ticker,
round((argMax(toFloat64(close), date) / argMin(toFloat64(close), date) - 1) * 100, 2) AS ret_pct
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('QQQ', 'IWM', 'XLK', 'XLE', 'XLF', 'XLV', 'XLU', 'GLD', 'EFA')
AND date >= (SELECT first_day FROM bounds)
AND date <= (SELECT last_day FROM bounds)
GROUP BY ticker
) AS sleeve
CROSS JOIN
(
SELECT
round((argMax(toFloat64(close), date) / argMin(toFloat64(close), date) - 1) * 100, 2) AS ret_pct
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
AND date >= (SELECT first_day FROM bounds)
AND date <= (SELECT last_day FROM bounds)
) AS bench
ORDER BY excess_vs_spy_pct DESCEn la parte superior de la clasificación, GLD obtuvo un 8.69% en esas 20 sesiones, 6.34 puntos frente al SPY. En la parte inferior, XLU se situó en -5.81 puntos. Cada fila resume la idea en dos barras: lo que hizo el fondo y lo que queda una vez que se descuenta el movimiento del SPY en el mismo periodo. La distancia entre ambas barras es el mismo número en todas las 9 filas, ya que cada fondo se mide contra un único índice de referencia en un único periodo.
Qué mide realmente la atribución de alfa
La atribución de alfa es una regresión. Se alinean las series de rentabilidad de la estrategia contra una o más series de rentabilidad de referencia y se ajusta una línea recta a través de la dispersión. La pendiente de cada índice de referencia es una exposición: cuánto se mueve la estrategia en relación con ese activo. El intercepto es lo que queda después de pagar por esas exposiciones, y ese remanente es lo que se denomina alfa. El R cuadrado es el tercer número, la proporción de la variación de la estrategia que explican los índices de referencia, y va desde el 0% (los índices no explican nada) hasta el 100% (la estrategia es igual a los índices más una constante).
Si se aplica una regresión de una regla de rotación contra una única serie de mercado amplio, suele parecer original. En la atribución publicada de una regla de este tipo, de código abierto en agosto de 2026 y ejecutada sobre precios sintéticos deterministas, ese ajuste de un solo índice produjo un R cuadrado del 14,0%. Seis séptimos de la variación de la estrategia quedaron sin explicar, lo que en el papel se interpreta como originalidad. Al sustituir los índices por proxies de las exposiciones que la regla realmente mantenía —un sesgo de momentum y la concentración sectorial que conlleva una cartera de dos nombres—, el R cuadrado subió al 63,6% y el intercepto cayó al 0,38% anual. Misma serie de rentabilidad, mismo código. Un conjunto de comparación diferente. La estrategia estaba alquilando exposiciones bien conocidas.
Ese estudio genera sus propios precios a partir de una semilla fija, por lo que un lector sin proveedor de datos puede reproducir cada cifra que imprime. Además, tiene pocos días de antigüedad en el momento de escribir este artículo, y un proyecto tan joven cambia semanalmente. Identifique el commit exacto o la versión etiquetada que ejecutó antes de citar una cifra: las cifras de atribución se mueven cada vez que cambian los proxies de los factores o el periodo de la muestra. Nuestra nota sobre herramientas de backtest reproducibles cubre el mismo hábito desde la perspectiva opuesta.
La lección sobrevive sin el vocabulario de los modelos factoriales. El índice de referencia contra el que se realiza la regresión determina cuánto alfa parece tener, así que elíjalo antes de mirar el intercepto y anote por qué es la comparación correcta. Un conjunto de comparación elegido después de ver el resultado mide la elección de la comparación.
Qué parte de un ETF es ya el índice de referencia
No hace falta un modelo factorial completo para ver venir el problema. Tome los rendimientos diarios de un fondo, alinéelos con los rendimientos diarios del SPY en las mismas sesiones y eleve al cuadrado la correlación. Eso da la proporción de la variación diaria del fondo que un único índice de referencia de mercado amplio ya explica.
El SQL exacto detrás de cada cifra
WITH daily AS
(
SELECT
ticker,
date,
toFloat64(close) AS px,
lagInFrame(toFloat64(close)) OVER (PARTITION BY ticker ORDER BY date ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_px
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('SPY', 'QQQ', 'IWM', 'XLK', 'XLE', 'XLF', 'XLV', 'XLU', 'GLD', 'EFA')
AND date >= today() - 760
)
SELECT
sleeve.ticker AS etf,
round(pow(corr(sleeve.fund_ret, bench.spy_ret), 2) * 100, 1) AS r_squared_vs_spy_pct
FROM
(
SELECT ticker, date, px / prev_px - 1 AS fund_ret
FROM daily
WHERE prev_px > 0
AND ticker != 'SPY'
) AS sleeve
INNER JOIN
(
SELECT date, px / prev_px - 1 AS spy_ret
FROM daily
WHERE prev_px > 0
AND ticker = 'SPY'
) AS bench USING (date)
GROUP BY sleeve.ticker
ORDER BY r_squared_vs_spy_pct DESCEn los últimos dos años, QQQ tuvo el R cuadrado más alto frente a un solo índice en este universo con 90.3%, y GLD el más bajo con 3.1%. Una cartera formada por la parte alta de ese gráfico es casi una reformulación del índice de referencia bajo una ponderación distinta, y cualquier intercepto medido contra algo que no sea el índice de referencia absorberá silenciosamente la diferencia. La parte baja es donde una rotación puede añadir un flujo de rentabilidad que el mercado amplio aún no contiene, y es también donde una cartera de dos nombres deja de parecerse a una cartera diversificada.
Con qué frecuencia cambia el fondo líder
Una regla de clasificación solo tiene algo que ordenar cuando los fondos discrepan. El panel a continuación mide la rentabilidad mensual de cada fondo contra la del SPY en el mismo mes, y luego mantiene la cartera más fuerte y la más débil de cada mes.
El SQL exacto detrás de cada cifra
WITH monthly AS
(
SELECT
toStartOfMonth(date) AS m,
ticker,
argMin(toFloat64(close), date) AS first_close,
argMax(toFloat64(close), date) AS last_close
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('SPY', 'QQQ', 'IWM', 'XLK', 'XLE', 'XLF', 'XLV', 'XLU', 'GLD', 'EFA')
AND date >= toStartOfMonth(today() - 400)
AND date < toStartOfMonth(today())
GROUP BY m, ticker
)
SELECT
formatDateTime(x.m, '%Y-%m') AS month,
argMax(x.ticker, x.excess_pct) AS leading_etf,
round(max(x.excess_pct), 2) AS leader_excess_pct,
round(min(x.excess_pct), 2) AS laggard_excess_pct
FROM
(
SELECT
sleeve.m AS m,
sleeve.ticker AS ticker,
(sleeve.last_close / sleeve.first_close - 1) * 100
- (bench.spy_last / bench.spy_first - 1) * 100 AS excess_pct
FROM monthly AS sleeve
INNER JOIN
(
SELECT
m,
first_close AS spy_first,
last_close AS spy_last
FROM monthly
WHERE ticker = 'SPY'
) AS bench USING (m)
WHERE sleeve.ticker != 'SPY'
) AS x
GROUP BY x.m
ORDER BY x.mA lo largo de 13 meses completos, la serie comienza en 2025-07 con XLK a la cabeza. En el mes completo más reciente, 2026-07, la cartera más fuerte fue XLE con 12.59 puntos frente al SPY, mientras que la más débil midió -5.7. La distancia entre las dos líneas es la dispersión de la que se alimenta una regla de clasificación. Los meses en los que las líneas se estrechan son meses en los que la clasificación es casi arbitraria, y una regla que opera en cada clasificación paga costes de rotación en todos ellos. Los límites mensuales merecen atención aquí; cómo se miden las rentabilidades mensuales repasa las convenciones.
¿Es la concentración en dos nombres el riesgo real?
La volatilidad es la versión más sencilla de esa pregunta. Este panel anualiza la variación diaria de la rentabilidad de cada fondo durante los mismos dos años y utiliza el SPY como barra de referencia, junto con la peor sesión individual que registró cada uno.
El SQL exacto detrás de cada cifra
WITH daily AS
(
SELECT
ticker,
date,
toFloat64(close) AS px,
lagInFrame(toFloat64(close)) OVER (PARTITION BY ticker ORDER BY date ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_px
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('SPY', 'QQQ', 'IWM', 'XLK', 'XLE', 'XLF', 'XLV', 'XLU', 'GLD', 'EFA')
AND date >= today() - 760
)
SELECT
ticker AS etf,
round(stddevSamp(px / prev_px - 1) * sqrt(252) * 100, 1) AS annual_vol_pct,
round(min(px / prev_px - 1) * 100, 2) AS worst_day_pct
FROM daily
WHERE prev_px > 0
GROUP BY ticker
ORDER BY annual_vol_pct DESCXLK se situó en el extremo más amplio con 27.7% anualizado, con una peor sesión individual de -6.82%, y XLU en el extremo más estrecho con 15.8%. Una regla que mantiene dos nombres a la vez extrae de este rango sin promediar, y las caídas más profundas que acompañan al extremo amplio aparecen en una atribución como exposición en lugar de como habilidad. La nota sobre la anomalía de baja volatilidad cubre el historial a largo plazo en el extremo estrecho del mismo gráfico.
Cuatro comprobaciones para su propio backtest de rotación
- Fuga de señales intradía. Si la clasificación de 20 sesiones se calcula al cierre de una sesión y la ejecución se registra a ese mismo cierre, el test opera con información que no tenía en el momento de la operación. Clasifique con datos hasta la sesión t, ejecute en la sesión t más uno, y compare ambas versiones: la brecha entre ellas es el tamaño de la fuga. Sesgo de anticipación muestra qué tan grande llega a ser esa brecha.
- Supervivencia en la lista de fondos. Un universo formado por fondos que existen hoy excluye a todos los fondos que cerraron o se fusionaron en el camino, y los cierres se concentran en los productos que tuvieron peor desempeño. El sesgo de supervivencia se aplica a una lista de ETFs exactamente igual que a una lista de acciones.
- Índice de referencia elegido por adelantado. Escriba el conjunto de comparación antes de la primera regresión, incluyendo proxies para las exposiciones que espera que la regla mantenga. El intercepto solo significa algo frente a un índice de referencia con el que se comprometió de antemano.
- Concentración medida directamente. Ejecute la misma clasificación manteniendo los dos nombres principales, luego los cuatro principales, y luego una ponderación igualitaria de todo el universo. Si la mayor parte de la ventaja reportada reside en la versión de dos nombres, la concentración es la posición, y la clasificación es solo una forma de elegir qué concentración tomar.
Preguntas frecuentes
¿Qué es la fuerza relativa de los ETFs?
La fuerza relativa es la rentabilidad de un fondo en un periodo de observación fijo menos la rentabilidad de un índice de referencia en ese mismo periodo. Una clasificación basada en este indicador coloca en la parte superior a los fondos que superaron al índice de referencia, independientemente de si sus rentabilidades brutas fueron positivas o no.
¿Qué es la atribución de alfa?
Es una regresión de las rentabilidades de una estrategia sobre una o más series de rentabilidad de referencia. Las pendientes miden las exposiciones que conlleva la estrategia, y el intercepto es la rentabilidad que queda una vez que se han contabilizado esas exposiciones. Ese intercepto es el número que habitualmente se reporta como alfa.
¿Un R cuadrado alto significa que una estrategia es mala?
No. Un R cuadrado alto significa que los índices de referencia explican la mayor parte de la variación de la estrategia, lo cual es una declaración sobre la superposición, no sobre la calidad. Lo que cambia es el intercepto: las exposiciones que la regresión ahora puede ver dejan de contarse como originalidad.
¿Por qué mantener carteras solapadas en lugar de una sola?
Una única cartera rebalanceada cada 20 sesiones hace que el resultado dependa de la fecha de inicio. Ejecutar varias copias escalonadas de la misma regla promedia esa elección y distribuye la rotación a lo largo del mes en lugar de concentrarla en una sola fecha.
Cada panel aquí se entrega con el SQL que lo produjo. Abra uno, sustituya la lista de fondos por la suya y vuelva a ejecutar la clasificación en el terminal Strasmore para observar cómo cambia el orden.