bookloveru2
pythonで株価分析⑲【データビジュアライズと重回帰モデル】
皆様、こんにちは。
乞食です。
オミクロン株が猛威を振るう中、インフレとトンガの津波が世界の話題を席巻しております。
因みに、『TSUNAMI』という言葉は、東日本大震災以降、『津波(現象)』として各国の標準語となっているそうです( ゚Д゚)。
それほど他国から見ても恐ろしい現象だったのでしょう。。。
今回は、被害者0ゼロで乗り切ってほしいものです。
あれだけ生放送で注意喚起したから、きっと無事でしょう( `ー´)ノ
てことで、本題に移ります!
今回は、データビジュアライズ(美しい視覚化)+ 重回帰分析です(*'ω'*)
早速行ってみよう!!!
目次
① 2017年元旦(バブル形成期)~2022年1月16日現在までを追う
② 重回帰分析で『株価が予測できる❕❓』
③ データビジュアライズって、美しい(●´ω`●)
① 2017年元旦(バブル形成期)~2022年1月16日現在までを追う
米国株は長年バブルが継続してきたが、その発端は2017年頃だったように思えます(*'ω'*)。
2009年のリーマンショックを乗り越え、IT技術の革新的な進歩に支えられて目覚ましい成長を遂げてきました。
2012年以降からは、ビットコインが注目され始め、Amazonやグーグル、Facebookが猛威を振るい始めました。
そして、目に見えてバブルが形成され始めた2017年から当時を見ていきたいと思います。
ここからは、pythonを駆使してじっくりいきましゅ(*'ω'*)!
まずはモジュールをインストール
# @title pipだよ! 全員集合( `ー´)ノ
!pip install yfinance
!pip install japanize_matplotlib
!pip install pywedge
そんで、適当に過去の株価をGET!!
( `ー´)ノ
# @title 何でも価格取得
import datetime
import yfinance as yf
import japanize_matplotlib
import matplotlib.pyplot as plt
import seaborn as sns
from pandas_datareader import data as pdr
import requests
%matplotlib inline
import warnings
warnings.filterwarnings('ignore')
#スタート日を決める
start = "2017-1-1" #@param {type:"string"}
#①株価を取得する
start = start #株価を取得するスタート日を決める
end = datetime.date.today() #現在までの営業日(今日 =today)を取得する最終日とする
codelist = ["TSLA","NVDA","AAPL","MCD","CL=F","^TNX"]
# データ取得をdrからyfinanceへ変更。2021.7.4
yf.pdr_override() # <== that's all it takes :-)
# download dataframe
df = pdr.get_data_yahoo(codelist, start, end)["Adj Close"] .dropna()
df.rename(columns={"TSLA":'テスラ',
"NVDA":'エヌビディア',
"AAPL":"アップル",
"MCD":"マクドナルド",
"^TNX":'米国債(10年金利)',
"CL=F":"原油"},inplace=True)
#ここで実際の価格からパーセントの変化率に変換したのち、累積積を算出して実際の価格推移に変更します。
# dfp=(1+df.pct_change()).cumprod()
display(df.head().append(df.tail(2)))
# グラフ
df.plot(figsize=(8,6),fontsize=8,grid=True)
df.plot(figsize=(18,10),fontsize=14,subplots=True,layout=(4, 3),grid=True)


しかし、このままでは一単元当たりの株価が高いテスラに引っ張られたグラフですので、標準化して全体の様子を見てみます。
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
# https://www.dragonarrow.work/articles/204
# https://helve-blog.com/posts/python/scikit-learn-feature-scaling/#standardscaler%E3%81%AE%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89
df.loc[:,:] = scaler.fit_transform(df) # 全カラムを正規化
# 標準化後のデータをcsvで保存
df.to_csv("hoge.csv", encoding="utf-8-sig")
df
標準化後👇

display(df.describe())
df.plot.hist(figsize=(8,6),fontsize=8,grid=True)
#標準化後の値動きをプロット
df.plot(figsize=(8,6),fontsize=8,grid=True)
plt.show()
標準化後の基本統計量とヒストグラム👇


② 重回帰分析で『株価が予測できる❕❓』
では、ここからはこれらの銘柄の値動きから、テスラの株価を予測していきたいと思います('ω')ノ
手法は重回帰分析を使用します。
説明変数をテスラ以外の5銘柄(アップル、原油、マクドナルド、エヌビディア、米国債(10年金利))とします。
目的変数は当然テスラです。
import pandas as pd
import pprint
hoge = pd.read_csv("hoge.csv")
X_name = ['マクドナルド', '原油', '米国債(10年金利)','エヌビディア','アップル']
X = hoge[X_name]
Y = hoge["テスラ"]
pprint.pprint(X)
pprint.pprint(Y)
分割できました👇

from sklearn import linear_model
import statsmodels.api as sm
#重回帰分析モデルを作成
#statsmodelsを使用
#目的変数yが先なのに注意❕ .OLS(Y, X)
model = sm.OLS(Y, sm.add_constant(X))
result = model.fit()
print(result.summary())

出ました(●´ω`●)
テスラの株価の予測式です。
下記(2022.1.16日の株価)を使ってテスラの株価を計算します。
▲0.14×257.71
+▲0.04×83.76
+0.15×1.77
+0.35×269.42
+0.85×173.07
=テスラの株価!=202.24ドル
テスラ実際の株価=1,049ドル
んん~( ,,`・ω・´)ンンン?全然違う

再計算しても、テスラは1株=1,241ドルでした。( ,,`・ω・´)ンンン?
もう考えるの難儀なので、重回帰分析はここで終わります。
死にます(´;ω;`)ウッ…
③ データビジュアライズって、美しい(●´ω`●)
気を取り直して、ここからはデータビジュアライズです。
いちいちコード書かなくても、下記のコードだけでグラフをいじいじ出来ます( `ー´)ノ
import pywedge as pw
import seaborn as sns
# Pywedgeでデータの可視化
mc = pw.Pywedge_Charts(df,
c=None,
y="テスラ" )
chart = mc.make_charts()
こんな感じでグリグリできるジェ~~(; ・`д・´)


