ZENTHOS Workspace
RAW · · 2026-06-19 · 5 min · #38TZXPN

plan

用Qlib表达式引擎自行定义因子公式,而非调用预置因子集,完成Alpha101典型因子拆解、纸上分析、单因子与多因子组合回测,并规避前视偏差等经典陷阱,确保每个环节都经过理解与验证。

第三周作业计划

创建: 2026-06-11 截止: 2026-06-15(周日) 方向: 因子研读 + 亲手实现 运行环境: Qlib(表达式引擎定义因子,非调预置因子集)

前置约束(用户画像驱动)

  1. 学习哲学:调框架不算学到东西,必须理解底层 — 用Qlib表达式引擎自己写因子公式,不用Alpha158/Alpha360预置集
  2. 工作方式:先设计再执行,规划比执行重要 — 因子拆解后必须经过纸上分析+设计方案,再动手写代码
  3. 知识状态:系统学过RL,因子设计实践空白,基础概念(OHLCV/收益率/波动率/截面vs时序)需要回补
  4. 交付优先级:交作业为锚点,但不接受"表面完成" — 宁可节奏放慢,每个环节必须经过大脑

任务分解(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 表达式引擎是"借用算子库定义自己的因子",数据和回测工具是"借用脚手架"——都不是当前学习目标,复用不丢人。

关键风险

  1. D(纸上分析)是最容易被跳过的环节 — 但它是你自己要求的"先分析再验证",跳过等于违背工作方式
  2. E(设计方案)决定F/G能多快跑通 — 选哪几个因子、数据链路怎么走,想清楚了代码效率高很多
  3. 前视偏差(历史时点成分股 vs 当前成分股)是因子回测的经典陷阱,pitfalls.md 已有记录
  4. H(RL概念了解)仅为了解层面,不写代码不画设计图,不影响核心任务节奏

作业交付物确认

  • [ ] 因子研究过程文字(①策略介绍:因子来源、为什么选这些)
  • [ ] 回测遇到的问题(②困难:前视偏差?数据缺漏?)
  • [ ] 回测结果截图+指标(③净值曲线、IC序列、五分位收益图)
  • [ ] 优化思路(④下一步改进方向)

变更记录

日期 变更
2026-06-11 初始版本:确定Qlib为运行环境,加入D(纸上分析)+E(设计方案)环节
2026-06-11 RL从"待决策"降为"概念了解"(1/10),仅阅读理解,不实践