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

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

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

介绍

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

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

原理

咱们把价差定义为 diff = 合约价格-现货价格, 那么会出现两种状况。编程语言

  1. diff > 0
  2. diff < 0

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

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

机会真的存在么?

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

因此机会当时是存在的,而且入场门槛很是低。基本每一个人都能作到月化4%的收益。

实际状况

伪代码spa

# 初始化客户端
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平台均可以经过借币的形式作空、作多现货。便可以达到高利用率。code

波动仍是回归

价差曲线是波动无序的,经过网格线性开仓,能够下降风险。由于没法预知价差的极限,因此网格开仓是必要的。orm

可是怎么平仓呢? 是等到彻底回归, 仍是每次收敛指定值就平掉一部分呢? 我我的倾向于后者,在价差波动中获利。

感悟

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