每周计算精选场内 ETF 的周涨幅排名与动量得分,辅助基金轮动买入决策。
# 1. 安装依赖
pip install -r requirements.txt
# 2. 运行脚本
python cli.py update上周五净值 → 本周四净值
周涨幅 = (周四净值 / 周五净值 - 1) × 100%
按主题分组,每个主题内按周涨幅降序排列,取 Top N。
使用多周期收益率加权,过滤短期噪音:
动量得分 = 1周回报 × 40%
+ 2周回报 × 30%
+ 4周回报 × 20%
+ 12周回报 × 10%
所有时间点均取周四净值,确保与排名窗口对齐。缺失周期权重按比例重新分配,可用周期不足 2 个的不参与评分。
- 东方财富基金净值接口(通过 akshare
fund_etf_fund_info_em获取) - 每只 ETF 每 0.2 秒请求一次(带内置 rate limiting)
建议:每周四收盘后(15:00 之后)运行
这样数据最新鲜——周四跑完脚本,周五一早看结果,周五开盘/盘中执行买入。间隔仅一晚,排名信号不被周末消息面污染。
📅 计算周期: 2026-07-10 ~ 2026-07-16
📊 共 24 个板块, 160 只精选 ETF
🏷️ 半导体/芯片
🥇 512480 半导体ETF +5.23%
🥈 159995 芯片ETF +4.10%
...
🚀 动量总榜 Top5(跨主题)
1. 512480 半导体ETF [半导体/芯片] 动量: +3.87
2. 159995 芯片ETF [半导体/芯片] 动量: +3.52
...
数据保存在 data/latest.json 和历史文件 data/weekly/YYYY-MM-DD.json 中:
{
"week": "2026-07-10 ~ 2026-07-16",
"themes": [{ "name": "半导体/芯片", "funds": [...] }],
"momentumRanking": [
{ "code": "512480", "name": "半导体ETF", "theme": "半导体/芯片", "momentumScore": 3.87 }
]
}# 启动本地服务器查看
python3 -m http.server 8080
# 打开 http://localhost:8080三个 Tab:
- 🏆 总榜 — 所有 ETF 按周涨幅混排 Top 10
- 🚀 动量榜 — 跨主题按动量得分排名的 Top 20
- 各主题 Tab — 每个板块内部按周涨幅排名
- 周四收盘后 运行
python cli.py update - 查看动量榜,关注动量得分最高的 2-3 个板块
- 在对应主题 Tab 中选该板块内周涨幅靠前的 ETF
- 周五开盘/盘中 执行买入
- 每周轮动:跌出动量榜前 5 的卖出,新上榜的买入
编辑 config/themes.yaml 可自定义:
topN:每个主题展示的基金数量themes[].funds:每个主题包含的 ETF 代码列表
cli.py # 数据获取与计算(Python CLI)
config/themes.yaml # 主题与 ETF 配置
data/
latest.json # 最新一周结果
weekly/ # 历史每周数据
manifest.json # 周索引
index.html # 前端页面
script.js # 前端逻辑
style.css # 前端样式