数字货币的python量化交易(五)--最专业的期现套利讲解

144
提问者
2023-03-15 15:46 悬赏 0财富值 阅读 1390回答 1

在文章之前,我还是想强调一下:1,交易数字货币,最大的风险是平台跑路(亲身经历了fcoin的跑路,小百万人民币就直接归零了)2,第二个风险就是美金汇率下跌(20

默认分类
登录 后发表回答
1楼 · 2023-03-15 16:01.采纳回答

在文章之前,我还是想强调一下:

1,交易数字货币,最大的风险是平台跑路(亲身经历了fcoin的跑路,小百万人民币就直接归零了)

2,第二个风险就是美金汇率下跌(2020年上半年,用人民币买入usdt要7块钱,到2021年用usdt只能换回6.4块)


在不考虑以上两个风险和操作失误的可能后,期现套利基本上可以算是无风险套利了。

先上个Okex的注册链接,本文以okex为例说明:

====================

期现套利,本身的逻辑就是因为期货和现货有价差,但在期货交割的时候,是以现货的价格交割,从而产生套利的机会。

用数学来描述就是(以币本位交易):

1,假设现货价格当前为x元,买入数量为m个,总资金量为x*m;

2,期货价格为x*a元,杠杆倍数是y,每张合约的面值是k,总的可做空数量为m*(x*a)*y/k,假设做空的仓位比例为j,则做空数量为m*(x*a)*y*j/k;

3,在合约交割时,以价格x*b的价格交割(合约按x*b交割,也就是把合约平仓掉,同时把所有的现货按x*b卖掉)。

那么,收益p=交割的资金-实始资金=[m+(k/(x*b)-k/(x*a))*m*(x*a)*y*j/k]*x*b-x*m

=m*x*(b+(a-b)*y*j-1)

=m*x*(b*(1-y*j)+(a*y*j-1))

为了让交割的时候,以最终价格无关,所以需要使(1-y*j)=0,也就是y*j=1,意思就是如果杠杆倍数是y=10,做空的比例就是1/10,此时的收益p=m*x*(a-1),所以交割的收益率:

p1=a-1

也就是期货价格相对现货价格的溢价了。

验证完毕。

===================================

回到okex上,如下为2021/2/5早上9:33分时的价格,当季合约是3/26交割,期货价格是38886.72,现货指数是37224.71,所以当前如果买入现货,在10倍杠杆的情况下,做空十分之一的仓位,那么收益率p1=38886.72/37224.71-1=4.46%(不考虑手续费的情况下)。

具体操作如下:

1,在交易中,选择“币币交易”

2,输入买入价格和买入数量,点“买入BTC",即可买入现货。这里我按37051.7usdt的价格买入0.10795725的btc,交割额就是4000usdt。

3,在交易中选择“交割合约”,然后选择“币本位保证金合约(当季)”,然后选择BTCUSDT当季0326的合约,再点“资金划转”,如下图,我把“币币账号”的btc都划转到“交割合约账号”了。

4,注意,右上角一定要把账号模式设置为“全仓”,杠杆倍数设为“10.00X",交易单位设成“张”。

5,输入交易的价格,显示可开416张,我们按1/10来开就是41.6张,四舍五入下,选择开42张(只能取整数),点“卖出开空”,成交了就可以了。

6,合约开空单成功后,要特别注意,开仓成功后,保证金率应该约为100%,预估强平价要么很大,要么显示为0(即在这种方式,永远不会暴仓,其实没有永远了,下个月就交割了^_^)。

7,在这次交易中,我的开仓均价为38737.14usdt,现货买入价格为37051.7usdt,所以在交割的时候,我把合约平掉,然后把所有的现货卖掉,我的收益率p1=38737.14/37051.7-1=4.54%,按投入4000usdt*4.54%=181.6usdt,预计3月到期的时候,我应该会180美金左右的收益。