LoginSignup
3
4

Yahoo Financeからの株価データ取得は,pdr_overrideせず,downloadで良いんじゃない?

Posted at

背景・目的

量子コンピュータ(疑似量子コンピュータを含む)技術の発展により,益々High Frequency Trading(HFT)が盛り上がってくると思われます.一方で,個人投資家はとてつもないリソースを使うことは困難です.そのため,手軽に(できればお金をかけずに)得られる情報から金脈を発見する必要があります.
例えば,pandas-datareaderを用いることで米国版Yahoo FinanceやStooqから株価データ,Federal Reserve Economic Data(FRED)などから経済的なデータを取得可能です.このように無料のツールでもある程度の情報取得は可能ですが,ひとつのツールで全て完結!ともいかないのが厄介なところです.

前置きは手短にして・・・
今回は,特にpandas-datareaderで米国版Yahoo FinanceとFREDから株価と経済的なデータを取得する際に問題となるyf.pdr_override()について簡単に対応方法をまとめました.

問題点と対応策

問題点

yf.pdr_override()を使うと米国版Yahoo Finance以外のデータをpandas-datareaderでダウンロードできなくなります.
pandas-datareaderでは,チュートリアルに従ってYahoo Financeからデータを取得しようとするとエラーが出ます(やまもと, 2023).その対応策としてyf.pdr_override()を追加するのですが,これを入れることでYahoo Finance以外のデータを取得できない状態になります.

import pandas_datareader.data as web
import yfinance as yf

from dateutil.relativedelta import relativedelta
from datetime import date as dt

yf.pdr_override()

df_fred = web.DataReader('DGS2', 'fred', ago)

# 結果
1 Failed download:
['DGS2']: Exception('%ticker%: No timezone found, symbol may be delisted')

例えば,FREDのデータを取得しようとすると,このようにエラーメッセージが表示されます.

対応策

対応策としては,株価データ取得にはyf.downloadを使用し,他のデータ取得時にはweb.DataReaderを使用します.
※このように使い分けなくてもpandas-datareaderでは,Stooqからも株価データは取得可能なのですが,StooqではAdjclose(調整後終値)の値がなく自身で計算する手間がかかります(Tatsu Sekine, 2022).

import pandas_datareader.data as web
import yfinance as yf

from dateutil.relativedelta import relativedelta
from datetime import date as dt

today = dt.today()
ago = today - relativedelta(years=1)

df_stock = yf.download('7203.T', ago)
df_fred = web.DataReader('DGS2', 'fred', ago)

# 結果 : df_stock
Date        Open	High	Low	    Close	Adj Close	Volume					
2023-04-17	1823.0	1841.5	1822.5	1834.0	1813.978149	18967700
2023-04-18	1844.0	1846.0	1827.5	1833.5	1813.483643	23312400
2023-04-19	1833.0	1836.0	1816.5	1823.0	1803.098267	16859000
2023-04-20	1810.0	1818.0	1796.0	1813.5	1793.702026	21975500
2023-04-21	1790.0	1808.5	1784.0	1802.0	1782.327515	21559900
...	...	...	...	...	...	...
2024-04-10	3750.0	3760.0	3722.0	3740.0	3740.000000	17062700
2024-04-11	3722.0	3795.0	3721.0	3781.0	3781.000000	23458700
2024-04-12	3813.0	3815.0	3755.0	3767.0	3767.000000	21094100
2024-04-15	3721.0	3767.0	3685.0	3767.0	3767.000000	21091500
2024-04-16	3742.0	3753.0	3630.0	3649.0	3649.000000	29226300

# 結果:df_fred
DATE        DGS2	
2023-04-17	4.18
2023-04-18	4.19
2023-04-19	4.24
2023-04-20	4.14
2023-04-21	4.17
...	...
2024-04-08	4.78
2024-04-09	4.74
2024-04-10	4.97
2024-04-11	4.93
2024-04-12	4.88

まとめ

今回は,米国版Yahoo FinanceとFREDから株価と経済的なデータを取得する際に問題となるyf.pdr_override()について簡単にまとめました.結論は,『米国版Yahoo Financeのデータはyf.downloadで,FREDのデータはpandas-datareaderで取得するのが良い』です.もし,他の良い手法などありましたらご教示いただけますと幸いです.

参考文献やサイトなど

  1. pandas-datareader(Ver. 0.10.0). 2021. https://pandas-datareader.readthedocs.io/en/latest/, accessed on 16 Apr. 2024.
  2. Tatsu Sekine. 2022. pythonで株価を取得するstooq版. https://qiita.com/tatsu_sekine/items/e252ea9436a47cda071a, accessed on 16 Apr. 2024.
  3. やまもと. 2023. pandas-datareaderでyahooファイナンスのデータを取得する方法. https://knowledge-bridge.info/technology/statistics/3654/, accessed on 16 Apr. 2024.
  4. 上脇優人. 2024. S&P500とは?(用語解説とデータ取得方法). https://finsoken.com/a-0001/, accessed on 16 Apr. 2024.
3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4