Jacky Gu

高级网格交易1-如何计算每格交易的数量

07 Feb 2024 Share to

网格交易是一种很流行的量化交易方式,但是网格交易也有风险,其主要风险在于发生单边上涨或单边下跌行情时,价格会突破网格,从而造成损失。

期权是一种非常有用的金融衍生工具,可以有效降低高风险投资品种(如股票,期货,外汇,加密货币等)的价格波动风险,并产生高稳定性的收益。事实上,okx,币安,kucoin等交易所相继推出的双币理财,雪球,鲨鱼鳍等结构化产品,都是基于加密货币期权。

本系列文章将讨论如何通过期权来保护网格不被突破,或者如何在突破时寻找到一个保护的措施。

本文作为第一篇,先来解决一个看似简单,却尚未有人清晰讨论过的问题,即:网格中每次下单的数量是如何计算的。

以下图这个机器人网格为例: 这是一个BTC/USDT网格交易,价格范围为:38000-48000,格子数为60格,等差网格,初始保证金3000U,杠杆为20x。

在开网格时,当输入了上述参数后,平台会给出每笔数量,如上图,该策略的每笔数量为0.018 BTC,即每次开单,都会成交这个数量。

那么这个每笔数量是怎么计算的呢?我查了币安官方文档,关于这个问题,平台并没有给出详细算法,只给到如下解答:

在Youtube上有个视频,对该问题做了解答。

视频链接:https://www.youtube.com/watch?v=DRhgJLZnl0s

笔者在上述视频基础上,推导出如下方程:

\[x \cdot \sum_{n=0}^{grids}(low+\frac{high-low}{grids}\cdot n) = margin \cdot leverage \cdot 0.8\]

上述方程中,$x$即为每笔数量。其他参数如下:

  • $grids$: 格数
  • $high$: 网格区间最高价
  • $low$: 网格区间最低价
  • $margin$: 初始保证金
  • $leverage$: 杠杆数,如10倍杠杆,就是10
  • 0.8: 这是币安网格为了保护用户的保证金不会全部损失而设定的一个安全阀值。

因为 \(\sum_{n=0}^{grids}(low+\frac{high-low}{grids}\cdot n)\) 是一个等差数列,通过等差数列公式,可以推导出,该值等于: \((grids+1)(high+low)/2\)

考虑到一般情况下开网格时,都会以当前价格上下相同高度的范围为网格范围,所以,可以把$\frac{high+low}{2}$当成当前价$p_0$,由此得到每笔数量的计算公式为:

\(每笔数量=\frac{margin \cdot leverage \cdot 0.8}{(grids+1) \cdot \frac{high+low}{2}}\) \(\approx \frac{margin \cdot leverage \cdot 0.8}{(grids+1) \cdot p_0}\)

举例:按上面提供的参数,计算如下: \(每笔数量=\frac{3000*20*0.8}{(60+1)(38000+48000)/2} = 0.0183 BTC\)

在保证金和当前价格确定的情况下,每笔数量与杠杆成正比,与网格数成反比。

每笔数量与资金使用效率相关,所以,如何合理设定杠杆率和网格数,将决定资金使用效率。

而网格数将决定成交数量,如果网格太少,格间距(gap)太大的话,成交会很少,网格交易失去意义,所以下面将假设确定gap,来看每笔数量怎么设置更加合理。

因为: \(grids = \frac{high-low}{gap}\)

把$grids$代入到上面的每笔数量公式中,可以得到:

\[每笔数量=\frac{2*0.8*margin*leverage*gap}{(high-low+gap) \cdot p_0}\]

所以,在触发交易频率相同情况下(即Gap一样),网格区间越小,每笔数量越大,资金使用效率最高。

这也是天地单的资金使用效率很低的原因。