■ 概要
yfinanceを用いて、ビットコインの時系列データを取得します。
取得するデータの取引間隔としては日足と1時間足です。
一連のコードは↓
■ 環境
yfinance : 0.2.12 (Released: Feb 16, 2023)
pandas : 1.3.5
■ 実装
( 1 ) yfinanceのインストール
yfinanceはYahoo非公認API。
使用は研究および教育目的に限る。
!pip install yfinance
( 2 ) データの取得
取得できるデータは
Open(始値)、High(高値)、Low(安値)、Close(終値)、Adj Close(調整後終値)、Volume(出来高)
● 1日ごとのデータ取得
- tickers : 銘柄
- start : 取得する期間の始まり
- end : 取得する期間の終わり
- period : 期間 ( 1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max )
- interval : 取引間隔 ( 1m,2m,5m,15m,30m,60m,90m,1h,1d,5d,1wk,1mo,3mo )
- ignore_tz : 異なる取引所からデータを整列するときにタイムゾーンを無視するか
- prepost : 市場時間前後のデータをダウンロードするか
#yfinanceとpandasをインポート
import yfinance as yf
import pandas as pd
#取得するデータ詳細
name = 'BTC-USD'
start = '2022-01-01'
end = '2023-01-01'
#データのダウンロード
df = yf.download(tickers=name, start=start, end=end)
df.head()
Date | Open | High | Low | Close | Adj Close | Volume |
---|---|---|---|---|---|---|
2022-01-01 | 46311.746094 | 47827.312500 | 46288.484375 | 47686.812500 | 47686.812500 | 24582667004 |
2022-01-02 | 47680.925781 | 47881.406250 | 46856.937500 | 47345.218750 | 47345.218750 | 27951569547 |
2022-01-03 | 47343.542969 | 47510.726562 | 45835.964844 | 46458.117188 | 46458.117188 | 33071628362 |
2022-01-04 | 46458.851562 | 47406.546875 | 45752.464844 | 45897.574219 | 45897.574219 | 42494677905 |
2022-01-05 | 45899.359375 | 46929.046875 | 42798.222656 | 43569.003906 | 43569.003906 | 36851084859 |
● 1時間ごとのデータ取得
startとendのかわりにperiodにすることができる。
#取得するデータ詳細
name = 'BTC-USD'
period = '1y'
interval = '1h'
#データのダウンロード
df = yf.download(tickers=name, period=period, interval=interval, ignore_tz=True)
df.head()
Date | Open | High | Low | Close | Adj Close | Volume |
---|---|---|---|---|---|---|
2022-01-01 00:00:00 | 46311.746094 | 46726.558594 | 46288.484375 | 46726.558594 | 46726.558594 | 0 |
2022-01-01 01:00:00 | 46723.667969 | 46888.292969 | 46650.351562 | 46788.546875 | 46788.546875 | 56967168 |
2022-01-01 02:00:00 | 46798.843750 | 46914.199219 | 46792.679688 | 46830.488281 | 46830.488281 | 0 |
2022-01-01 03:00:00 | 46836.500000 | 46861.910156 | 46800.742188 | 46833.105469 | 46833.105469 | 0 |
2022-01-01 04:00:00 | 46831.148438 | 46878.140625 | 46703.164062 | 46778.796875 | 46778.796875 | 81956864 |
( 3 ) データの可視化
● 1日ごとの終値データを表示
df["Close"].plot()
● 時間を指定してみる
datetimeモジュールを使用して時間をする。
import datetime as dt
df[df.index >= dt.datetime(2022, 6, 1)]["Close"].plot()
■ 注意
取引間隔(interval)が短い分だけ、期間(period)が指定される場合がある。
以下のように、periodを3年にすると730日以内と指定される。
name = 'BTC-USD'
period = '3y'
interval = '1h'
#データのダウンロード
df = yf.download(tickers=name, period=period, interval=interval, ignore_tz=True)
df.head()
1 Failed download:
- BTC-USD: 1h data not available for startTime=1583129047 and endTime=1677737047. The requested range must be within the last 730 days.
■ 参考文献