# 三因子动量选ETF **Repository Path**: roytang1987/3factorsETF ## Basic Information - **Project Name**: 三因子动量选ETF - **Description**: 一个基于多因子动量模型的ETF轮动策略,该策略结合了乖离动量、斜率动量和效率动量三个因子,并引入了调仓阈值机制以减少震荡期的频繁交易。以下是该策略的详细总结: - 策略名称:ETF三因子动量轮动策略 - 核心逻辑:融合三种动量因子(乖离、斜率、效率)进行加权评分,标准化后筛选评分最高ETF调仓 - 股票池:红利低波ETF、创业板50ETF、纳指ETF、黄金ETF(覆盖不同市场风格分散风险) - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2026-03-01 - **Last Updated**: 2026-05-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 三因子ETF轮动策略 (3FactorsETF) 基于三因子模型的ETF轮动投资策略实现。 ## 项目简介 本项目实现了一个基于三因子模型的ETF轮动投资策略,通过动量、偏差和回归因子对ETF进行综合评分,每月进行仓位再平衡。 ## 策略说明 ### 三因子模型 策略使用三个核心因子对ETF进行评估: - **动量因子 (Momentum)**: 过去一段时间的价格趋势 - **偏差因子 (Bias)**: 当前价格与均线的偏离程度 - **回归因子 (Regression)**: 价格回归均线的趋势 ### 轮动策略 项目包含多种轮动策略版本: - `run_top1_rotation.py`: 每月选取排名第一的ETF - `run_top3_rotation.py`: 每月选取排名前3的ETF等权配置 - `run_top5_rotation.py`: 每月选取排名前5的ETF等权配置 - `run_top10_rotation.py` / `run_top15_rotation.py` / `run_top20_rotation.py`: 更多数量的轮动策略 另有2周轮动(`run_top3_rotation_2weeks.py`)和2月轮动(`run_top3_rotation_2months.py`)版本。 ## 项目结构 ``` . ├── run_strategy.py # 主策略运行器 ├── run_top1_rotation.py # TOP1轮动策略 ├── run_top3_rotation.py # TOP3轮动策略 ├── run_top5_rotation.py # TOP5轮动策略 ├── run_top10_rotation.py # TOP10轮动策略 ├── run_top15_rotation.py # TOP15轮动策略 ├── run_top20_rotation.py # TOP20轮动策略 ├── run_top3_rotation_2weeks.py # 2周轮动策略 ├── run_top3_rotation_2months.py # 2月轮动策略 ├── daily_advice.py # 每日建议 ├── latest_advice.py # 最新建议 ├── latest_advice_top20.py # TOP20最新建议 ├── create_fund_pool.py # 创建基金池 ├── merge_pools.py # 合并基金池 ├── prepare_data.py # 数据准备 ├── fetch_etf_list_tushare.py # 获取ETF列表 ├── fetch_lof_list_tushare.py # 获取LOF列表 ├── data/ # 数据目录 (历史价格数据) ├── ETF&LOF.csv # ETF和LOF列表 ├── SSE_ETF_LIST_TUSHARE.csv # 上交所ETF列表 ├── SSE_LOF_LIST_TUSHARE.csv # 上交所LOF列表 └── Strategy_Fund_Pool.csv # 策略基金池 ``` ## 环境要求 - Python 3.7+ - pandas - numpy - tushare - backtrader ## 安装 ```bash pip install pandas numpy tushare backtrader ``` ## 数据说明 数据目录 `data/` 包含多个ETF的历史价格数据,文件命名格式为: `{ETF代码}_{起始日期}_{结束日期}.csv` 数据字段包括:日期、开盘价、最高价、最低价、收盘价、成交量、成交额等。 ## 使用方法 ### 运行回测策略 ```python from run_top5_rotation import run_top5_strategy # 运行TOP5轮动策略回测 run_top5_strategy('2020-01-01', '2024-12-31') ``` ### 获取每日建议 ```python from latest_advice import main main() ``` ### 创建基金池 ```python from create_fund_pool import load_tickers, get_fund_details tickers = load_tickers() funds = get_fund_details(tickers) ``` ## 策略参数 可在各策略文件中调整以下参数: - `rebalance_period`: 再平衡周期 - `top_n`: 选取ETF数量 - `factor_weights`: 因子权重 - `lookback_period`: 回看周期 ## 注意事项 1. 本策略仅供学习参考,不构成投资建议 2. 历史回测结果不代表未来收益 3. 实盘交易前请充分测试并考虑交易成本 4. 数据来源为Tushare,需自行配置API Token ## 许可证 MIT License