bookloveru2

2020年8月19日2 分

コロナCOVID-19と株式市場(ビットコイン含む)の相関係数と調べてみた。

最終更新: 2021年1月2日

目次

コロナCOVID-19と株式市場の検証期間

pythonによるコード

参考にした本


皆さん、こんにちは。

今回は恐ろしい新型肺炎コロナと株式市場に相関があるのかどうか、

検証してみました。

少し、不謹慎かもしれない。

とも、思ったのですが、連日コロナ感染者と世界的な株価は

高騰を続けています。

何か関係があるのでは!??

と考え、調べてみることにしました。


❶コロナCOVID-19と株式市場の検証期間

なお、検証期間は「2020年1月11日~2020年8月1日」です。

グラフはpythonで描画。

※記事の最後にコードを記載しております。

縦軸:各国のコロナの感染者数 (WHOから引用)

横軸:各国の主要株価指数+ビットコイン(yahooFinanceより引用)

結果:①各国株価指数とコロナ新規感染者数は無相関もしくは若干の逆相関の模様。

    ※対角成分(左上から右下までの斜めの軸が、ほぼゼロか、微妙にマイナス。。。

   ②最も関係性が高いのはブラジルの感染者とBTC。(相関0.47)

    Why?(-"-)

③感染者数が増えると、法定通貨(フィアット)の不安から、ビットコインが値上 

    がりする!?

以上から、新型肺炎コロナと株式市場にはあまり関係性は無かったと言える

のかもしれません。(´;ω;`)ウッ…労力が。。。。

なお、このデータの、

コロナ新規感染者数は日々の新規感染者数。

各国の株価は標準化後の累積積をパーセント表記でプロットしております。


❷pythonによるコード

※ご自身の環境で、お試しする場合は、

 下記のローデータ(csv)をダウンロードして、ご自身の

 GoogleDriveの保存してください。

その後、下記pythonコードを実行してください。

from google.colab import drive
 
drive.mount('/content/drive/')
 

 
!pip install -U -q PyDrive
 
from pydrive.auth import GoogleAuth
 
from pydrive.drive import GoogleDrive
 
from google.colab import auth
 
from oauth2client.client import GoogleCredentials
 

 
# check auth
 
auth.authenticate_user()
 
gauth = GoogleAuth()
 
gauth.credentials = GoogleCredentials.get_application_default()
 
drive = GoogleDrive(gauth)
 

 
import pandas as pd 
 
import numpy as np
 
import matplotlib.pyplot as plt
 
import seaborn as sns
 
from scipy.spatial.distance import cdist
 
plt.style.use('seaborn'
 
font = {'family' : 'meiryo'}
 
plt.rc('font', **font)
 

 
data= pd.read_csv('drive/My Drive/COVID19.csv',index_col="Date")
 

 
#WHOのコロナ新規感染者数。コロナの欠損値は0ゼロとする。.fillna(0) 感染者0人。
 
covid19 = data.iloc[:,0:8].fillna(0)
 

 
#株価。株価は欠損値を気にしない。実際に非営業日の為、値が変動しない為。
 
stock = data.iloc[:,9:17]
 

 
#株価の欠損値を行ごとの最頻値で置換。
 
stockmode = stock.fillna(stock.mode().iloc[0])
 

 
#covid19とstockmodeの相関係数をヒートマップ表示。
 
#pd.DataFrameをnumpy.ndarrayに変換
 
ndf1=covid19.T.values
 
ndf2=stockmode.T.values
 
res=(1 - cdist(ndf1, ndf2, metric='correlation'))
 
res=pd.DataFrame(res, index=covid19.columns, columns=stockmode.columns)
 
print(res.head())
 
sns.set_context("talk")
 
fig = plt.subplots(figsize=(1012))
 
sns.heatmap(res, annot=True,fmt='.2f',cmap='binary',square=True)

今回のコードは、下記の書を参考に致しました。


❸参考にした本

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング (日本語) 単行本(ソフトカバー) – 2017/6/3

Al Sweigart (著), 相川 愛三 (翻訳)

Twitterのフォローも宜しくお願い致します。https://twitter.com/bookloveru2

#数学

#統計

#Python

    1750
    4