陈第 3 章 → M03¶
书:Ernest P. Chan,《量化交易——从入门到精通》第 3 章。 对应教材:M03 数据与回测工程 笔记记回测陷阱怎样落到本仓库的时点和费用,不摘录原文。
原书核心命题与论证链¶
陈把回测写成一条会在细节上撒谎的流水线:复权、成交时点、成本和参数搜索都会把曲线抬高。教材用同一条 SPY 10 个月均线把前视量化出来:shift(1) 的夏普是 0.51,用当月收盘赚当月是 1.77。书里的警告停留在例子,这个差额是种子数据上的计算结果,不是书中的表。
参数搜索在书里对应「高原而不是孤岛」。教材的 6 到 18 个月夏普落在 0.51 到 0.71,没有孤峰,但 10 个月在这窗里是谷底。全样本最高的 18 个月不能叫做样本外。五年滚动里冠军长度从 8 跳到 15,接起来的夏普 0.74 仍低于同一段买入持有的 0.82。
陈用具体券商费率说明小账户的最低收费。教材把费率写成 FeeSchedule 的输入,并要求 label 说明它不是券商合同。港股印花税用买卖各方 0.1%。其他征费以港交所收费表为准,教学合计数 0.85 个基点会过期。
docs/workflow.md 开头写明,本轮不把夏普 > 1 当作通用门槛。若书里或旧讲义把某个夏普写成准入线,以仓库这份流程文件的开头为准。
第 3 章把回测看成一条会在细节上撒谎的流水线。复权方式、成交时点、成本和参数搜索都能把曲线抬高。教材用同一条均线把其中的时点谎言算成两个夏普,并用滚动说明「高原」仍不等于样本外战胜买入持有。
个人港美股账户裁剪提示。同一根 K 线既发信号又算盈亏,就是前视。引擎已经把成交放到下一期时,策略里不要再延迟一次。下单用未复权价;新分红若重写历史,旧信号就变了。全样本里夏普最高的参数长度不是样本外。
原书与本仓库教材(M03)对照表¶
| 陈第 3 章 | 教材 |
|---|---|
| 流水线会撒谎 | 10 个月均线:推迟成交夏普 0.51,用当月收盘是 1.77 |
| 高原不是孤岛 | 6 到 18 个月的夏普在 0.51 到 0.71 |
| 券商费率举例 | 写成费用表的输入,并要求标签 |
| 可能把某个夏普当门槛 | 流程文件开头不用夏普大于 1 |
五年滚动里冠军长度从 8 跳到 15。接起来的夏普 0.74 仍低于同期买入持有的 0.82。1.77 与 0.51 是种子上的计算,不是书中的表。
精读重点与可跳过部分¶
精读时盯住这些段落。
- 成交价用的是信号形成之前还是之后。
- 参数搜索的例子里,测试段有没有参加挑选。
- 小账户最低收费怎样改变表面费率。
这些部分可以跳过。
- 某一家券商在印刷当年的价目。记下结构即可。
- 把 1.77 当成优化成功。
- 教学用的其他征费合计。那个基点数会过期,以收费表为准。
回到教材与代码的核对清单¶
- 0.51 是
shift(1)或交给引擎下一交易日之后的夏普。 - 1.77 是前视对照。
- 18 个月的 0.71 是全样本里较高的一档,不是样本外。
- 滚动夏普 0.74 对买入持有 0.82。
- 港股印花税买卖各方 0.1%。其他征费另列。
- 流程文件的开头优先于书里或旧讲义的夏普门槛。