初心者がアップルの株価予測してみました

アップルの開始値、高値、安値から終値を予測してみました。


私の環境

Python3
Windows 10
Chrome
Google Colaboratory

データの中身

データ元:Yahoo!ファイナンス
会社名:アップル
期間:2022/11/1-2023/10/31

私のレベル

初心者

必要なライブラリのインポート

 #必要ライブラリのインポート 
from pandas_datareader import data as pdr
import yfinance as yf
yf.pdr_override()

ダウンロードしたときのデータの確認

 #変数dataにApple社 ('AAPL')の株価データを代入。期間はstart,endで指定
data = pdr.get_data_yahoo('AAPL', start='2022-11-01', end='2023-11-01')
data.head() #データ内容の確認 

カラムとして、以下の値が格納されていることがわかりました。

  • date:日付

  • open:始値

  • high:高値

  • low:安値

  • close:終値

説明変数始値(open)の取り出し

まずは始値を取り出します。

# 説明変数openの取り出し
X = data[['Open']]
X


1年間の振り幅が30ドルくらいあるようです。

目的変数終値(close)の取り出し

# 目的変数closeの取り出し
y = data['Close']
y

決定係数の算出

from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split

train_X, test_X, train_y, test_y = train_test_split(X, y, random_state=42)

model = LinearRegression()

model.fit(train_X, train_y)

# 決定係数の出力です
# 学習済みのモデルにscore()メソッドを適用し、引数に入力データと正解データ(実績データ)を入れるとその決定係数を出力します。
print(model.score(test_X, test_y))

今回は、SKlearnのLinearRegressionのモデルを使って分析をしていきます。
ここでは、モデルをインスタンス化して、訓練データを与えて決定係数の算出を行います。

決定係数
0.987585731276352

決定係数を高めるために①

決定係数を0.98以上にするために、説明変数を1つ追加してみることにしました。

説明変数 始値・高値

# 説明変数openの取り出し
X2 = data[['Open', 'High']]
X2


決定係数の算出

train_X, test_X, train_y, test_y = train_test_split(X2, y, random_state=42)

model = LinearRegression()

model.fit(train_X, train_y)

# 決定係数の出力です
# 学習済みのモデルにscore()メソッドを適用し、引数に入力データと正解データ(実績データ)を入れるとその決定係数を出力します。
print(model.score(test_X, test_y))

再度、先ほどの工程と同様に決定係数を算出したところスコアの向上が確認できました。

0.9956101183403692

決定係数を高めるために②

さらに決定係数を高めるために、始値、高値、安値の3つを説明変数にしてみます。

# 説明変数openの取り出し
X3 = data[['Open', 'High', 'Low']]
X3
train_X, test_X, train_y, test_y = train_test_split(X3, y, random_state=42)

model = LinearRegression()

model.fit(train_X, train_y)

# 決定係数の出力です
# 学習済みのモデルにscore()メソッドを適用し、引数に入力データと正解データ(実績データ)を入れるとその決定係数を出力します。
print(model.score(test_X, test_y))

再度、先ほどの工程と同様に決定係数を算出したところスコアの向上が確認できました。

決定係数
0.9978565347718737

まとめ

改めて各決定係数を比較してみます。

  • 説明変数が1つの場合
     0.987585731276352

  • 説明変数が2つの場合
     0.9956101183403692

  • 説明変数が3つの場合
     0.9978565347718737

ここからみて分かることが、説明変数を増やせば増やすほど決定係数が向上することがわかりました。
さらに向上させる場合は、訓練データに使う期間を延ばす出会ったり、データを標準化してみるなどの処理を加えることで可能かどうか検証が必要だと思いました。


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