Pythonによるイベントスタディ第2回



自社株買いによって、株価に変化があるのか知りたい…!

この記事では、Python初心者でもできるように、イベントスタディをレクチャーしていきます!

記事にでてくるコードは配布しております。下記LINE@からダウンロードください。

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

友だち追加

このシリーズを読むとわかること

  • イベントスタディとはなにか理解できる
  • イベントスタディをPythonをもちいてレクチャーできる

今回は、

  • ベンチマークやマーケットモデルについて理解する
  • Pythonをもちいてマーケットモデルからベンチマークを計算する

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

第1回では、イベントスタディとはなにかや、株価のリターンの計算をおこないました。

それをふまえ、第2回では本格的なイベントスタディをおこない、累積異常リターン(CAR)を求めていきます!

累積異常リターン(CAR)を求めることで、イベント前後の企業の価値の急激な変化を分析することができます!

この分析を活かし、自分なりの投資戦略をたてることも可能です!

今回の記事でも株式投資メモ様を紹介させていただいます!

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

ベンチマークやマーケットモデルについて理解しよう

スマホ 株価

第1回の株価のリターンを計算する際、異常(abnormal)なリターンを求めるためには普通の(normal)リターンを求めなくてはならない、と説明しました。

今回は、その普通のリターンを求める上でかかせない「ベンチマーク」や「マーケットモデル」について解説していきます!

ベンチマークとは

まずは、ベンチマークついてです!

ベンチマークとは

異常リターンと比較対象となる“普通”のリターンの呼び名。

ベンチマークはひとことでいうと、ある値が凄いのか凄くないのか判断するためのものです。

例えば、あるときにテストAとテストBを受け、どちらも100点中80点を取ったとします。

このとき、テストAの全体の平均点は75点でテストBの全体の平均点が50点だった場合、テストBの結果のほうが凄いと考えます。

ベンチマークは、そうした凄いのかどうか(異常かどうか)を評価するためのものです。

前回のリターンの計算を普通のリターン(ベンチマーク)とする問題点

第1回で株式のリターンを求めましたが、こうしたリターンを普通のリターン(ベンチマーク)とするのは問題点があります。

なぜなら、個別の場合企業によってリターンは様々であるからです。

例えば、普段4%のリターンを得ているA企業と0.5%のリターンを得ているB企業があったとします。

このとき、どちらも一時的に5%のリターンを得た場合、B企業は異常リターンと感じとれるかもしれませんがA企業は通常のリターンに捉えられるのではと考えます。

Pythonによるイベントスタディ第1回

このように、企業によって通常のリターンは様々なため、ベンチマークにするには不十分です。

これに対して、ベンチマークとしてよく利用されるものが「マーケットモデル」です!

(他にもベンチマークとして、Fama-Frenchの3ファクターモデルやCarhartの4ファクターモデルなどがありますが、今回は割愛します。

マーケットモデルとは

ここで、ベンチマークとして利用されるマーケットモデルについて説明します。

マーケットモデルとは

全ての証券の共通要因を、マーケットインデックス(TOPIXなど)を唯一の共通要因としてリターンを説明するモデルのこと。

マーケットモデルは、イベント対象の企業とそれ以外の数多くの企業で構成されているマーケットインデックスをつかい、リターンの変動要因(イベント)を調べます。

先ほどのテストの例の全体の平均のイベントスタディ版がマーケットモデルと捉えても良いですね!

 

それでは、累積異常リターン(CAR)を求めるために、まずは普通のリターン(ベンチマーク)であるマーケットモデルを計算していきましょう!



Pythonをもちいてマーケットモデルからベンチマークを計算しよう

ここでは、Pythonをつかって実際にマーケットモデルを求めていきます!

マーケットモデルを求めていくために、まず簡単にモデルとなる数式の理解をしていきましょう!

マーケットモデルの数式

マーケットモデルの数式は以下のようになっています。

式

 

 

 

引用:第一章 財務諸表

 

 

数式だけだとわかりにくいかもしれませんので少し解説します。

数式をみるに、過去の企業(個別証券)のリターンとマーケットインデックスのリターンの相関の強さを𝛽としています。

金融に詳しい方でしたら、β値は聞き覚えがあるかもしれませんね!

そのβとマーケットインデックス 𝑟 %の掛け算が 𝑟 ×𝛽 % です!

そして、他の変数との合計が数式になります!

では、どのようにPythonでこの式を求めていくかについてですが、単回帰分析をもちいて計算していきます!(後ほど実際に計算していきます!)

why
単回帰分析ついて詳しく知りたい方はPythonによる財務分析⑦の「Pythonでおこなうことができる単回帰分析について理解しよう!」を読んでね!

マーケットモデルによる累積異常リターンの計算手順

「ではさっそくPythonで求めていきましょう!」といいたいところですが、マーケットモデルを求め累積異常リターンを求めいく流れを先に説明します!

その方が実際にPythonで計算するときに今どの工程をおこなっているのか理解しやすいからです。

計算手順は以下の通りです。

  1. 推定期間と検証期間をマーキングする
  2. 企業とマーケットインデックスの株価のリターンを計算する
  3. 回帰分析をおこないマーケットモデルを求める
  4. マーケットインデックスのリターンに𝛽を掛けベンチマークを作成する
  5. 実際のリターンからベンチマークを引いて異常リターンを計算
  6. 異常リターンを累計して、累積異常リターンを求める

ここでは、なんとなくこんな事やっていくんだ程度で大丈夫です!

では、実際に求めていきましょう!

分析するデータを読み込む

まずは、下記のLINE@から「イベントスタディ第2回」のファイルと「stock_data」のフォルダをダウンロードします。

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

友だち追加 python フォルダ

その後、コードを実行します!

python コード

    今回は、2019年11月8日に実施されたキリンホールディングスの自社株買いによる、累積異常リターンを求めていきます!

    推定期間と検証期間にマーキングをする

    まずは推定期間と検証期間にマーキングをしていきます!

    推定期間とは
    イベントが起こる前の、平常な値動きしている期間。(異常リターンをが起こった期間と比較するための期間。)

    検証期間とは

    イベントが起こった前後の期間。(異常リターンが起こったとされる期間。)

    推定期間と検証期間をつかい、イベントがない平常時とイベントが起こった時を比較します!

    このとき、具体的な期間は

    • 推定期間:イベント日を𝑡とするとき、 [𝑡−200,𝑡−21]の期間。
    • 検証期間:イベント日を𝑡とするとき、 [𝑡−20,𝑡+20]の期間。

    が良いとされています。

    実際にマーキングをしていきましょう!

    まずは、t=0(イベント発生日)の行が何行目のものか特定します。

    python コード

    204行目がt=0であると特定したところで、それ以外の行にもt=~をマーキングしていきます!

    python コード

    確認として、t=0である2019年11月8日の行をもう一度呼び出します。

    python コード

    マーキングすることができました!

    株価のリターンを計算する

    つづいて、今回対象企業である「キリンホールディングス」と、マーケットインデックスとして利用する「TOPIX連動型上場投資信託(ETF)」の株価のリターンを計算してきます!

    これらを計算することで、マーケットモデルや累積異常リターンを求めることにつながります!

    まずはキリンホールディングスのリターンを計算します。

    python コード

    そして、マーケットインデックス(TOPIX連動型ETF)のリターンを計算します。

    python コード

    そして、キリンホールディングスとマーケットインデックスをひとつの表にまとめます!

    python コード

    回帰分析をおこないマーケットモデルを計算する

    準備が整ったところで、単回帰分析をおこないマーケットモデルを計算します!

    マーケットモデルは、推定期間(平常時)のときのマーケットインデックスをつかい計算します!

    理由としては、最終的に異常なリターンを求めていくので、比較するデータはイベントが起こっていない期間で計算することが適切だからです。

    マーケットモデルを計算していきます!

    推定期間の行を特定します。

    python コード python コード

    推定期間の開始の行が4行目、終了が183行目であることがわかりました。

    これをもとに、先ほど求めたリターンを推定期間中だけにトリミングします。

    python コード python コード

    そして、単回帰分析にかけマーケットモデルを作成します!

    python コード
    why
    単回帰分析ついて詳しく知りたい方はPythonによる財務分析⑦の「Pythonでおこなうことができる単回帰分析について理解しよう!」を読んでね!

    マーケットモデルの回帰式を表示させます!

    python コード

    マーケットモデルが計算できました!

    ここでは、傾きがβ値で切片がαを表しています。

    そして、マーケットモデルから算出されるベンチマークを求めていきます!

    ベンチマークを計算する

    マーケットモデルを作成することができたので、検証期間中のベンチマークを計算していきます!

    このベンチマークと実際のリターンを比較し、異常なリターンが求まります!

    まずは、確認のために検証期間開始の行の特定です。

    python コード

    そして、ベンチマークを計算していきます!

    ここでは、検証期間のマーケットインデックスに𝛽を掛け計算しているイメージです!

    python コード

    ベンチマークが求まりました!

     

    次回におこないますが、その後、 実際のリターンからベンチマークを引いて、異常リターンを計算していきます!



    まとめ

    今回は、

        • ベンチマークやマーケットモデルについて理解する
        • Pythonをもちいてマーケットモデルからベンチマークを計算する

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

        次回にいよいよ累積異常リターンを求めていきます!

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

        コード配布はLINE@にて!

        友だち追加

        コメントを残す

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

        CAPTCHA