じっちゃまの「2月は例年株安になりやすい」はマジだったことをPythonで確認してみた

概要

じっちゃま勉強チャンネル【米国株】(https://twitter.com/TradenEarning)です。

じっちゃま(広瀬隆雄氏)が今年2月以降の株価が厳しい理由を解説されていた動画をまとめたのですが、自分で確かめたいと思い、データサイエンティストらしくPythonで確かめたところ、マジでした。

今回はその結果と方法を解説したいと思います。

結果

まず結果はこんな感じになりました。

スクリーンショット 2021-01-02 23.33.59

2月が最も低いですね。1月も低いですが、このへんの要因として考えられることは下に書きます。

ちなみにこれは2005, 2009, 2013年のVTIの株価から算出したものです。ちょっとサンプルが少ないですが、VTIで見てみたくて、VTIは比較的新しいのでこれ以上取ってこれませんでした。(4年ごとな理由は大統領選挙の時期との関係を見るため)また、単純に月の始めから終わりまで全体での株価上昇率となっています。

なぜ2005, 2009, 2013年かというと、大統領就任の年だからです。また、2017年を入れなかった理由は、トランプ大統領はバイデンさんを含めた他の大統領とは違うからです。このことも上記の動画でじっちゃまが解説されています。

さて、ここからは実際に書いたプログラミングコードを紹介していきます。

方法・コード

Python3のコードで書いていきます。Jupyter Lab上で実行しています。

# まずはモジュールをインポート
%matplotlib inline
import numpy as np
import pandas as pd
import seaborn as sns

import matplotlib.pyplot as plt
import japanize_matplotlib
import pandas_datareader.data as web

from tqdm import tqdm
from sklearn.linear_model import LinearRegression


# グラフ描画時のおまじない
sns.set_style('darkgrid')
sns.set(font="IPAexGothic")

# VTIを見てみよう!
df = web.DataReader("vti","yahoo","2002/1/2").dropna()#jpy
plt.title('VTI')
df.loc[:,'Adj Close'].plot();
plt.xlabel('年月');
plt.ylabel('株価');

スクリーンショット 2021-01-02 23.28.10

VTI上がってますねー。

次に、株価上昇率の計算のための関数を書いていきます。

def calc(df, year, month):
   lr = LinearRegression()
   data = df[(df.index.year == year) & (df.index.month == month)]['Adj Close']
   X = np.arange(0, data.shape[0])[:, np.newaxis]
   Y = data.values
   lr.fit(X, Y)
   return lr.coef_[0]
result = []
for year in tqdm([2005, 2009, 2013]):
   yearly = []
   for month in np.arange(1,13):
       yearly.append(calc(df, year, month))
   result.append(yearly)
result = np.array(result)
plt.plot(np.arange(1, 13), result.mean(axis=0));
plt.xlabel('月');
plt.ylabel('株価上昇率');

スクリーンショット 2021-01-02 23.37.51

以上で結果のグラフが作れました。

詳しい手法

さて、どうやって株価上昇率を計算しているか、ですが、線形回帰を使っています。

スクリーンショット 2021-01-03 0.05.47

例えば上のようなグラフがあった場合、線形回帰をすると

スクリーンショット 2021-01-03 0.06.40

こんな感じにオレンジの線が引けます。こうやってだいたいの上昇率or下降率を出せるわけです。

今回はこんなところで。

この記事が気に入ったらサポートをしてみませんか?