更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流。
数字货币市场,是近期大家关注度相当高的一个市场。在这个市场中,存在着现货交易(数字货币交易所定义的币币交易)、期货交易(数字货币交易所定义的合约交易)以及期权交易。在期货交易中,数字货币有两种不同类型的期货,分别叫做交割合约、永续合约。交割合约,顾名思义,与商品期货、股指期货类似,每一个合约有到期交割日,而永续合约则是币圈所特有的,可以理解为永远不交割的期货合约。
我们在这篇文中中所要讲到的期现套利,特指数字货币的现货(币币)与交割合约期货之间的套利。某个币种,例如BTC的现货和交割合约,有着到期必收敛的规律,也就是说,当交割合约临近、到达交割日,其最后交割的价格必然趋近于现货价格,并最终与现货价格保持一致。为何说现货、交割合约会有这样趋同的特训,这是由交割合约的现金交割机制所决定的。我们以火币为例,来看一下关于交割合约到期交割的说明。
也就是说,如果交割合约在马上要交割的时候,价格没有收敛到现货指数价格最后一个小时的算术平均价,那么定价错误的一方(例如价格高于现货均价,此时空头属于定价错误的一方),将在交割结算时,立即承受这个确定性的亏损,当结算交割价差越大,这个亏损也将越大。从市场博弈的角度看,没有人愿意去承担这个亏损。因此,数字货币市场的交割机制,确保了期现最后必然回归。
比特币大行情下的确定性套利机会
这段时间,随着比特币暴涨,带动数字货币整体板块的暴涨,我们看到一个现象:以比特币为代表的数字货币交割合约,特别是远期的季度、下季度的交割合约,他们与数字货币现货之间的差值越拉越大。我们将交割合约、现货的价差称之为基差,以火币交易所某一时刻的BTC现货与当季合约为例,现货的交易价格是31846.9,当季合约的交易价格是32927.05,基差是 (32927.05-31846.9)/31846.9=3.39%,在我们截图当日,当季合约距离交割还有62天,我们再按照当季合约距离交割的日期折算基差年化收益率:3.39%/62*365=19.95%。
而相对于当季合约来说,次季合约的基差更大,次季合约交易价格33656.99,基差是(33656.99-31846.9)/31846.9=5.68%。次季合约距离交割还有153天,折算的基差年化收益率:13.55%。可以看到,对比当季和次季合约,当季合约折合年化的基差收益率更高,而次季合约基差收益率的绝对值更大。
由于交割机制的存在,交割合约和现货,在未来的交割日到来之时,必然会收敛到一致,也就是说,只要我们做多现货,同时做空等额的合约,我们上述计算的绝对收益率和年化收益率,是可以在无风险的情况下确定性获得的。
到这里,我们不禁要思考,为什么数字货币市场在此刻,能为我们带来如此高的无风险利润。数量技术宅认为,市场的暴涨带动了投机者的情绪,由于交割合约的杠杆倍数最多可达125,相比现货微不足道的杠杆,如果利用交割合约,在看对方向的情况下,收益率不可同日而语。而许许多多随着市场上涨不断开多的投机者,希望将手中的仓位尽可能地最大化,那么带高杠杆的合约,就是他们最佳的选择,即使支付相对现货市场的一定溢价,投机者也愿意用高溢价去换取高杠杆一搏。
使用Python监控套利收益率
我们知道,除了BTC以外,像ETH、EOS、LTC、BCH、XRP、BSV等主流币,在数字货币交易所,也都有相应的交割合约存在,如果只是用行情软件和手工计算基差,品种一多,难免会错过一些机会。因此,我们使用Python开发一个监控所有有交割合约币种基差收益率的监控程序。
这个监控程序我们还是以火币为例,接入火币上所有的交割合约品种并计算当季、次季合约的基差年化收益率。之所以选择当季、次季合约,是因为当周、次周合约离交割日期相对较近,基差往往不会有太大的绝对收益率,当收益率变小,交易现货、期货时的滑价和手续费成本占比就会变高,原本预计盈利的交易有可能会变成亏损。因此,我们选择监控当季、次季合约,为必要的交易成本,预留一定的安全边际。
由于程序需要同时读取现货、期货的数据,就需要同时接入火币现货、合约的API,现货和合约属于两套不同的API,我们分别调用现货、合约的封装模块,并进行初始化
接下来,我们用一个循环遍历所有监控的币种,首先获取现货价格,此处为保守处理,我们取的是现货的买20档的价格,作为基差计算的现货买价;第二步,我们获取期货的交割日,并计算交割日距离当前的日期差,这是为了计算基差收益率折合年化收益率使用的;第三步,我们获取合约的价格,我们同样取合约的卖20档的保守价格,作为基差计算的合约卖价;最后一步,有了现货买价与合约卖价,我们就能够计算出基差,并按照交割日期差计算基差的年化收益率和打印出来了。
我们运行这个程序,就能看到我们监控的所有币种当季、下季合约与其对应的现货合约的基差,如果基差的收益率大于我们可交易的预期,那么我们可以选择其中基差收益率最大的品种、合约,进行期现套利的交易。从我们例图中监控的这一轮,ETH的当季合约,基差年化收益率最高。
期现套利操作步骤
我们可以通过手工交易来实现上述的期现套利,把握住无风险的套利机会,当然,我们也可以通过交易所的API接口,来自动实现全部操作,在这篇文章中,我们先为大家介绍手工交易的操作步骤;在后续的分享中,我们也将开源自动执行期现套利的相关代码。
第一步,执行法币交易,法币交易这个名称比较拗口,其实大家可以把它理解为是股票、期货账户的银证、银期转账,即从我们的银行账户向交易所账户入金。但不同于股票、期货,数字货币的入金需要转换为对应的数字货币币种,这时我们就需要与法币交易的商家进行交易,在入金的同时,将手中的法币,转换为数字货币,例如usdt、btc等。我们建议大家兑换usdt,相对于其他币种,usdt的otc商家买卖价差最小,此外,兑换金额越多,价格越便宜。usdt是一种与美元挂钩的稳定币,当我们通过法币交易入金后,我们实际上已经开始承担人民币相对于美元的波动风险。
第二步,将法币交易购买得到的usdt,转入币币账户,准备币币交易。假设我们入金了1000usdt,通过划转后,该1000usdt,就全部到币币账户了。
第三步,假如我们需要在ETH现货与当季合约之间进行期现套利,套利金额是1000usdt。我们需要先知道应该购买多少个ETH,我们先通过合约交易的行情报价,计算如果我们此时做空1000usdt的合约,大约等值ETH是多少的量。根据交割合约的规则,每张ETH合约相当于10usdt,1000usdt相当于做空100张合约。我们在行情中输入卖出合约的张数100,行情会自动计算出等值的ETH=0.7665
第四步,我们再到现货交易,也就是币币交易的界面,在箭头处位置,输入0.7665,点买入ETH,并不要选杠杆或做空,交易完成后,我们的币币账户中,就多了0.7665左右个ETH。
第五步,我们再次进行账户划转,将币币账户中的0.7665个ETH全部划转至交割合约账户,充当交割合约的保证金。划转完成后,我们的交割合约账户中,就有了0.7665个ETH。请注意,此时交割合约的ETH共有两个功能,一是ETH的多头持仓,二是充当ETH交割合约的保证金。
第六步,我们再次进入交割合约,到我们目标做空合约:ETH当季合约的下单界面,填好卖出价并在卖出量的地方填入100张,选择卖出开空,就完成了我们的这一次期现套利的全部操作了。
完成操作后,我们再检查一下账户是否期货、现货完全对冲,我们来看ETH资产栏中的预估强平价以及担保资产率,此时我们的预估强平价是210万多的usdt,相比较ETH现在1200-1300usdt左右的价格,需要涨2000倍左右,显然是一个极其安全的状态。此外,我们还可以检查担保资产率,由于我们选择的合约杠杆系数是5X(即5倍杠杆),按照火币的调整算法,担保资产率越接近495%代表风险越小,此处我们的担保资产率是494.67%,这意味着期现对冲后,只有微弱的敞口,可以忽略不计。
特别要提醒大家注意的是,数字货币的期现套利,是基于场内交易来讲的无风险套利,但它仍然存在着两点场外风险:
第一,由于我们场内交易使用的稳定币usdt,是与美元挂钩的,我们在前文向大家提到过,一旦我们入金,无论是否交易,只要资金还在场内,都必须要承担美元相对于人民币的汇率波动。
第二,部分数字货币交易所曾出现提币、otc交易资金冻结等情况,这也属于不可控的场外风险,望大家谨慎考虑,谋定而后动。
最后,如果大家想要获取文中监控套利收益率的python代码,或是对套利交易过程有任何的问题,欢迎扫码添加技术宅的个人微信,与我交流。
关注 “数量技术宅”不迷路,您的点赞、转发,是我输出干货,最大的动力
往期干货分享推荐阅读
Omega System Trading and Development Club内部分享策略Easylanguage源码
【数量技术宅|量化投资策略系列分享】基于指数移动平均的股指期货交易策略
AMA指标原作者Perry Kaufman 100+套交易策略源码分享
【数量技术宅|金融数据系列分享】套利策略的价差序列计算,恐怕没有你想的那么简单
【数量技术宅|量化投资策略系列分享】成熟交易者期货持仓跟随策略
【数量技术宅|金融数据分析系列分享】为什么中证500(IC)是最适合长期做多的指数
商品现货数据不好拿?商品季节性难跟踪?一键解决没烦恼的Python爬虫分享
【数量技术宅|金融数据分析系列分享】如何正确抄底商品期货、大宗商品