yfinanceが使えない時の原因や対処法などのまとめ

yfinanceはPythonでYahoo! Financeから株価データを取得するための人気のライブラリですが、時には予期せぬエラーでデータが取得できなくなることがあります。本記事では、データが取得できない主な原因と、それに対する効果的な対処法を詳しく解説します。

主な原因

  1. Yahooの仕様変更によるリクエストブロック
    2025年2月頃から、Yahooが特定のUser-Agentヘッダをブロックするようになったため、yfinanceからのリクエストがエラーとなることがあります。これにより、JSONDecodeErrorやYFTzMissingErrorなどのエラーが発生することが報告されています
  2. プロジェクトフォルダ名に日本語が含まれることによるSSLエラー
    プロジェクトフォルダ名に日本語などのUnicode文字が含まれている場合、curlやOpenSSLがパスを正しく解釈できず、SSL証明書の読み込みに失敗することがあります。これにより、SSLErrorが発生し、 データ取得が阻害されます
  3. APIリクエスト回数の制限
    Yahoo!デベロッパーネットワークでは、1分あたりのAPIリクエスト回数に制限(例えば300回)を設けています。この制限を超過すると、「Too Many Requests」エラーが返され、一時的にデータ取得ができなくなります
  4. yfinanceのデータ取得形式の変更
    yfinanceのアップデート後、特に0.2.54バージョン以降で、取得されるデータフレームのカラム名や構造が変更されることがあります。この変更により、以前のコードでデータにアクセスしようとするとValueErrorなどのエラーが発生し、データがうまく抽出できなくなる場合があります
  5. その他
    • インターネット接続がそもそもできていない場合
    • 正しい銘柄コード(シンボル)や期間が指定されていない場合

対処法

  1. yfinanceを最新バージョンにアップデートする
    Yahooの仕様変更に対応するため、yfinanceの最新バージョン(0.2.54以降)へのアップデートが推奨されます。これにより、User-Agentヘッダの問題などが解消されることが多いです(pip install --upgrade yfinance)
  2. プロジェクトフォルダ名を日本語以外に変更する
    プロジェクトフォルダや仮想環境のパスに日本語や全角文字が含まれている場合は、英数字のみのパスに変更し てください。これによりSSLエラーが解消されることがあります
  3. APIリクエストの回数を確認し、制限を遵守する
    短時間に多数のリクエストを送っている場合は、APIの利用頻度を見直し、リクエスト間に適切なクールダウン(間隔)を設けるようにコードを修正してください
  4. データ取得コードを修正する
    yfinanceのアップデートによりデータの取得形式が変わった場合、カラム名が変更されている可能性があります。例えば、web_data.loc[str('2025-02-19'),'Open'] のように単一のカラム名でアクセスしていた部分を、web_data.loc[str('2025-02-19'),('Open', '%5EN225')] のようにタプル形式でアクセスするように修正する必要が ある場合があります。また、yf.download()ではなく、yf.Ticker().history()メソッドを使用することで 、エラーが解消されるケースもあります
  5. その他の確認事項
    • インターネット接続が正常か確認する
    • 使用している銘柄コードや期間の指定が正しいか再確認する
    • 仮想環境(venv)を再作成してみる
    • pip install --force-reinstall certifiでSSL証明書を再インストールしてみる

まとめ

yfinanceが使えなくなる原因は多岐にわたりますが、多くの場合、ライブラリのアップデートや環境設定の見直し、コードの微修正によって解決できます。特に2025年2月以降はYahoo! Finance側の仕様変更が頻繁に行われているため、最新 情報の確認とライブラリの更新が重要です。

Previous Post