【Python】yfinanceで株価や分配金と財務情報の取得方法

python
スポンサーリンク
ピーター
ピーター

過去データの株価情報を取得したい!

過去の情報からシミュレーションするために株価や配当情報を取得しようと思いました。

完全に備忘録メモになります。

 



yfinanceのインストール方法

pip install yfinance

yfinanceの公式情報はこちらのページを参考にしてください

サンプルコード

yfinanceのdownloadを使って株価を取得する場合

import datetime
import yfinance as yf

#####ターゲットを指定
### 米国株の場合、TickerCodeで取得可能
### 日本株の場合、証券番号+".T"で取得可能
ticker = ["VYM", "2914.T"]


# 取得設定
start_date = date(2017,5,1)
end_date   = date(2022,2,28)

#データを収集
for code in tickerList:
    ### 株価情報取得
    data = yf.download(code, start = start_date, end = end_date, interval = "1d")

yfinanceのhistoryを使って株価情報を取得する(注意点)

yfinanceの別API(history)を使うことで配当金情報や株式分割情報を取得することが可能です。

ただし、このAPI(history)で取得できる株価(Open, Close等)は、実際の価格と違うことがありました。

import datetime
import yfinance as yf

ticker = ["VYM", "2914.T"]

# 取得設定
start_date = date(2017,5,1)
end_date   = date(2022,2,28)

for code in tickerList:
    ### 株価情報取得
    t = yf.Ticker(code)
    data = t.history(start = start_date, end = end_date, interval = "1d")

配当金情報を取得する方法

historyの情報で配当情報を抽出する方法です。

import datetime
import yfinance as yf

ticker = ["VYM", "2914.T"]

# 取得設定
start_date = date(2017,5,1)
end_date   = date(2022,2,28)

for code in tickerList:
    ### 配当情報取得
    div_data = t.history(start = start_date, end = end_date, interval = "1d")
    div_data["Dividends"]

株価と配当金情報同時に扱うなら??(注意点)

historyの情報では、取得する株価(Open, Close等)は、実際の価格と違うことがありました。

そのため、上の2つを組み合わせることが答えの一つと結論づけました!

import datetime
import yfinance as yf

ticker = ["VYM", "2914.T"]

# 取得設定
start_date = date(2017,5,1)
end_date   = date(2022,2,28)

for code in tickerList:
    ### 配当情報取得
    t = yf.Ticker(code)
    data = yf.download(code, start = start_date, end = end_date, interval = "1d")
    div_data = t.history(start = start_date, end = end_date, interval = "1d")
    data["Dividends"] = div_data["Dividends"]

株価と配当金の情報をどちらも取得したい場合、下のサンプルコードのように結合するのはひとつかもしれません。

yfinanceを使って財務諸表情報を取得する場合

yfinanceのfinancialsを使うことで財務諸表を取得することが可能です。

ETFの財務諸表はないため、取得できませんが、米国株/日本株ともに対応可能です

import datetime
import yfinance as yf

ticker = ["MSFT", "2914.T"]

for code in tickerList:
    ### 財務諸表情報取得
    t = yf.Ticker(code)
    print(t.financials)
2021-06-30 2020-06-302019-06-30 2018-06-30
Research Development20716000000192690000001687600000014726000000
Effect Of Accounting ChargesNoneNoneNoneNone
Income Before Tax71102000000530360000004368800000036474000000
Minority InterestNoneNoneNoneNone
Net Income61271000000442810000003924000000016571000000
Selling General Administrative25224000000245230000002309800000022223000000
Gross Profit115856000000969370000008293300000072007000000
Ebit69916000000531450000004295900000035058000000
Operating Income69916000000531450000004295900000035058000000
Other Operating ExpensesNoneNoneNoneNone
Interest Expense-2330000000-2591000000-2686000000-2733000000
Extraordinary ItemsNoneNoneNoneNone
Non RecurringNoneNoneNoneNone
Other ItemsNoneNoneNoneNone
Income Tax Expense98310000008755000000444800000019903000000
Total Revenue168088000000143015000000125843000000110360000000
Total Operating Expenses98172000000898700000008288400000075302000000
Cost Of Revenue52232000000460780000004291000000038353000000
Total Other Income Expense Net1186000000-1090000007290000001416000000
Discontinued OperationsNoneNoneNoneNone
Net Income From Continuing Ops61271000000442810000003924000000016571000000
Net Income Applicable To Common Shares61271000000442810000003924000000016571000000

yfinanceを使って株式分割の情報を取得する場合

yfinanceのfinancialsを使うことで財務諸表を取得することが可能です。

import datetime
import yfinance as yf

ticker = ["VYM", "MSFT", "2914.T"]

for code in tickerList:
    ### 分割情報取得
    t = yf.Ticker(code)
    print(t.splits)

マイクロソフトの出力結果です。

コメント

ランキング

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