a# 沪深300股票量化分析系统
基于MA60趋势择时的沪深300量化选股系统。牛市进攻、熊市防守,追求低回撤高收益。
沪深300 > MA60 → 牛市 → 进攻模式(高动量 + 高成长)
沪深300 < MA60 → 熊市 → 超防守模式(低波动 + 低PB + 高ROE + 小回撤)
- 止损: 单只 -5%
- 持仓: 最多6只,7个交易日调仓
- 回测(2024-01-02~2026-05-13): +92.80%收益,16.5%最大回撤,51.9%胜率,超额+45.20%
通过逐日模拟对比不同参数组合(2024-2026,576个交易日):
| 数量 | 收益 | 最大回撤 | 结论 |
|---|---|---|---|
| 5只 | +109.40% | 17.4% | 集中度过高 |
| 6只 | +131.99% | 11.8% | 最优 |
| 周期 | 收益 | 最大回撤 | 结论 |
|---|---|---|---|
| 5天 | +86.13% | 25.4% | 交易成本过高 |
| 7天 | +131.99% | 11.8% | 最优 |
| 10天 | +69.13% | 16.0% | 反应迟钝 |
| 止损 | 收益 | 最大回撤 | 结论 |
|---|---|---|---|
| -5% | +131.99% | 11.8% | 最优 |
| -7% | +101.96% | 22.5% | 亏损过深 |
| -10% | +99.78% | 23.1% | 回撤翻倍 |
pip install -r requirements.txt
# 配置邮箱(可选)
cp .env.example .env
# 编辑 .env 填入 EMAIL_ADDRESS, EMAIL_PASSWORD, TO_EMAIL
# 执行分析
python main.py --mode analysis| 模式 | 命令 | 说明 |
|---|---|---|
| 手动分析 | python main.py --mode analysis |
立即执行一次分析 |
| 守护进程 | python main.py --mode daemon |
定时自动分析+发邮件 |
| 发送邮件 | python main.py --mode email |
发送最近一次分析报告 |
| 回测 | python run_backtest_optimized.py |
历史数据回测验证 |
基础评分(技术面+估值+盈利+安全+股息)+ 动量加分(最高12分)+ 成长加分(5分)
| 维度 | 权重 | 指标 |
|---|---|---|
| 低波动 | 30分 | 20日收益率标准差 |
| 低PB | 25分 | 市净率越低越好 |
| 高ROE | 25分 | 净资产收益率 |
| 小回撤 | 20分 | 20日最大回撤 |
| 温和动量 | 5分 | 0~5%正动量加分 |
- 数据源: 腾讯财经K线API + akshare财报数据
- 分析: pandas, numpy
- 异步: aiohttp(并发获取300只股票数据)
- 通知: SMTP 邮件(QQ邮箱)
- 调度: schedule 定时任务
├── main.py # 主入口
├── run_backtest_optimized.py # 回测脚本
├── config/
│ ├── config.py # 筛选参数(PE、止损、持仓数)
│ └── backtest_config.py # 回测参数
├── src/
│ ├── data/
│ │ ├── async_data_fetcher.py # 异步数据获取(动量+波动率+回撤)
│ │ └── financial_report_fetcher.py # 财报数据(ROE、利润增长)
│ ├── analysis/
│ │ ├── stock_filter.py # 三种评分模式(基础/进攻/超防守)
│ │ └── market_analyzer.py # MA60趋势检测 + 模式切换
│ ├── notification/ # 邮件发送
│ └── scheduler/ # 定时任务
├── reports/ # 生成的分析报告
└── plot_daily_curve.py # 回测净值曲线可视化
仅供学习交流,不构成投资建议。