# ml-trading：逐课讲义与练习册

版本 content-v2；每课有独立讲解、操作、题设和答案。全部数值/规则为合成教学假设，不代表官方服务或真实业绩。允许本地纸面完成，不要求开户、入金或真实交易。

模块：特征工程 / 模型训练 / LSTM 预测

## 特征工程

### 概念
金融ML特征只含预测时刻已知信息，标签可用未来数据但必须和特征分离。按时间拆训练/验证/测试，重叠标签跨度需隔离。标准化、缺失处理与特征选择只能在训练集拟合。训练标签和价格涨跌不是策略成交收益。

### 带数据推演
标签定义close[t+5]/close[t]−1>0。训练结束100、测试从101起，则t=96…100的标签触及测试期，应移除。最后5行没有完整标签，不可用比较NaN后得到False的方式将其当负类。

### 作业题设
运行ml_lab.py，核对标签终点、时间切分与gap；输出训练测试样本数和类别比例，并说明为何不使用随机洗牌拆分。

### 检查限制
时间相邻样本强相关，随机拆分会高估独立性；不能仅加一个shift就宣称所有泄漏已消除。

### 本模块课时
- m1-l1：金融 ML 特征
- m1-l2：标签设计
- m1-l3：特征构建练习

### m1-l1 金融 ML 特征

#### 本课讲解
金融ML特征要在预测时点可获得。收益、动量和滚动波动是价格变换；样本单位、频率及缺失处理须明确，不能含未来标签或全样本标准化结果。

#### 操作顺序
给每列写公式/窗口/可用时点→按时间拆分→只在训练拟合处理→删除起始缺值→核特征标签隔离。

#### 独立作业
解释r1、momentum3、vol5三列分别需要哪些历史行，哪些起始行不能训练。

#### 自查要求
提交算式/表格/记录与假设；按答案册逐项检查关键结果、证据边界和未运行项。自评不是自动批改或能力认证。

### m1-l2 标签设计

#### 本课讲解
标签可用未来信息定义结果，但样本划分必须考虑标签终点。未来5步收益标签会跨时间边界，按特征行简单切分仍可能泄漏。

#### 操作顺序
明确预测起点t与终点t+5→只让训练标签终点早于测试起点→冻结阈值→记录末训练和首测试时点。

#### 独立作业
测试特征从168开始，标签跨度5，训练标签终点必须<168。训练特征最晚可为多少？

#### 自查要求
提交算式/表格/记录与假设；按答案册逐项检查关键结果、证据边界和未运行项。自评不是自动批改或能力认证。

### m1-l3 特征构建练习

#### 本课讲解
特征构建练习不仅看列数，还要证明未来追加不会改写过去特征。固定窗口的过去特征应满足前缀不变性，全样本归一化通常不满足。

#### 操作顺序
计算完整与截断样本特征→比较共同前缀→核时间边界→输出缺值和有效样本→保留错误反例。

#### 独立作业
若追加未来高价后过去标准化值全变，说明什么？应该怎样修正训练/测试处理？

#### 自查要求
提交算式/表格/记录与假设；按答案册逐项检查关键结果、证据边界和未运行项。自评不是自动批改或能力认证。

## 模型训练

### 概念
树模型可拟合非线性，但高训练准确率可能仅记住噪声。先设多数类和简单规则基线，再评估独立测试的准确率、精确率、召回、AUC及类别比例。不同指标回答不同问题；正类缺失时AUC未定义，不能填0当有效结果。

### 带数据推演
混淆矩阵TP=6、FP=4、FN=3、TN=7：准确率13/20=65%，precision=6/10=60%，recall=6/9约66.67%。若多数类占70%，65%准确率还不如该基线。分类正确不保证扣成本盈利。

### 作业题设
手算上述指标，运行随机森林样例并与多数类基线比较；记录超参数、随机种子与样本边界，不用测试集调参。

### 检查限制
特征重要性不是因果解释；若安装不了XGBoost，应标可选依赖未验证，而不是把随机森林改名。

### 本模块课时
- m2-l1：Random Forest 与 XGBoost
- m2-l2：过拟合与正则
- m2-l3：模型训练实操

### m2-l1 Random Forest 与 XGBoost

#### 本课讲解
随机森林对多棵随机化树作集成，XGBoost按残差/梯度顺序加树，训练机制不同。配套可运行实现为随机森林，不把它冒充XGBoost训练证据。

#### 操作顺序
运行ml_lab.py→核时间切分→与多数类基线比较→阅读树深/叶子样本限制；XGBoost另列未运行而非推断同结果。

#### 独立作业
给一个两模型比较实验设计，至少固定数据、分界、指标和调参次数，说明本课实际运行哪种。

#### 自查要求
提交算式/表格/记录与假设；按答案册逐项检查关键结果、证据边界和未运行项。自评不是自动批改或能力认证。

### m2-l2 过拟合与正则

#### 本课讲解
过拟合可能来自树过深、过多搜索或泄漏，正则化不能修复错误时间划分。训练分高而测试低要先查流程，不立刻增加模型复杂度。

#### 操作顺序
先核数据泄漏→对比训练/验证→限制深度与叶样本→只在训练/验证选参数→最后一次测试。

#### 独立作业
训练准确率100%、测试52%，如何列排查顺序？为何不直接在测试上调深度？

#### 自查要求
提交算式/表格/记录与假设；按答案册逐项检查关键结果、证据边界和未运行项。自评不是自动批改或能力认证。

### m2-l3 模型训练实操

#### 本课讲解
训练实操记录版本、随机种子、样本量、指标与基线。准确率高不等于风险调整收益，交易阈值、费用和执行尚需独立研究。

#### 操作顺序
按README运行→核train158/test67→检查标签边界→保存metrics→比较基线→不为凑高分修改测试。

#### 独立作业
复现随机森林报告，写accuracy、precision、recall、AUC各自回答什么，并列两项真实市场限制。

#### 自查要求
提交算式/表格/记录与假设；按答案册逐项检查关键结果、证据边界和未运行项。自评不是自动批改或能力认证。

## LSTM 预测

### 概念
LSTM接收序列张量，batch_first时形状为批次×序列长度×特征数。隐藏状态与输出维度必须检查。过去N点预测下一点时，目标和窗口错位一格；归一化仅用训练期。深度模型不天然比简单模型可靠。

### 带数据推演
假设输入32个样本、每个20步、每步3特征，形状(32,20,3)；隐藏维8、单向单层输出(32,20,8)，取最后时刻得到(32,8)，分类头输出32个logit。标签不能取窗口内最后已知方向冒充未来。

### 作业题设
按lstm_lab.py检查张量形状、训练/测试边界，记录实际安装和运行状态；与多数类基线比较。若未装PyTorch，不得填训练通过。

### 检查限制
不能把合成序列的拟合效果当价格预测能力；严禁用最终测试结果选择网络大小。

### 本模块课时
- m3-l1：LSTM 基础
- m3-l2：ML 交易现实
- m3-l3：LSTM 实验报告

### m3-l1 LSTM 基础

#### 本课讲解
LSTM以序列输入和隐藏状态表示历史。张量常为样本×时间×特征，但框架约定需明确；打乱训练样本不等于允许随机混合时间测试。

#### 操作顺序
核batch_first→在各段内部建20步窗口→训练段拟合尺度→输入3特征/hidden8→运行8轮并记录形状与损失。

#### 独立作业
配套训练输入139×20×3，各维是什么？测试窗口能否包含训练后尚未确认的未来标签？

#### 自查要求
提交算式/表格/记录与假设；按答案册逐项检查关键结果、证据边界和未运行项。自评不是自动批改或能力认证。

### m3-l2 ML 交易现实

#### 本课讲解
金融ML在分布变化、少样本、成本与标签噪声下面临困难。预测方向对不代表交易划算，幅度、费用和频率都影响净结果。

#### 操作顺序
把分类输出与执行规则分离→列成本与周转→检查概率校准→设置失效监控→明确未做的市场验证。

#### 独立作业
预测正确一次赚1，错误一次亏3，胜率70%，不计费期望多少？为何高准确率也可能无效？

#### 自查要求
提交算式/表格/记录与假设；按答案册逐项检查关键结果、证据边界和未运行项。自评不是自动批改或能力认证。

### m3-l3 LSTM 实验报告

#### 本课讲解
LSTM报告以复现形状、因果切分和训练流程为目标。损失下降不证明泛化，固定合成数据成绩也不能外推到市场。

#### 操作顺序
运行lstm_lab.py→保存种子/版本/形状/轮数→核测试48窗口→对比基线→写局限与未运行项。

#### 独立作业
交报告，包含139×20×3、hidden8、8轮、48测试窗口；若未安装PyTorch应怎样填？

#### 自查要求
提交算式/表格/记录与假设；按答案册逐项检查关键结果、证据边界和未运行项。自评不是自动批改或能力认证。
