这个项目用于验证以下投资组合策略的有效性:
- 35% 中证500
- 15% 标普500
- 10% 红利
- 10% 黄金
- 15% 消费
- 15% 科创50
同时,项目还会测试当资产配置偏离目标20%时进行再平衡是否能提高收益。
- Python 3.6+
- 依赖包:akshare, pandas, numpy, matplotlib
- 创建虚拟环境:
python3 -m venv venv- 激活虚拟环境:
# Windows
venv\Scripts\activate
# macOS/Linux
source venv/bin/activate- 安装依赖:
pip install akshare pandas numpy matplotlib运行主程序:
python stock_strategy.py程序会自动:
- 尝试获取真实的历史数据(目前只有黄金数据可靠获取)
- 对于无法获取的数据,使用模拟数据进行补充(仅用于演示策略)
- 运行不再平衡的回测
- 运行20%阈值再平衡的回测
- 比较两种策略的结果
- 生成结果图表保存在results目录下
由于akshare接口的限制或变更,目前只能可靠获取黄金数据。为了演示策略的有效性,程序会:
- 获取真实的黄金价格数据
- 为其他资产生成模拟数据(基于随机游走模型,但添加了一定的趋势)
- 自动调整资产配置比例,确保总权重为100%
注意:模拟数据仅用于演示策略,不代表真实市场表现。在实际投资中,应使用真实历史数据进行回测。
程序会输出以下指标的比较:
- 年化收益率
- 最大回撤
- 夏普比率
- 再平衡次数
同时会计算再平衡策略相对于不再平衡策略的改进百分比。
- 由于数据获取限制,大部分指数使用模拟数据代替
- 程序运行时间可能较长,取决于网络状况和数据量
- 结果仅供参考,不构成投资建议
本项目还实现了多种A股量化选股策略,包括价值型、成长型、质量型、动量型和多因子选股策略,使用akshare获取实际数据进行选股。
value_strategy_basic.py: 双低双高价值选股策略(低PE、低PB、高ROE、高股息)growth_strategy.py: 成长型选股策略(高净利润增长率、高营收增长率、高ROE增长率、高EPS增长率)quality_strategy.py: 质量型选股策略(高ROE、高毛利率、低负债率、高现金流质量)momentum_strategy.py: 动量型选股策略(基于过去3个月、6个月和12个月的价格动量)multi_factor_strategy.py: 多因子选股策略(综合价值、成长、质量和动量因子)run_all_strategies.py: 运行所有策略并比较结果
选股策略部分需要额外安装:
pip install scikit-learn每个策略文件都可以单独运行,例如:
python value_strategy_basic.py # 运行双低双高价值选股策略
python growth_strategy.py # 运行成长型选股策略
python quality_strategy.py # 运行质量型选股策略
python momentum_strategy.py # 运行动量型选股策略
python multi_factor_strategy.py # 运行多因子选股策略python run_all_strategies.py这将运行所有策略,并分析各策略之间的重叠股票,找出被多个策略共同选中的股票。
选股条件:
- PE < 15
- PB < 1.5
- ROE > 10%
- 股息率 > 2%
选股条件:
- 净利润增长率 > 20%
- 营收增长率 > 15%
- ROE增长率 > 5%
- EPS增长率 > 15%
选股条件:
- ROE > 15%
- 毛利率 > 30%
- 资产负债率 < 50%
- 现金流质量(经营现金流/净利润)> 1.0
基于过去不同时间段的价格动量,权重分配:
- 3个月动量权重 = 0.5
- 6个月动量权重 = 0.3
- 12个月动量权重 = 0.2
综合考虑价值、成长、质量和动量因子,权重均为0.25。
所有策略的选股结果将保存在results目录下,包括:
- 各个策略的选股结果CSV文件
- 所有策略的综合结果CSV文件
- 由于akshare接口限制,获取数据可能需要较长时间
- 动量策略和多因子策略中的动量计算为了演示只处理了部分股票
- 选股结果仅供参考,不构成投资建议
- 实际投资决策应结合更多因素综合考虑