
ゆうき( @BASEBALLY15 )です^^
前回に,GAFAの株価の比較を行いましたが,次は,何をするのですか?
今回は, それぞれの株価にどのような関係性があるのかということを分析していこうと思います^^
(Udemy 『実践Pythonデータサイエンス』を参考,Jupiternotebookを使用)

GAFAとは?
米国の4大会社として知られている『Google』,『Apple』,『Facebook』,『Amazon』の頭文字から
『GAFA』と言われています.
相関係数とは?
相関係数とは,2種類の関係を示す指標のことです.
相関の強さは,以下の表のとおりです.
学習内容
・『Google』の株価をグラフに表示する.
・『Google』と『Facebook』の相関について分析する.
・4社の株価を比較する.
・4社にどのような相関があるのかを分析する.
この流れで説明していきたいと思います.
ライブラリ
import pandas as pd
from pandas import Series, DataFrame
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import pandas_datareader as pdr
from pandas_datareader import DataReader
from datetime import datetime
%matplotlib inline
#グラフの背景をwhitegridにする
sns.set_style("whitegrid")
コード
まず,GAFAの株価を取得します.
#リストを作成
gafa_list = ["GOOG","AAPL","FB","AMZN"]
#取得する期間を指定する
end = datetime.now()
#去年の今日を指定
start = datetime(end.year-1, end.month, end.day)
#"yahoo"からGAFAの株価を取得
for gafa_stock in gafa_list:
globals()[gafa_stock] = pdr.DataReader(gafa_stock,"yahoo",start,end)
そして,以下のコードを記述し,Googleの株価についてグラフを表示させると,
GOOG["Adj Close"].plot(legend=True,figsize=(10,4))

このようなグラフが表示されます.
2019年の6月あたりで,下落したものの,現在の株価は上昇していることが分かります.
このように,Pythonを使うと,短いコードで株価を表示できるので,便利ですね^^
次に,4社の『終値調整値』とその変化率について,分析を行いたいと思います.
上の表が,終値調整値を示し,下の表が終値調整値の変化率を示しています.
#4社の終値調整値を表示
gafa_df = DataReader(["GOOG","AAPL","FB","AMZN"],"yahoo",start,end)["Adj Close"]
#実行
gafa_df.head()
Symbols | GOOG | AAPL | FB | AMZN |
---|---|---|---|---|
Date | ||||
2019-01-31 | 1116.369995 | 163.976242 | 166.690002 | 1718.729980 |
2019-02-01 | 1110.750000 | 164.055069 | 165.710007 | 1626.229980 |
2019-02-04 | 1132.800049 | 168.715042 | 169.250000 | 1633.310059 |
2019-02-05 | 1145.989990 | 171.601685 | 171.160004 | 1658.810059 |
2019-02-06 | 1115.229980 | 171.660797 | 170.490005 | 1640.260010 |
#4社の終値調整値の変化率を表示
gafa_rets = gafa_df.pct_change() #pct_change()で変化率を表示してくれる
gafa_rets.head()
Symbols | GOOG | AAPL | FB | AMZN |
---|---|---|---|---|
Date | ||||
2019-01-31 | NaN | NaN | NaN | NaN |
2019-02-01 | -0.005034 | 0.000481 | -0.005879 | -0.053819 |
2019-02-04 | 0.019851 | 0.028405 | 0.021363 | 0.004354 |
2019-02-05 | 0.011644 | 0.017110 | 0.011285 | 0.015612 |
2019-02-06 | -0.026841 | 0.000344 | -0.003914 | -0.011183 |
GoogleとFacebookの株価の相関をグラフで表示させる
上で示した表を見ても,それぞれの株価にどのような相関があるのか分からないと思います.
そこで,上の表をグラフにしてみたいと思います.
#GoogleとFacebookを比較
sns.jointplot("GOOG","FB", gafa_rets, kind="scatter", color="seagreen")

このグラフは,それぞれの株価のヒストグラムとプロット図を示したものです.
このグラフを,以下のコードを記述し,カーネル密度推定によるグラフで表示させてみると,
#カーネル密度推定を同時にプロットする.
sns.jointplot("GOOG","FB", gafa_rets, kind="kde", color="red")

このグラフから,2社ともに,株価の変化率が0に集中していることが分かります.
株価は,一日の間ではあまり変化しないのですね^^
4社全てのグラフを表示させる
4社のプロット図,ヒストグラム,kde図(カーネル密度推定)をまとめて表示させたいと思います.
以下のコードを記述します.
#グリッドを準備
gafa_fig = sns.PairGrid(gafa_rets.dropna())
#右上のグラフを指定
gafa_fig.map_upper(plt.scatter, color="red")
#左下のグラフを指定
gafa_fig.map_lower(sns.kdeplot,cmap="cool_d")
#対角線上のグラフを指定
gafa_fig.map_diag(plt.hist,bins=50)
すると,以下のグラフが表示されます.

このように,まとめてグラフを表示できるのも便利な機能です^^
最後に,4社の株価にどれくらい相関があるのかを,数値として,表示させたいと思います.
#相関係数をヒートマップで表示し,数値も表示させる
#annot=Trueは数値をグラフ上に表示させる
sns.heatmap(gafa_rets.corr(), annot=True)
ヒートマップを使うことで,視覚的に相関を調べることが出ます.
グラフはこのように表示されます.

全体的に,相関自体は強くないことが分かりました.
多少は,影響するものの,それぞれの株価によって,
GAFA内の株価が急激に変化することは,あまりないのではないかと思います^^
(あくまで個人的な見解です.)
終わりに
最後まで見てくださり,ありがとうございました。
今回は,GAFA全体のグラフを表示させてみました.
このように,まとめて表示させることが出来るのも,Pythonのメリットだと思います^^
ぜひ,皆さんも,Pythonを使って,様々な会社の株価を分析してみてください^^
それでは・・・