参数调优基础:参数空间、过拟合与欠拟合、回测与实盘差异
做高频做市策略,说白了就是在跟市场玩一场「参数游戏」。你设的每一个参数,都像一把钥匙——开对了门,利润滚滚;开错了,可能连本金都搭进去。今天我们就来聊聊参数调优最核心的三个概念:参数空间、过拟合与欠拟合、回测与实盘的鸿沟。
一、参数空间:你的策略到底有多少种可能?
先问个问题:一个简单的做市策略,比如「在买卖价差超过X个tick时挂单,持仓超过Y手时撤单」,你觉得有多少种参数组合?
X从1到10,Y从1到5,总共才50种。但实际做市策略哪有这么简单?
我见过一个真实的做市策略,参数包括:
- 报价深度(3个维度)
- 撤单阈值(2个维度)
- 库存管理系数(2个维度)
- 波动率调整因子(1个维度)
- 时间窗口(1个维度)
总共9个参数,每个参数取10个值,组合数就是10^9——十亿种可能。这就是你的参数空间。
核心概念:参数空间 = 所有参数可能取值的笛卡尔积。维度越高,空间越大,搜索难度呈指数级增长。
我个人习惯把参数空间分成三类:
| 类型 | 特点 | 例子 |
|---|---|---|
| 离散参数 | 取值有限,可枚举 | 挂单档位(1,2,3,4,5) |
| 连续参数 | 取值无限,需离散化 | 库存系数(0.1~0.9) |
| 条件参数 | 依赖其他参数取值 | 仅当波动率>阈值时才启用 |
嗯,这里要注意:条件参数最容易踩坑。我在项目中遇到过,某个参数在A条件下有效,在B条件下完全失效,但回测时没做条件判断,结果实盘直接崩了。
二、过拟合与欠拟合:回测漂亮,实盘就漂亮吗?
先看一段代码,模拟一个「过度优化」的场景:
# 一个典型的过拟合案例
def optimize_parameters(data):
best_params = None
best_sharpe = -999
for spread in range(1, 20):
for depth in range(1, 10):
for timeout in range(10, 100, 5):
sharpe = backtest(data, spread, depth, timeout)
if sharpe > best_sharpe:
best_sharpe = sharpe
best_params = (spread, depth, timeout)
return best_params # 这个参数在样本内表现极好
这段代码有什么问题?它把整个数据集都用来找最优参数了。说白了,就是在「已知答案」的情况下找「解题步骤」——当然漂亮。
过拟合:参数完美拟合了历史数据中的噪声,而不是信号。表现就是:回测夏普3.0,实盘夏普0.3。
欠拟合:参数太粗糙,连历史数据中的基本规律都没抓住。表现就是:回测和实盘都差,但至少「稳定地差」。
我的经验:判断是否过拟合,有个简单方法——把数据切成三段:训练集(60%)、验证集(20%)、测试集(20%)。如果训练集表现远好于测试集,基本就是过拟合了。
我曾经犯过一个低级错误:用全量数据做参数搜索,选出了夏普4.2的「完美参数」。结果实盘第一天就亏了2%。后来复盘发现,那个参数恰好捕捉到了某次异常行情中的「假规律」——说白了就是运气。
三、回测与实盘差异:为什么你的策略「见光死」?
回测和实盘的差异,我总结为「四大鸿沟」:
- 流动性差异:回测时假设你挂单就能成交,实盘时可能挂半天没人理
- 延迟差异:回测是「瞬间成交」,实盘有网络延迟、交易所排队
- 冲击成本:回测不考虑你的订单对市场的影响,实盘时大单直接砸穿盘口
- 竞争环境:回测时只有你一个做市商,实盘时有一群跟你一样聪明的对手
你想想看,一个做市策略在回测里每天赚10万,实盘可能连1万都赚不到。为什么?因为回测忽略了「对手盘反应」。
避坑指南:我曾经在回测中加入了「滑点模型」——假设每次成交都比预期差0.5个tick。结果发现,原本赚钱的策略直接变成亏损。这说明什么?说明策略的利润空间本来就很薄,经不起任何摩擦成本。
我建议在做回测时,至少加入以下修正:
- 固定滑点:每笔交易加1个tick的成本
- 成交率模型:根据挂单深度估算成交概率
- 延迟模拟:假设信号到执行有10ms延迟
这些修正会让你的回测结果「难看」很多,但更接近实盘。
四、知识体系框架
下面这张图,是我自己梳理的参数调优知识体系,你可以对照着看:
这张图把三个核心概念串起来了。参数空间是「地基」,过拟合/欠拟合是「施工质量」,回测实盘差异是「验收标准」。三者缺一不可。
一个小技巧:我每次调参前,都会先画一张类似的图,把参数之间的关系理清楚。这样能避免「调了A忘了B」的尴尬。
最后说一句:参数调优没有银弹。你只能通过不断试错、交叉验证、样本外测试,慢慢逼近那个「既不过拟合、也不欠拟合、且能扛住实盘摩擦」的参数组合。这个过程很磨人,但也是量化交易最有意思的地方。
公众号:蓝海资料掘金营,微信deep3321