Pythonによる財務分析③ -バフェットコードを用いて完全レクチャー! (全8回)

街並み



Python初心者
Python初心者
どうやったら、財務分析に必要なデータを効率よく取得できるんだろう。。。

 

本記事では、バフェット・コードのAPIを使い「数百数千の財務データを取得し、集めたデータを保存する」という流れをサンプルコードとともに解説をします!

(記事にでてくるコードは配布しております。まとめにあるリンクからダウンロードください。)

本記事は、全8回に渡って掲載される「Pythonによる財務分析バフェットコードを用いて完全レクチャー!」シリーズの第3回です!

 

このシリーズを読むとわかること
Python初心者でも、数百数千の企業の財務データを分析出来るようになる!

最終的に重回帰分析といった機械学習的手法もマスターできる!

 

今回は、前回書いたコードをもとに、大きく分けて二つのことを行います。

1つ目は、「pandasライブラリのto_csvを用いて、取得したデータをcsv形式で保存する」といった操作を行います。

この操作を行うことで、今後「データの加工」や「データの分析」の工程に入るときにわざわざ「データの取得」から始めること無く保存したデータから始められるようになります。

これにより、作業工程を約”1/2″まで圧縮できます!

 

2つ目は、with構文やfor文を用いて、数百数千の財務データを取得する」といった操作を行います。

この操作を行うことで、自動でミスなく数多くの財務データを取得する事ができ、手作業のストレスから解放されるようになります!

 

1,2の操作が終わりましたら、その後「データの加工」や「データの分析」を行えるようになります!

今回がデータの取得の大詰めです。

それでは一緒に学んでいきましょう!

「バフェットコードAPIを利用しデータの取得」の流れを学べる第2回はコチラ!

アイキャッチ 街並み

Pythonによる財務分析②-バフェットコードを用いて完全レクチャー! (全8回)

Pythonによる財務分析②」で書いたコードをもとに、取得したデータを保存しよう!

アセンブラ

ここでは、pandasライブラリの”to_csv”を用いて、データを保存する流れをレクチャーします。

これを行うことにより、今後「データの加工」や「データの分析」の工程に入るときにわざわざ「データの取得」から始めること無く保存したデータから始められるようになります。

では早速、前回作成した、最大3社まで取得できるコードを使い、財務データを保存する流れを学んでいきましょう!

保存先のフォルダを作成

まずは、保存先のフォルダを作成します。これを行うことで、前回の取得した3種類のデータを整頓し保存する事ができます。

下の画像のように、python財務分析のフォルダに

  1.  df_q
  2.  df_day
  3.  df_c

の3つのフォルダを作成します!

why
ファイル名はそれぞれ、qは四半期の財務数値(quarter)、dayが日別の株価指標(day)、cが現在の株価指標(current)を表しているよ。

ディレクトリ

その後、ジュピター・ノートブックに移り、「第3回」のファイルを作成します。

jupiter-notebook

2回で作成したコードを、第3回にコピー&ペーストする

2回の終盤で作成した、「fetch関数」「make_df関数」「確認用」の3つのセルを第3回にコピー&ペーストします。

3つのセルは下の画像を参考にしましょう。

第2回はコチラ!

アイキャッチ 街並み

Pythonによる財務分析① バフェットコードをつかって完全レクチャー! (全8回)

python コード



四半期の財務数値を古い順にソートできるように修正する

ここで一旦、コードを実行して出力結果を確認しましょう!

その際、APIキーを自分のものに設定することに注意してください。

python 出力結果

これをみると、日付が新しい順にデータが格納されています。

このことは、データベースからAPIを利用しデータを取得する仕様上、バフェットコードに限らず起こります。

この場合、古い順からデータを格納している日別の株価指標と、時系列が逆になってしまっているため、4半期の財務数値を取得の途中で並び替えるようにします。

pyhon コード

今回は上記のようなコードを、df_q_listの下に挿入し、古い順に並び替えて出力させます。

python コード

ここに挿入させると、古い順に並び替えられたことがわかります。

python 出力結果

 

pandasライブラリのto_csvを用いてデータを保存する

保存の準備が出来ましたので、pandasライブラリのto_csvを用いてデータの保存を行います。

こちらを行うことで、今後行う「データの加工」や「データの分析」の際に、わざわざ「データの取得」から始めること無く保存したデータから始められるようになります。これにより、作業工程を約”1/2″まで圧縮できます!

 

why
取得したデータも扱いやすくなって、一石二鳥だよ!

 

  実際にデータの保存の流れをみていきましょう!

 

python コード

今回は、”1301”,”1332”,”1333”を取得してデータを保存します。

fetch関数から上のto_csvまで実行させると、データがフォルダに格納されたことがわかります!

csvファイル



バフェットコードのAPIで、数百数千の財務データを取得しよう!

数百数千の財務データを保存する準備が整ったことで、待ちに待ったwith構文やfor文を使って取得に入っていきます!

この章の作業を完了すれば、財務データの取得の自動化を行うことができるようになります!

LINE@からticker_listをダウンロード後、保存し「python財務分析」のフォルダに入れる

下記LINE@から、ticker_listをダウンロードします。

メッセージにて、「財務分析」とお送りいただければダウンロードができます。

友だち追加

このフォルダは、メモ帳ファイルが沢山詰まっています。

中身は、バフェットコードに登録している企業の銘柄コードをAPI取得用にまとめたものとなっています。

こちらを使うことにより、銘柄コードの入力の自動化を行うことができます。

GoogleDrive

その後、python財務分析のフォルダにticker_listを入れます。

ディレクトリ

最後に、tickcer_listの中のメモ帳ファイルがちゃんと存在するか確認します。

今回はバフェットコードに登録されている全企業の銘柄コードか記された、ticker.txtを読み込んでみます

下記のようなコードを書き、3社ずつ文字列で出力されていることが確認できたら成功です。

python 出力結果

 

バフェットコードのAPIのリクエスト制限に注意する

大量のデータを取得する前に、注意事項としてリクエスト制限について説明します。

豆知識
リクエスト制限とは、バフェットコード様のAPIが規定している、1日あたりデータの取得を規制した回数のことを指します。

バフェットコード様のAPI1日当たり500回です。

リクエスト制限を踏まえ、今回の3種類のデータ取得を行うと、一日当たり取得できる企業は約500社になります。

全企業数は約3600社ですので一週間はかかる見込みです。

こちらを頭の隅におき、数百数千の財務データの取得や保存をおこないましょう!

500()= 500(リクエスト制限)/ 3(データの3種類) *3(1回当たり取得できる社数)

数百数千の財務データを取得し保存する

with構文やfor文を用いて財務データの取得と保存を行います。

2-2で話したように、日にちをまたいでデータを取得する必要があります。

そのため、ticker_listの中にあるticker_countを利用し、データの取得のセーブポイントを作成させ続きから取得できるようにさせます。

python コード

今回はtry文を用いて、リクエスト制限がかかったら、何行から何行まで読み込めたか出力させるようにしました。

行数は下の画像のようにticker.txtを開くと確認できます。(左に見える16の数字が行です。)

jupyter note book

一日あたりの取得が終わったら、3つのdfフォルダのどれかを確認してみると、大量の財務データが保存されていることがわかります。

pandas csvファイル

 

一週間かけ全ての取得が終わったら、次回以降に行う「データの加工」や「データの保存」に移ることができます!

 

why
データの取得おつかれさま!



バフェットコードのAPIで業種別で財務データを取得し保存しよう!

2章では全企業の財務データを保存する流れをレクチャーしましたが、3章では特定の業種内のみで加工や分析を行う方法も紹介します。

業種別での取得のメリットは、取得する企業がすくないため日にちをかけずにデータを集めることが出来ます。

特に、最後に行う重回帰分析では、業種別に絞って予測をすると精度が上がるため、こちらの取得方法も覚えておきましょう!



業種別の企業数(銘柄コード数)を確認する

業種別に取得を行う前に企業数を確認します。

企業数を確認することで、

  • 1日でデータを取得し終わるのか』
  • 分析するのに十分な数があるのか』

が分かります。

industryという変数に、業種をまとめたリストを作成します。

python コード

Industryをもとに、ticker_listにある業種ごとの銘柄コードリストを読み込み、企業数を出力します。

python コード

パラメータ数(指標数)により取得する業種を決める

業種ごとの企業数が確認できたところで、パラメータ数に業種を決めていきましょう!

パラメータとは、今回のような重回帰分析を行う場合、説明変数を指します。

豆知識
説明変数とは、あることを予測するときに、その予測結果を説明するデータのことです。

例えば、とある商品の売上を予測するとします。

その中で、売上の要因として広告商品の品質といったものが考えられる場合、先ほど述べた広告商品の品質が説明変数としてつかわれます。

本記事では説明変数を財務指標にします。

つまり、『パラメータ数 = 重回帰分析につかう指標数』、ということになります。

  また、パラメータ数の10倍以上のデータ数が機械学習をする際の目安となっています。

今回の場合、パラメータ数を12個用意する予定のため、120以上のデータ数をもつ企業以外を取得しないようにします。

why
詳しく知りたい方は”バーニーおじさんのルール”と検索してみてね。

 

python コード

上記のようなコードを書くと、120以上の業種のみを抽出することが出来ます。

業種別で財務データを取得し保存する

取得したい業種を決めたら、下記のようなコードを書き、入力した業種のみを取得し保存させるようにします。

python コード

実行させると、今回は「全157行中120行」と途中でリクエスト制限が来てしまいました。

その場合は翌日に再取得してみましょう!

尚、再取得したときに、既に取得した銘柄コードのデータがある場合は、データの上書きが行われるだけですので、3つのdfフォルダを再作成する必要はないです!



まとめ

3回では、Pythonで本格的な財務分析を行うための、

  • pandasライブラリのto_csvを用いて、取得したデータをcsv形式で保存する
  • with構文やfor文を用いて、数百数千の財務データを取得する

といったことをレクチャーしてきました!

 

次回の第4回では、「データの加工」に入り、12の財務指標に加工する流れ』をマスターしていきます!

 

記事にでてくるコードはLINE@にて配布をしております!
ラインのメッセージ欄に「財務分析」とお送りいただければ、ダウンロードリンクを送付いたします!

 

コード配布はLINE@にて!!
  友だち追加

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA