見出し画像

PhemexのFundingRateのスクレイピングプログラム (python) Bybitとの比較

こんにちは、はぐです。
最近、Bybitに資金を移し、Funding Rateを貰う生活してます。
まだ2週間もやっていないのですが、安定して収益になるので心の平穏がおとずれています。
この状況がいつまで続くかわかりませんが、もっと早くやっていれば良かったです。

今回の記事は全て無料で読めます。
もし参考になって、お金を払ってもよいと感じたなら、500円お願いします。
ビール代にさせていただきます(^^)

こちらのサイト、https://www.bybt.com/ja/FundingRate では、各取引所のFRが見れます。
で、今日(4/15)に見てみたら、BybitよりPhemexの方が高いFRでした。
それならBybitとPhemex、履歴をとって比較しようと思いました。

Bybitは、https://www.bybit.com/ja-JP/contract-rules?type=inverse からエクセルファイルとして取れます。

Phemexは、https://phemex.com/ja/contract/funding-history から見れるのですが、データーとしてダウンロードできません。
仕方がないので、スクレイピングするプログラム書いてみました。
Selenium + ChromeDriverですが、インストール方法はググってください。

こちらがコード内容です。上のファイルと同じです。
ちょっとループ抜けるところが手抜き(^^;

import os
import signal
import csv
from datetime import datetime, timezone, timedelta

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import Select

URL = "https://phemex.com/ja/contract/funding-history"
SAVE_FILE = "phenex_fr.csv"


if __name__ == "__main__":

   # selenium
   # driverのセットアップ
   options = webdriver.ChromeOptions()

   options.add_argument('--headless')
   options.add_argument('--no-sandbox')
   options.add_argument('--disable-dev-shm-usage')
   options.add_argument('--disable-gpu')
   options.add_argument('--window-size=1800x1200')     # 広めにしないとボタンが隠れて押せない
   driver = webdriver.Chrome(options=options)
   driver.implicitly_wait(30)

   # データの取得
   driver.get(URL)
   # ページがロードされ切るまで待機
   WebDriverWait(driver, 30).until(EC.presence_of_all_elements_located)

   with open(SAVE_FILE, 'w') as f:
       writer = csv.writer(f, lineterminator="\n")
       writer.writerow(['Time(UTC)','Funding Rate'])

       while True:
           fr_web_list = driver.find_elements_by_css_selector(".td.T2.svelte-cns3pj")
           for i in range(0, len(fr_web_list), 4):
               timestamp = fr_web_list[i].text
               fr = (fr_web_list[i+3].text).replace("%","").replace('0.', '0.00')
               print('{} {}'.format(timestamp, fr))

               # timestampがJSTなので、UTCに直し。
               dt = datetime.strptime(timestamp, "%Y-%m-%d %H:%M:%S")
               dt = dt.replace(tzinfo=timezone(timedelta(hours=+9), 'JST'))
               dt = dt.astimezone(tz=timezone.utc)
               timestamp = dt.strftime('%Y-%m-%d %H:%M:%S')
               # 書き込み
               writer.writerow([timestamp, fr])

           try:
               # 次へボタン
               next_btn = driver.find_element_by_css_selector(".next.svelte-1hmom6e")
               next_btn.click()
               # ページがロードされ切るまで待機
               WebDriverWait(driver, 30).until(EC.presence_of_all_elements_located)
           except:
               break

   print('end.')

ちなみに、今年の分を比較してみました。

クリップボード01

Bybitから、Phemexを引いた結果をプロットしたものです。
グラフの左側が直近で、右に行くほど古いです。
何となくBybitの方がいいかなぁ、というグラフの感じですが、平均をとってみると、
-0.00000279 = -0.000279%
でしたので、ほんの少しだけPhemexの方が高い結果でした。

もし、これからFR生活やる方がいれば、参考にしてみてください。

あと、BybitとPhemexのデーターですが、両方とも途中で歯抜けがあります。メンテかな?

ついでに、2021/04/15までの取得したデーターを置いておきます。

それでは、ビバ、FR生活!!!


ここから先は

41字

¥ 500

サポートしていただけると励みになります。 頂いたサポートは有益な他の方のnote購入代に当てさせて頂き、回していきたいと思います。