本项目提供 自动抓取资产市值数据、多策略量化回测 以及 企业微信自动报告 的完整流程,支持常驻运行和多时点调度。
- 数据抓取: 每日定时从 companiesmarketcap.com 抓取全球资产市值排名数据。
- 量化回测: 内置多因子轮动策略引擎,支持自定义策略扩展。
- 自动报告: 生成包含权益曲线、最大回撤、日收益分布及持仓明细的图表报告,并通过企业微信推送。
.
├── fetch_assets_by_market_cap.py # 数据抓取脚本
├── wechat_notify.py # 抓取状态通知脚本
├── runner.py # 全流程调度器 (抓取 -> 通知 -> 回测 -> 报告)
├── data/ # 存放抓取的原始 Excel 数据
└── backtest/ # 回测模块
├── run_backtest.py # 回测执行入口
├── send_report.py # 回测报告发送入口
├── main/ # 回测引擎核心
├── strategies/ # 策略实现目录
│ ├── momentum.py # 长动量轮动策略
│ └── medium_term_momentum.py # 中动量轮动策略
└── results/ # 回测产出结果 (CSV/PNG)
- Python 环境:
xbxpy12 - 依赖包:
conda run -n xbxpy12 pip install requests beautifulsoup4 pandas openpyxl matplotlib pillow
手动触发一次数据抓取:
conda run -n xbxpy12 python fetch_assets_by_market_cap.py数据将保存至 ./data/YYYY-MM-DD_assets_by_market_cap.xlsx。
运行回测(默认使用 momentum_rotation 策略):
# 运行默认策略
conda run -n xbxpy12 python backtest/run_backtest.py
# 运行中动量策略
conda run -n xbxpy12 python backtest/run_backtest.py --strategy medium_term_momentum回测结果(CSV数据表与PNG仪表盘)将生成在 backtest/results/ 目录下。
将最新的回测结果发送至企业微信:
# 发送默认策略报告
conda run -n xbxpy12 python backtest/send_report.py
# 发送指定策略报告
conda run -n xbxpy12 python backtest/send_report.py --strategy medium_term_momentum需配置 WECHAT_WEBHOOK 环境变量或通过 --webhook 参数指定。
使用 runner.py 进行常驻调度,它会在指定时间点依次执行:抓取 -> 通知 -> 回测 -> 报告。
# 环境变量配置
export RUN_TIMES="09:00,12:30,15:30"
export WECHAT_WEBHOOK="https://qyapi.weixin.qq.com/..."
# 启动调度器
conda run -n xbxpy12 python runner.py| 策略代码 | 名称 | 逻辑简述 |
|---|---|---|
momentum_rotation |
长动量轮动 | 13日动量排序,20日均线择时,持有期3天 |
medium_term_momentum |
中动量轮动 | 10日动量排序,0%阈值择时,持有期1天 |
使用 PM2 后台常驻运行:
pm2 start bash --name assets_runner -- -lc 'conda run -n xbxpy12 python runner.py'查看日志与状态:
pm2 logs assets_runner
pm2 status