FR(資金調達率)を使った取引手法を考えたいので、BitgetのAPIを使ってみました。
現在のFRを取得する
API:Get Current Funding Rate を使う
現在のFRを取得するBitgetのAPIは、Get Current Funding Rate です。
https://www.bitget.com/api-doc/contract/market/Get-Current-Funding-Rate
現在のFRを取得する関数を作成しました。Pythonのサンプルコードです。通貨ペアは固定でBTCUSDTにしています。
def get_current_funding_rate(): endPoint = 'https://api.bitget.com' path = '/api/v2/mix/market/current-fund-rate' url = endPoint + path params = { 'symbol': 'BTCUSDT', 'productType': 'USDT-FUTURES', } response = requests.get(url, params=params) return response.json()
この関数を実行すると…
res = get_current_funding_rate() print(json.dumps(res, indent=4))
このようなレスポンスが返ってきます。BTCUSDTの現在のFRは0.0119%となります。
{ "code": "00000", "msg": "success", "requestTime": 1735263372100, "data": [ { "symbol": "BTCUSDT", "fundingRate": "0.000119" } ] }
FRのヒストリカルデータを取得する
API:Get Historical Funding Rates を使う
どのような取引アルゴリズムがいいか検討するために、FRの過去データを見たくなりますよね?取得してみましょう。
FRのヒストリカルデータを取得するBitgetのAPIは、Get Historical Funding Rates です。
https://www.bitget.com/api-doc/contract/market/Get-History-Funding-Rate
Pythonのサンプルコードです。こちらも通貨ペアは固定でBTCUSDTにしていますので、見たいペアに変更してください。
def get_current_funding_rate(): endPoint = 'https://api.bitget.com' path = '/api/v2/mix/market/current-fund-rate' url = endPoint + path params = { 'symbol': 'BTCUSDT', 'productType': 'USDT-FUTURES', } response = requests.get(url, params=params) return response.json()
関数を実行し、見やすいようにデータを加工しDataFrameにしてみました。
# FRのヒストリカルデータを取得する。 res = get_historical_funding_rate() # DataFrameに変換する。 df = pd.DataFrame( data=res['data'], columns=res['data'][0].keys(), ) # 資金調達料発生時刻をPOSIXから日本時間に変換する。 df['fundingTime'] = df['fundingTime'].astype('int64').apply(lambda x:datetime.fromtimestamp(x/1000, JST)) # 資金調達率の型をfloatにする。 df['fundingRate'] = df['fundingRate'].astype(float) # 資金調達料発生時刻をIndexにする。 df = df.set_index('fundingTime') print(df)
結果はこうなります。資金調達料は日本時間の9時・15時・夜中の1時に発生するので、Indexのタイムスタンプはその時刻になっています。
symbol fundingRate fundingTime 2024-12-27 09:00:00+09:00 BTCUSDT 0.000123 2024-12-27 01:00:00+09:00 BTCUSDT 0.000096 2024-12-26 17:00:00+09:00 BTCUSDT 0.000081 2024-12-26 09:00:00+09:00 BTCUSDT 0.000114 2024-12-26 01:00:00+09:00 BTCUSDT 0.000114 2024-12-25 17:00:00+09:00 BTCUSDT 0.000118 2024-12-25 09:00:00+09:00 BTCUSDT 0.000127 2024-12-25 01:00:00+09:00 BTCUSDT 0.000126 2024-12-24 17:00:00+09:00 BTCUSDT 0.000116 2024-12-24 09:00:00+09:00 BTCUSDT 0.000112 2024-12-24 01:00:00+09:00 BTCUSDT 0.000117 2024-12-23 17:00:00+09:00 BTCUSDT 0.000120 2024-12-23 09:00:00+09:00 BTCUSDT 0.000128 2024-12-23 01:00:00+09:00 BTCUSDT 0.000122 2024-12-22 17:00:00+09:00 BTCUSDT 0.000112 2024-12-22 09:00:00+09:00 BTCUSDT 0.000129 2024-12-22 01:00:00+09:00 BTCUSDT 0.000128 2024-12-21 17:00:00+09:00 BTCUSDT 0.000021 2024-12-21 09:00:00+09:00 BTCUSDT 0.000122 2024-12-21 01:00:00+09:00 BTCUSDT 0.000127
長期のヒストリカルデータを取得する
Get Historical Funding Rates はデフォルトでは最大で20個のデータまでしか取得できません。ページ番号と1ページにおける取得数を指定することで長期のデータを取得することができます。
取得関数をちょっと変更してみました。通貨ペアとページ番号を引数にしています。1ページの取得数はデフォルトは20なので100に増やしています。
def get_historical_funding_rate_page(symbol, page): endPoint = 'https://api.bitget.com' path = '/api/v2/mix/market/history-fund-rate' url = endPoint + path params = { 'symbol': symbol, 'productType': 'USDT-FUTURES', 'pageSize': 100, 'pageNo': page, } time.sleep(1) response = requests.get(url, params=params) return response.json()
この関数を使って長期のFRヒストリカルデータを取得してみます。BTCUSDTを5page分ほど取得してみました。1pageに含まれるデータ数は100個なので500個のデータを取得できます。
df_all = pd.DataFrame() for i in range(5): symbol = 'BTCUSDT' page = i res = get_historical_funding_rate_page(symbol, page) if len(res['data']) == 0: print(f'skip: {i} {symbol}') continue # DataFrameに変換する。 df = pd.DataFrame( data=res['data'], columns=res['data'][0].keys(), ) # 資金調達料発生時刻をPOSIXから日本時間に変換する。 df['fundingTime'] = df['fundingTime'].astype('int64').apply(lambda x:datetime.fromtimestamp(x/1000, JST)) # 資金調達率の型をfloatにする。 df['fundingRate'] = df['fundingRate'].astype(float) # 資金調達料発生時刻をIndexにする。 df = df.set_index('fundingTime') # 取得したFRをつなげて保存する。 df_all = pd.concat([df_all, df], axis='index') print(df_all)
このような結果になりました。
symbol fundingRate fundingTime 2024-12-27 09:00:00+09:00 BTCUSDT 0.000123 2024-12-27 01:00:00+09:00 BTCUSDT 0.000096 2024-12-26 17:00:00+09:00 BTCUSDT 0.000081 2024-12-26 09:00:00+09:00 BTCUSDT 0.000114 2024-12-26 01:00:00+09:00 BTCUSDT 0.000114 ... ... ... 2024-08-17 17:00:00+09:00 BTCUSDT 0.000058 2024-08-17 09:00:00+09:00 BTCUSDT 0.000023 2024-08-17 01:00:00+09:00 BTCUSDT -0.000003 2024-08-16 17:00:00+09:00 BTCUSDT -0.000084 2024-08-16 09:00:00+09:00 BTCUSDT -0.000142 [500 rows x 2 columns]
FRをグラフ化する
FRのヒストリカルデータは取得できたので、見やすいようにグラフ化します。
BTCUSDT
まずは、BTCUSDTのFRです。最近は安定して0.01%付近ですが、過去にはマイナスになっていることもあります。価格との関連性を見てみたいですね。
HYPEUSDT
話題のHYPEのFRです。HYPEはBitgetに上場されて間もないので、データ数は少ないです。
BGBUSDT
BGBも価格が急上昇しているので、FRを見てみました。
おまけ
FRデータ取得にBitgetのアカウントは不要ですが、アカウントをお持ちでなければ、招待コードは以下をお使いください。
- 招待コード: CJQDLF6L
- 招待URL: https://share.bitget.com/u/8JKY6X25
スマホからであれば、以下のQRコードをご利用ください。