数一数这条规则能贴合什么
一个均线交叉有两个长度。再加上一个时段过滤器、一个波动率阈值和一个止损距离,就有五个可调的量了。如果每一个取五个候选值,这张网格就有 5⁵ = 3 125 个组合,而只有两个长度时是 25 个。那个挑选所能选择的配置数,直接度量了这条规则有多大的空间去贴合噪声。
被隐藏的自由度和被声明的一样要紧:工具、时间框架、K 线类型、交易窗口,以及每一条在看过结果之后才加上去的规则。它们很少被计数,却总是被用到。
每个自由度摊到多少笔交易
实践者常常要求每个自由参数要摊到很多笔交易,才会信任一次拟合。并没有一个精确的门槛,因为各笔交易并不独立、而各个参数的影响力也不相同,但方向是可靠的:一条四参数的规则配上 40 笔交易,拟合掉的和量出来的差不多一样多。样本外测试、参数稳定性检查,以及一个知道网格大小的紧缩夏普,就是把这份直觉变成数字的工具。
统计学意义上的 N 还是 N − 1
在统计学里,自由度也指样本方差的那个分母。把平方偏差除以 N 描述的是你手上这份样本;除以 N − 1 给出的是总体方差的一个无偏估计。在小样本上这个差别是看得见的:在 10 笔交易上,N − 1 版本的标准差是 N 版本的 √(10/9) ≈ 1.054 倍,所以一个夏普比率会因为约定不同而相差约 5 %。
在 Senzoukria 里
自动回测的扫描和滚动前推把网格上限设在 400 个组合,并在一次运行之前显示组合数乘以切片数;那个遍历一个脚本全部可读参数的按钮,会围绕它的默认值最多设立五个轴。Gauntlet 的紧缩夏普用整张网格的大小作为尝试次数。标准差的两种约定都出现过,而源码里各自都有记录:回放统计用的是总体版本(除以 N),而 Gauntlet 复现研究用回测器,用的是样本版本(N − 1),并对日度结果做 252 的平方根缩放。
相关内容
同一栏目
其他语言版本
常见问题
- 一套策略可以有多少个参数?
- 少到这个想法所必需的程度就好。每一个额外的参数都必须靠改善样本外、而不是样本内的结果,来挣得它的位置。如果去掉一个参数几乎不改变样本外表现,那它主要是在贴合训练数据。
- 两个工具在同样的交易上为什么给出不同的夏普比率?
- 一个常见原因是方差的约定:除以 N 还是除以 N − 1。另一个是年化方式。在大样本上第一个差别微不足道;而在十几笔交易上,它是百分之几。