研究

五维度里的研究层,是把数据变成有预测力信号的看家本领。它分两段:先把机器学习算法从黑箱变透明(对应 ML 课,29 讲),再把这些算法接到真实交易上、并躲开回测陷阱(对应 ML4T 课,26 讲)。适合已经打好 Python + 数据处理基础、想真正做量化研究的人。
系列总纲见 量化工程能力知识图谱与学习路线。 顶层总路径见 量化投资学习路径图

参考教材 / 源码

为什么要学这块

做因子、做信号、做组合,用到的分类、回归、降维、集成、深度模型,都出自机器学习到深度学习这套体系。会调库能跑通 baseline,但要判断一个模型为什么过拟合、为什么样本外崩掉、正则项到底改了什么,就得知道算法内部在算什么。

而会训练模型和能做出一个能上线的策略,又是两回事。交易数据信噪比低、样本相关、带时间方向,随手套一套 ML 流程,回测曲线往往漂亮到不真实。所以这一层要同时解决两件事:把算法搞懂,以及把算法可信地用到交易上。这也是后面读 qlib 框架、做工程化的直接前置。


上半:从零手搓算法 + 剖析源码(ML 课)

角度:不停在调包,读到源码为止

市面上大多数 ML 教程停在”讲公式 + model.fit(X, y)“,公式和 fit() 之间那段——库怎么把公式变成能跑的代码——被跳过了。这套课在每个核心算法上做三层:

  1. 🔬 从零手搓:用 NumPy 把更新规则 / 损失 / 梯度亲手写一遍,配数学直觉逐步拆解。
  2. 🔍 剖析源码:打开 scikit-learn / PyTorch 对应估计器的真实实现,看类家谱、调用链、Cython 内核,理解工程上为什么那样写。
  3. 🧰 调库用法:会用、会调超参、会看文档。

第 2 步是普通教程完全没有的部分。手写懂原理,源码懂实现,对拍确认没理解错。

你会学到什么(ML 课讲次)

经典机器学习(第 04–19 讲)

主题 讲次 手搓 / 源码要点
感知机 04 NumPy 实现学习规则;对照 SGDClassifier(loss='perceptron') 的 Cython _plain_sgd
Adaline、梯度下降、SGD 05 手写梯度下降与随机梯度下降;学习率 / 特征缩放对收敛的影响
逻辑回归 06 手写 sigmoid + 对数损失;sklearn 5 种 solver 的差异
SVM 07 最大间隔与核技巧;libsvm / liblinear 两条后端
决策树 / 随机森林 / kNN 08 手写信息增益与基尼;_tree.pyx Cython 内核、KD 树
数据预处理 09–10 手写 StandardScaler、L1 稀疏、序贯后向选择
PCA / LDA / 核 PCA 11–12 手写 PCA;sklearn 为什么用 SVD 而非特征分解
流水线与交叉验证 13 手写 K 折;Pipeline 的 fit/transform 统一接口
调参与评价指标 14 网格搜索、混淆矩阵 / ROC-AUC、嵌套 CV
集成学习 15 手写投票分类器;Bagging、AdaBoost、梯度提升
文本情感分析 16 手写词袋 / TF-IDF;CountVectorizer 的 CSR 稀疏矩阵
回归与正则化 17–18 LinearRegression 走 lstsq、Ridge 走 Cholesky、Lasso 走坐标下降
聚类 19 手写 k-means;_kmeans Cython 内核、层次聚类、DBSCAN

深度学习(第 20–29 讲,PyTorch):多层感知机 + 反向传播(20,数值梯度自检)、PyTorch autograd 对照手推(22)、nn.Module 源码(23)、CNN 手算卷积(24)、RNN / LSTM 对齐 nn.RNN(25)、Transformer 注意力五连跳(26)、GAN 复现模式崩溃(27)、GNN 手搓图卷积(28)、Q-learning 网格世界(29)。主流架构全覆盖,每类都有一个能离线秒级跑的最小实现。

三个例子

  • 感知机 ↔ SGDClassifier(第 04 讲):十几行 NumPy 写出感知机学习规则,再打开 sklearn——它不是独立的类,而是 SGDClassifier(loss='perceptron') 的特例,真正干活的是 Cython 的 _plain_sgd。手写版和它同数据对拍对得上。
  • 决策树的 Cython 内核(第 08 讲):手写版用 Python 实现分裂逻辑,能跑但慢;进 _tree.pyx / _splitter.pyx 看真实树构建为什么整套用 Cython——分裂在最内层循环被调用成千上万次,Python 扛不住。
  • 注意力五连跳(第 26 讲):把 self-attention 拆成 Q/K/V 投影 → scaled dot-product → softmax → 加权求和 → 多头拼接五步,每步用小矩阵跑数字,再对照 PyTorch,注意力就只是几个矩阵乘法加一个 softmax。

下半:把 ML 用到交易 + 回测避坑(ML4T 课)

角度:金融脚手架 + 回测避坑

ML 交易教程大多止于”抓数据、训模型、画净值曲线”,而曲线里通常藏着前视/幸存者偏差、过拟合、成本忽略,教程不会告诉你。这套课的重心是:

  • 金融脚手架:不预设你懂金融。收益率、夏普、最大回撤、alpha/beta、因子模型、IC、协整、前视/幸存者偏差,都用直觉边栏讲清,零金融基础能跟。
  • 从零手搓最小可跑版:向量化回测器、因子 IC、组合优化、配对交易信号、卡尔曼对冲比、Q-learning 交易环境,纯 pandas/numpy 写一遍。全课交付 24 个实测通过的 .py
  • 深剖真实框架源码:backtrader 事件循环、Alphalens、statsmodels ARIMA/协整、PyPortfolioOpt 的 cvxpy 建模、gensim word2vec、SHAP TreeExplainer。
  • 回测避坑贯穿全程:哪里漏未来信息、哪里高估收益,逐个点名 + 实测演示。

你会学到什么(ML4T 课,按组件分组)

  • 因子(04–05):因子类别与工程、TA-Lib、去极值/中性化;Alphalens 因子评估(前向收益/IC/分层/换手),深剖源码并用手搓版对拍。
  • 回测(09–10,深剖标杆):回测陷阱系统梳理;向量化 vs 事件驱动;深剖 backtrader 事件循环与防前视;手搓迷你 Pipeline 引擎跑”信号→组合→绩效”。
  • 组合与绩效(06、16):均值-方差/风险平价/最小方差/Kelly、有效前沿;深剖 PyPortfolioOpt 的 cvxpy 建模;层次风险平价 HRP 三步手搓。
  • 时序与统计套利(11–13):平稳性/ADF/ARIMA/GARCH,深剖 statsmodels 状态空间;协整与配对交易(z-score/半衰期);卡尔曼估动态对冲比。
  • ML 流程与模型(07–08、14–15):金融交叉验证(手搓 Purged/Embargo Walk-Forward CV);Fama-French 因子暴露;随机森林多空策略;梯度提升 alpha + SHAP 归因。
  • NLP(17–19):朴素贝叶斯情感分类、LDA 主题建模、word2vec 训练金融语料(深剖 gensim 源码)。
  • 深度学习与强化学习(20–25):前馈网络做交易及其坑、CNN 因果卷积、RNN 多元时序、自编码器条件风险因子、GAN 合成时序、手搓表格 Q-learning 交易智能体。第 26 讲收尾并给出”通向 qlib 的 6 步路线”。

回测避坑:这半篇最该带走的部分

回测的价值全看它有没有漏进未来信息、有没有高估收益。常见的坑逐个演示:

  • 前视偏差:用了当时拿不到的信息。第 09 讲手搓向量化回测器时,直接演示”信号错位一格”如何让收益凭空变好。
  • 幸存者偏差:只用今天还活着的标的回测,退市/被并购样本被剔除,收益被系统性抬高。第 03 讲点名,全课反复敲打。
  • 过拟合与多重检验:同一段历史反复试参数试因子,总能试出好曲线。第 09 讲列为核心陷阱,第 07 讲用时序 CV 从流程上堵。
  • 成本忽略:不算手续费和冲击,高换手策略看着能赚、实盘就亏。

三个亮点:第 09 讲深剖 backtrader 两条防前视机制(Lines 索引 close[0]/[-1]/[1] 区分当前/过去/未来;订单在下一根 K 线 open 成交 _try_exec_market,含 9 处真源码 + _runnext 三步循环);第 05 讲手搓版对拍 Alphalens 0 差异(自写前向收益/IC 与 compute_forward_returns/factor_information_coefficient 逐值一致);第 07 讲手搓 Purged Walk-Forward CV(时序不能随机洗牌,剖析 sklearn TimeSeriesSplit 哪里不够)。


建议的阅读顺序

先算法(ML 课)打牢:

  1. 第03讲 数学直觉与 NumPy 速成——后面所有手搓的前提。
  2. 第04讲 感知机:从零实现与 sklearn 剖析——三层解剖样板。
  3. 第05讲 Adaline:梯度下降与 SGD、第08讲 决策树、随机森林与 kNN、第15讲 集成学习。
  4. 深度学习入口:第20讲 多层神经网络从零实现 → 第22讲 PyTorch 入门 → 第26讲 Transformer 与注意力。

再上交易(ML4T 课):
5. 第09讲 回测引擎:手搓向量化回测与陷阱——先建立”回测为什么容易骗人”的意识,全课定盘星。
6. 第04讲 alpha 因子研究 → 第05讲 用 Alphalens 评估因子。
7. 第07讲 机器学习流程与金融交叉验证 → 第08讲 线性模型 → 第06讲 组合优化与绩效评估。
8. 第12讲 协整与配对交易——一个完整的统计套利小策略,串起前面所有环节。

其余讲次按需插入,每讲都配可跑的 .py,建议边读边跑。

承上启下

上一层【工程·基础篇】把 Python 面向对象和 pandas 内核打牢,是写好这些手搓算法的工程底子;这一层把算法搞懂、并可信地用到交易上;下一层【工程·平台篇】进入 qlib——ML4T 第 26 讲的”通向 qlib 6 步路线”正是入口。完整地图见 量化工程能力知识图谱与学习路线


本篇课程