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

推荐订阅源

博客园 - 三生石上(FineUI控件)
Martin Fowler
Martin Fowler
月光博客
月光博客
AI
AI
B
Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
C
CXSECURITY Database RSS Feed - CXSecurity.com
WordPress大学
WordPress大学
GbyAI
GbyAI
L
Lohrmann on Cybersecurity
O
OpenAI News
Schneier on Security
Schneier on Security
P
Palo Alto Networks Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Troy Hunt's Blog
V2EX - 技术
V2EX - 技术
W
WeLiveSecurity
L
LINUX DO - 最新话题
人人都是产品经理
人人都是产品经理
S
Security Affairs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
A
Arctic Wolf
Recorded Future
Recorded Future
Microsoft Security Blog
Microsoft Security Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
G
GRAHAM CLULEY
N
Netflix TechBlog - Medium
TaoSecurity Blog
TaoSecurity Blog
C
Check Point Blog
Scott Helme
Scott Helme
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Apple Machine Learning Research
Apple Machine Learning Research
PCI Perspectives
PCI Perspectives
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Vercel News
Vercel News
The Hacker News
The Hacker News
Y
Y Combinator Blog
Latest news
Latest news
SecWiki News
SecWiki News
Hugging Face - Blog
Hugging Face - Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Google Online Security Blog
Google Online Security Blog
Webroot Blog
Webroot Blog
Google DeepMind News
Google DeepMind News
Recent Commits to openclaw:main
Recent Commits to openclaw:main
C
Cisco Blogs
博客园_首页
H
Hackread – Cybersecurity News, Data Breaches, AI and More
宝玉的分享
宝玉的分享
L
LINUX DO - 热门话题

博客园 - 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轮动策略的自动化还是不太安全,更多的是进行辅助分析,最终还是需要人来分析把关。