阅读 227

黑铁时代: Python之比特币量化交易套利

  • 本文取名参考自知乎热文 青铜时代:中本聪之惑
  • 本文不代表我所任职机构的任何观点
  • 本文不提供任何交易建议
  • 本文在技术层面上完全属实

最近一年,我一直在研究加密货币量化交易,最近总算是告一段落, 随着各种原因,我将淡出这个领域,这些积累之前想写个掘金小册,但是掘金方面一直没有反馈,干脆直接写出来了。 在这里我想给大家讲讲如何用Python写一个年化收益 50% 的量化交易套利策略。

介绍

通俗来讲,量化交易是用编程语言实现自动买卖获利。目前常见的策略有做市、高频、趋势、套利、网格等,各有千秋,本文只介绍套利。套利策略本身也是风险极低的策略,可以理解为对市场的短期不合理定价行为反向操作获利。

‘青铜时代:中本聪之惑’ 一文中的搬砖套利已经不可行,在机构大规模进入之后,个人量化交易者越来越难,但是期现套利依然是有空间的,我们打开网站 www.okex.com/spot/trade#… www.okex.com/future/trad… 可以看到 BTC/USDT 价格是10887,BTC/USD 季度合约 价格是11085,这中间便有 200USD 的价差。为什么造成这样的情况呢? 因为现货跟合约的杠杆倍数导致,现货最多5倍杠杆,合约则20-100倍。这就造成了上涨周期合约价格 > 现货价格, 下跌周期合约价格 < 现货价格。皆为杠杆之功。理想情况应该合约价格 = 现货价格,但市场是一直波动的,所以期现套利这个策略就是赚取了现货合约不合理定价的钱。

原理

我们把价差定义为 diff = 合约价格-现货价格, 那么会出现两种情况。

  1. diff > 0
  2. diff < 0

当diff > 0时,说明合约溢价,定价不合理, 做空合约,做多现货。 当diff < 0时,说明合约贴水,定价不合理, 做多合约,做空现货。

具体原理是: 假设当前合约价格 10000, 现货价格9400,diff = 600, 定价不合理,我们进行做空合约,做多现货。 当定价合理时, diff应该等于0,比如合约9800, 现货价格9800,做空部分盈利200,做多部分盈利400, 总盈利600。也就是6%。

机会真的存在么?

我写了个监控机器人,监控到2019年价差最低-3%,最高5%(数据来源于日线收盘价),再加上中间的波动,其实已经累计超过了20%, 收益就在这些波动中产生。

所以机会当时是存在的,并且入场门槛非常低。基本每个人都能做到月化4%的收益。

实际情况

伪代码

# 初始化客户端
spot = spotClient()
future = futureClient()
# 获取期现价格及价差
spot_price = spot.get_price()
future_price = future.get_price()
diff_price = future_price - spot_price

# 说明合约溢价, 做空合约, 做多现货
if diff_price > 0:
    future.sell(future_price, 1)
    spot.buy(spot_price, 1)
# 说明合约贴水, 做多合约, 做空现货
if diff_price < 0:
    future.buy(future_price, 1)
    spot.sell(spot_price, 1)
复制代码

在实际情况中,合约可以开多倍杠杆,现货却不能,导致资金利用率低。实际上在okex、huobi、binance平台都可以通过借币的形式做空、做多现货。即可以达到高利用率。

波动还是回归

价差曲线是波动无序的,通过网格线性开仓,可以降低风险。因为无法预知价差的极限,所以网格开仓是必要的。

但是怎么平仓呢? 是等到完全回归, 还是每次收敛指定值就平掉一部分呢? 我个人倾向于后者,在价差波动中获利。

感悟

加密货币量化交易留给个人参与的空间越来越小了,头部玩家开始用资金优势、低手续费、低延迟驱赶着普通quanter。像韭菜收割机那种策略已经不复存在。祝大家在这个高度投机的市场玩得愉快。

关注下面的标签,发现更多相似文章
评论