Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor ·

ETF रिलेटिव स्ट्रेंथ आणि अल्फा ॲट्रिब्युशन विश्लेषण

ETF रिलेटिव स्ट्रेंथ म्हणजे SPY च्या तुलनेत फंडाची कामगिरी मोजणे होय. बेंचमार्कशी जुळवून घेतल्यावर अल्फा ॲट्रिब्युशन इंटरसेप्टवर कसा परिणाम करते, हे या लेखात सविस्तर स्पष्ट केले आहे.

ETF रिलेटिव स्ट्रेंथ नियम कसा काम करतो

रिलेटिव स्ट्रेंथ ही एक तुलना आहे, परतावा नाही. जर एखादा फंड 20 सत्रांत 3% वाढला असेल आणि बेंचमार्क 5% वाढला असेल, तर रिलेटिव स्ट्रेंथ नकारात्मक असते. एखादा फंड 1% घसरला असताना बेंचमार्क 4% घसरला असेल, तर रिलेटिव स्ट्रेंथ सकारात्मक असते. ज्या संख्येवर रँकिंग आधारित असते ती म्हणजे 'एक्सेस रिटर्न': एका ठराविक कालावधीत फंडातील टक्केवारीतील बदल वजा त्याच कालावधीतील बेंचमार्कचा टक्केवारीतील बदल, जो सत्रागणिक मोजला जातो.

यावर दोन निवड अवलंबून असतात. 'लुकबॅक' (lookback) हे ठरवते की रँकिंगसाठी किती जुना इतिहास विचारात घ्यायचा; 20 सत्रे म्हणजे साधारणपणे एक महिना. 'होल्डिंग पिरियड' हे ठरवते की एखादा विजेता फंड किती काळ पोर्टफोलिओमध्ये राहील. जेव्हा हे दोन्ही कालावधी समान असतात, तेव्हा संपूर्ण पोर्टफोलिओ एकाच तारखेला बदलला जातो आणि निकाल तुम्ही कोणत्या तारखेला सुरुवात केली यावर अवलंबून असतो. 'ओव्हरलॅपिंग स्लीव्हज' (overlapping sleeves) मुळे हे अवलंबित्व कमी होते: एकाच नियमाच्या अनेक प्रती काही सत्रांच्या अंतराने चालवल्या जातात, प्रत्येक स्लीव्हला भांडवलाचा काही हिस्सा दिला जातो आणि एकत्रित पोर्टफोलिओमध्ये एकाच सुरुवातीच्या तारखेच्या बेटऐवजी फिरता (rolling) पोर्टफोलिओ तयार होतो.

खालील पॅनेल नऊ फंडांच्या विश्वात (ब्रॉड-मार्केट, सेक्टर, इंटरनॅशनल आणि मेटल्स ETFs) रँकिंगची पायरी चालवते. यात शेवटच्या 21 दैनंदिन क्लोजिंगचा वापर केला आहे, जेणेकरून परतावा नेमका 20 सत्रांचा असेल.

क्वेरीनऊ-फंड ETF विश्वातील SPY च्या तुलनेत 20-सत्र परतावा
प्रत्येक आकड्यामागील अचूक SQL
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 DESC
Run this yourself

रँकिंगमध्ये सर्वात वर, GLD ने त्या 20 सत्रांत 8.69% परतावा दिला, जो SPY च्या तुलनेत 6.34 पॉइंट्स आहे. सर्वात खाली, XLU हे -5.81 पॉइंट्सवर होते. प्रत्येक ओळ संपूर्ण संकल्पना दोन बारमध्ये दर्शवते: फंडाची कामगिरी आणि त्याच कालावधीतील SPY ची हालचाल वजा केल्यावर उरलेली कामगिरी. दोन बारमधील अंतर सर्व 9 ओळींमध्ये समान आहे, कारण प्रत्येक फंडाची मोजणी एकाच बेंचमार्कच्या तुलनेत एकाच कालावधीसाठी केली जाते.

अल्फा ॲट्रिब्युशन प्रत्यक्षात काय मोजते

अल्फा ॲट्रिब्युशन ही एक रिग्रेशन प्रक्रिया आहे. धोरणाचा परतावा एका किंवा अधिक बेंचमार्क परताव्यांच्या मालिकेसमोर ठेवा आणि स्कॅटर प्लॉटवर एक सरळ रेषा काढा. प्रत्येक बेंचमार्कचा उतार (slope) म्हणजे 'एक्सपोजर' आहे: धोरण त्या बेंचमार्कच्या हालचालीशी किती प्रमाणात जुळते हे यावरून समजते. त्या एक्सपोजरचा हिशोब केल्यानंतर जे उरते, त्याला 'अल्फा' म्हणतात. आर-स्क्वेर्ड (R squared) ही तिसरी संख्या आहे, जी धोरणातील बदलांपैकी किती हिस्सा बेंचमार्कद्वारे स्पष्ट होतो हे दर्शवते. हे 0% (बेंचमार्क काहीही स्पष्ट करत नाहीत) ते 100% (धोरण म्हणजे बेंचमार्क अधिक एक स्थिर संख्या) या दरम्यान असते.

एखाद्या रोटेशन नियमाला एका ब्रॉड-मार्केट मालिकेविरुद्ध रिग्र्रेस केल्यास ते सहसा मूळ धोरण वाटते. ऑगस्ट 2026 मध्ये ओपन-सोर्स केलेल्या आणि सिंथेटिक किमतींवर चालवलेल्या अशाच एका नियमाच्या प्रसिद्ध ॲट्रिब्युशनमध्ये, सिंगल-बेंचमार्क फिटचा आर-स्क्वेर्ड 14.0% होता. धोरणातील सहा-सप्तमांश बदल स्पष्ट न झालेले होते, जे कागदावर 'मौलिकता' म्हणून दिसतात. नियमात प्रत्यक्षात असलेल्या एक्सपोजरचे (उदा. मोमेंटम टिल्ट आणि दोन-नामांच्या पोर्टफोलिओची सेक्टर एकाग्रता) प्रॉक्सी वापरल्यावर, आर-स्क्वेर्ड 63.6% पर्यंत वाढला आणि इंटरसेप्ट वर्षाला 0.38% वर आला. परताव्याची मालिका आणि कोड तोच होता, फक्त तुलना करण्याचा संच बदलला. हे धोरण प्रत्यक्षात सुप्रसिद्ध एक्सपोजर भाड्याने घेत होते.

तो अभ्यास एका निश्चित सीडवरून स्वतःच्या किमती तयार करतो, त्यामुळे डेटा व्हेंडर नसलेला वाचकही त्यातील प्रत्येक आकडा पुन्हा तयार करू शकतो. हे लेखन चालू असताना तो प्रकल्प काही दिवसांचाच आहे आणि इतक्या कमी वयाचे प्रकल्प दर आठवड्याला बदलतात. त्यातील आकडा उद्धृत करण्यापूर्वी तुम्ही चालवलेली नेमकी कमिट किंवा टॅग केलेली रिलीज नोंदवून ठेवा: फॅक्टर प्रॉक्सी किंवा सॅम्पल विंडो बदलली की ॲट्रिब्युशनचे आकडे बदलतात. reproducible backtest tooling वरील आमची टीप याच सवयीवर दुसऱ्या बाजूने प्रकाश टाकते.

फॅक्टर-मॉडेलच्या शब्दसंग्रहाशिवायही हा धडा महत्त्वाचा आहे. तुम्ही ज्या बेंचमार्कविरुद्ध रिग्रेशन करता, त्यावरच तुमचा अल्फा किती आहे हे ठरते. त्यामुळे इंटरसेप्ट पाहण्यापूर्वी बेंचमार्क निवडा आणि तोच योग्य का आहे हे लिहून ठेवा. निकाल पाहिल्यानंतर निवडलेला तुलनात्मक संच केवळ तुमच्या निवडीचे मोजमाप करतो.

ETF चा किती हिस्सा आधीच बेंचमार्क असतो

ही समस्या ओळखण्यासाठी पूर्ण फॅक्टर मॉडेलची गरज नाही. एका फंडाचा दैनंदिन परतावा घ्या, तो त्याच सत्रांमधील SPY च्या दैनंदिन परताव्याशी जुळवा आणि कोरिलेशनचा वर्ग करा. यावरून फंडाच्या दैनंदिन बदलांपैकी किती हिस्सा एका ब्रॉड-मार्केट बेंचमार्कद्वारे आधीच स्पष्ट होतो, हे समजते.

क्वेरीप्रत्येक फंडाच्या दैनंदिन चढ-उतारातील SPY चा वाटा, मागील दोन वर्षे
प्रत्येक आकड्यामागील अचूक SQL
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 DESC
Run this yourself

गेल्या दोन वर्षांत, QQQ चा सिंगल-बेंचमार्क आर-स्क्वेर्ड या विश्वात 90.3% इतका सर्वाधिक होता, तर GLD चा 3.1% इतका सर्वात कमी होता. त्या चार्टच्या उच्च टोकावरून बनवलेली स्लीव्ह ही वेगळ्या वेटिंगसह बेंचमार्कची पुनरावृत्ती करण्यासारखी आहे आणि बेंचमार्कव्यतिरिक्त इतर कशाशीही मोजलेला कोणताही इंटरसेप्ट शांतपणे तो फरक शोषून घेतो. खालच्या टोकावर रोटेशन अशा परताव्याची जोड देऊ शकते जो ब्रॉड मार्केटमध्ये आधीच समाविष्ट नाही, परंतु तिथेच दोन-नामांचा पोर्टफोलिओ वैविध्यपूर्ण पोर्टफोलिओसारखा वाटणे बंद करतो.

प्रमुख फंड किती वेळा बदलतो

जेव्हा फंड एकमेकांशी असहमत असतात, तेव्हाच रँकिंग नियमाला काहीतरी सॉर्ट करण्यासाठी मिळते. खालील पॅनेल प्रत्येक फंडाचा कॅलेंडर-महिन्याचा परतावा त्याच महिन्यातील SPY च्या परताव्याशी मोजते आणि प्रत्येक महिन्यासाठी सर्वात मजबूत आणि सर्वात कमकुवत स्लीव्ह ठेवते.

क्वेरीकॅलेंडर महिन्यानुसार, SPY च्या तुलनेत सर्वात मजबूत आणि सर्वात कमकुवत स्लीव्ह
प्रत्येक आकड्यामागील अचूक SQL
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.m
Run this yourself

13 पूर्ण महिन्यांत, ही मालिका 2025-07 मध्ये XLK ला आघाडीवर ठेवून सुरू होते. सर्वात अलीकडील पूर्ण महिन्यात, 2026-07, सर्वात मजबूत स्लीव्ह XLE होती, जी SPY च्या तुलनेत 12.59 पॉइंट्सवर होती, तर सर्वात कमकुवत स्लीव्ह -5.7 वर होती. दोन रेषांमधील अंतर म्हणजे ती विखुरलेली स्थिती (dispersion) आहे ज्यावर रँकिंग नियम काम करतो. ज्या महिन्यांत रेषा जवळ येतात, तिथे सॉर्टिंग जवळजवळ मनमानी असते आणि प्रत्येक रँकिंगवर व्यापार करणारा नियम त्या सर्वांमध्ये टर्नओव्हरची किंमत मोजतो. महिन्याच्या सीमा येथे विशेष काळजी घेण्यास पात्र आहेत; how monthly returns are measured मध्ये यातील संकेतांची माहिती दिली आहे.

दोन-नामांची एकाग्रता हा खरा धोका आहे का?

अस्थिरता (Volatility) हा या प्रश्नाचा सर्वात सोपा प्रकार आहे. हे पॅनेल गेल्या दोन वर्षांतील प्रत्येक फंडाच्या दैनंदिन परताव्यातील बदलांचे वार्षिक प्रमाण मोजते आणि SPY ला संदर्भ बार म्हणून ठेवते, तसेच प्रत्येकाने नोंदवलेले सर्वात वाईट सत्रही दर्शवते.

क्वेरीवार्षिक अस्थिरता आणि सर्वात खराब एक सत्र, मागील दोन वर्षे
प्रत्येक आकड्यामागील अचूक SQL
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 DESC
Run this yourself

XLK हे वार्षिक 27.7% सह रुंद टोकावर होते, ज्याचे सर्वात वाईट सत्र -6.82% होते, आणि XLU हे वार्षिक 15.8% सह अरुंद टोकावर होते. एका वेळी दोन नावे ठेवणारा नियम या श्रेणीतून निवड करतो, परंतु त्यांची सरासरी काढत नाही. रुंद टोकामुळे येणारे मोठे घसरणीचे टप्पे (drawdowns) ॲट्रिब्युशनमध्ये कौशल्याऐवजी एक्सपोजर म्हणून गणले जातात. low volatility anomaly टीप याच चार्टच्या अरुंद टोकावरील दीर्घकालीन नोंदी कव्हर करते.

तुमच्या स्वतःच्या रोटेशन बॅकटेस्टसाठी चार तपासण्या

  1. त्याच दिवशी सिग्नल लीक होणे: जर 20-सत्रांचे रँकिंग सत्राच्या क्लोजिंगपर्यंत मोजले जाते आणि व्यवहार त्याच क्लोजिंगवर बुक केला जातो, तर चाचणी अशा माहितीवर व्यापार करते जी व्यवहाराच्या वेळी उपलब्ध नव्हती. सत्र t पर्यंतच्या डेटावर रँक करा, सत्र t अधिक एक वर व्यवहार पूर्ण करा आणि दोन्ही आवृत्त्यांची तुलना करा: त्यातील तफावत म्हणजे लीकचे प्रमाण. Look-ahead bias हे तफावत किती मोठी असू शकते हे दर्शवते.
  2. फंड यादीतील सर्व्हायव्हरशिप: आज अस्तित्वात असलेल्या फंडांपासून बनवलेली यादी वाटेत बंद झालेले किंवा विलीन झालेले सर्व फंड वगळते, आणि बंद होणारे फंड सहसा सर्वात खराब कामगिरी करणाऱ्या उत्पादनांमध्ये असतात. Survivorship bias जसा स्टॉक लिस्टला लागू होतो, तसाच तो ETF लिस्टलाही लागू होतो.
  3. बेंचमार्कची आगाऊ निवड: पहिल्या रिग्रेशनच्या आधीच तुलनात्मक संच लिहून ठेवा, ज्यामध्ये तुम्हाला अपेक्षित असलेल्या एक्सपोजरचे प्रॉक्सी समाविष्ट असावेत. इंटरसेप्टचा अर्थ तेव्हाच लागतो जेव्हा तुम्ही आधीच ठरवलेल्या बेंचमार्कविरुद्ध त्याची तुलना करता.
  4. एकाग्रतेचे थेट मोजमाप: सर्वात वरची दोन नावे ठेवून रँकिंग चालवा, त्यानंतर चार नावे, आणि शेवटी संपूर्ण विश्वाचे समान वेटिंग ठेवा. जर बहुतेक रिपोर्ट केलेला फायदा दोन-नामांच्या आवृत्तीतच असेल, तर एकाग्रता हेच तुमचे स्थान (position) आहे आणि रँकिंग ही कोणती एकाग्रता घ्यायची हे निवडण्याची एक पद्धत आहे.

वारंवार विचारले जाणारे प्रश्न (FAQ)

ETF रिलेटिव स्ट्रेंथ म्हणजे काय?

रिलेटिव स्ट्रेंथ म्हणजे एका ठराविक लुकबॅक कालावधीतील फंडाचा परतावा वजा त्याच कालावधीतील बेंचमार्कचा परतावा. यावर आधारित रँकिंगमध्ये जे फंड बेंचमार्कपेक्षा पुढे गेले आहेत, ते वरच्या क्रमांकावर येतात, मग त्यांचा कच्चा परतावा सकारात्मक असो वा नसो.

अल्फा ॲट्रिब्युशन म्हणजे काय?

हे एका किंवा अधिक बेंचमार्क परताव्याच्या मालिकेवर धोरणाच्या परताव्याचे रिग्रेशन आहे. उतार (slopes) धोरणाचे एक्सपोजर मोजतात आणि इंटरसेप्ट म्हणजे एक्सपोजरचा हिशोब केल्यानंतर उरलेला परतावा. तो इंटरसेप्ट म्हणजे सहसा अल्फा म्हणून सांगितली जाणारी संख्या.

उच्च आर-स्क्वेर्डचा अर्थ धोरण खराब आहे असा होतो का?

नाही. उच्च आर-स्क्वेर्डचा अर्थ असा की बेंचमार्क धोरणातील बहुतेक बदल स्पष्ट करतात, जे गुणवत्तेपेक्षा ओव्हरलॅपबद्दलचे विधान आहे. जे बदलते ते म्हणजे इंटरसेप्ट: रिग्रेशनला आता जे एक्सपोजर दिसू शकतात, ते मौलिकता म्हणून मोजले जाणे थांबते.

एका पोर्टफोलिओऐवजी ओव्हरलॅपिंग स्लीव्हज का ठेवाव्यात?

दर 20 सत्रांनी रिबॅलन्स केलेला एकच पोर्टफोलिओ निकालाला सुरुवातीच्या तारखेवर अवलंबून ठेवतो. एकाच नियमाच्या अनेक प्रती काही सत्रांच्या अंतराने चालवल्यामुळे ती निवड सरासरीने कमी होते आणि टर्नओव्हर एका तारखेला केंद्रित न होता संपूर्ण महिन्यात विभागला जातो.


येथील प्रत्येक पॅनेल त्यातील SQL सह उपलब्ध आहे. एक उघडा, तुमची स्वतःची फंड यादी टाका आणि ऑर्डर कशी बदलते हे पाहण्यासाठी Strasmore टर्मिनलवर रँकिंग पुन्हा चालवा.

#etfs#momentum#quant#factor models#attribution