データ分析で遊んでみようと思いました。
そこで目をつけたのが伊藤園優先株です。
はじめに
伊藤園は、普通株式と第一種優先株式を発行しています。
優先株の発行自体は珍しいものではありませんが、東証に上場している優先株は伊藤園くらいです。(米国株だとたくさんあります)
伊藤園 | 普通株式 | 第一種優先株式 |
---|---|---|
配当 | 普通配当 | 1.25倍の配当 |
議決権 | ○ | × |
株主優待 | ○ | ○ |
配当が多いかわりに議決権がないのが優先株です。
同じ会社ですから、業績などの株価を左右する条件は同じなのに3倍以上の差がついています。なぜでしょうか?
みんな、そんなに株主総会で「異議あり!」って叫びたいの?
Alphabet(Google)のクラスC(優先株)とクラスA(普通株)はこんなに乖離しないのに。ふしぎ。
分析
データの取得と可視化
株価や為替のデータはpandas_datareader
を使うと簡単に取り出せます。便利な世の中ですね。
米国 Yahoo! Finance など、データ提供元はいろいろなところを選べるのですが、Yahoo! Financeからは伊藤園優先株の過去の株価を取得できないので Stooq を使います。
普通株の証券コードは2593.JP
、優先株は25935.JP
、日経平均は^NKX
を指定して読み込んで、matplotlib
を使ってグラフ表示します。
期間はとりあえず2013年以降としましょう。1日の株価には、始値、高値、安値、終値の4つがありますが、簡単にするため終値(Close)だけを使います。
以下のコードをGoogle Colaboratoryで実行します。
import pandas_datareader.stooq as web
from datetime import datetime
start = datetime.strptime("20130101", "%Y%m%d")
end = datetime.strptime("20220318", "%Y%m%d")
ps = web.StooqDailyReader("25935.JP", start=start, end=end)
cs = web.StooqDailyReader("2593.JP", start=start, end=end)
nk = web.StooqDailyReader("^NKX", start=start, end=end)
preferrd = ps.read()
common = cs.read()
nikkei = nk.read()
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import plotly.graph_objects as go
plt.title('ITO EN STOCK PRICE')
plt.plot(preferrd['Close'], "g", label="Preferred Stock")
plt.plot(common['Close'], "b", label="Common Stock")
plt.legend(bbox_to_anchor=(0, 1), loc='upper left', borderaxespad=0, fontsize=9)
plt.show()
これを実行すると、最初に掲載したグラフが表示されます。
グラフの色を伊藤園カラーにしたのは細かいこだわりです💚💙
相関係数の算出
それぞれの株価の間にどの程度の関係があるのか、DataFrame
のcorr()
関数を使って相関係数を出してみましょう。
import pandas as pd
#DataFrameの結合
df = pd.concat([preferrd['Close'], common['Close'], nikkei['Close']], axis=1)
columns = ['Preferred', 'Common', 'Nikkei']
df.columns = columns
#相関係数の算出
corr = df.corr()
print('優先株と普通株の相関係数 ', corr['Preferred']['Common'])
print('日経平均と普通株の相関係数', corr['Nikkei']['Common'])
print('日経平均と優先株の相関係数', corr['Nikkei']['Preferred'])
以下のような結果が出ました
優先株と普通株の相関係数 0.8370530629326921
日経平均と普通株の相関係数 0.8854726903858889
日経平均と優先株の相関係数 0.80623499174095
どちらも強い相関がありますが、同じ会社の優先株と普通株よりも、日経平均と普通株の相関の方がわずかながら高いようです。
相関係数は1に近いと正の相関、-1に近いと負の相関(逆相関)、0に近いと無相関と呼びます。
相関係数を細かく見てみる
期間を区切って相関係数を見てみましょう。
期間 | 優先株-普通株 | 日経平均-普通株 | 日経平均-優先株 |
---|---|---|---|
2013-2017 | 0.8789115360611347 | 0.6721439046748372 | 0.8005636499393988 |
2018-2022 | -0.09088988298331964 | 0.7111257313836747 | 0.0966610269747887 |
また、matplotlib.pyplot
のscatter()
関数を使って散布図も作ってみます。
plt.title('Scatter Plot')
plt.scatter(preferrd['Close'], common['Close'], c='g')
plt.xlabel("Preferred Stock")
plt.ylabel("Common Stock")
plt.show()
2018年を境に相関関係が崩れているようでした。
アイエエエエ! ニンジャ!? ニンジャナンデ!?
因果関係を考える
普通株と日経平均の間に因果関係があるとすれば、2つの方向が考えられます。
- 普通株の株価によって日経平均が上がる
- 伊藤園の時価総額はそんなに大きくないので、この説は考えにくい
- ファストリテイリング、東京エレクトロン、ソフトバンクグループのような大きいところであれば検討に値するかも
- 日経平均が上がることによって普通株の株価が上がる
- 正しいような気がするけれど、これでいいのだろうか?
決定打に欠けるような気がします。そもそも、伊藤園は日経平均採用銘柄じゃなかった!!
つまり、どちらの方向の因果関係もなさそうです。
ここで、交絡因子の存在を疑ってみましょう。
今まで視野に入れていなかったものの中で、日経平均と普通株に同時に影響を与えるものがないかを考えてみます。
原因は日銀?
相関が崩れはじめた2018年ごろは、日銀がETF(上場投資信託)の買入を増やしていった時期にあたります。日経平均中心の買入だと特定銘柄の株価を上げてしまうため、TOPIX連動ETFの買入割合を高めたのもこのあたりです。
つまり、
日銀がETFを買う
↓
日経平均やTOPIXが上がる
↓
TOPIX構成銘柄の伊藤園普通株が上がる
↓
優先株は構成銘柄ではないので変わらない
↓
相関が崩れる
という流れではないかと推測できました。
いろいろなグラフを作成
以下のような簡単なコードで、普通株に対する優先株の株価の割合をプロットしたグラフが作れます。さまざまな切り口で分析してみましょう。
plt.title('Common Stock - Preferred Stock Ratio')
plt.plot(preferrd['Close']/common['Close'], c='g')
plt.show()
まとめ
スタンダードな手法だけでも、意外な知見が得られることが分かりました。
親子上場の会社や同一業種の別会社に試しても面白そうですし、時系列予測なども試してみようかと思います。
気象データや政府統計など、他のオープンデータも分析して遊んでみたいですね。