Pythonで株の情報を取得したい

機械学習

結論

  • 方法1.pandas_datareaderを用いてstooqから株の情報を取得する
  • 方法2.yfinanceを用いてYahoo Financeから株の情報を取得する
    yfinanceを用いると1分、5分、15分、30分、60分の間隔で株の情報を取得するこもできる

経緯

機械学習について学んでいる過程で、過去の情報を基に、未来の情報を予測する時系列予測について学びました。

過去の株情報を基に、未来の株情報を予測できないか。

株価予測ができるとは思えません。ただ、時系列分析で株価予測モデルを作成する過程で「できること」「できないこと」を学べると考え、挑戦することにしました。

まずは株の情報をプログラムで取得する方法を調整し、整理しました。

方法

方法1.pandas_datareaderを用いてstooqから株の情報を取得する

pandas_datareaderのインストール

 pip install pandas_datareader

stooqから取得できる株情報は、指定した銘柄の指定期間の下記情報

  • 始値(Open)
  • 高値(High)
  • 安値(Low)
  • 終値(Close)
  • 出来高(Volume)

コード

# ライブラリの読み込み
import pandas_datareader as web

# 証券コードを指定する
# 日本株の場合は、証券コードの最後に'.JP'を付ける
# トヨタ7203の場合は、'7203.JP'となる
stock_code = '7203.JP'

# 株情報を取得する箇所を設定する
data_source = 'stooq'

# 株情報の取得開始日を指定する
start = '2019-01-01'

# 株情報の取得終了日を指定する
end = '2019-12-31'

# 株情報を取得する
df = web.DataReader(stock_code, data_source=data_source, start=start, end=end)

# 取得した株情報を表示する
print(df)

# 取得した株情報の配列の形状を表示する
print(df.shape)

# 取得した株情報の各列の属性を表示する
print(df.dtypes)

# 取得した株情報の全要素数を表示する
print(df.size)

実行結果

方法2.yfinanceを用いてYahoo Financeから株の情報を取得する

yfinanceのインストール

pip install yfinance

yfinanceから取得できる株情報は、指定した銘柄の指定期間の下記情報。
yfinanceでは、1分、5分、15分、30分、60分、90分、5日、1週間、一か月、三か月の期間を指定することができます。

  • 始値(Open)
  • 高値(High)
  • 安値(Low)
  • 終値(Close)
  • 調整後終値(Adj Close)
  • 出来高(Volume)

株の取引き情報だけではなく、下記の情報も取得できます。

  • バランスシート(balancesheet)
  • キャッシュフロー(cashflow)
  • 財務(financials)
  • 配当(dividends)
  • 収益(earnings)
  • 機関投資家(institutional holders)
    など

コード

# ライブラリの読み込み
import yfinance as yf

# 証券コードを指定する
# 日本株の場合は、証券コードの最後に'.T'を付ける
# トヨタ7203の場合は、'7203.T'となる
stock_code = '7203.T'

# 株情報の取得開始日を指定する
start = '2021-05-25'

# 株情報の取得終了日を指定する
end = '2021-06-02'

# 期間を指定して株情報を取得する
toyota1 = yf.download(tickers=stock_code, start=start, end=end)
print(toyota1)

# 直近、1日間の30分間隔の株情報を取得する
# periodでは、1d,5d,1mo,3mo,6mo,1y,2y,5y,10y,ytd,maxを設定できる
# intervalでは、1m,2m,5m,15m,30m,60m,90m,1h,1d,5d,1wk,1mo,3moを設定できる
toyota2 = yf.download(tickers=stock_code, period='1d', interval='30m')
print(toyota2)

# 指定の証券コードの情報を取得する
toyota3 = yf.Ticker(stock_code)

# バランスシートを表示する
print(toyota3.balancesheet)

# キャッシュフローを表示する
print(toyota3.cashflow)

# 財務を表示する
print(toyota3.financials)

# 配当を表示する
print(toyota3.dividends)

# 収益を表示する
print(toyota3.earnings)

# 機関投資家を表示する
print(toyota3.institutional_holders)

実行結果

期間を指定して株情報を取得した結果

期間を指定して株情報を取得した結果

直近、1日間の30分間隔の株情報を取得した結果

バランスシートを取得した結果

キャッシュフローを取得した結果

財務を取得した結果

配当を取得した結果

収益を取得した結果

機関投資家を取得した結果

 

 

コメント

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