第二十八节:基差交易的算法交易
各位同学,今天我们来聊聊基差交易里一个非常实战的话题——算法交易。说实话,很多做基差交易的朋友,策略想得挺漂亮,一到执行环节就亏钱。为什么?因为你的订单一挂出去,市场就“看见”你了。
我刚开始做基差交易那会儿,就吃过这个亏。记得有一次,我判断螺纹钢的期现价差要回归,挂了个大单子想一把吃掉。结果呢?价格瞬间被打下去,我的成交均价比预期高了整整两个点。后来我才明白,这不是市场跟我作对,是我的执行方式太“原始”了。
TWAP与VWAP:基差交易的时间切片艺术
先说说TWAP和VWAP。这两个东西,说白了就是帮你把大单子“切碎”了慢慢吃。
TWAP(时间加权平均价格),就是把你的订单按时间均匀分配。比如你要买100手,交易时段是4小时,那就每小时买25手。它的逻辑很简单:假设价格是随机波动的,均匀分布就能拿到平均价。
但这里有个坑——TWAP完全不考虑成交量。万一你下单的时候市场正好没量,你的订单就会把价格推得很高。我遇到过这种情况,在下午收盘前用TWAP执行,结果那会儿流动性枯竭,成交价惨不忍睹。
VWAP(成交量加权平均价格)就聪明一些。它会根据历史成交量分布来分配订单。比如上午10点成交量占全天的15%,那就在这个时段分配15%的订单量。
我个人习惯在基差交易里优先用VWAP。为什么?因为基差交易的核心是价差回归,你希望自己的成交价尽量贴近市场均价,这样价差计算才准确。VWAP天然就是干这个的。
核心要点:
- TWAP适合流动性好的品种,比如股指期货
- VWAP适合基差交易,能减少对价差的影响
- 实际执行时,我建议用VWAP作为基准,再根据实时流动性做微调
冰山订单:把你的真实意图藏起来
冰山订单,这个名字很形象。你只露出“冰山一角”,真正的订单量藏在水下。
举个例子。你想买500手螺纹钢,如果直接挂个500手的买单,市场上一眼就能看到。做市商和量化基金看到这么大的单子,会怎么想?他们会把价格往上推,等你来追。这就是典型的“被狙击”。
冰山订单的做法是:只显示50手,成交完再自动补上50手,直到500手全部成交。这样市场看到的始终是一个小单子,不会引起注意。
嗯,这里要注意——冰山订单不是万能的。如果市场深度很差,你的冰山订单可能会被“钓鱼”。我曾经在某个流动性不好的品种上用过冰山,结果被一个高频交易商反复“试单”,他每次只吃我露出来的那一点,然后迅速撤单,搞得我成交效率极低。
我的经验:
冰山订单的“露出量”一般设为总订单量的5%-10%。如果市场波动大,可以降到3%。另外,配合随机时间间隔使用效果更好——别每次都固定补单,容易被对手盘摸到规律。
算法执行优化:从“傻执行”到“智能执行”
光会用TWAP和冰山还不够,你得学会优化。我见过太多人,策略是好的,执行却一塌糊涂。
优化的核心就三个字:看微观结构。
比如,你发现某个品种在开盘后15分钟和收盘前15分钟流动性最好,那你就应该把大部分订单集中在这两个时段。再比如,如果盘口上有大单托底,你可以适当加快执行速度;如果盘口很薄,就放慢节奏。
我常用的一个优化方法是“动态调整执行速度”。具体来说:
# 伪代码示例:动态执行速度调整
def adjust_execution_speed(order_book, target_volume):
# 计算当前市场深度
depth = order_book.bid_volume + order_book.ask_volume
# 如果深度充足,加快执行
if depth > target_volume * 10:
speed = 1.5 # 1.5倍速
# 如果深度不足,放慢执行
elif depth < target_volume * 3:
speed = 0.5 # 0.5倍速
else:
speed = 1.0 # 正常速度
return speed
这个逻辑很简单,但实战中非常有效。你想想看,市场深度好的时候你不多吃一点,深度差的时候你硬吃,这不是跟自己过不去吗?
市场冲击模型:算清楚你的“交易税”
最后,也是最重要的——市场冲击模型。这东西,说白了就是算清楚你的订单会对价格产生多大影响。
基差交易里,市场冲击是个隐形杀手。你算好了价差有5个点的利润,结果一执行,冲击成本吃掉3个点,剩下2个点还不够手续费。这种事我见得太多了。
一个简单的市场冲击模型是这样的:
| 订单量(手) | 预期冲击(点) | 实际冲击(点) |
|---|---|---|
| 10 | 0.5 | 0.3 |
| 50 | 1.2 | 1.5 |
| 100 | 2.0 | 2.8 |
| 500 | 5.0 | 7.2 |
看到没?订单量越大,冲击成本非线性增长。500手的冲击成本是10手的14倍,而不是50倍。这就是为什么大单子一定要拆。
我常用的冲击模型是Almgren-Chriss模型,它把冲击分为两部分:
- 永久冲击:你的订单改变了市场供需,价格回不去了
- 临时冲击:你的订单只是暂时推高了价格,等流动性恢复价格会回来
基差交易里,我们最怕的是永久冲击。因为基差交易本质上是套利,如果价格被你推得回不来了,那套利空间就消失了。
避坑指南:
我曾经在焦煤的基差交易上栽过跟头。当时我算好了价差有8个点,结果因为订单太大,直接把现货价格推高了3个点,期货价格反而没动。最后平仓的时候,价差不但没回归,反而扩大了。这就是典型的永久冲击导致的失败。
所以我的建议是:在基差交易中,永远把冲击成本算到策略里。如果冲击成本超过预期利润的30%,这个交易就不值得做。
知识体系总览
下面这张图,是我自己整理的基差交易算法执行的核心逻辑。你可以把它当作一个检查清单,每次执行前过一遍。
这张图把整个执行流程串起来了。从交易信号输入开始,你要同时考虑三个维度:怎么切时间、怎么藏订单、怎么算冲击。最后综合出一个最优执行方案。
说实话,算法执行这件事,没有银弹。每个品种、每个市场环境都不一样。但只要你掌握了TWAP/VWAP、冰山订单和冲击模型这三个工具,再结合自己的经验不断优化,执行效率一定能上一个台阶。
好了,这一节的内容就到这里。记住,好的策略需要好的执行来兑现。别让你的基差交易死在执行环节上。