第1章:头寸规模与市场容量
做期现套利,说白了就是在两个市场之间搬砖。但砖头太大,你可能搬不动,甚至把自己砸了。我见过太多人,策略回测漂亮得很,一上实盘就崩——原因很简单:没算清楚市场能吃下多少单子。
今天咱们就聊聊头寸规模和市场容量的关系。嗯,这部分内容,我个人觉得是整个流动性管理里最容易被忽视,却又最致命的一环。
头寸规模与市场深度的关系
先问个问题:你挂一个1000万的买单,市场会怎么反应?
如果你在深度好的合约上,比如BTC永续合约,可能只滑个0.01%。但如果你在某个山寨币的现货上挂单,搞不好直接拉爆3%。这就是市场深度在起作用。
市场深度,说白了就是不同价位上的挂单量。我习惯用「订单簿厚度」来理解它。一个健康的订单簿,应该是从盘口往外,逐层递减,但每一层都有足够的量。
举个例子,你看下面这个订单簿:
| 价格(USDT) | 卖一量(BTC) | 累计量(BTC) |
|---|---|---|
| 50000 | 10 | 10 |
| 50001 | 15 | 25 |
| 50002 | 20 | 45 |
| 50003 | 30 | 75 |
| 50004 | 50 | 125 |
如果你要买入100个BTC,按市价吃,你会吃到50004的价格,平均成本大概在50002.5左右。滑点约0.005%。但如果深度只有上面的一半,滑点就会翻倍。
核心原则:头寸规模不应超过市场深度的某个比例。我个人习惯控制在5%以内。超过这个数,你的订单就会开始「推」市场,而不是「吃」市场。
我在项目中遇到过一件事:有个朋友做ETH期现套利,头寸规模做到2000万。结果一开仓,现货端直接拉高了0.2%,期货端反而没跟上。套利空间瞬间变成亏损。这就是典型的「头寸规模超过市场容量」的教训。
最优执行规模计算
那么问题来了:到底多大的单子最合适?
这里有个简单的公式,我一直在用:
最优执行规模 = 最小( 账户资金 × 风险比例 , 市场深度 × 深度系数 )
其中:
- 风险比例:一般取1%-5%,取决于你的风险偏好
- 市场深度:取盘口前5档的总量
- 深度系数:我一般取0.3-0.5,留出安全边际
举个例子:
- 账户资金:1000万USDT
- 风险比例:3%
- 市场深度(前5档):500 BTC
- 深度系数:0.4
计算结果:
- 按资金算:1000万 × 3% = 30万USDT
- 按深度算:500 × 0.4 = 200 BTC(约1000万USDT)
取最小值,最优执行规模就是30万USDT。你想想看,如果只看深度,你可能会冲进去200 BTC,结果就是滑点飙升。
我的习惯:每次下单前,我都会跑一遍这个计算。哪怕只是几秒钟的事,但能帮你避开大坑。我曾经因为偷懒没算,直接吃了0.5%的滑点,那笔交易亏得我肉疼。
大单拆分的必要性
好,现在你知道最优规模了。但如果你要下的单子比这个还大呢?
答案很简单:拆。
大单拆分,说白了就是把一个大订单切成若干个小订单,分批执行。这样做有几个好处:
- 降低市场冲击:小单子不会引起市场注意
- 改善成交价格:可以等待更好的价格出现
- 隐藏交易意图:别人不知道你到底要买多少
我常用的拆分策略是时间加权平均价格算法(TWAP)。简单说,就是把订单均匀分布在某个时间段内执行。
# 一个简单的TWAP示例
def twap_execute(total_qty, duration_minutes, interval_seconds=10):
num_slices = duration_minutes * 60 / interval_seconds
slice_qty = total_qty / num_slices
for i in range(int(num_slices)):
# 在每个时间点下单 slice_qty
place_order(slice_qty)
sleep(interval_seconds)
当然,实际中还要考虑市场波动、成交量变化等因素。但核心思想不变:把大象装进冰箱,得一块一块来。
注意:拆分不是越细越好。太细的单子会产生大量手续费,而且容易被高频交易者识别出你的交易模式。我一般控制在10-20笔之间,每笔间隔10-30秒。
冰山订单与隐藏订单
说到隐藏交易意图,就不得不提冰山订单和隐藏订单了。
冰山订单,顾名思义,只露出水面的一小部分。你在订单簿上只能看到「冰山一角」,实际订单量要大得多。
举个例子:你想买1000个BTC,但只显示100个。当这100个成交后,系统会自动再挂出100个,直到全部成交。
隐藏订单则更彻底——完全不在订单簿上显示。只有当你挂单的价格被触及,它才会现身。
这两种订单在期现套利中非常有用。为什么?
- 避免被狙击:如果大家都知道你要买,价格会提前上涨
- 减少滑点:隐藏订单不会影响市场情绪
- 保护策略:别人猜不透你的真实意图
我个人的经验是:对于大单,优先使用冰山订单。隐藏订单虽然隐蔽,但成交优先级较低,可能吃不到好价格。
避坑指南:我曾经在流动性差的合约上使用隐藏订单,结果挂了一整天都没成交。后来发现,隐藏订单在深度薄的市场里,基本就是个摆设。所以,用之前先看看市场深度。
最后,咱们用一张图来总结本章的核心逻辑:
嗯,这张图把整个流程串起来了。从市场深度、账户资金、风险偏好三个维度出发,计算出最优执行规模。如果头寸规模超过这个值,就必须拆分,配合冰山或隐藏订单来执行。
记住一句话:在流动性管理里,活得久比赚得快更重要。头寸规模控制好了,你才能在市场上长期生存下去。
公众号:蓝海资料掘金营,微信deep3321