惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V2EX - 技术
V2EX - 技术
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Threat Research - Cisco Blogs
T
The Exploit Database - CXSecurity.com
S
Schneier on Security
S
Securelist
P
Privacy & Cybersecurity Law Blog
Scott Helme
Scott Helme
T
Threatpost
C
Cybersecurity and Infrastructure Security Agency CISA
L
LINUX DO - 热门话题
Cyberwarzone
Cyberwarzone
Cisco Talos Blog
Cisco Talos Blog
量子位
博客园 - Franky
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Latest news
Latest news
T
Troy Hunt's Blog
N
News | PayPal Newsroom
Google Online Security Blog
Google Online Security Blog
Apple Machine Learning Research
Apple Machine Learning Research
N
Netflix TechBlog - Medium
小众软件
小众软件
P
Palo Alto Networks Blog
Spread Privacy
Spread Privacy
C
Cyber Attacks, Cyber Crime and Cyber Security
C
Check Point Blog
aimingoo的专栏
aimingoo的专栏
WordPress大学
WordPress大学
L
Lohrmann on Cybersecurity
L
LINUX DO - 最新话题
D
Darknet – Hacking Tools, Hacker News & Cyber Security
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
The Last Watchdog
The Last Watchdog
S
Security @ Cisco Blogs
P
Privacy International News Feed
Last Week in AI
Last Week in AI
Microsoft Security Blog
Microsoft Security Blog
T
Tailwind CSS Blog
博客园_首页
云风的 BLOG
云风的 BLOG
V
Vulnerabilities – Threatpost
D
DataBreaches.Net
Recent Announcements
Recent Announcements
酷 壳 – CoolShell
酷 壳 – CoolShell
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
罗磊的独立博客
Engineering at Meta
Engineering at Meta
Forbes - Security
Forbes - Security
T
Tenable Blog

博客园 - Leone-

华为韬定律8家核心公司梳理,先进封装+晶圆代工+底层硬核全解析 暴涨10%+,江波龙这玩笑开大了 我用 AI Agent 写了个"美股看门狗",每天早上替我分析 A 股方向 为什么电脑用久了会变得越来越卡顿,其背后的计算机原理是什么? 实测GitHub开源项目:功能强大的K线量化神器 我的三板斧:只做上升趋势、只做首次回踩、只做放量启动 从通达信人工看盘到策略自动执行:零代码搭建自动盯盘交易系统! 多因子选股量化策略怎么构建 我做了个ETF轮动GUI界面版 炒股止损设多少?5%+ATR双重保护,一个公式解决 早盘竞价10分钟,如何用56个因子“算”出涨停股 完整交易系统实例:从选股到买卖全写明,避开搭建误区 双周期共振策略看着容错率高,多数人败在大小周期信号不同步 把“分歧转一致”刻进骨子里,抓主升浪就靠这一招 但凡出现“天量阴回踩”,仓位拉满,不是大涨就是连板 告别“凭感觉”炒股:看清K线背后的资金博弈逻辑 开源免费AI股票分析&交易系统 A股股票数据接口库 五年磨一剑:我把交易系统改了4次,终于做到稳定盈利 用7只ETF布局全球:我的十年定投计划,用纪律换十年后的自由 交易计划模板 通达信AI盯盘实操:3种方和4个技巧,帮你告别无效盯盘 从选股到复盘:我用 AI Agent 跑了一套股票辅助系统 牛股三绝 别只盯着K线图了!本周GitHub上这10个AI项目,正在改变交易圈 别以为均线挨得近就是粘合!少1个条件,全是诱多陷阱 A股2026一季报全景透视 从零开始构建一个现代化的前端项目:使用Vite + React + TypeScript 用好仓位管理,让高胜率落地 【如何判断一个指标是好指标】 从0到1搭建个人量化系统:我花3个月踩过的7个深坑 通达信公式预警转自动买入完整方案,Python+TRAE 实现 lesson70:jQuery Ajax完全指南:从基础到4.0新特性及现代替代优秀的方案引言:jQuery Ajax的时代价值与演进 使用 ffmpeg 为视频文件添加封面 最全剖析!霍尔木兹海峡长期封锁下 十大产业链危机脉络梳理 如何选择合适的免费待办事项App:10款软件推荐 yt-dlp无法使用--cookies-from-browser解决方法 短线高手私藏的3个量能绝技,学会就是赚 运行bat时隐藏cmd窗口 顾比均线、顾比倒数线与趋势线相结合,加上仓位管理,可构成一套完整的趋势型交易系统 成长能量场,为了终身不进医院,我一直坚持的好习惯 Win 开机自启动顺序 盘点国内14家热门智能体 CentOS运维常用命令 股票技术指标有哪些?最常用的4种指标分析教学 龙头战法:如何上车、如何持有、如何下车,看懂就开窍,值得收藏 交易日志必须记录的五个维度的信息,否则等于白写 如何配置 Nginx 使其支持对 PHP 程序的请求 /etc/systemd/system和/lib/systemd/system的区别 如何在 CentOS 上编译安装最新版 libzip
全市场 ETF 动量分析脚本
Leone- · 2026-04-24 · via 博客园 - Leone-

最近在 AI 的帮助下,写了一个全市场 ETF 动量分析脚本。其实这个脚本很早就已经写好了,但最近比较忙,一直没时间整理发推文。

在 ETF 轮动策略中,常见的做法是使用固定的 ETF 候选池。但这种方式存在一个明显的问题:行情是不断变化的,固定的候选池很难覆盖不同时段的市场机会。

动态ETF候选池

如果从长周期来看,固定候选池确实可以抓住大趋势。但另一方面,我们能不能做一个“动态 ETF 候选池”? 从理论上讲,动态候选池应该更有机会捕捉阶段性行情。

手动分析全市场ETF来构建动态ETF候选池,几乎不太可能:

  • 全市场 ETF 数量很多,手动筛选不太现实
  • 只看涨幅,容易选到短期冲高、溢价过高、或者流动性差的品种
  • 多只看起来都很强的 ETF,可能高度相关,最终组合并没有真正分散

所以,我们需要一个自动化工具,来帮助我们在某个交易日快速完成全市场 ETF 的分析和筛选。

构建动态候选池的思路

该自动化分析工具的大致思路是:从全市场 ETF 出发,做动量分析,并筛选出动量分散、相关性较低的一组 ETF。

以下是基于Tushare数据来实现这个思路的主要步骤:

1. 获取历史某日的全市场 ETF 列表

使用 Tushare 的 fund_basic() 接口获取 ETF 列表:

pro.fund_basic(market="E")

然后筛选出满足以下条件的基金:

  • list_date <= trading_date
  • 尚未退市(delist_date 为空或 ≥ trading_date
  • 名称中包含 ETF 或 LOF (如果不喜欢LOF,也可以把LOF去掉)

2. 获取 ETF 行情数据

使用 fund_daily() 接口获取行情数据,包括:open, high, low, close, pre_close, vol, amount 等字段。

虽然接口本身不支持复权,但返回的数据提供了 pre_close字段,因此我们可以自行实现前复权或后复权逻辑。

3. 动量打分计算

这里采用的是对数价格的线性回归方法来计算动量:

最终得分定义为:

score = annualized_returns × r_squared

核心代码如下:

y = np.log(prices)
x = np.arange(len(y), dtype=float)

# 等权线形回归
slope, intercept = np.polyfit(x, y, 1)
annualized_returns = math.pow(math.exp(slope), 250) - 1
r_squared = 1 - (sum((y - (slope * x + intercept))**2) / ((len(y) - 1) * np.var(y, ddof=1)))
score = annualized_returns * r_squared

这种方式可以同时考虑:

  • 收益强度
  • 趋势稳定性

相比单纯涨幅,更稳健。

当然也可以用其他的一些动量指标,比如非等权平均、动态回溯窗口进行回归等。

4. 相关性控制(核心步骤)

全市场 ETF 中,很多高动量标的其实属于同一类资产(例如同一行业或同一指数),如果不做处理,最终选出来的组合可能高度集中。

因此,我们可以通过相关性分析来进行筛选。筛选逻辑如下:

  1. 按动量得分从高到低排序
  2. 第一只 ETF 直接入选
  3. 后续 ETF 需满足:与已选 ETF 的相关性均低于阈值
  4. 若与任意已选 ETF 相关性过高,则跳过
  5. 直到选到特定数量的ETF

这本质上是在做一个“去相关”的动量组合构建。

5. 热力图功能

为了直观地感受最终筛选的ETF的动量变化,我新增了热力图功能,用于可视化最终入选 ETF 的历史动量得分变化

这样,我们就可以很直观地看到:

  • 哪些 ETF 是持续强势
  • 哪些只是阶段性爆发

6. 相关性可视化

另外我单独写了一个相关性分析脚本,用于分析给定 ETF 列表中,两两之间的相关性。以帮助更细致地理解:

  • 组合内部是否真正分散
  • 是否存在“看起来不同,本质一样”的 ETF

7. 其他细节处理

在实际实现中,还做了一些比较重要的过滤和风控处理:

  1. 剔除低波动 ETF(如债券、货币、固收类)
  2. 剔除流动性较差的 ETF(基于近期成交额均值)
  3. 风控过滤:
  • 剔除近期出现大跌的 ETF
  • 对溢价过高的 ETF 进行惩罚

8. 后记

整体来看,这个脚本的核心目标是:

从“全市场”中,自动构建一个“高动量 + 低相关 + 可交易”的 ETF 组合候选池

相比传统固定池策略,更加灵活,也更贴近真实市场结构。

不过,其具体效果如何,还是得测试测试才知道,目前完全靠这个来实现整套ETF轮动策略的自动化还是不太安全,更多的是进行辅助分析,最终还是需要人来分析把关。