見出し画像

bybitのインデックス計算方法と攻略法

どうも、今回は界隈で盛り上がっているbybitのインデックス計算の方法について書いていきたいと思います。BOTの戦略を決める際には、理論値の算出も出来るとより高度になります。

スポットはポーカーでもデリバはチェスだと信じております(笑)

補足:noteのコードの部分で改行しても反映されないバグ、対処法どなたか教えてください(´;ω;`)


では、行きますか。

インデックスの計算方法

まずは普通に引用します。

インデックス価格は、概算インデックス価格 .ECOIN (BTC、ETH、XRP、EOS) から算出されています。 以下の説明は、BTCを例として使用します。
.EBTCとは、現在、Bitstamp、Coinbase Pro、Kraken、Gemini、Bittrexの5か所の取引所のBTCスポット取引価格の加重平均値をいい、各取引所の平均月間取引量の加重平均を用います。(以下の計算式ではわかりやすくするため、3つの取引所の比重等を示しています)


こちらではコードを見ながら説明していきます。データをcryptowatchから取得していきます。

手順

・週足を取得する。
・直近4本の出来高の合計と売買代金の合計を計算する。
・終値を取得する。
・変数に格納しておく。
import requests
import json

columns=[
 "CloseTime",
 "OpenPrice",
 "HighPrice",
 "LowPrice",
 "ClosePrice",
 "Volume",
 "QuoteVolume"]

exchanges = ["bitstamp","coinbase","kraken","gemini","bittrex"]
volume = []
quote_volume = []
last_price = []

for n in range(len(exchanges)):
   exchange = exchanges[n]

   html = json.loads(requests.get("https://api.cryptowat.ch/markets/{}/btcusd/ohlc?period=604800".format(exchange)).text)
   df = pd.DataFrame(html["result"]["604800"], columns=columns)
   sum_volume = df.iloc[-4:]["Volume"].sum()
   volume.append(sum_volume)
   sum_quote_volume = df.iloc[-4:]["QuoteVolume"].sum()
   quote_volume.append(sum_quote_volume)
   last_price.append(df.iloc[-1]["ClosePrice"])
print(volume)
print(quote_volume)
print(last_price)
[161561.18416538, 253174.74208420998, 93534.42388993, 46433.046098813604, 17710.97834131]
[1636552153.239968, 2553059828.377862, 941109758.2710297, 466377950.36232543, 177853460.6517918]
[11300.12, 11302.3, 11297.6, 11305.92, 11300.132]

出力結果は二段目になります。コードを改行しても、改行されないバグがあったため、二段に分けることにいたしました(笑)

月間取引高は取得出来たので、.EBTCというインデックスを計算したいと思います。定義は公式ページを参考にしたが、なぜかここではA,B,Cしかない(笑)

画像1

EBTC = 0
for n in range(len(exchanges)):
   EBTC += volume[n]/sum(volume)*last_price[n]
EBTC
11301.14327686841

こうして一先ず最初のステップは終わりです。

次に調整後の比率(調和二乗平均?)の計算を行います。
価格差=終値-.EBTC
です。

画像2

N = len(exchanges)
adjusted_weight = []
diff = []
for n in range(N):
   diff.append(1/(last_price[n]-EBTC)**2)
for n in range(N):
   adjusted_weight.append(diff[n]/sum(diff))
adjusted_weight
[0.3406291925807054,
0.2665688128067154,
0.028409134356082222,
0.01563176580734639,
0.3487610944491505]

これでやっと最後のステップまで来れました。インデックス価格計算方法は以下の通りです。

index_price = 0
for n in range(N):
   index_price += adjusted_weight[n]*last_price[n]
index_price
11300.724378368157

では次に攻略方法に参りたいと思います。

攻略法

・インデックス価格の特徴

ここで、取引所の終値が[11300.12, 11302.3, 11297.6, 11305.92, 11300.132]で月間出来高による加重平均値が11301.14327686841に対して、インデックス価格が11300.724378368157となっております。

まず、第二段階の調整済み比重に対しては、.EBTCから乖離すると比重が恐ろしく小さくなるため、ほとんど.EBTCと一致します。他の取引所のレンジは大体11297~11305なので8ドルほど乖離していて、大体この数字は真ん中の数字となっております。

・マーク価格

このインデックス価格はまずマーク価格に利用されます。マーク価格とはデリバティブのその時刻における評価額で、流動性がない場合において、強制決済されないようにされる目的等があります。

画像3

次に資金調達率という新しい変数が出てきたので見ていきましょう。

・プレミアムインデックス

まずは引用します。

画像4

インパクト買気配価格=買気配側でインパクト証拠金想定元本を実行するための平均約定価格
インパクト売気配価格=売気配側でインパクト証拠金想定元本を実行するための平均約定価格
インパクト証拠金想定元本とは、0.1 BTC / 1 ETH相当の証拠金(つまり必要証拠金0.1 BTCまたは1 ETH)で取引できる概念をいい、インパクト買気配または売気配価格を測定するためにオーダーブックのデプスを決定するために使用します。

これめちゃくちゃややこしく書いてますが、要するに0.1BTC証拠金ってことは本取引所では10BTCまで発注できるってことなので、板の最良気配から10BTC分のVWAP算出するだけですね(笑)

マーク価格で使用している公正ベーシスって要するに最小単位のことなので0.5ってことだと思いますが、インパクト価格-マーク価格の差をスポット価格で割っているところ、0.5/スポット価格ってことなのかなあ。。。

実際の金融業界の金融派生商品の契約書でこういう曖昧な契約は絶対されませんが、仮想通貨は何でもありですね~(笑)

とうとう、資金調達率の計算です。

資金調達率 (F) = プレミアムインデックス (P) + clamp(金利(I) - プレミアムインデックス(P), 0.05%, -0.05%)

金利は固定です。

換算通貨金利指数= 0.06%,基本通貨金利指数 = 0.03%
式:金利=(0.06%-0.03%)/ 3 = 0.01%

clampってclamp(X, 0.05%, -0.05%)というのは、-0.05%~+0.05%はXでその他の領域で0って意味です。

板から算出される価格がマーク価格(理論価格)に対して、-0.06%以上下に乖離または0.04%以上、上に乖離した場合は、8時間起きに価格が理論値に対して是正する方向に売り手と買い手の間で資金の移動が行われます。この資金の移動する金額を資金調達料と言います。

取引所内の理論値の計算頻度

Bybitは、毎分プレミアムインデックス(P)と金利(I)を計算してから、一連の分レートに対して8時間の時間加重平均価格(TWAP)を実行します。

つまり、この資金調達料に関しては、前のセクションで計算されたもので、このレートに合わせてポジションを管理すれば、公正な市場であれば、その分の期待収益率を想定することが出来ます。8時間中市場を操作することは難しいのですが、ただ、これ乖離したら金利0.01%から一気にプレミアムインデックスに跳ね上がるので、一気にプレミアムインデックス+0.05%>0.09%という謎の領域に突入します(笑)逆乖離なら-0.11%以下です(笑)

資金調達料は、16:00 UTC、00:00 UTC、08:00 UTCの8時間ごとに買い手と売り手の間で直接交換されます。

まとめ

皆さんbybitの契約書は理解出来ましたでしょうか?

複雑な契約書でしたが、こういうのは法学部の方とか得意だったりするんですかね~

この記事が気に入ったらサポートをしてみませんか?