ETF relative strength en alpha attribution berekenen
Ontdek hoe ETF relative strength fondsen rangschikt op basis van twintig sessies rendement versus SPY. Analyseer hoe alpha attribution de intercept beïnvloedt bij benchmark fit.
Hoe de ETF relative strength-regel werkt
Relative strength is een vergelijking, geen rendement. Een fonds dat over 20 sessies met 3% stijgt terwijl de benchmark 5% stijgt, heeft een negatieve relative strength. Een fonds dat 1% daalt terwijl de benchmark 4% daalt, heeft een positieve relative strength. Het getal waarop de rangschikking wordt gesorteerd is excess return: de procentuele verandering van het fonds over een vast venster, minus de procentuele verandering van de benchmark over datzelfde venster, gemeten van sessie tot sessie.
Hieraan liggen twee keuzes ten grondslag. De lookback bepaalt hoeveel historie de rangschikking meeneemt, waarbij 20 sessies ongeveer een handelsmaand beslaan. De holding period bepaalt hoe lang een winnaar in de portefeuille blijft. Wanneer beide gelijk zijn, wordt de gehele portefeuille op één datum per maand ververst en hangt het resultaat volledig af van de datum waarop u bent begonnen. Overlapping sleeves heffen die afhankelijkheid op: voer meerdere kopieën van dezelfde regel uit, versprongen met enkele sessies, wijs aan elk een fractie van het kapitaal toe, en de gecombineerde portefeuille bevat een rollende mix in plaats van een weddenschap op één startdatum.
Het onderstaande overzicht voert de rangschikkingsstap uit op een universum van negen fondsen bestaande uit broad-market, sector-, internationale en metalen-ETF's, waarbij de laatste 21 slotkoersen worden gebruikt zodat het rendement exact 20 sessies beslaat.
De exacte SQL achter elk getal
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 DESCBovenaan de rangschikking behaalde GLD een rendement van 8.69% over die 20 sessies, 6.34 punten ten opzichte van SPY. Onderaan stond XLU op -5.81 punten. Elke rij brengt het concept in twee balken in kaart: wat het fonds deed, en wat er overblijft zodra de beweging van SPY over hetzelfde venster wordt afgetrokken. De afstand tussen de twee balken is in alle 9 rijen hetzelfde getal, aangezien elk fonds wordt gemeten tegen één benchmark over één venster.
Wat alpha-attributie daadwerkelijk meet
Alpha-attributie is een regressie. Zet de rendementsreeks van de strategie af tegen een of meer benchmark-rendementsreeksen en trek een rechte lijn door de spreiding. De helling van elke benchmark is een exposure: in hoeverre de strategie één-op-één meebeweegt met dat instrument. Het intercept is wat overblijft nadat die exposures zijn verrekend, en dat restant wordt alpha genoemd. R-squared is het derde getal, het deel van de variatie in de strategie dat door de benchmarkreeksen wordt verklaard, variërend van 0% (de benchmarks verklaren niets) tot 100% (de strategie is de som van de benchmarks plus een constante).
Regresseer een rotatieregel tegen een enkele broad-market-reeks en het ziet er meestal origineel uit. In de gepubliceerde attributie van een regel met deze vorm, open-sourced in augustus 2026 en uitgevoerd op deterministische synthetische prijzen, leverde die fit met één benchmark een R-squared van 14,0% op. Zes zevende van de variatie in de strategie bleef onverklaard, wat in het rapport als originaliteit wordt gelezen. Door proxies toe te voegen voor de exposures die de regel daadwerkelijk aanhield – een momentum-tilt en de sectorconcentratie die een portefeuille met twee namen met zich meebrengt – steeg de R-squared naar 63,6% en daalde het intercept naar 0,38% per jaar. Dezelfde rendementsreeks en dezelfde code. Een andere vergelijkingsset. De strategie bleek bekende exposures te huren.
Die studie genereert zijn eigen prijzen vanuit een vaste seed, zodat een lezer zonder dataleverancier elk cijfer dat wordt afgedrukt kan reproduceren. Het is bovendien slechts enkele dagen oud op het moment van schrijven, en een project van die leeftijd verandert wekelijks. Noteer de exacte commit of tagged release die u heeft uitgevoerd voordat u een cijfer daaruit citeert: attributiecijfers veranderen zodra de factor-proxies of het steekproefvenster wijzigen. Onze notitie over reproduceerbare backtest-tooling behandelt dezelfde gewoonte vanuit de andere kant.
De les blijft overeind zonder het jargon van het factormodel. De benchmark waartegen u regresseert bepaalt hoeveel alpha u lijkt te hebben; kies deze dus voordat u naar het intercept kijkt en schrijf op waarom dit de juiste vergelijking is. Een vergelijkingsset die pas na het zien van het resultaat wordt gekozen, meet de keuze van de vergelijking zelf.
Hoeveel van een ETF al de benchmark is
U heeft geen volledig factormodel nodig om het probleem te zien aankomen. Neem de dagelijkse rendementen van een fonds, zet ze af tegen de dagelijkse rendementen van SPY over dezelfde sessies en kwadrateer de correlatie. Dat geeft het deel van de dagelijkse variatie van het fonds dat al door een enkele broad-market-benchmark wordt verklaard.
De exacte SQL achter elk getal
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 DESCOver de afgelopen twee jaar had QQQ de hoogste R-squared met één benchmark in dit universum met 90.3%, en GLD de laagste met 3.1%. Een sleeve die is samengesteld uit de bovenkant van die grafiek is bijna een herformulering van de benchmark onder een andere weging, en elk intercept dat wordt gemeten tegen iets anders dan de benchmark zal stilletjes het verschil absorberen. De onderkant is waar een rotatie een rendementsstroom kan toevoegen die de brede markt nog niet bevat, en het is ook waar een portefeuille met twee namen niet langer op een gediversifieerde portefeuille lijkt.
Hoe vaak het leidende fonds verandert
Een rangschikkingsregel heeft alleen iets om te sorteren wanneer de fondsen het oneens zijn. Het onderstaande overzicht meet het maandrendement van elk fonds tegen dat van SPY over dezelfde maand, en behoudt vervolgens de sterkste en zwakste sleeve voor elke maand.
De exacte SQL achter elk getal
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.mOver 13 volledige maanden opent de reeks in 2025-07 met XLK aan kop. In de meest recente volledige maand, 2026-07, was de sterkste sleeve XLE met 12.59 punten ten opzichte van SPY, terwijl de zwakste -5.7 mat. De afstand tussen de twee lijnen is de spreiding waar een rangschikkingsregel op teert. Maanden waarin de lijnen naar elkaar toe kruipen, zijn maanden waarin de sortering bijna willekeurig is, en een regel die op elke rangschikking handelt, betaalt in al die maanden turnover-kosten. Maandgrenzen verdienen hier extra aandacht; hoe maandrendementen worden gemeten loopt door de conventies heen.
Is concentratie in twee namen het echte risico?
Volatiliteit is de meest eenvoudige versie van die vraag. Dit overzicht annualiseert de dagelijkse rendementsvariatie van elk fonds over dezelfde twee jaar en hanteert SPY als referentiebalk, naast de slechtste sessie die elk fonds liet zien.
De exacte SQL achter elk getal
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 zat aan de brede kant met 27.7% op jaarbasis, met een slechtste sessie van -6.82%, en XLU aan de smalle kant met 15.8%. Een regel die twee namen tegelijk aanhoudt, put uit dit bereik zonder erover te middelen, en de diepere drawdowns die gepaard gaan met de brede kant komen in een attributie naar voren als exposure in plaats van als kunde. De notitie over de low volatility anomaly behandelt het langetermijnrecord aan de smalle kant van dezelfde grafiek.
Vier controles voor uw eigen rotatie-backtest
- Same-day signal leakage. Als de 20-daagse rangschikking wordt berekend op basis van het slot van een sessie en de uitvoering wordt geboekt tegen datzelfde slot, handelt de test op informatie die op het moment van de transactie nog niet beschikbaar was. Rangschik op data tot en met sessie t, voer uit op sessie t plus één, en vergelijk de twee versies: het verschil daartussen is de omvang van de lek. Look-ahead bias laat zien hoe groot dat gat wordt.
- Survivorship in de fondslijst. Een universum dat is samengesteld uit fondsen die vandaag bestaan, sluit elk fonds uit dat onderweg is gesloten of gefuseerd, en sluitingen clusteren in de producten die het slechtst presteerden. Survivorship bias is op een ETF-lijst precies zo van toepassing als op een aandelenlijst.
- Benchmark vooraf gekozen. Schrijf de vergelijkingsset op vóór de eerste regressie, inclusief proxies voor de exposures waarvan u verwacht dat de regel deze aanhoudt. Het intercept betekent alleen iets ten opzichte van een benchmark waartoe u zich vooraf heeft verbonden.
- Concentratie direct gemeten. Voer dezelfde rangschikking uit waarbij u de top twee namen aanhoudt, dan de top vier, en vervolgens een gelijke weging van het gehele universum. Als het grootste deel van de gerapporteerde edge in de versie met twee namen zit, is concentratie de positie en is de rangschikking een manier om te kiezen welke concentratie u inneemt.
Veelgestelde vragen
Wat is ETF relative strength?
Relative strength is het rendement van een fonds over een vaste lookback minus het rendement van een benchmark over datzelfde venster. Een rangschikking die hierop is gesorteerd, plaatst de fondsen die de benchmark overtroffen bovenaan, ongeacht of hun ruwe rendementen positief waren.
Wat is alpha-attributie?
Het is een regressie van de rendementen van een strategie op een of meer benchmark-rendementsreeksen. De hellingen meten de exposures die de strategie aanhoudt, en het intercept is het rendement dat overblijft zodra die exposures zijn verrekend. Dat intercept is het getal dat doorgaans als alpha wordt gerapporteerd.
Betekent een hoge R-squared dat een strategie slecht is?
Nee. Een hoge R-squared betekent dat de benchmarks het grootste deel van de variatie in de strategie verklaren, wat een uitspraak is over overlap in plaats van over kwaliteit. Wat verandert is het intercept: exposures die de regressie nu kan zien, worden niet langer als originaliteit geteld.
Waarom overlapping sleeves aanhouden in plaats van één portefeuille?
Eén portefeuille die elke 20 sessies wordt geherbalanceerd, maakt het resultaat afhankelijk van de startdatum. Het uitvoeren van meerdere versprongen kopieën van dezelfde regel middelt die keuze weg en spreidt de turnover over de maand in plaats van deze op één datum te concentreren.
Elk overzicht hier wordt geleverd met de SQL die het heeft geproduceerd. Open er een, voeg uw eigen fondslijst toe en voer de rangschikking opnieuw uit op de Strasmore-terminal om de volgorde te zien verschuiven.