恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

如何用 Python 回测动量轮动策略?

  • 首页
  • 资讯中心
  • /
  • 如何用 Python 回测动量轮动策略?

相关资讯

用DevOps思路重构媒体宣发:把发稿流程变成自动化流水线 2026/10/11 7:42:21
【单片机毕设案例分享】基于ESP32的智能厨房多参数监测与自动处置系统设计 基于单片机的厨房温湿度烟雾火焰监测报警装置设计(030401) 2026/10/11 7:37:20
【单片机课设毕设项目】基于物联网的厨房安全隐患监测与自动响应系统设计 基于单片机的厨房环境监测与风扇水泵联动控制装置设计(030401) 2026/10/11 7:37:20

最新资讯

ComfyUI本地部署生存指南:节点依赖与工作流可移植性实战
Netlify部署静态网站实战:从拖拽上传到自动构建
Python随机数深度解析:从伪随机原理到安全边界与并发实践
汉字解码:一套凝结东方生命尺度与认知方式的表意文字系统
一条 docker run 搞定 Redis:别再编译了,集装箱才是真香
视觉SLAM第14讲|主流开源方案盘点与行业发展方向展望

今日推荐

UE动画修改实战:从资产编辑到重定向与蒙太奇驱动
统计随机数生成器攻击下的KLJN安全密钥交换协议Matlab仿真
政务API安全治理:资产测绘、低代码编排与行标对标实践

本周热门

UE动画修改实战:从资产编辑到重定向与蒙太奇驱动
统计随机数生成器攻击下的KLJN安全密钥交换协议Matlab仿真
政务API安全治理:资产测绘、低代码编排与行标对标实践

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

如何用 Python 回测动量轮动策略?

发布时间:2026/10/11 7:42:21
如何用 Python 回测动量轮动策略? 一句话回答动量轮动的核心是「每期只持有最强的 N 只定期把转弱的换掉」。用 AlphaFeed 的klines.batch批量取前复权日线算出每只标的的动量如过去 60 日收益排名月末决策、次月开盘换仓避免未来函数扣手续费几十行就能回测一个多标的轮动组合并和等权持有对比。为什么会有这个问题 / 传统做法的痛点单只股票的择时回测很常见但「一篮子标的按强弱轮动」才是 ETF 轮动、板块轮动的真实玩法。难点在于① 要横向比较多只的动量并排名②调仓时点要避免未来函数用当期数据决策、下一期开盘成交③ 换仓有手续费。把这三点处理好就是一个可信的轮动回测框架。分步骤解决每步配可运行代码第 1 步批量取多只标的的前复权日线fromalphafeedimportAlphaFeedimportpandasaspd afAlphaFeed()# 读取 ALPHAFEED_API_KEY# 一篮子候选示例用几只宽基/行业 ETF可换成任意股票池codes[510300.SH,510500.SH,159915.SZ,512880.SH,518880.SH]dataaf.klines.batch(codes,period1d,count500,adjustforward,to_dataframeTrue)# dict{symbol: DataFrame}# 拼成“收盘价宽表”行交易日列标的closespd.DataFrame({s:k.sort_values(trade_date).set_index(trade_date)[close]fors,kindata.items()}).dropna(howall)openspd.DataFrame({s:k.sort_values(trade_date).set_index(trade_date)[open]fors,kindata.items()})print(closes.tail(3))第 2 步算动量并取每月末的排名LOOKBACK60# 动量回看天数TOP_N2# 每期持有最强的 N 只momcloses.pct_change(LOOKBACK)# 过去 LOOKBACK 日收益动量idxpd.to_datetime(closes.index)month_endcloses.groupby([idx.year,idx.month]).tail(1).index# 每月最后交易日# 每个月末选动量最高的 TOP_N 只作为下月持仓holdings{}fordinmonth_end:rowmom.loc[d].dropna()holdings[d]list(row.nlargest(TOP_N).index)iflen(row)TOP_Nelse[]参数含义本文取值LOOKBACK动量回看窗口日60TOP_N每期持有只数2调仓频率决策周期月度月末决策成交时点避免未来函数次月首个交易日开盘第 3 步次月开盘换仓计算带手续费的组合净值FEE0.0006# ETF 单边约 0.06%无印花税按实际调整dateslist(closes.index)me_listlist(month_end)equity1.0records[]prev_hold[]fori,dinenumerate(me_list[:-1]):holdholdings[d]# 下一个交易日次月开盘到下个月末持有 hold 等权startdates[dates.index(me_list[i])1]ifdates.index(me_list[i])1len(dates)elseNoneendme_list[i1]ifstartisNoneornothold:continue# 区间收益各持仓从 start 开盘 到 end 收盘 的等权收益seg[]forsinhold:p0opens[s].get(start);p1closes[s].get(end)ifpd.notna(p0)andpd.notna(p1):seg.append(p1/p0-1)retsum(seg)/len(seg)ifsegelse0.0# 换手成本与上期持仓不同的部分计费近似换手比例×2×FEEturnoverlen(set(hold)^set(prev_hold))/max(len(hold),1)ret-turnover*FEE equity*(1ret)records.append({调仓日:str(d)[:10],持仓:hold,区间收益:round(ret,4),净值:round(equity,4)})prev_holdhold btpd.DataFrame(records)print(bt.tail(6).to_string(indexFalse))第 4 步与等权持有对比# 基准全部标的等权买入持有benchcloses.mean(axis1)bench_retbench.iloc[-1]/bench.iloc[0]-1strat_retequity-1print(f动量轮动累计{strat_ret:.2%}| 等权持有累计{bench_ret:.2%}| 调仓{len(bt)}次)关键坑与注意事项避免未来函数用月末数据决策次月开盘才换仓成交别用当期收盘价当期成交。前复权价跨除权日必须用adjustforward否则动量与收益失真。对齐交易日不同标的停牌会造成缺失拼宽表后按需dropna/前值处理注意别引入未来数据。手续费与换手轮动天然高换手务必扣费ETF 无印花税、个股有按品种设FEE。样本与幸存者偏差候选池应包含当时真实存在的标的别用「现在的赢家」回测历史前视偏差。参数敏感LOOKBACK、TOP_N、调仓频率对结果影响大需多组稳健性测试避免过拟合。本文为简化模型未完全模拟涨跌停无法成交、停牌、资金分配取整等实盘更保守。常见问题FAQQ为什么用月末决策、次月开盘成交A月末才知道当月动量排名用它决定下月持仓并在下月第一个交易日开盘成交——这样不使用未来信息可真实执行。Q动量用多久的回看窗口A常见 60/120/250 日。短窗口反应快但噪音大长窗口稳但滞后。建议多测几组看稳健性。Q能用于股票池而不是 ETF 吗A可以把codes换成股票代码即可注意股票有印花税、涨跌停与停牌FEE和成交假设要更保守。Q需要付费吗A少量标的批量取数有免费额度大候选池 / 全市场轮动klines.batchuniverses需 Starter 及以上。详见定价页。小结动量轮动回测的关键不在选股逻辑而在框架的严谨性批量取前复权日线拼宽表、横向排名选最强 N 只、月末决策次月开盘换仓避免未来函数、扣手续费、和等权持有对比。用 AlphaFeed 的klines.batch几十行就能搭出这个多标的轮动回测框架客观检验「追强弃弱」在你的标的池上是否有效。参考AlphaFeed Python SDK 文档https://docs.alphafeed.org/zh-Hans/sdk/python-quickstartAlphaFeed 官网https://alphafeed.org/

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号