MYmemo

思い立ってやってみるけど、長続きしない。せめて記録しておく。

yfinanceでエラーが出るようになった

以前作ったツールが突然エラーを出すようになりました。この記事を書く数週間前の話です。以前の記事については以下を参照ください


mymemo8.hatenablog.com



コードは全く変更してないのに急に動かなくなるとか、どーいうことよ?試しに簡単なコードを作ってみます。

import yfinance as yf
import pandas as pd


ticker_info = yf.Ticker("CVX")
print(ticker_info.actions)

ticker_df = pd.DataFrame.from_dict(ticker_info.info, orien\
t='index', columns=['Value'])

print(ticker_df)


特に問題なければ、米国株CVX(シェブロン)の基礎的な情報を取得できるはずですが、以下の通り、エラーとなりました。

$CVX: possibly delisted; no price data found  (1d 1926-03-17 -> 2025-02-20)
Series([], dtype: object)
429 Client Error: Too Many Requests for url: https://query2.finance.yahoo.com/v10/finance/quoteSummary/CVX?modules=financialData%2CquoteType%2CdefaultKeyStatistics%2CassetProfile%2CsummaryDetail&corsDomain=finance.yahoo.com&formatted=false&symbol=CVX&crumb=Edge%3A+Too+Many+Requests
:
:  

エラーメッセージ的にはこれと言ってピンと来るものはないが、考えうる対策はバージョン上げるとかだろうな。

ライブラリの現行バージョンと最新バージョンをを確認するにはpip list -oですね。やってみますか…


$ pip list -o  

Package  Version  Latest   Type
------------------------
Flask    3.0.3    3.1.0   wheel
Jinja2   3.1.4    3.1.5   wheel
lxml     5.3.0    5.3.1   sdist
numpy   1.26.5    2.2.3   sdist
pandas   2.2.2    2.2.3   sdist
pip      24.2     25.0.1  wheel
yfinance 0.2.43   0.2.54  wheel

…全体的に最新ではないんですけど、とりあえず、yfinanceだけ更新してみました。pip install -U パッケージ名を実行します。

長いですが、実行結果を全文記載します。yfinanceを動かすためには、非常に多くの他のパッケージに依存してるんだな、という気づきであります。


$ pip install -U yfinance
Requirement already satisfied: yfinance in /data/data/com.termux/files/usr/lib/python3.11/site-packages (0.2.43)
Collecting yfinance  

Downloading yfinance-0.2.54-py2.py3-none-any.whl.metadata (5.8 kB)

Requirement already satisfied: 
pandas>=1.3.0 in /usr/lib/python3.11/site-packages (from yfinance) (2.2.2)

Requirement already satisfied: 
numpy>=1.16.5 in /usr/lib/python3.11/site-packages (from yfinance) (1.26.5)

Requirement already satisfied: 
requests>=2.31 in /usr/lib/python3.11/site-packages (from yfinance) (2.32.3)

Requirement already satisfied: multitasking>=0.0.7 in /usr/lib/python3.11/
site-packages (from yfinance) (0.0.11)

Requirement already satisfied: platformdirs>=2.0.0 in /usr/lib/python3.11/site-packages (from yfinance) (4.3.3)

Requirement already satisfied: 
pytz>=2022.5 in /usr/lib/python3.11/site-packages (from yfinance) (2024.2)

Requirement already satisfied: 
frozendict>=2.3.4 in /usr/lib/python3.11/site-packages (from yfinance) (2.4.4)

Requirement already satisfied: 
peewee>=3.16.2 in /usr/lib/python3.11/site-packages (from yfinance) (3.17.6)

Requirement already satisfied: beautifulsoup4>=4.11.1 /usr/lib/python3.11/site-packages (from yfinance) (4.12.3)

Requirement already satisfied: 
soupsieve>1.2 in /usr/lib/python3.11/site-packages (from beautifulsoup4>=4.11.1->yfinance) (2.6)

Requirement already satisfied: python-dateutil>=2.8.2 in /usr/lib/python3.11/site-packages (from pandas>=1.3.0->yfinance) (2.9.0.post0)

Requirement already satisfied: 
tzdata>=2022.7 in /usr/lib/python3.11/site-packages (from pandas>=1.3.0->yfinance) (2024.1)

Requirement already satisfied: charset-normalizer<4,>=2 in /usr/lib/python3.11/site-packages (from requests>=2.31->yfinance) (3.3.2)

Requirement already satisfied: 
idna<4,>=2.5 in /usr/lib/python3.11/
site-packages (from requests>=2.31->yfinance) (3.10)

Requirement already satisfied: 
urllib3<3,>=1.21.1 in /usr/lib/python3.11/site-packages (from requests>=2.31->yfinance) (2.2.3)

Requirement already satisfied: 
certifi>=2017.4.17 in /files/usr/lib/python3.11/site-packages (from requests>=2.31->yfinance) (2024.8.30)

Requirement already satisfied: 
six>=1.5 in /usr/lib/python3.11/
site-packages (from python-dateutil>=2.8.2->pandas>=1.3.0->yfinance) (1.16.0)

Downloading yfinance-0.2.54-py2.py3-none-any.whl (108 kB)

Installing collected packages: yfinance
Attempting uninstall: yfinance
Found existing installation: yfinance 0.2.43
Uninstalling yfinance-0.2.43:
Successfully uninstalled yfinance-0.2.43
Successfully installed yfinance-0.2.54  

最新版インストール成功と出たところで、もう一度パッケージバージョンを確認します。


$ pip list -o

Package     Version   Latest    Type
------------------------------------
Flask    3.0.3     3.1.0     wheel
Jinja2   3.1.4     3.1.5     wheel
lxml      5.3.0     5.3.1    sdist
numpy     1.26.5    2.2.3     sdist
pandas     2.2.2     2.2.3     sdist
pip         24.2      25.0.1    wheel


$ pip show yfinance  

Name: yfinance
Version: 0.2.54

最新ですね。これで冒頭のスクリプトを実行しますと、エラーは出ませんでした。ちなみに出力は以下の通り。

Dividends  Stock Splits
Date
1962-01-31 0.029762          0.00
1962-05-07 0.029762          0.00
1962-08-07 0.029762          0.00
1962-11-07 0.029762          0.00
1962-12-17 0.000000          1.05
...                              ...           ...
2023-11-16 1.510000          0.00
2024-02-15 1.630000          0.00
2024-05-16 1.630000          0.00
2024-08-19 1.630000          0.00
2024-11-18 1.630000          0.00

[227 rows x 2 columns]
Value
address1  6001 Bollinger Canyon Road
city             San Ramon
state           CA
zip              94583-2324
country      United States
...                  ...
sourceInterval         15
exchangeDataDelayedBy         0
averageAnalystRating       2.0 - Buy
displayName              Chevron
trailingPegRatio          3.5643

[175 rows x 1 columns]