株価予測 Prophet

株価予測

株価の予測を行ってみましょう。

Prophetを使用して株価の未来予測を行うことが可能です。

以下は、仮想の株価データを用いてProphetを使った株価予測の例です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import pandas as pd
import numpy as np
from prophet import Prophet
import matplotlib.pyplot as plt

# ランダムな株価データを生成
np.random.seed(42)
dates = pd.date_range(start='2023-01-01', periods=365, freq='D')
prices = np.cumsum(np.random.randn(365)) + 100 # ランダムな価格変動

data = {
'ds': dates,
'y': prices
}

df = pd.DataFrame(data)

# Prophetモデルの作成と学習
model = Prophet()
model.fit(df)

# 予測用データの作成
future = model.make_future_dataframe(periods=30) # 30日間の予測
forecast = model.predict(future)

# 予測結果をグラフ化
fig = model.plot(forecast)
plt.xlabel('Date')
plt.ylabel('Stock Price')
plt.title('Random Stock Price Forecast')
plt.show()

この例では、乱数を使って生成したランダムな価格変動を持つ株価データを作成し、Prophetモデルを使って未来30日間の株価を予測しています。

生成されたランダムなデータを用いているため、実際の株価とは関係ありませんが、Prophetがこのようなデータでも時系列の予測を行うことができることを示しています。

ソースコード解説

このソースコードは、PythonのPandas、NumPy、Prophet(Facebookが提供する時系列データの予測ライブラリ)、Matplotlibを使用して、ランダムな株価データを生成し、Prophetモデルを使って未来の株価を予測し、その結果をグラフ化しています。

1. ランダムな株価データの生成

1
2
3
4
5
6
7
8
9
10
np.random.seed(42)
dates = pd.date_range(start='2023-01-01', periods=365, freq='D')
prices = np.cumsum(np.random.randn(365)) + 100 # ランダムな価格変動

data = {
'ds': dates,
'y': prices
}

df = pd.DataFrame(data)

この部分では、np.random.seed(42)で乱数のシードを設定し、365日分の日付とランダムな株価のデータを生成しています。
これらのデータを'ds'(日付)と'y'(株価)のカラムを持つPandasのDataFrameに格納しています。

2. Prophetモデルの作成と学習

1
2
model = Prophet()
model.fit(df)

Prophetのモデルを作成し、fit()メソッドを使ってデータを学習させています。
Prophetは時系列データの予測に特化したモデルで、ここでは与えられた株価データを元にモデルを構築しています。

3. 予測用データの作成と予測

1
2
future = model.make_future_dataframe(periods=30)  # 30日間の予測
forecast = model.predict(future)

make_future_dataframe()メソッドを使って、元のデータから未来の30日間の日付を含むDataFrameを作成しています。
それを使ってpredict()メソッドで予測を行い、forecastに未来の予測結果を格納しています。

4. 予測結果をグラフ化

1
2
3
4
5
fig = model.plot(forecast)
plt.xlabel('Date')
plt.ylabel('Stock Price')
plt.title('Random Stock Price Forecast')
plt.show()

最後の部分では、plot()メソッドを使って予測結果をグラフ化しています。
横軸には日付縦軸には株価が表示され、予測されたデータに対する実際のデータと予測の境界が示されています。
これにより、モデルが学習した過去のデータに対する予測未来の予測の推移が視覚化されます。

結果解説

このグラフは、Prophetによる株価の予測を示しています。
横軸は日付を示し、縦軸は株価を表しています。

以下はグラフの要素についての詳細です。

1. 黒色の点:

グラフ上の黒色の点は、実際の株価データを表しています。
過去の実際のデータポイントがこの線上にプロットされています。

2. 青色の線:

青色の線は、過去の実際のデータポイントに対するProphetモデルの適合を表しています。
点線が黒色の点に密着しているほど、モデルが過去のデータをよく予測できていることを示します。

3. 青色の領域:

青色の線の周囲には、淡い青色の領域があります。
これは予測区間を表しており、将来の株価の変動がこの領域内に含まれる可能性を示しています。
通常、時間が経つにつれてこの領域が広がる傾向があります。

このグラフ全体を通じて、過去の実際のデータに対するモデルの適合度未来の予測値が視覚的に表現されています。

モデルが過去のデータに適合し、予測区間が示されていることで、将来の株価の予測に対する確信度不確実性を示すことができます。