# 量化投资学习SOP（标准操作程序）

> 版本：v1.0  
> 适用：系统化学习量化投资  
> 路径：零基础 → 实盘策略

---

## 一、学习路径总览

```
Phase 1: 基础准备（1周）
    ├── 环境搭建
    ├── Python数据分析
    └── Backtrader入门
    ↓
Phase 2: 单因子策略（2周）
    ├── 价值因子（PE/PB/PS）
    ├── 质量因子（ROE/毛利率）
    ├── 动量因子（收益率/换手率）
    └── 波动率因子
    ↓
Phase 3: 多因子模型（2周）
    ├── 因子挖掘与检验
    ├── 因子合成（IC/IR）
    ├── 组合优化（均值方差）
    └── 风险模型（Barra）
    ↓
Phase 4: 机器学习（3周）
    ├── 特征工程
    ├── 传统ML（XGBoost/LightGBM）
    ├── 深度学习（LSTM/Transformer）
    └── 模型评估与优化
    ↓
Phase 5: 策略完善（2周）
    ├── 交易成本建模
    ├── 滑点与冲击成本
    ├── 参数优化（网格/贝叶斯）
    └── 样本外测试
    ↓
Phase 6: 实盘准备（持续）
    ├── 模拟盘验证
    ├── 交易系统搭建
    ├── 风控系统完善
    └── 小资金实盘
```

---

## 二、Phase 1: 基础准备（Week 1）

### 2.1 Day 1: 环境搭建

**任务清单**：
- [ ] Python 3.8+ 安装
- [ ] Backtrader安装
- [ ] Pandas/NumPy安装
- [ ] 数据源测试（AKShare/Tushare）

**产出物**：
- 运行环境验证脚本
- 数据源连接测试报告

**检查标准**：
```python
import backtrader as bt
import pandas as pd
import akshare as ak
print("环境就绪")
```

### 2.2 Day 2-3: Python数据分析

**学习内容**：
- Pandas数据处理（DataFrame操作）
- NumPy数值计算
- 数据可视化（Matplotlib/Plotly）
- 时间序列处理

**练习任务**：
- [ ] 读取CSV股票数据
- [ ] 计算移动平均线
- [ ] 绘制K线图
- [ ] 数据清洗（缺失值/异常值）

**产出物**：
- `data_utils.py` - 数据处理工具

### 2.3 Day 4-7: Backtrader入门

**学习内容**：
- Cerebro引擎使用
- 策略类开发
- 数据源配置
- 分析器使用

**实践任务**：
- [ ] 双均线策略（入门）
- [ ] MACD策略
- [ ] RSI策略
- [ ] 自定义指标

**产出物**：
- `backtest_template.py` - 回测模板
- 3个技术指标策略

---

## 三、Phase 2: 单因子策略（Week 2-3）

### 3.1 Week 2: 价值因子

**Day 1-2: PE因子**
- 原理：低PE股票被低估
- 实现：买入PE<10，卖出PE>30
- 优化：PE分位数（相对估值）

**Day 3-4: PB因子**
- 原理：低PB股票安全边际高
- 实现：买入PB<1.5，卖出PB>3
- 优化：行业中性化

**Day 5-7: PS/PCF因子**
- PS（市销率）：适用于亏损企业
- PCF（市现率）：现金流角度
- 多价值因子合成

**产出物**：
- `pe_factor.py`
- `pb_factor.py`
- `value_combined.py`

### 3.2 Week 3: 质量+动量因子

**Day 1-2: ROE因子**
- 原理：高ROE代表优质企业
- 实现：买入ROE>15%，卖出ROE<5%
- 优化：ROE稳定性（3年标准差）

**Day 3-4: 毛利率因子**
- 原理：高毛利率代表护城河
- 实现：买入毛利率>30%
- 优化：毛利率趋势（是否提升）

**Day 5-6: 动量因子**
- 原理：强者恒强
- 实现：买入20日收益率前10%
- 优化：加入波动率调整

**Day 7: 单因子总结**
- 各因子回测对比
- 因子相关性分析
- 最佳参数选择

**产出物**：
- `roe_factor.py`
- `momentum_factor.py`
- `single_factor_report.md` - 单因子回测报告

---

## 四、Phase 3: 多因子模型（Week 4-5）

### 4.1 Week 4: 因子合成

**Day 1-2: 因子有效性检验**
- IC（信息系数）计算
- IR（信息比率）计算
- 因子换手率分析
- 因子衰减周期

**Day 3-4: 因子预处理**
- 去极值（Winsorize）
- 标准化（Z-Score）
- 中性化（行业/市值）
- 缺失值处理

**Day 5-6: 因子合成方法**
- 等权合成
- IC加权合成
- 最大化IR合成
- 机器学习合成

**Day 7: 组合优化**
- 均值方差优化
- 风险平价
- 最大化夏普比率
- 约束条件（行业/个股上限）

**产出物**：
- `factor_analysis.py` - 因子分析工具
- `multi_factor_model.py` - 多因子模型
- `portfolio_optimizer.py` - 组合优化器

### 4.2 Week 5: 风险模型

**Day 1-2: Barra风险模型**
- 行业因子
- 风格因子（市值/价值/成长）
- 残差风险
- 因子协方差矩阵

**Day 3-4: 风险预算**
- 总风险分解
- 主动风险vs基准
- 跟踪误差控制
- 回撤控制

**Day 5-7: 组合回测**
- 多因子组合回测
- 与单因子对比
- 参数敏感性分析
- 样本外测试

**产出物**：
- `risk_model.py` - 风险模型
- `multi_factor_backtest.py` - 多因子回测
- `multi_factor_report.md` - 多因子报告

---

## 五、Phase 4: 机器学习（Week 6-8）

### 5.1 Week 6: 特征工程

**Day 1-2: 基础特征**
- 价格特征（收益率/波动率）
- 成交量特征
- 技术指标特征（MACD/KDJ/RSI）
- 财务指标特征

**Day 3-4: 高级特征**
- 技术指标组合
- 财务指标趋势
- 行业相对特征
- 宏观指标特征

**Day 5-6: 特征选择**
- 相关性分析
- 重要性排序
- 递归特征消除（RFE）
- 主成分分析（PCA）

**Day 7: 特征存储**
- 特征数据库设计
- 特征更新流程
- 特征监控

**产出物**：
- `feature_engineering.py` - 特征工程
- `feature_store/` - 特征存储

### 5.2 Week 7: 传统机器学习

**Day 1-2: 数据准备**
- 标签定义（收益率/涨跌）
- 训练/验证/测试集划分
- 时间序列交叉验证
- 数据泄露防护

**Day 3-4: XGBoost模型**
- 模型原理
- 参数调优
- 特征重要性
- 模型解释

**Day 5-6: LightGBM模型**
- 模型原理
- 与XGBoost对比
- 参数调优
- 集成学习

**Day 7: 模型评估**
- 准确率/精确率/召回率
- AUC/ROC曲线
- 分层回测
- 模型对比

**产出物**：
- `xgboost_model.py`
- `lightgbm_model.py`
- `model_evaluation.py`

### 5.3 Week 8: 深度学习

**Day 1-2: LSTM模型**
- 时序建模
- 架构设计
- 序列长度选择
-  dropout正则化

**Day 3-4: Transformer模型**
- Attention机制
- 多head注意力
- 位置编码
- 应用于时序

**Day 5-6: 模型融合**
- 传统ML + DL融合
- 集成学习（Bagging/Boosting/Stacking）
- 动态权重
- 在线学习

**Day 7: 深度学习总结**
- 各模型对比
- 适用场景
- 计算资源评估
- 部署考虑

**产出物**：
- `lstm_model.py`
- `transformer_model.py`
- `ensemble_model.py`
- `ml_strategy_report.md` - ML策略报告

---

## 六、Phase 5: 策略完善（Week 9-10）

### 6.1 Week 9: 成本与滑点

**Day 1-2: 交易成本建模**
- 手续费（券商+交易所）
- 印花税
- 过户费
- 冲击成本

**Day 3-4: 滑点建模**
- 固定滑点
- 波动率调整滑点
- 成交量调整滑点
- 盘口滑点

**Day 5-6: 参数优化**
- 网格搜索
- 随机搜索
- 贝叶斯优化
- 遗传算法

**Day 7: 优化结果分析**
- 参数稳健性
- 过拟合检验
- 帕累托前沿
- 最优参数选择

**产出物**：
- `cost_model.py` - 成本模型
- `parameter_optimizer.py` - 参数优化器

### 6.2 Week 10: 样本外测试

**Day 1-3: 样本外验证**
- 滚动回测（Walk-forward）
- 不同市场环境测试
- 极端行情测试
- 压力测试

**Day 4-5: 策略对比**
- 与基准对比（沪深300）
- 与同类策略对比
- 风险调整收益
- 信息比率

**Day 6-7: 策略文档化**
- 策略白皮书
- 回测报告
- 风险披露
- 使用说明

**产出物**：
- `out_of_sample_test.py`
- `strategy_whitepaper.md`
- `final_backtest_report.md`

---

## 七、Phase 6: 实盘准备（持续）

### 7.1 模拟盘验证（1-3个月）

**任务清单**：
- [ ] 模拟盘账户开设（聚宽/优矿）
- [ ] 策略接入模拟盘
- [ ] 每日交易记录
- [ ] 每周绩效归因
- [ ] 每月策略优化

**监控指标**：
- 收益率vs回测
- 滑点vs模型
- 换手率
- 最大回撤

### 7.2 交易系统搭建

**系统架构**：
```
数据层 → 策略层 → 执行层 → 风控层
  ↓         ↓         ↓         ↓
行情数据   信号生成   订单管理   实时监控
财务数据   仓位管理   成交回报   风险预警
特征数据   组合优化   资金结算   应急处理
```

**核心模块**：
- 数据获取模块
- 策略计算模块
- 订单执行模块
- 风险控制模块
- 监控报警模块

### 7.3 风控系统完善

**事前风控**：
- 策略有效性检验
- 仓位上限控制
- 黑名单过滤

**事中风控**：
- 实时盈亏监控
- 回撤控制
- 异常交易检测

**事后风控**：
- 交易复盘
- 绩效归因
- 策略迭代

### 7.4 小资金实盘

**初始资金**：10-50万
**时间周期**：3-6个月
**目标**：验证策略实盘效果
**风险控制**：单策略不超过30%仓位

---

## 八、学习检查清单

### Phase 1 检查
- [ ] 环境搭建完成
- [ ] 双均线策略回测成功
- [ ] 理解Backtrader核心概念

### Phase 2 检查
- [ ] 完成3个价值因子
- [ ] 完成2个质量因子
- [ ] 完成2个动量因子
- [ ] 单因子回测报告

### Phase 3 检查
- [ ] 因子IC/IR分析
- [ ] 多因子合成
- [ ] 组合优化
- [ ] 风险模型
- [ ] 多因子回测报告

### Phase 4 检查
- [ ] 特征工程完成
- [ ] XGBoost模型
- [ ] LightGBM模型
- [ ] 深度学习模型
- [ ] ML策略报告

### Phase 5 检查
- [ ] 成本模型
- [ ] 参数优化
- [ ] 样本外测试
- [ ] 策略白皮书

### Phase 6 检查
- [ ] 模拟盘验证3个月
- [ ] 交易系统搭建
- [ ] 风控系统完善
- [ ] 小资金实盘

---

## 九、学习资源

### 必读书籍
1. 《量化投资：策略与技术》- 丁鹏
2. 《Python金融大数据分析》- Yves Hilpisch
3. 《主动投资组合管理》- Grinold & Kahn
4. 《机器学习》- 周志华
5. 《深度学习》- Ian Goodfellow

### 在线资源
- Backtrader官方文档
- 聚宽/优矿平台
- Quantopian Lectures（存档）
- Coursera: Machine Learning
- Kaggle金融竞赛

### 数据源
- AKShare（A股免费）
- Tushare（A股，部分收费）
- Yahoo Finance（美股免费）
- Quandl（宏观数据）

---

## 十、学习里程碑

| 时间节点 | 里程碑 | 检查标准 |
|:---------|:-------|:---------|
| Week 1 | 环境就绪 | 成功运行回测 |
| Week 3 | 单因子完成 | 5个单因子回测 |
| Week 5 | 多因子完成 | 多因子组合夏普>1 |
| Week 8 | ML入门 | 3个ML模型对比 |
| Week 10 | 策略完善 | 样本外测试通过 |
| Month 3 | 模拟盘验证 | 夏普>1，回撤<20% |
| Month 6 | 实盘试水 | 实盘收益接近回测 |

---

## 十一、学习记录模板

```markdown
## Week X Day Y - 学习内容

### 今日任务
- [ ] 任务1
- [ ] 任务2

### 学习笔记
关键概念：
代码示例：
遇到的问题：
解决方法：

### 产出物
- 文件1
- 文件2

### 明日计划
1. XXX
2. XXX

### 学习时间
- 开始：XX:XX
- 结束：XX:XX
- 总计：X小时
```

---

*SOP版本：v1.0 | 预计学习周期：10周 | 制定：豆奶*