第21章:交易成本与流动性对曲面优化策略的影响
做期权量化的人,十有八九都栽在同一个坑里——理论上的完美曲面,一到实盘就变形。
我刚开始做波动率曲面优化时,也犯过这个错。回测曲线漂亮得不行,年化收益30%+,最大回撤不到5%。结果实盘跑了三天,账户亏了2%。
问题出在哪?
交易成本和流动性。说白了,你算出来的那个最优组合,根本没法按那个价格成交。
一、交易成本:曲面优化的隐形杀手
先看一个简单的例子。
假设你构建了一个曲面套利组合,需要同时买入10张平值看涨期权,卖出10张虚值看涨期权。理论价差是0.5个点,你觉得稳赚不赔。
但实际交易中:
- 买入价:2.35(卖一价)
- 卖出价:2.30(买一价)
- 理论价差:0.5
- 实际价差:0.45
这0.05个点的差距,就是你的交易成本。如果再加上手续费、滑点,可能实际价差只剩0.03。
核心结论:交易成本不是简单的「加个手续费」就能解决的。它会改变整个曲面的最优解结构。
二、流动性:曲面上的「坑」与「峰」
流动性问题更隐蔽。
我遇到过这样一个案例:某个深度虚值期权,理论价格是0.02,但市场上只有1张挂单。你想做曲面优化,需要买入50张。结果呢?
- 前5张:0.02成交
- 中间10张:0.03成交
- 后面35张:根本没人卖
这就是流动性对曲面的扭曲。你看到的那个「低点」,其实是个假象。
为什么会这样?
因为做市商也不是傻子。他们知道哪些位置容易被套利者盯上,所以会在关键点位设置「流动性陷阱」——挂单薄、价差大、一碰就飞。
三、量化模型:如何把成本和流动性算进去
嗯,这里要上点硬货了。
我个人的习惯是,在优化目标函数里直接加入两个惩罚项:
# 伪代码:带交易成本和流动性的曲面优化
def objective_function(theta):
# theta: 曲面参数
# 1. 原始拟合误差
fit_error = np.sum((market_price - model_price(theta))**2)
# 2. 交易成本惩罚
# 用买卖价差作为代理变量
bid_ask_spread = get_bid_ask_spread(theta)
cost_penalty = lambda_cost * np.sum(bid_ask_spread)
# 3. 流动性惩罚
# 用挂单深度作为代理变量
depth = get_market_depth(theta)
liquidity_penalty = lambda_liquid * np.sum(1.0 / (depth + 1e-6))
return fit_error + cost_penalty + liquidity_penalty
这个模型看起来简单,但实际调参很讲究。lambda_cost和lambda_liquid怎么设?
我建议的做法是:
- 先用历史数据回测,找到成本和流动性的「敏感区间」
- 在这个区间内做网格搜索
- 选一个「稳健解」——不是最优,但最不容易翻车
四、实战案例:一个曲面套利组合的「成本修正」
去年我做了一个沪深300ETF期权的曲面套利策略。原始优化结果是这样的:
| 合约 | 理论仓位 | 修正仓位 | 原因 |
|---|---|---|---|
| 平值看涨 | +100张 | +80张 | 流动性好,但价差大 |
| 虚值1档看涨 | -50张 | -30张 | 流动性差,减少暴露 |
| 虚值2档看涨 | +20张 | 0张 | 流动性极差,直接放弃 |
| 实值看跌 | -30张 | -25张 | 价差适中,微调 |
你看,修正后的仓位和理论仓位差别很大。但实盘跑下来,修正版的夏普比率反而更高——因为减少了「假信号」带来的交易损耗。
小技巧:我一般会在优化前先跑一个「流动性热力图」。把每个合约的买卖价差、挂单深度、成交速度都标出来。那些「红区」合约,直接排除在优化范围之外。
五、SVG:交易成本与流动性影响框架图
下面这张图,是我做曲面优化时脑子里一直挂着的框架:
警告:千万不要以为加了惩罚项就万事大吉。我曾经在实盘中遇到过「流动性突然消失」的情况——某个合约的挂单在3秒内全部撤光。所以,我建议在策略中加入「熔断机制」:当某个合约的买卖价差超过阈值时,自动暂停该合约的交易。
六、避坑指南:我踩过的三个坑
坑一:用收盘价做优化
我曾经用收盘价做曲面优化,结果实盘一开盘就亏。为什么?因为收盘价是「成交价」,不是「可成交价」。你看到的那个价格,可能只有1张成交。正确的做法是用「买卖中间价」或者「加权平均价」。
坑二:忽略时间维度
流动性不是一成不变的。早盘和尾盘流动性最好,午盘最差。我建议在优化时,给不同时间段分配不同的权重。比如午盘的流动性权重降低50%。
坑三:过度优化
这个坑最隐蔽。你加入成本和流动性惩罚后,模型可能会「过度拟合」到历史数据上。我一般会用滚动窗口验证——用过去30天的数据优化,然后看未来5天的表现。如果表现不稳定,说明惩罚参数设得太极端了。
七、总结
交易成本和流动性,说白了就是「理想」和「现实」之间的鸿沟。
曲面优化本身是个数学问题,但加上成本和流动性后,它就变成了一个工程问题。你需要做的,不是找到「最优解」,而是找到「最稳健的解」。
我个人的经验是:宁可少赚,不要亏在成本和流动性上。那些看起来「完美」的曲面套利机会,十有八九是陷阱。
好了,这一章就到这里。记住:实盘之前,先问问自己——这个组合,我能按那个价格成交吗?