ETF 研究方法说明

强度模型、ETF support 计算方法与筛选流程

核心概念

系统把两个问题分开回答:

  1. Ticker Strength:股票本身的趋势、动量、相对强度和 price action 是否强。
  2. ETF Support:持有该股票的已配置 ETF,是否形成广泛且一致的强势环境。
重要:被很多 ETF 持有只代表覆盖广度。只有这些 ETF 本身较强,而且来自多个 universe,才构成更可靠的 support。

ETF 与 Ticker 强度分数

ETF 和股票使用同一套 0–100 本地模型。FMP 提供日线 OHLCV、ETF holdings 等原始数据,不直接提供这个综合分数。

组件权重主要输入
Trend25Close 与 SMA20 / SMA50 / SMA200 的排列
Momentum2520 日、60 日收益率
Relative Strength25相对 SPY 的 20 日、60 日超额收益
Price Action2520 日区间位置、60 日高点回撤、量价分布质量

score ≥ 65 视为强势,score ≤ 40 视为弱势,中间区域代表中性、轮动或过渡状态。

ETF Support Score

Support Score 用于快速排序 ticker 的 ETF 环境,范围为 0–100:

Support = 45% × Weighted ETF Score + 25% × Strong ETF Share + 20% × ETF Breadth + 10% × Universe Diversity
输入计算目的
Weighted ETF Score 按该 ticker 在各 ETF 中的持仓权重,对 ETF 强度加权平均 衡量最相关 ETF 的整体质量
Strong ETF Share 强势 ETF 数 ÷ 已追踪 ETF 数 区分一致支持与少数强势
ETF Breadth min(ETF 数 ÷ 5, 1) 奖励多 ETF 确认,5 只封顶
Universe Diversity min(类型数 ÷ 3, 1) 奖励 sector、thematic、industry 交叉确认

如果 ETF 持仓权重缺失,Weighted ETF Score 退化为 ETF 强度的简单平均。Support Score 不包含 ticker 自身分数,因此可独立比较“环境”和“个股”。Support Score 只使用已追踪 universe 中有本地强度分数的 ETF;点击 ticker 后的 ETF 暴露表会额外显示 FMP 返回的全量 ETF exposure,未追踪 ETF 不参与打分。

ETF 共识标签

标签规则解读
Broad Support至少 3 个强势 ETF,且没有弱势 ETFETF 环境形成较广泛的正向确认
Broad Headwind至少 2 个弱势 ETF,且没有强势 ETF多个 ETF 环境同步承压
Mixed同时存在强势和弱势 ETF不同主题或行业正在分化
Limited不满足以上规则覆盖不足或共识尚未形成

如何使用

  1. 进入 Ticker Support,把 Minimum ETFs 设为 3+5+
  2. Support 降序,优先查看 Broad Support 且 Types ≥ 2 的 ticker。
  3. 同时比较 Ticker Score。高 support + 高 ticker score 是强势环境中的强势股票。
  4. 高 support + 较弱 ticker score 代表环境较好但个股尚未确认,需要等待自身 price action 改善。
  5. Broad Headwind + 低 ticker score 可用于弱势延续筛选。
  6. 弱 ETF 环境中相对 ETF 明显更强的股票,可在单个 ETF holdings 的 Rebound 分组中寻找。
  7. 点击 ticker 查看具体 ETF、持仓权重、ETF 强度与相对 SPY 表现,排除只由单一低权重 ETF 驱动的结果。

强度变化速度

历史强度可以使用一阶导和二阶导判断变化:

  • Velocity:近期 strength score 的斜率。正值代表强度改善,负值代表恶化。
  • Acceleration:velocity 的变化。正值代表改善速度加快,负值代表动量正在减速。

最有价值的组合通常是:高绝对分数且 velocity 为正;或低分区出现 velocity 转正、acceleration 为正的早期修复。导数对短期噪声敏感,必须结合绝对分数、RS 和价格结构。

RRG 轮动轨迹

首页 RRG 使用 60 日相对 SPY 收益作为 X 轴,使用 RS20 - RS60 作为 Y 轴。X 为正代表中期相对领先,Y 为正代表短期相对动量正在改善。5D、13D、21D 控件用于观察 ETF 在领先、转弱、落后和改善四个象限中的移动路径。

为避免轨迹重叠,页面默认显示 Sector 和 5D 轨迹。所有 ETF 的最新位置都会保留,但默认只突出移动幅度最大的 6 条轨迹。悬停可以临时聚焦任意 ETF,点击后会保持聚焦并打开详情。坐标范围采用绝对值的第 95 百分位,减少单个极值对整体可读性的影响。

这是本项目的 RRG-style 本地近似,不是专有的 JdK RS-Ratio / RS-Momentum 公式。

数据范围与更新

  • 价格与 holdings 来源:Financial Modeling Prep。
  • 基准:SPY。
  • Universe:配置中的 sector、thematic 和 industry ETF。
  • 每个 ETF 至少分析权重最高的 25 个有效 ticker;若累计权重不足 80%,继续增加,最多分析 50 个。
  • Ticker Support 分数只统计已追踪 universe 中有本地强度分数的 ETF;ticker 详情页的 ETF 暴露表会显示 FMP 返回的全量 ETF exposure。
  • 静态站点显示最近一次构建快照;计划任务在交易日收盘后更新。

局限性

这是一套筛选和上下文模型,不是交易指令。
  • ETF holdings 可能滞后于基金实际调仓,且不同发行商更新频率不同。
  • 同一股票在不同 ETF 中的权重不能直接相加成“总市场持仓比例”。
  • 模型不理解财报、估值、新闻、流动性、期权定位或宏观事件。
  • 多个 ETF 可能高度重叠,ETF 数量并不等于独立信息源数量。
  • 历史 momentum 可能反转。实际使用时仍需定义入场、失效条件和风险预算。