这个监控程序我们还是以火币为例,接入火币上所有的交割合约品种并计算当季、次季合约的基差年化收益率。之所以选择当季、次季合约,是因为当周、次周合约离交割日期相对较近,基差往往不会有太大的绝对收益率,当收益率变小,交易现货、期货时的滑价和手续费成本占比就会变高,原本预计盈利的交易有可能会变成亏损。因此,我们选择监控当季、次季合约,为必要的交易成本,预留一定的安全边际。
由于程序需要同时读取现货、期货的数据,就需要同时接入火币现货、合约的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