2、参数调优概述:参数空间定义、过拟合与欠拟合、调优目标函数设计
各位同学,欢迎来到参数调优的第一课。
做市策略写出来只是第一步。真正让它赚钱的,是参数调优。我见过太多人,策略逻辑写得漂亮,一上实盘就亏。为什么?参数没调好。说白了,参数调优就是把你的策略从「能跑」变成「能赚」的关键一步。
2.1 参数空间:你的策略有多少种可能?
先问个问题:你的策略有几个参数?
假设一个简单的做市策略,只有三个参数:
- 订单宽度(spread):比如 0.01 到 0.05
- 订单数量(order_size):比如 0.1 到 1.0
- 撤单时间(cancel_time):比如 5 秒到 60 秒
每个参数取 10 个值,组合起来就是 10 × 10 × 10 = 1000 种可能。这就是你的参数空间。
参数空间定义:所有参数可能取值的组合构成的集合。每个参数有自己的取值范围和步长。
我个人习惯把参数空间分成三类:
- 离散参数:比如订单数量,只能取 0.1, 0.2, 0.5 这种固定值
- 连续参数:比如订单宽度,理论上可以取 0.01 到 0.05 之间的任何值
- 条件参数:比如某个参数只在另一个参数大于某个值时才有意义
我在项目中遇到过一个问题:参数空间太大,穷举搜索要跑三天三夜。后来我学乖了,先做敏感性分析,找出真正影响收益的关键参数,再缩小搜索范围。你想想看,如果 10 个参数每个取 100 个值,那就是 100 亿种组合,跑完黄花菜都凉了。
实战建议:刚开始调优时,每个参数先取 5-10 个值。找到大致范围后,再细化步长。别一上来就搞精细搜索。
2.2 过拟合与欠拟合:调优的两大陷阱
这两个概念,做量化的没人不知道。但真正能避开的人不多。
欠拟合,说白了就是你的策略太「笨」了。参数没调到位,连历史数据都拟合不好。表现在回测上就是:收益曲线平平的,夏普比率不到 0.5。
过拟合,就是你的策略太「聪明」了。它把历史数据里的噪音都当成了规律。表现在回测上就是:收益曲线完美得像假的一样,但一上实盘就崩。
我曾经犯过一个错:花了两周时间,把参数调得让回测曲线几乎 45 度向上。当时心里那个美啊。结果实盘第一天就亏了 3%。嗯,这就是典型的过拟合。
| 特征 | 欠拟合 | 过拟合 |
|---|---|---|
| 训练集表现 | 差 | 极好 |
| 测试集表现 | 差 | 差 |
| 实盘表现 | 差 | 极差 |
| 参数数量 | 过少 | 过多 |
| 解决方案 | 增加参数/复杂度 | 减少参数/增加正则化 |
避坑指南:我曾经见过一个团队,用 50 个参数去拟合 3 个月的数据。结果回测夏普 3.0,实盘夏普 -1.5。记住:参数数量不能超过数据量的平方根。这是经验法则。
2.3 调优目标函数设计:你到底想优化什么?
很多人一上来就说「我要最大化收益」。但收益高不代表策略好。你想想看,一个策略年化 100%,但最大回撤 80%,你敢用吗?
目标函数,就是告诉优化算法「什么才是好策略」。我常用的目标函数有几种:
- 夏普比率:最经典,衡量风险调整后收益
- 卡玛比率:年化收益 / 最大回撤,我比较喜欢这个
- 收益-回撤比:简单粗暴,适合做市策略
- 复合目标函数:把多个指标加权求和
我个人习惯用复合目标函数。举个例子:
def objective_function(results):
sharpe = results['sharpe_ratio']
calmar = results['calmar_ratio']
win_rate = results['win_rate']
# 权重可以自己调
score = 0.4 * sharpe + 0.4 * calmar + 0.2 * win_rate
# 惩罚项:最大回撤超过 10% 直接扣分
if results['max_drawdown'] > 0.1:
score *= 0.5
return score
这里有个细节:惩罚项很重要。不加惩罚,优化算法会倾向于高风险高收益的参数。我在做 BTC 做市策略时,就吃过这个亏。回测收益很高,但回撤也大。加了惩罚项后,参数才变得稳健。
核心原则:目标函数决定了你会得到什么样的参数。想清楚你要什么,再设计目标函数。别让算法替你决定「什么是好的」。
2.4 知识体系总览
下面这张图,是我自己总结的参数调优知识体系。你可以把它当成地图,后面几章都会围绕它展开。
这张图展示了参数调优的完整链路。从参数空间定义开始,到过拟合欠拟合的判断,再到目标函数设计,最后落到具体的调优方法和验证流程。每一环都缺一不可。
我的经验:刚开始做调优时,别想着一步到位。先跑通最简单的网格搜索,看看参数的大致分布。然后再逐步引入更复杂的算法。我见过太多人一上来就用贝叶斯优化,结果连参数空间都没定义清楚,白白浪费时间。
好了,这一章的内容就到这里。参数调优是个手艺活,需要反复练习。下一章我们会深入具体的调优算法,到时候我会拿出一些实战案例来拆解。
公众号:蓝海资料掘金营,微信deep3321