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



株式投資のリターン予測をしたいけど、どうしたらいいのかな。。。

今回は、企業の財務指標をもとに単回帰分析でリターン予測をする」という流れをサンプルコードとともに解説をします!

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

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

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

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

今回は、

  • Pythonでおこなうことができる単回帰分析について理解する
  • Pythonをもちいて単回帰分析によるリターン予測をする

という流れをサンプルコードとともに解説をします!

今回は、最後の第8回(次回)におこなう重回帰分析の理解を深めるために、チュートリアルとして単回帰分析をしていきます。

単回帰分析とは、二つのデータ間で関係がありそうなものに対し、一方のデータが他のデータに対して影響を与える関係が想定できる場合に使われる手法です。

この手法は、一方のデータ群に比例してもう他方のデータ群の値も決まることを予測することができます。

たとえば、”広告費への投資金額”と”売上高”のデータがあるとします。

このとき、広告費への投資が売上高を決めていると予想できる場合、回帰分析によって投資金額による売上高の予測値を求めることができます。

今回は、加工した指標をもとにリターン(キャピタルゲイン)の予測値を求めていきます!

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

 

Pythonでおこなうことができる単回帰分析について理解しよう!

単回帰分析をおこなう前に、そもそもこの分析手法はなんなのか簡単に理解していきましょう!

単回帰分析とは

二つのデータ間で関係がありそうなものに対し、一方のデータ群が他のデータ群に対して影響を与える関係が想定できる場合に使われる手法です。

この手法は、2つのデータ間で関係がありそうなものを本当に関係しているか調べたり、

調べた上で関係を 『y = ax+b 』といったように、関係しているものを比例の式で簡単に求たいときに利用します。

例えば、全国の人達を集めて、体重によりだいたい身長が決まってくるのかを調べるとします。

このとき、身長と体重に単回帰分析をかけ、体重が増えれば増えるほど身長が高くなるか調べます。

このとき、もし体重によって身長が影響していることがわかった場合、体重をもとに身長を大体予想することができるようになります。

イメージ 『 y(身長) =  a x(体重) + b 』 のような直線の式を書くことが出来ます。

男性で 身長170cm の人は大体60±5 ㎏  が健康診断とかで普通の体重と言われたりしますが、逆に体重からおおよその身長を推定することができる、という具合です。

ちなみにですが、この影響を与える(影響を与えられる)2つのデータは機会学習の分野では以下のように呼ばれています。

説明変数(explanatory variable)
影響を与えるデータ群。独立変数(invipendent variable)ともいう。
目的変数(explanatory variable)
影響を与えられるデータ群。従属変数(explanatory variable)ともいう。

さっきの、y(身長) =  a x(体重) + b の比例式では、xが説明変数でyが目的変数といった具合です。

xの値が決まれば、それに応じてyの値も決まってくる関係にあるため、XによってYを説明できる(予測できる)ことになります。

相関関係であって因果関係ではないことに注意

単回帰分析で注意しないといけないことは、2つのデータ間が相関関係にあるだけであり、因果関係があるかどうかまではわからないということです。

相関関係
ある事が別のある事が互いに影響を及ぼす関係。(詳しくは第1回で説明。)

因果関係
ある事が直接的に別のある事を引き起こす関係。

アイキャッチ 街並み

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

さっきの単回帰分析の図で例えると、XによってYの値を決めているという前提としていますが、YによってXの値を決めている可能性もあるということです。

このように、予測値を出したとしても因果関係にあるかどうか注意しないといけません。

単回帰分析と重回帰分析の違い

単回帰分析と重回帰分析の違いは、目的変数に対しての説明変数の数が1つか複数かです。

数式で表すと以下のようになります。

線形回帰分析 式

重回帰分析についての詳しい説明は第8回にておこないますので、

いまは単回帰分析より説明変数の数が多いくらいに理解してください。



Pythonをもちいて単回帰分析によるリターン予測をしよう!

単回帰分析をざっくりと理解したところで、早速リターン予測をしていきましょう!

まずはいつものように第7回の新規ファイルを作成します。

ファイル python

加工したデータを読み込み、分析に使いたい指標を選ぶ

今回分析に使用するcsv形式のデータある、ProccessedDataを読み込みます。

加えて、読み込んだ全企業データのカラム(列)の項目を確認し、分析に用いる財務指標を選定します。

python コード

今回は試しに、ROEとキャピタルゲインを用いて単回帰分析をおこないます!

python 出力結果

散布図を作成する

次に散布図を作成し、視覚的に2つのデータ間で比例の関係がありそうか確認します。

(散布図の説明は第1回にておこなっています。)

アイキャッチ 街並み

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

python コード

今回は重回帰分析のチュートリアルとして単回帰分析をおこなっているため結果を公開します。

これの結果をみると、散布図のROEの増加に関わらずキャピタルゲインが増加していることに注目し、相関関係があまりないことが読みとれます。

加えて、図より一部のROEが400%や800%に位置していることから、現実的でないROE(外れ値)があることも読みとれます

本来はここで、分析する指標を変えるか吟味したり、分析結果に影響を与える可能性がある外れ値を、使えるデータとして認めるか吟味したりします。

why
今回は重回帰分析の理解を深めることが目的だから先に進むよ!

統計量を作成する

散布図を確認し、大まかな結果の予想を立てた上で、統計量を作成します。

統計量
分析するデータの関係を明らかにするために、数学的手法に基づいて算出された値のこと。

今回の単回帰分析は、最小二乗法(OLS)呼ばれる数学的手法により算出される分析ですので、最小二乗法の統計量が出力されます。

最小二乗法についての説明は割愛しますが、単回帰分析をするために用いる計算方法だと理解しているだけで大丈夫です。

書きのようなコードを書き統計量を算出します。

python コード

統計量を確認する

出力された統計量を確認します。

様々な項目がありますが、優先的にみる項目だけ説明します。

その項目は、「決定係数「P」です。

決定係数(R-squared)
説明変数が目的変数に対してどれくらい当てはまりがいいか表す値のこと。(1に近ければ近いほど当てはまりが良い)

P値
説明変数以外のものにより目的変数に影響を与えている確率(p値が0.05以下なら説明変数以外のもので影響を与えていると判断してよい)

今回の統計量ですと、P値に関しては問題ないですが、決定係数はかなり低く当てはまりが悪いことがわかります。

回帰式を作成する

決定係数の判定でかなり精度が悪いことがわっていますが、回帰式を作成します。

回帰式とは
さきほどの  y(身長) =  a x(体重) + b  といった比例式を正確に言った用語で、あるデータの分布を一つの直線の式で表したものです。

例えば、全国の人達を集めて身長と体重の式を作成するとします。

この場合、いろんな方々がいますが、身長をy体重をxとしてデータの分布を作成すると、

中学で習った  y(身長) =  a x(体重) + b  みたいな直線の式を書くことが出来ます。

男性で 身長170cm の人は大体60±5 ㎏  が健康診断とかで普通の体重と言われたりしますが、逆に体重からおおよその身長を推定することができる、という具合です。

話を戻すと、今回のROEとキャピタルゲインの回帰式をみるに、ROEに比例してリターンがわずかながら増加するといった予測だとわかります。

python コード

もちろん、これは全企業データで扱っているため業種ごとだと結果は変わっていきます。

他方、ROE以外の指標で分析しても違った予測になります。

今回は、チュートリアルですので、本格的な分析は第8回にておこないます!



まとめ

7回では、

  • Pythonでおこなうことができる単回帰分析について理解する
  • Pythonをもちいて単回帰分析によるリターン予測をする

という流れをサンプルコードとともにレクチャーをしました!

最終回である第8回「重回帰分析を行いリターン予測をする」をおこないます。

じつは今回の第7回では、回帰分析になれるためのチュートリアルのため、「他の指標での予測」「業種別での分析」「予測値をもとに企業をスクリーニング」といった深い内容はしていません。

しかし、第8回では単回帰分析の知識を前提として、深い分析や具体的な投資戦略を考えることが出来ればと考えています!

第7回に掲載されているコードは、下記リンクからダウンロードきますので是非ご利用ください!

https://drive.google.com/drive/folders/10QT7ql_5_brnSireZxRp8sigz2MWWACl

コメントを残す

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

CAPTCHA