基于PRD实现的三层ETF轮动系统(宏观→宽基→行业),集成:
- Tushare数据接入(
fund_daily/etf_share_size/index_daily/trade_cal) - 动态因子权重(
trending/choppy/transitional) - 风格检测与切换缓冲(大盘/小盘)
- 趋势择时与动态仓位
- 回测、交易记录与绩效输出
ETF_Rotation_Strategy/
├── README.md
├── requirements.txt
├── config/
│ ├── etf_pool.py
│ └── strategy_config.py
├── data/
│ ├── data_fetcher.py
│ ├── data_processor.py
│ └── data_sources.py
├── strategy/
│ ├── macro_signal.py
│ ├── broad_based_rotation.py
│ ├── sector_rotation.py
│ ├── style_detector.py
│ ├── timing_model.py
│ ├── dynamic_weights.py
│ └── signal_generator.py
├── backtest/
│ ├── backtest_engine.py
│ ├── portfolio_manager.py
│ ├── performance.py
│ └── trade_logger.py
└── main.py
- 安装依赖:
pip install -r ETF_Rotation_Strategy/requirements.txt- 确保根目录
.env已包含:
TUSHARE_TOKEN=你的token
DATA_SOURCE=tushare- 执行回测:
python -m ETF_Rotation_Strategy.main默认输出到 ETF_Rotation_Strategy/outputs/:
metrics.txt:年化收益、最大回撤、夏普、胜率等nav_history.csv:策略/基准净值trades.csv:交易明细signals.csv:每日信号holdings.csv:期末持仓report.html:可视化回测网页报告(指标卡片 + 净值/回撤/仓位图 + 表格)
主要参数在 ETF_Rotation_Strategy/config/strategy_config.py:
- 回测区间、初始资金、交易成本
- 动态权重配置
- 仓位/调仓约束
- 止损止盈阈值
- 缓存开关:
use_cache(默认True)和force_refresh(默认False)
- 默认启用缓存,缓存目录为
ETF_Rotation_Strategy/outputs/cache/ - 缓存按「接口+代码+起止日期」保存CSV
- 首次会拉取并落盘,后续同区间优先读取本地缓存
- 如需强制重拉,将
force_refresh=True