Force relative des ETF et attribution d'alpha
La force relative des ETF classe les fonds selon leur rendement sur vingt séances face au SPY. Analysez l'impact de l'attribution d'alpha sur l'ordonnée à l'origine ajustée.
Fonctionnement de la règle de force relative des ETF
La force relative est une comparaison, pas un rendement. Un fonds en hausse de 3 % sur 20 séances alors que son indice de référence progresse de 5 % affiche une force relative négative. Un fonds en baisse de 1 % alors que l'indice recule de 4 % affiche une force relative positive. Le chiffre utilisé pour le classement est le rendement excédentaire : la variation en pourcentage du fonds sur une fenêtre fixe, moins la variation en pourcentage de l'indice sur cette même fenêtre, mesurée séance après séance.
Deux choix déterminent ce mécanisme. La période de rétrospection (« lookback ») définit l'historique pris en compte pour le classement, 20 séances correspondant approximativement à un mois de bourse. La période de détention définit la durée pendant laquelle un titre gagnant reste en portefeuille. Lorsque ces deux périodes sont identiques, l'intégralité du portefeuille est renouvelée à une date fixe chaque mois, et le résultat dépend entièrement de la date de lancement choisie. Les « sleeves » (poches) qui se chevauchent éliminent cette dépendance : en exécutant plusieurs copies de la même règle décalées de quelques séances et en allouant une fraction du capital à chacune, le portefeuille global détient une combinaison glissante plutôt qu'un pari lié à une date de départ unique.
Le tableau ci-dessous effectue le classement sur un univers de neuf ETF couvrant le marché large, les secteurs, l'international et les métaux, en utilisant les 21 derniers cours de clôture pour obtenir un rendement couvrant exactement 20 séances.
Le SQL exact derrière chaque chiffre
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 tête du classement, GLD a généré 8.69% sur ces 20 séances, soit 6.34 points par rapport au SPY. En fin de classement, XLU se situe à -5.81 points. Chaque ligne illustre le concept avec deux barres : la performance du fonds et ce qu'il en reste une fois la variation du SPY sur la même fenêtre déduite. L'écart entre les deux barres est identique pour toutes les 9 lignes, chaque fonds étant mesuré par rapport à un indice unique sur une fenêtre unique.
Ce que mesure réellement l'attribution d'alpha
L'attribution d'alpha est une régression. On aligne la série de rendements de la stratégie face à une ou plusieurs séries de rendements de référence et on ajuste une droite à travers le nuage de points. La pente de chaque indice de référence représente une exposition : la mesure dans laquelle la stratégie évolue en corrélation avec cet actif. L'ordonnée à l'origine (« intercept ») est ce qui reste une fois ces expositions rémunérées, et ce reliquat est ce que l'on appelle l'alpha. Le R-carré est le troisième indicateur : il représente la part de la variation de la stratégie expliquée par les indices de référence, allant de 0 % (les indices n'expliquent rien) à 100 % (la stratégie est égale aux indices plus une constante).
Si vous effectuez une régression d'une règle de rotation contre un seul indice de marché large, elle semble généralement originale. Dans l'attribution publiée d'une règle de ce type, mise en open-source en août 2026 et testée sur des prix synthétiques déterministes, cet ajustement à indice unique a produit un R-carré de 14,0 %. Les six septièmes de la variation de la stratégie n'étaient pas expliqués, ce qui, sur le papier, suggère une originalité. En remplaçant ces éléments par des proxies des expositions réellement détenues par la règle — un biais momentum et la concentration sectorielle inhérente à un portefeuille de deux titres — le R-carré est passé à 63,6 % et l'intercept a été ramené à 0,38 % par an. Même série de rendements, même code. Seul l'ensemble de comparaison a changé. La stratégie louait en réalité des expositions bien connues.
Cette étude génère ses propres prix à partir d'une graine fixe, permettant à un lecteur sans fournisseur de données de reproduire chaque chiffre publié. Elle n'a que quelques jours au moment de la rédaction, et un projet aussi récent évolue chaque semaine. Identifiez le commit exact ou la version taguée utilisée avant de citer un chiffre : les données d'attribution changent dès que les proxies de facteurs ou la fenêtre d'échantillonnage sont modifiés. Notre note sur les outils de backtest reproductibles aborde la même pratique sous un autre angle.
La leçon demeure, même sans le vocabulaire des modèles factoriels. L'indice de référence contre lequel vous effectuez la régression détermine le niveau d'alpha apparent ; choisissez-le avant d'examiner l'intercept et justifiez pourquoi il constitue la comparaison pertinente. Un ensemble de comparaison choisi après avoir vu le résultat ne mesure que le choix de la comparaison elle-même.
Quelle part d'un ETF est déjà représentée par l'indice de référence
Il n'est pas nécessaire d'utiliser un modèle factoriel complet pour anticiper le problème. Prenez les rendements quotidiens d'un fonds, alignez-les sur ceux du SPY pour les mêmes séances, et mettez la corrélation au carré. Cela donne la part de la variation quotidienne du fonds déjà expliquée par un indice de marché large.
Le SQL exact derrière chaque chiffre
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 DESCSur les deux dernières années, QQQ présentait le R-carré à indice unique le plus élevé de cet univers à 90.3%, et GLD le plus faible à 3.1%. Une poche constituée à partir du haut de ce graphique revient presque à reformuler l'indice avec une pondération différente, et tout intercept mesuré par rapport à un autre actif absorbera silencieusement cette différence. Le bas du graphique est l'endroit où une rotation peut ajouter un flux de rendement que le marché large ne contient pas déjà, mais c'est aussi là qu'un portefeuille de deux titres cesse de ressembler à un portefeuille diversifié.
À quelle fréquence le fonds leader change-t-il
Une règle de classement n'a de sens que lorsque les fonds divergent. Le tableau ci-dessous mesure le rendement mensuel de chaque fonds par rapport à celui du SPY sur le même mois, puis conserve la poche la plus forte et la plus faible pour chaque mois.
Le SQL exact derrière chaque chiffre
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.mSur 13 mois complets, la série débute en 2025-07 avec XLK en tête. Au cours du mois complet le plus récent, 2026-07, la poche la plus forte était XLE à 12.59 points par rapport au SPY, tandis que la plus faible se situait à -5.7. L'écart entre les deux lignes représente la dispersion dont se nourrit une règle de classement. Les mois où les lignes se rapprochent sont ceux où le tri est quasi arbitraire, et une règle qui trade à chaque classement subit le turnover sur tous ces mois. Les limites mensuelles méritent une attention particulière ici ; comment les rendements mensuels sont mesurés détaille les conventions.
La concentration sur deux titres est-elle le vrai risque ?
La volatilité est la version la plus simple de cette question. Ce tableau annualise la variation des rendements quotidiens de chaque fonds sur les deux mêmes années et utilise le SPY comme barre de référence, aux côtés de la pire séance enregistrée par chacun.
Le SQL exact derrière chaque chiffre
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 situait à l'extrémité haute avec 27.7% annualisés, et une pire séance de -6.82%, tandis que XLU se trouvait à l'extrémité basse avec 15.8%. Une règle détenant deux titres à la fois puise dans cette fourchette sans en faire la moyenne, et les drawdowns plus profonds associés à l'extrémité haute apparaissent dans une attribution comme une exposition plutôt que comme une compétence. La note sur l'anomalie de faible volatilité couvre l'historique à long terme de l'extrémité basse du même graphique.
Quatre vérifications pour votre propre backtest de rotation
- Fuite de signal en séance. Si le classement sur 20 séances est calculé à la clôture et que l'exécution est enregistrée à cette même clôture, le test utilise des informations qu'il ne possédait pas au moment du trade. Classez sur les données jusqu'à la séance t, exécutez à la séance t plus un, et comparez les deux versions : l'écart entre elles mesure l'ampleur de la fuite. Le biais d'anticipation montre l'importance de cet écart.
- Survivorship dans la liste des fonds. Un univers composé uniquement des fonds existant aujourd'hui exclut tous ceux qui ont fermé ou fusionné, or les fermetures se concentrent sur les produits les moins performants. Le biais de survie s'applique à une liste d'ETF exactement comme à une liste d'actions.
- Indice de référence choisi à l'avance. Définissez l'ensemble de comparaison avant la première régression, en incluant des proxies pour les expositions que la règle est censée détenir. L'intercept n'a de sens que par rapport à un indice de référence choisi préalablement.
- Concentration mesurée directement. Exécutez le même classement en conservant les deux meilleurs titres, puis les quatre meilleurs, puis une pondération égale de tout l'univers. Si l'essentiel de l'avantage rapporté réside dans la version à deux titres, la concentration est la position, et le classement n'est qu'un moyen de choisir quelle concentration adopter.
FAQ
Qu'est-ce que la force relative des ETF ?
La force relative est le rendement d'un fonds sur une période de rétrospection fixe, moins le rendement d'un indice de référence sur cette même fenêtre. Un classement basé sur cet indicateur place en tête les fonds ayant surperformé l'indice, que leurs rendements bruts soient positifs ou non.
Qu'est-ce que l'attribution d'alpha ?
Il s'agit d'une régression des rendements d'une stratégie sur une ou plusieurs séries de rendements de référence. Les pentes mesurent les expositions de la stratégie, et l'intercept est le rendement résiduel une fois ces expositions prises en compte. Cet intercept est le chiffre généralement rapporté comme étant l'alpha.
Un R-carré élevé signifie-t-il qu'une stratégie est mauvaise ?
Non. Un R-carré élevé signifie que les indices de référence expliquent la majeure partie de la variation de la stratégie, ce qui est un constat sur le chevauchement plutôt que sur la qualité. Ce qui change, c'est l'intercept : les expositions que la régression peut désormais identifier cessent d'être comptabilisées comme de l'originalité.
Pourquoi détenir des poches qui se chevauchent plutôt qu'un portefeuille unique ?
Un portefeuille unique rééquilibré toutes les 20 séances rend le résultat dépendant de la date de départ. Exécuter plusieurs copies décalées de la même règle permet de lisser ce choix et de répartir le turnover sur tout le mois plutôt que de le concentrer sur une seule date.
Chaque tableau ici est accompagné du code SQL qui l'a généré. Ouvrez-en un, insérez votre propre liste de fonds et relancez le classement sur le terminal Strasmore pour observer l'évolution du classement.