見出し画像

#10.yfinance API で日本企業の株価を取得できる Pythonコード をつくる




1.概要


  • このサイトで紹介する Pythonコード は、入力ファイル( csv形式 )に記載された複数の銘柄コードを対象に、指定された期間の株価データを Yahoo! Finance から取得し、銘柄コードごとに csv形式のファイル として出力することができます。

  • ほかのwebサイトで紹介されている Pythonコード の多くは、単一の銘柄コードを想定した仕様になっており、汎用性が低いと感じたため、今回の紹介に至りました。

  • もしよければ、ご活用ください。



2.Pythonコードの全容


  • 様々な書籍やwebサイトで言われているように、Pythonは他のプログラミング言語に比べて、簡潔にコードを組むことができます。

  • 今回紹介するPythonコードは、20行程度( 空白やコメントを除けば10行程度 )です【図1】。


図1.Pythonコードの全容


  • コードは、次の5つのフェーズ( ➊〜➎ )で構成されています。

  • 各フェーズの詳細は、次の「3.各フェーズの説明」に記載します。

  ➊ ライブラリ・モジュールのインポート
  ➋ 取得期間の設定
  ➌ 作業ディレクトリの移動
  ➍ 銘柄コードの読込
  ➎ 株価の取得・出力



3.各フェーズの説明


  • 本項では、前項で紹介しました➊〜➎の各フェーズの詳細をご紹介します。



➊ ライブラリ・モジュールのインポート

  • このフェーズでは、コードを構築するうえで必要となるライブラリやモジュールをインポートします。

  • インポートするライブラリやモジュールは下記3点です。なお、「pandas」と「yfinance」は文字列が長いので、省略形として「pd」と「yf」を定義しています。


図2.Pythonコード( モジュールのインポート )


  • os : ファイルやディレクトリ操作に関する機能を提供するモジュール

  • pandas : データ分析に用いられる強力なライブラリ

  • yfinance : Yahoo FinanceのデータをPythonで取得するためのライブラリ


➋ 取得期間の設定

  • このフェーズでは、株価の取得期間を設定します。 

  • 本サイトのタイトルに記載のとおり、株価の取得には、yfinance API を用います。詳細は以降のフェーズで後述しますが、yfinance API の仕様上、取得期間は、sdate ≦ 取得期間 < edate となります。edate に設定した日付は含まれない点に注意してください。


図2.Pythonコード( 取得期間の設定 )


  • sdate : 株価の取得開始日

  • edate : 株価の取得終了日( ただし、yfinance API の仕様上、株価は edate で設定した日にちの前日分までが取得される点に留意が必要 )


➌ 作業ディレクトリの移動

  • このフェーズでは、指定された作業ディレクトリに移動します。作業ディレクトリ先は適宜設定してください。

  • 作業ディレクトリには、出力されるCSVファイルが保存されます。また、次ののフェーズ「➍銘柄コードの読込」で取り扱う「In.csv」を当該ディレクトリに保存しておくこともお忘れなく。

  • 「in.csv」とは、日本取引所グループのwebサイトからダウンロードできる「東証上場銘柄一覧」( xls形式 )をファイルの内容はそのままに、ファイル名をリネームして csv形式 で保存したものです。なお、本コードで扱う情報は、「In.csv」に収録されている「コード」のみです。当該サイトのリンクは下記のとおりですので、ご参照ください。


図4.Pythonコード( 作業ディレクトリの移動 )


● 日本取引所グループ「東証上場銘柄一覧」
 その他統計資料 | 日本取引所グループ (jpx.co.jp)


➍ 銘柄コードの読込

  • このフェーズでは、「➌作業ディレクトリの移動」で準備した「In.csv」ファイルから「銘柄コード」を読み込み、pandas の DataFrame形式で「sym_lst」に格納します。


図4.Pythonコード( 銘柄コードの読込 )


➎ 株価の取得・出力

  • このフェーズでは、「➍銘柄コードの読込」で読み込んだ銘柄コードを順番に参照していき、順次、株価の時系列データをcsv 形式で出力していきます。

  • 17行目:forループを使って、「sym_lst」の銘柄コードを順に「sym_i」に格納します。銘柄コードの数だけ繰り返し処理を行います。

  • 19行目: yfinance の ticker オブジェクトを作成し、各銘柄の情報を取得するための準備をします。「.T」は、yfinanceでは東証上場企業のティッカーコードが「0000(4桁数字).T」で管理されているための処置です。

  • 20行目:「➋取得期間の設定」で設定した取得期間をもとに株価データを取得して、「price」に格納します。「auto_adjust」とは、「調整後終値」と「終値」の比率をもとに、始値、高値、安値を調整する変数です。「true」= 調整あり、「False」= 調整なし、となります。必要に応じて、設定してください。 

  • 21行目:取得した株価データを pandas の DataFrame形式で「df」に格納します。

  • 22行目:DataFrame形式で格納した「df」 の内容をCSVファイルとして出力します。ファイル名は、「 "Out_" + 銘柄コード + "_" + edate.csv 」の形式になります。


図5.Pythonコード( 株価の取得・出力 )



3.Pythonコードの提供


  • 今本サイトで紹介しましたPythonコードとin.csvを提供しますので、ご自由にお使いください。


いいなと思ったら応援しよう!