

本記事では、バフェット・コードのAPIを使い「財務分析に必要なデータの取得方法」についてサンプルコードとともに解説をします!(記事にでてくるコードは配布しております。まとめにあるリンクからダウンロードください))
本記事は、全8回に渡って掲載される「Pythonによる財務分析‐バフェットコードを用いて完全レクチャー!」シリーズの第2回です!
最終的に重回帰分析といった機械学習的手法もマスターできる!
今回取得するデータは、「 四半期毎の財務数値・日別の株価指標・直近営業日の株価指標」の3つになります。(本記事、2章で詳細を説明)
この3つは、財務諸表分析において、過去の業績をもとに企業評価をしたり、そうした財務情報から未来を予測する、といった観点から非常に大事なデータです。
記事の後半では、データを取得するために3種類それぞれ作成したコードを、関数化させ一気にまとめて取り込めるようにします。
関数化をすることで、複雑になったコードの読みやすくするだけでなく、ステップ数(コードの行数)を減らし、作業時間を少なくとも30分は減らすことができます。
「データの取得」は分析の全ての始まりです。
“Garbage In Garbage Out”という言葉があるように、取得が適当になるとそのまま分析結果に影響するため、気を引き締めて行いましょう!
それでは一緒に学んでいきましょう!
データの取得/データの加工/データの分析を学べる第1回はコチラ!
Pythonによる財務分析をバフェットコードのAPIを利用して行おう!

第2回以降では、バフェット・コードのAPIを用いて財務分析を行っていきます!
こちらのAPIを利用することで、前回(第1回)と違い数百数千の企業の財務データを取得できるようになります!
バフェットコードのAPIとは
バフェットコードのAPIとは、バフェットコードのプレミアム有料会員になることで利用できる圧倒的に便利なサービスです。
こちらのAPIを利用することで、EDINETをわざわざ介さず、加工しやすい数百数千の財務データを取得することができます!
バフェットコードのAPIは“買い“
バフェットコードのプレミアム有料会員は月10,800円します。
金額的には高いですが、Pythonで財務分析を行う勉強代としてはかなり割安です。
大きな理由としては、2点。
バフェットコードのAPIをつかえば、めんどうな作業が不要になります。 有価証券報告書をデータ化してまとめる際の、企業ごとの会計基準や業種間の勘定科目の違いなどに対して、マルチに対応する労力がいっさいかかりません。
バフェットコードのAPIではめんどうなデータを加工し、あつかいやすくしてくれています。 バフェットコードのAPIのデータ取得元はEDINETという金融庁の情報公開システムです。 その、EDINETから取得できるデータはEBRL形式というもので、直接あつかうとなるとクセが強いですが、バフェットコードのAPIをつかえば問題ありません。
ちなみに、初心者がすべての時間を使い開発をするとしたら、会計学やプログラミングなどの知識も今まで以上に増やす必要があり1年以上は軽くかかります。
ご自身で開発するのもひとつの手ではありますが、時間と労力に見合った利益を得られるかはなんとも言えません。
機会損失を許容するかは個人の判断ですが、
1日コーヒー1杯ていどの金額で、バフェットコードのAPIを利用できるのは投資対象として、”買い”だと断言できます。
(めちゃくちゃ宣伝していますが、WineyTradeはバフェット・コード様と取引関係になく、お金をいただいているなど、一切ございません。)
バフェットコードのAPIによる「データの取得」の準備をしよう!
まず、APIで取得するデータをみていきます。
以下のものを取得します。
- 四半期毎の財務数値
- 日別の株価指標
- 直近営業日の株価指標


出典:『バフェットコードAPI』
新規ファイルを作成する
ジュピター・ノートブックを立ち上げ、新規ファイルを作成します。
前回作成した「python財務分析」フォルダの中に、下の画像のように今回(第2回)のファイルを作成します!
(記事のまとめにてファイルを添付していますので、必要であればダウンロードしてください。)
APIを取得するための関数を作成する
requestsとjsonをインポートし、最初のセルに下記のようなfetch関数を作成します。

このfetch関数は下記、バフェット・コード様の公式ブログを参考にしました。
Pythonを使い財務分析に必要な3種類のデータを取得しよう!
取得を行う前に、「四半期毎の財務数値」「日別の株価指標」「直近営業日の株価指標」それぞれのデータの使い道について解説します。
財務諸表分析でオーソドックスに用いられる財務データです。
本シリーズでは主に重回帰分析の目的変数として利用します。 同じく、主に重回帰分析の目的変数として利用します。 それでは、3種類の財務データの取得方法を順番にみていきましょう! バフェットコードのAPIの仕様で、一回のリクエストにつき3社のデータを取得できるため、3社分取得できるように下記のようなコードを書きます。 (APIキーは伏せています。) 四半期の財務数値は、1リクエストあたり最大3年分(12四半期)取得できますが、今回は直近1年間分を取得します。 理由は、次の章で行う毎日の株価指標が、1リクエストあたり最大1年分のため、時系列のスケールを合わせるためです。試しに実際に実行してみます! ちなみに、一つのみ取得したい場合は下の画像のように“None”を入れると空のデータが返ります。 四半期のセルの下に下記のようなコードを書いていきます。 その際、期間を四半期の財務数値の時系列と合わせるように指定します。四半期の財務数値を取得する
日別の株価指標を取得する

試しに実行してみます。

日別の株価指標を、四半期ごとにデータを分割し平均化をする
現時点で四半期と日別のデータを取得していきました。
このままですと時間のスケールが異なるため、日別の株価指標を四半期ごとに分割し平均化をしていきます。
datetimeをインポートし、下記のようなコードを書いていきます!
その際、期間の指定の方法として、少し変更を加えていますので注意しましょう。

試しに実行させると、画像の通り4分割されたことが確認できます。

直近営業日の株価指標を取得する
最後に直近営業日の株価指標のコードを書いていきます。
下の画像では既に実行しています。

バフェットコードのAPIで取得できるデータを、一気に取り込めるようにしよう!
データの取得の際に今まで書いてきたコードを関数化させ、銘柄を入力するだけで3種類のデータを一気に取り込めるようにします!
関数化をする(一気に取り込めるようにする)ことで以下のメリットがあります。
- 引数(今回だと銘柄コード)を入れると返り値(今回だと財務データ)が出力される、といった簡単な設計になり、コードが読みやすくなるだけでなく、出力したい値をまとめることができる。
- 機能ごとに関数化(やクラス化)をすることで、コードの一部変更が起きてもバグが起きにくい。
- 共通の処理を行うプログラムをわざわざ重複して書く必要がないため、ステップ数(コードの行数)が約1/2の節約になる。
他にも、基本的に現場だとチーム開発が主流ですので、他人に読ませるコードを書くために、機能ごとに関数化させることがメジャーです。
是非、関数化をして一気に取り込めるようにしましょう!
今まで書いてきたコードを関数化させて一つにまとめる
今回は下の画像のように、make_df関数を作成しました。
その下に、各データ操作で行われる、3つの銘柄コードを分割するsplitをすぐに書きました。
他に関しては、各指標をコピペするだけで基本的には大丈夫です。

コピペの注意点が、2つあります。
- 確認用の変数とinput関数を、コメントアウトさせるか削除して、make_df関数の処理に影響させないようにします。
- 「from datatime import*」をmake_df関数の外側に書きimportエラーを防ぎます。
他にも、重複部分をこちらでコメントアウトさせてますが①・②を意識して頂ければプログラムは正常に動きます。




返り値を df_list, df_day,df_c_listとしています。
実行し一気に取り込めることを確認する
最後に実行をさせ、取り込めることを確認します。
make_df関数のセルの下に下記のようなコードを書きます。

まとめ
第2回では、Pythonで本格的な財務分析を行うための、
- バフェットコードのAPIについて知る
- 「データの取得」で必要な3種類の財務データを取得する
- 取得するためのプログラムコードを関数化させ、データを一気に取り込む
について、レクチャーしました。
次回の第3回では、for文やwith構文を用いて数百数千の財務データを取得し保存する流れをレクチャーしていきます!
記事にでてくるコードはLINE@にて配布をしております!
ラインのメッセージ欄に「財務分析」とお送りいただければ、ダウンロードリンクを送付いたします!
こんにちは。fetch関数について、コードを拝見したく思いましたが、LINEの方ではすでにポートフォリオ理論についてのpythonコードしか確認できませんでした。願わくばpythonによる財務分析についてのコードを公開していただきたいのですが、構わないでしょうか?
python_zaimuさん、記事をご覧いただきありがとうございます!
>LINEの方ではすでにポートフォリオ理論についてのpythonコードしか確認できませんでした
>願わくばpythonによる財務分析についてのコードを公開していただきたいのですが、構わないでしょうか?
大変失礼いたしました。
結論、LINE@にて「財務分析」とお送りいただければソースコード(全8回分)のダウンロードが可能な状態へ修正いたしましたので、
ご確認のほどお願いいたします!
WineyTradeのコンテンツを楽しんでくださり、ありがとうございます!
今後も「おもしろい!」と思っていただけるようなコンテンツを発信していきますので、
よろしくお願いいたします!