第三周作业计划
创建: 2026-06-11 截止: 2026-06-15(周日) 方向: 因子研读 + 亲手实现 运行环境: Qlib(表达式引擎定义因子,非调预置因子集)
前置约束(用户画像驱动)
- 学习哲学:调框架不算学到东西,必须理解底层 — 用Qlib表达式引擎自己写因子公式,不用Alpha158/Alpha360预置集
- 工作方式:先设计再执行,规划比执行重要 — 因子拆解后必须经过纸上分析+设计方案,再动手写代码
- 知识状态:系统学过RL,因子设计实践空白,基础概念(OHLCV/收益率/波动率/截面vs时序)需要回补
- 交付优先级:交作业为锚点,但不接受"表面完成" — 宁可节奏放慢,每个环节必须经过大脑
任务分解(10分制,AI辅助下)
| # | 任务 | 工作量 | 阶段 | 产出 |
|---|---|---|---|---|
| A | 基础概念回补(OHLCV、收益率计算、波动率、截面vs时序) | 2/10 | 理解 | 概念笔记 |
| B | Alpha101 十个典型因子拆解(输入数据→运算逻辑→输出含义) | 5/10 | 理解 | 因子拆解文档 |
| C | 因子评价方法论(IC/IR、五分位分层、因子衰减) | 3/10 | 理解 | 方法论笔记 |
| D | 纸上分析:对每个因子写金融直觉判断(为什么有效、预期收益分布、潜在陷阱) | 4/10 | 分析 | 分析文档 |
| E | 设计实现方案(选哪几个因子、Qlib环境配置、数据链路、回测流程) | 3/10 | 设计 | 实现方案 |
| F | Qlib表达式引擎写因子 + 单因子回测(IC序列、五分位收益) | 5/10 | 实现 | 因子代码+回测结果 |
| G | 多因子组合打分 + 组合回测 | 5/10 | 实现 | 组合策略+净值曲线 |
| H | RL在仓位优化中的应用(概念了解,仅阅读不实践) | 1/10 | 了解 | 概念笔记 |
时间线
6/11 A(2) + B(5) 继续
6/12 B收尾 + C(3) + [环境准备] 安装Qlib、下载A股日线数据
6/13 D(4) 纸上分析 + E(3) 设计方案
6/14 F(5) 单因子实现+回测 + G(5) 多因子组合
6/15 作业拼装(2) + 缓冲
运行环境:Qlib
为什么选Qlib
- 数据层:内置中国A股日线下载(OHLCV,复权已处理),不浪费精力在数据管线
-
表达式引擎:提供算子库(Ref、Mean、Std、Corr、Rank…),用数学表达式定义因子
-
写
Ref($close, 20) / $close 等价于 pandas 的df.close.rolling(20).mean()— 依然是自己定义公式 - 不是调 Alpha158/Alpha360 预置因子集
- 回测工具:内置 IC 分析、五分位分层回测,省去脚手架搭建
不算"调框架"
| 操作 | 方式 | 判断 |
|---|---|---|
| 用 Alpha158 预置因子集跑回测 | qlib.contrib.model |
❌ 调框架 |
| 用表达式引擎自己写因子公式 | Ref($close, 20) / $close |
✅ 自己的理解 |
| 用Qlib内置IC分析工具 | qlib.contrib.evaluate |
✅ 脚手架复用 |
| 纯 akshare+pandas+手写回测 | 全部自己搭 | ✅ 但基础设施成本高 |
Qlib 表达式引擎是"借用算子库定义自己的因子",数据和回测工具是"借用脚手架"——都不是当前学习目标,复用不丢人。
关键风险
- D(纸上分析)是最容易被跳过的环节 — 但它是你自己要求的"先分析再验证",跳过等于违背工作方式
- E(设计方案)决定F/G能多快跑通 — 选哪几个因子、数据链路怎么走,想清楚了代码效率高很多
- 前视偏差(历史时点成分股 vs 当前成分股)是因子回测的经典陷阱,pitfalls.md 已有记录
- H(RL概念了解)仅为了解层面,不写代码不画设计图,不影响核心任务节奏
作业交付物确认
- [ ] 因子研究过程文字(①策略介绍:因子来源、为什么选这些)
- [ ] 回测遇到的问题(②困难:前视偏差?数据缺漏?)
- [ ] 回测结果截图+指标(③净值曲线、IC序列、五分位收益图)
- [ ] 优化思路(④下一步改进方向)
变更记录
| 日期 | 变更 |
|---|---|
| 2026-06-11 | 初始版本:确定Qlib为运行环境,加入D(纸上分析)+E(设计方案)环节 |
| 2026-06-11 | RL从"待决策"降为"概念了解"(1/10),仅阅读理解,不实践 |