Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor ·

ETF相对强弱与阿尔法归因分析方法

ETF相对强弱通过二十个交易日的超额收益对基金进行排名。本文深入探讨阿尔法归因如何通过回归分析剔除基准影响,并解析在基准完全匹配时截距项所代表的真实超额收益含义,帮助投资者准确衡量投资组合的实际表现。

ETF相对强弱规则的运作方式

相对强弱是一种比较指标,而非绝对收益。若某基金在20个交易日内上涨3%,而基准上涨5%,则其相对强弱为负。若某基金下跌1%,而基准下跌4%,则其相对强弱为正。排序所依据的数值是超额收益:即基金在固定窗口内的百分比变化,减去基准在同一窗口内的百分比变化,按交易日逐一衡量。

在此基础上,有两个关键选择。回溯期决定了排序所参考的历史长度,20个交易日大致为一个交易月。持有期则决定了胜出者在组合中的留存时间。当两者相等时,整个投资组合每月在同一日期进行调仓,最终结果完全取决于起始日期。重叠分仓(overlapping sleeves)消除了这种依赖:通过运行多个错开数个交易日的相同规则,并将资金分摊到各分仓中,混合后的组合持有的是滚动组合,而非单一起始日期的押注。

下表对包含大盘、行业、国际和金属ETF的九只基金组成的资产池进行了排序步骤,使用了最近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行中,两个柱状图之间的距离代表相同的数值。

阿尔法归因的实际衡量内容

阿尔法归因是一种回归分析。将策略的收益序列与一个或多个基准收益序列对齐,并拟合出一条穿过散点图的直线。每个基准的斜率代表风险敞口:即策略随该基准同步变动的程度。截距是扣除这些敞口后的剩余部分,这部分剩余即被称为阿尔法。R平方是第三个数值,代表基准序列所能解释的策略变动份额,范围从0%(基准无法解释任何变动)到100%(策略等同于基准加上一个常数)。

若将轮动规则与单一的大盘指数进行回归,它通常看起来具有独创性。在2026年8月开源并使用确定性合成价格运行的此类规则的已发布归因中,单一基准拟合的R平方为14.0%。策略变动中六分之七的部分未被解释,这在报告中被解读为独创性。若换用该规则实际持有的敞口代理(如动量倾向和双标的组合带来的行业集中度),R平方提升至63.6%,截距降至每年0.38%。同样的收益序列,同样的代码,只是换了一组比较对象。该策略实际上只是在租用众所周知的风险敞口。

该研究使用固定种子生成价格,因此没有数据供应商的读者也可以复现其打印的每一个数字。该项目在撰写时仅发布数日,且处于每周更新的状态。在引用其中的数字前,请锁定您运行的具体提交版本或标签版本:一旦因子代理或样本窗口发生变化,归因数值就会随之变动。我们关于可复现回测工具的说明从另一个角度涵盖了这一习惯。

即便不使用因子模型术语,这一教训依然适用。您进行回归分析所选的基准决定了您看起来拥有多少阿尔法,因此请在查看截距之前选定基准,并写明为何它是正确的比较对象。在看到结果后才挑选比较对象,衡量的是挑选行为本身,而非策略表现。

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在该资产池中拥有最高的单一基准R平方,为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。两条线之间的距离是排序规则赖以生存的离散度。当两条线靠拢时,意味着排序几乎是随机的,而在此类月份中进行交易的规则将付出换手成本。月份边界在此处需要特别注意;月度收益的衡量方式详细介绍了相关惯例。

双标的集中度是真正的风险吗?

波动率是该问题最直观的体现。本表将每只基金过去两年的每日收益变动进行年化处理,并以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%。同时持有两个标的的规则会从该范围内进行抽取,而不会进行平均,因此宽端带来的更深回撤在归因中会被视为风险敞口而非投资技巧。低波动率异象一文涵盖了同一图表窄端的长期记录。

针对您个人轮动回测的四项检查

  1. 当日信号泄露。如果20个交易日的排序是根据当日收盘价计算,且成交也是按该收盘价入账,则测试使用了交易时刻尚未掌握的信息。请按t日收盘前的数据进行排序,并在t+1日成交,然后比较两个版本:两者之间的差距即为泄露规模。前瞻偏差展示了该差距的大小。
  2. 基金列表中的存续性。由当前存续基金组成的资产池排除了所有在期间关闭或合并的基金,而关闭的基金往往集中在表现最差的产品中。存续偏差适用于ETF列表,正如其适用于股票列表一样。
  3. 预先选定基准。在进行首次回归之前写下比较对象,包括您预期该规则将持有的敞口代理。只有针对您预先承诺的基准,截距才有意义。
  4. 直接衡量集中度。运行相同的排序规则,分别持有前两个标的、前四个标的,以及整个资产池的等权重组合。如果大部分报告的超额收益都存在于双标的版本中,那么集中度就是该策略的本质,而排序只是选择持有哪种集中度的一种方式。

常见问题解答

什么是ETF相对强弱?

相对强弱是指基金在固定回溯期内的收益减去基准在同一窗口内的收益。基于此排序,表现超过基准的基金会排在前面,无论其原始收益是否为正。

什么是阿尔法归因?

这是策略收益对一个或多个基准收益序列的回归分析。斜率衡量策略所承担的风险敞口,截距则是扣除这些敞口后剩余的收益。该截距通常被报告为阿尔法。

R平方高是否意味着策略很差?

不是。高R平方意味着基准解释了策略的大部分变动,这是关于重合度的陈述,而非关于质量的陈述。发生变化的是截距:回归分析现在能够识别出的敞口将不再被计入独创性。

为什么要持有重叠分仓而不是单一投资组合?

单一投资组合每20个交易日调仓一次,会导致结果依赖于起始日期。运行多个错开的相同规则可以平滑这种选择偏差,并将换手分散在整个月份,而不是集中在某一天。


此处每个图表均附带生成它的SQL代码。打开一个图表,替换为您自己的基金列表,并在Strasmore终端重新运行排序,即可观察排序的变动。

#etfs#momentum#quant#factor models#attribution