参数调优基础:参数空间、过拟合与欠拟合、回测与实盘差异

做高频做市策略,说白了就是在跟市场玩一场「参数游戏」。你设的每一个参数,都像一把钥匙——开对了门,利润滚滚;开错了,可能连本金都搭进去。今天我们就来聊聊参数调优最核心的三个概念:参数空间、过拟合与欠拟合、回测与实盘的鸿沟。

一、参数空间:你的策略到底有多少种可能?

先问个问题:一个简单的做市策略,比如「在买卖价差超过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%。后来复盘发现,那个参数恰好捕捉到了某次异常行情中的「假规律」——说白了就是运气。

三、回测与实盘差异:为什么你的策略「见光死」?

回测和实盘的差异,我总结为「四大鸿沟」:

  1. 流动性差异:回测时假设你挂单就能成交,实盘时可能挂半天没人理
  2. 延迟差异:回测是「瞬间成交」,实盘有网络延迟、交易所排队
  3. 冲击成本:回测不考虑你的订单对市场的影响,实盘时大单直接砸穿盘口
  4. 竞争环境:回测时只有你一个做市商,实盘时有一群跟你一样聪明的对手

你想想看,一个做市策略在回测里每天赚10万,实盘可能连1万都赚不到。为什么?因为回测忽略了「对手盘反应」。

避坑指南:我曾经在回测中加入了「滑点模型」——假设每次成交都比预期差0.5个tick。结果发现,原本赚钱的策略直接变成亏损。这说明什么?说明策略的利润空间本来就很薄,经不起任何摩擦成本。

我建议在做回测时,至少加入以下修正:

  • 固定滑点:每笔交易加1个tick的成本
  • 成交率模型:根据挂单深度估算成交概率
  • 延迟模拟:假设信号到执行有10ms延迟

这些修正会让你的回测结果「难看」很多,但更接近实盘。

四、知识体系框架

下面这张图,是我自己梳理的参数调优知识体系,你可以对照着看:

参数调优核心知识体系 参数空间 过拟合 vs 欠拟合 回测与实盘差异 离散参数 可枚举取值 连续参数 需离散化 条件参数 依赖关系 过拟合 拟合噪声 欠拟合 忽略信号 偏差-方差权衡 平衡点 流动性差异 成交率 延迟差异 10ms vs 0ms 冲击成本 大单影响 实践方法:交叉验证 + 滑点模拟 + 样本外测试 稳健的实盘表现 三个核心概念相互影响,最终目标是在实盘中获得稳健收益

这张图把三个核心概念串起来了。参数空间是「地基」,过拟合/欠拟合是「施工质量」,回测实盘差异是「验收标准」。三者缺一不可。

一个小技巧:我每次调参前,都会先画一张类似的图,把参数之间的关系理清楚。这样能避免「调了A忘了B」的尴尬。

最后说一句:参数调优没有银弹。你只能通过不断试错、交叉验证、样本外测试,慢慢逼近那个「既不过拟合、也不欠拟合、且能扛住实盘摩擦」的参数组合。这个过程很磨人,但也是量化交易最有意思的地方。


公众号:蓝海资料掘金营,微信deep3321