前言:应广大朋友的需求,本期推出“数字货币通用策略系列—搬砖套利”。搬砖套利通俗的将就是不同市场的相同产品进行低买高卖,赚取差价。可以说是熊市中的利器,牛市中的锦上添花。
什么是搬砖套利?
当两个市场的资产价格价差较大时,可以在价格低的市场买入一定数量的资产,在价格高的市场抛售相同数量的资产,赚取差价,俗称“搬砖”。
数字货币的套利流程是什么?
由于数字货币市场发展不太完善,多个交易所之间相同货币的价格存在大小不同的价差,因此存在套利的机会。
流程如下:
这里面价差需要满足主要由几个方面的因素构成:买卖手续费、数字货币钱包转账的手续费等。
例如:OKEX交易所BTC/USDT价格7000,HUOBI交易所BTC/USDT价格7080,交易手续费分别为0.2%,0.2%。
如果我们在HUOBI卖出1个BTC可以获得7080USDT的收入;在OKEX买入1个BTC需要花费7000USDT,那么
最终账户的BTC总数量没有发生变化,但是USDT挣了51.84。
策略回测
回测仍然在币宽(www.nextfintech.io)上进行。当交易所之间的价差大于手续费时,进行搬砖套利,为了模拟钱包之间的转账,这里采用搬砖套利后之间反向交易,致使每轮套利后账户中的BTC数量不发生变化。
策略相关说明:
1、回测时间:2018-08-01至2018-09-01
2、K线频率:tick
3、交易手续费率:0.2%
4、每次套利的BTC数量:0.1个
5、回测交易所和币对:HUOBI的BTC/USDT和OKEX的BTC/USDT
策略代码如下:
# coding=utf-8
'''
//免责声明:本策略仅供学习使用,请勿直接进行实盘交易,本策略不承诺任何收益。//
///
策略名称:搬砖套利
策略说明:
1、两个交易所相同的交易标的(此处使用OKEX.btc_usdt和HUOBI.btcusdt)价差大于双边手续费时,存在套利机会。
2、买入价格低的交易所品种,同时卖出相同数量价格高的交易所品种。
3、回测初始参数:分别添加OKEX交易所的BTC、USDT和HUOBI交易所BTC、USDT的初始持仓。
'''
from __future__ import print_function, absolute_import
from nf.api import *
import pandas as pd
import numpy as np
def init():
global exchange #交易所
global front #币对前项
global base #币对后项
global symbol #交易币对
global freq #数据频率
global okex_bid
global okex_ask
global huobi_bid
global huobi_ask
global okex_price
global huobi_price
global okex_fee
global huobi_fee
exchange=['OKEX','HUOBI']
front='btc'
base='usdt'
freq='tick'
symbol=[0,0]
symbol[0]=get_symbol(exchange[0],front,base)
symbol[1]=get_symbol(exchange[1],front,base)
okex_bid=0.0
okex_ask=0.0
huobi_bid=0.0
huobi_ask=0.0
okex_price=0.0
huobi_price=0.0
okex_fee=0.0015
huobi_fee=0.0015
print('init')
subscribe(symbol,freq,count=1)
def on_tick(tick):
global exchange #交易所
global front #币对前项
global base #币对后项
global symbol #交易币对
global freq #数据频率
global okex_bid
global okex_ask
global huobi_bid
global huobi_ask
global okex_price
global huobi_price
global okex_fee
global huobi_fee
vol=0.1
'''
由于行业发展不太完善,因此很难保证数据100%的完整性,需要判断获取数据的数量量是否
满足要求,您可以根据实际需要在策略逻辑中进行相应处理。
'''
if tick['symbol']==symbol[0]:
okex_price=tick['price']
if tick['symbol']==symbol[1]:
huobi_price=tick['price']
if okex_price!=0.0 and huobi_price!=0.0:
if okex_price-huobi_price > okex_fee*okex_price + huobi_fee*huobi_price :
print(tick['created_at'].strftime('%Y-%m-%d %H:%M:%S'),'存在套利空间,买入huobi卖出okex--->')
#判目前账户是否满足套利
if get_positions(exchange[1],base)[0]['available'] > vol*huobi_price and get_positions(exchange[0],front)[0]['available'] > vol :
order_buy={
'symbol': symbol[1], 'volume': vol, 'side':1, 'order_type': 1,'price':huobi_price}
order_sell={
'symbol': symbol[0], 'volume': vol, 'side':2, 'order_type': 1,'price':okex_price}
order_batch([order_buy,order_sell],combine=True)
print('下单成功,HUOBI买入的BTC转入OKEX,OKEX的USDT转入HUOBI')
#调整HUOBI的BTC至
order_volume(symbol[1],get_positions(exchange[1],front)[0]['available']-5,side=2,order_type=1,price=okex_price)
#调整OKEX的BTC至
order_volume(symbol[0],5-get_positions(exchange[0],front)[0]['available'],side=1,order_type=1,price=huobi_price)
else:
print('余额不足')
if huobi_price-okex_price > okex_fee*okex_price + huobi_fee*huobi_price :
print(tick['created_at'].strftime('%Y-%m-%d %H:%M:%S'),'存在套利空间,买入okex卖出huobi--->')
#判目前账户是否满足套利,不满足则调整持仓
if get_positions(exchange[0],base)[0]['available'] > vol*okex_price and get_positions(exchange[1],front)[0]['available'] > vol :
order_buy={
'symbol': symbol[0], 'volume': vol, 'side':1, 'order_type': 1,'price':okex_price}
order_sell={
'symbol': symbol[1], 'volume': vol, 'side':2, 'order_type': 1,'price':huobi_price}
order_batch([order_buy,order_sell],combine=True)
print('下单成功,OKEX买入的BTC转入HUOBI,HUOBI的USDT转入OKEX')
#卖OKEX的BTC
order_volume(symbol[0],get_positions(exchange[0],front)[0]['available']-5,side=2,order_type=1,price=huobi_price)
#买HUOBI的BTC
order_volume(symbol[1],5-get_positions(exchange[1],front)[0]['available'],side=1,order_type=1,price=okex_price)
else:
print(' 余额不足')
def on_execution_report(execrpt):
print('交易回执:',execrpt,'\n\n\n')
def on_error(code,info):
print('错误代码:',code,'错误代码说明:',info)
def on_backtest_finished(indicator):
print('绩效对象打印:',indicator)
if __name__ == '__main__':
run(strategy_id='86eaae00-b33a-11e8-a9e3-00ffa9185dbb',
filename='main.py',
mode=MODE_LIVE,
token='6778ebc60a3b004bcc7286a5566a28df')
策略回测结果如下:
回测结果如下(所有结果按每日公允汇率币/USD结算):
累计收益率:22.89%
年化收益率:1260.70%
基准收益率:-8.36%
最大回撤:7.42%
Alpha:12.90
从回测结果中可以看出搬砖套利实现了稳定的套利交易,且回撤小,特别是对目前数字货币处于熊市中来说,简单的持币不会增值。相比基准可以实现较好的超额收益。接下来我们用分钟级别行情回测搬砖套利,看看是不是有同样好的效果。
策略回测结果如下:
回测结果如下(所有结果按每日公允汇率币/USD结算):
累计收益率:11.46%
年化收益率:269.43%
基准收益率:-8.36%
最大回撤:15.92%
Alpha:3.05
Beta:0.60
从回测效果中看,分钟级别的绝对收益和相对收益明显不如tick级别的好,主要是由于tick级别产生的套利机会会被市场不断的修正,因此分钟级别的套利机会明显减少。
小结:数字货币市场的搬砖套利可谓是熊市中的利器,牛市中的锦上添花。可以实现稳定的收益。但是搬砖也有其弊端:资金容量小,因此大规模的资金会增加策略的冲击成本;滑点和市场延迟也是需要的考虑的因素,特别是市场剧烈波动的时候,市价单往往会造成失败的套利。
看了今天的策略分享,你是否还觉得意犹未尽呢?别着急,福利时间到!
为了让更多的投资者能够了解量化交易,币宽(BitQuant)有幸邀请到了顶尖数字货币量化策略师李辰,举办国内首个数字货币量化交易课程,为您揭开数字货币量化交易的神秘面纱。
李辰毕业于南开大学陈省身数学研究所,曾在私募信宁投资和格林基金分别担任量化策略研究员以及投资经理,有资深的金融市场量化和大数据投研经验,构建了完整的模型体系。
其个人业绩包括:
开发了完整的数据分析处理体系,能从各种类型和数量级别的数据中挖掘出有价值的信息。
开发了完整的数据分析处理体系,能从各种类型和数量级别的数据中挖掘出有价值的信息。
具体包括:行情数据(K线、逐笔和盘口等各个级别的数据)、基本面类数据(宏观数据、外汇数据、财务数据等)和其他数据(个人接触过包括同花顺、京东、银联、和讯等机构的平台数据,以及从互联网抓取的各种类型数据)
开发过高频策略、趋势追踪、趋势反转、特殊交易信号、跨品种统计套利、多因子选股、行业轮动、事件驱动、风险平价、机器学习择时等多种模型,运用于实盘取得了不错的成绩。
发现多种CTA模型,在数字货币市场获得了难以相信的效果。例如对低手续费的账户,有多种高频模型可获得年化1000%以上的收益,且最大回撤几乎可以忽略,资金也有一定容量;对高手续费的账户,有多种趋势和特殊交易信号的模型可以取得年化300%以上的收益,且资金容量较高,收益回撤比远远高于传统金融市场。
如何免费获得本次公开课呢?添加币宽美女策略师微信:liuluyang52605252
顶级策略师手把手带您玩转数字货币量化交易,穿越牛熊,逆风翻盘。
声明:本文主要用于共同探讨和学习,请勿直接用于实盘交易。
后续将推出更多系列的量化策略,欢迎大家关注,共同交流。
未经本人同意,严禁转载。
往期文章:
1、数字货币量化通用策略研究系列—均线结合量能突破策略
2、数字货币-BOLL策略
3、量化课堂-技术指标之双均线
4、量化课堂-技术指标之KDJ