yfinanceでデータが取得できなくなった件(2025/2/19)

システムトレード
この記事は約3分で読めます。
スポンサーリンク

発端

yfinanceで株価データを取得してシステムトレードをしていましたが、2025/2/19にいきなり株価データが取得できなくなりました。
IP制限でもかけられたかな?と思いましたが、X(旧twitter)でも同様の書き込みが見受けられたので調査を開始してみました。

エラーの状況

日経平均のデータを取得しようとすると、以下エラーになってしまう。

start:2025-02-19
end:2025-02-20
[*********************100%%**********************]  1 of 1 completed

1 Failed download:
['%5EN225']: JSONDecodeError('Expecting value: line 1 column 1 (char 0)')

データのダウンロードが失敗しているように見える。
yfinanceをアップデートすると解消したという書き込みを見つけたので更新状況を確認してみます。

pipの情報を見ると、今日0.2.54がリリースされていました。
yfinance 0.2.54

Githubの変更履歴を見ると「Hotfix user-agent #2277」という記載がありました。
user-agentで弾かれていたのかな?
とりあえずyfinanceをアップデートしてみる。
Change Log

ダウンロードは成功するがデータが上手く取得できない

データは取得できるようになりましたが、株価データの抽出が上手くいかない状態になりました。
取得したデータを見るとこんな感じ。
あれ?Tickerなんて行あったかな?

Price              Close          High           Low          Open  Volume
Ticker           %5EN225       %5EN225       %5EN225       %5EN225 %5EN225
Date                                                                      
2025-02-19  39164.609375  39298.050781  38994.699219  39230.621094       0

今まではネットに転がっているように以下のような感じで株価データを抽出していました。
始値を取得しようとすると、なぜか3行取得されてしまう。
これはおかしい・・・・

web_data.loc[str('2025-02-19'),'Open']
--------------------------------------------
Ticker
%5EN225    39230.621094
Name: 2025-02-19 00:00:00, dtype: float64

原因としてTickerが増えた影響かな??と思いColumn情報を見てみます。
カラム名が変わっていました。

Columns: [(Close, %5EN225), (High, %5EN225), (Low, %5EN225), (Open, %5EN225), (Volume, %5EN225)]

ということで、カラム名を表示された内容に変えてみます。

web_data.loc[str('2025-02-19'),('Open', '%5EN225')]
--------------------------------------------
39230.62109375

始値が取得できるようになりました。
私の環境では「yfinanceのアップデート」「カラム名の変更」の2つを行う必要がありました。

タイトルとURLをコピーしました