FTXのFunding rateを取得する
今回書いてみたもの
FTXのFunding rateを両建てで取る戦略は、現物と無期限先物の価格差を間接的に裁定取引しているのかな? と思ったので、FTXのFRを年利換算で取得するプログラムをJupyer Notebook上で書いて、状況を確認してみました。
import ccxt
import pandas as pd
import datetime
from tqdm import tqdm
# ターゲットの取引所を指定
TARGET_EXCHANGE = 'ftx'
pd.options.display.min_rows = 30
pd.options.display.max_rows = 100
# ターゲットの取引所を初期化
ccxt_exchange = getattr(ccxt, TARGET_EXCHANGE)()
ccxt_exchange.load_markets()
# Funding Rateの値を入れるデータフレーム
df_fr = pd.DataFrame()
# スポット取引可能な銘柄を入れるリスト
array_spot = []
# 全銘柄について直近のFunding Rate変化を入れたデータフレームを生成
for k, v in tqdm(ccxt_exchange.markets.items()):
# スポット銘柄はスポット銘柄リストに追加
if v['type'] == 'spot':
array_spot.append(k)
continue
# スワップ銘柄でなければスキップ
if v['type'] != 'swap':
continue
try:
# CCXTの関数を利用して直近のFunding Rateの履歴をハッシュとして取得
funding_rate_info_array = ccxt_exchange.fetchFundingRateHistory(k)
# ハッシュからデータフレームを作成。長さが0なら次の銘柄へ
df_temp = pd.DataFrame(funding_rate_info_array)
if len(df_temp) == 0:
continue
# 必要ない列を削除する
df_temp.drop(['info', 'datetime', 'symbol'], axis=1, inplace=True)
# 列名を変更する
df_temp.columns = [k.replace(':USD', ''), 'timestamp']
# ミリ秒単位の時間をtimestampから切り捨て
df_temp['timestamp'] = df_temp['timestamp'] // 1000
# TimestampからDatetimeを生成してインデックスにし、Timestampは削除
df_temp['datetime'] = pd.to_datetime(df_temp['timestamp'], unit='s')
df_temp.drop(['timestamp'], axis=1, inplace=True)
df_temp.set_index('datetime', inplace=True)
# これまでの計算結果と結合する
df_fr = pd.concat([df_fr, df_temp], axis=1).fillna(0)
except:
print(f'{k} exception occured')
pass
# 年率換算した最新のFunding Rate利率を、スポット銘柄取引可能なものについてだけ表示する
series_fr = df_fr.iloc[-1]*100*24*365
series_fr = series_fr.filter(items=array_spot).sort_values()
display(series_fr)
実行した結果
結果は以下のようになりました。
SLP/USD -395.076
ORBS/USD -181.332
HOLY/USD -176.076
OXY/USD -161.184
FIDA/USD -141.912
PROM/USD -113.880
RAMP/USD -102.492
MEDIA/USD -98.112
DENT/USD -78.840
SECO/USD -69.204
PAXG/USD -62.196
DODO/USD -58.692
EDEN/USD -56.940
KSHIB/USD -56.064
LEO/USD -54.312
...
PEOPLE/USD 15.768
PUNDIX/USD 16.644
CVC/USD 17.520
KNC/USD 18.396
BRZ/USD 23.652
ASD/USD 27.156
BAO/USD 32.412
MNGO/USD 42.924
STMX/USD 45.552
MER/USD 51.684
ROOK/USD 69.204
CLV/USD 94.608
MTA/USD 94.608
DAWN/USD 388.068
AMPL/USD 1085.364
Name: 2022-01-09 13:00:00, Length: 122, dtype: float64
2022/1/9現在の値ですが、AMPL/USDは相当な状態になっていますね。
SLP/USDなどFunding rateがマイナスのものでも、マージントレードで現物売したうえで先物買いをすれば、マイナス利率からも利益をあげることができるのかな?