1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RandomForestを用いたNVIDIA株価予測とリスク・リターン分析

1
Posted at

1. はじめに

本記事では、NVIDIA(NVDA)、Microsoft(MSFT)、S&P500(SPY)の株価データを取得し、株価推移分析、リターン分析、リスク・リターン分析を行いました。

さらに、RandomForestを用いてNVIDIAの翌営業日の終値を予測し、その予測精度をRMSEで評価しました。

2. 使用ライブラリ

  • pandas
  • numpy
  • matplotlib
  • yfinance
  • scikit-learn

3. 株価データ取得

yfinanceを利用して2020年1月から2025年5月までの株価データを取得しました。

対象銘柄は以下の3つです。

  • NVIDIA(NVDA)
  • Microsoft(MSFT)
  • S&P500 ETF(SPY)

4. 株価推移分析

取得した終値データを用いて株価推移を比較しました。

stock_price_comparison.png

グラフを見ると、NVIDIAは2023年以降に大きく上昇しており、MicrosoftやSPYを大きく上回る成長を示していることが分かります。

5. リターン分析

各銘柄の日次リターンを計算しました。

returns = close_df.pct_change().dropna()

日次リターンを利用することで、価格そのものではなく変化率に着目した分析が可能になります。

6. リスク・リターン分析

平均リターンと標準偏差(リスク)を算出しました。

risk_return_analysis.png

分析結果から、NVIDIAは最も高いリターンを示した一方で、リスクも最も大きいことが分かりました。

一方、SPYはリターンは低いもののリスクも低く、安定した値動きを示していました。

7. RandomForestによる株価予測

7.1 学習データとテストデータ

モデルの学習には2020年1月から2025年5月までのNVIDIA株価データを使用しました。

データセットは学習用データとテスト用データに分割し、学習データでモデルを構築した後、未知のデータであるテストデータを用いて予測性能を評価しました。

X_train, X_test, y_train, y_test = train_test_split(
X,
y,
test_size=0.2,
random_state=42
)

今回はデータの80%を学習用、20%をテスト用として使用しています。

7.2 RandomForestの設定

株価予測にはRandomForestRegressorを利用しました。

from sklearn.ensemble import RandomForestRegressor

model = RandomForestRegressor(
n_estimators=100,
random_state=42
)

RandomForestは複数の決定木を組み合わせるアンサンブル学習手法であり、過学習を抑えながら高い予測性能を発揮することが特徴です。

7.3 使用した特徴量

今回のモデルでは以下の特徴量を使用しました。

Open(始値)
High(高値)
Low(安値)
Volume(出来高)

これらの市場情報から翌営業日の終値を予測します。

features = ["Open", "High", "Low", "Volume"]
X = nvda[features]

nvda["Target"] = nvda["Close"].shift(-1)
y = nvda["Target"]

Targetには翌営業日の終値を設定しています。

7.4 特徴量重要度

RandomForestでは各特徴量が予測にどれだけ貢献したかを確認できます。

importance = pd.Series(
model.feature_importances_,
index=X.columns
).sort_values(ascending=False)

print(importance)

特徴量重要度を確認することで、株価予測においてどの情報が重要であるかを把握できます。

8. RMSE評価

モデルの予測精度をRMSE(Root Mean Squared Error:二乗平均平方根誤差)で評価しました。

今回の結果は以下の通りでした。

RMSE = 2.4242

RMSEは予測値と実測値の誤差を表す指標であり、値が小さいほど予測精度が高いことを意味します。

今回の結果ではRMSEが約2.42となり、予測値は実際の株価に比較的近い値を示していることが確認できました。

ただし、株価予測は市場環境やニュースなど多くの外部要因の影響を受けるため、RMSEだけでモデルの有効性を判断することはできません。

今後はMAEやR²スコアなどの評価指標も併用し、より詳細な性能評価を行う予定です。

9. 予測結果

実際の株価と予測値を比較しました。

prediction_result.png

グラフを見ると、予測値は実際の株価の動きを概ね捉えていることが確認できました。

10. まとめ

本記事では、NVIDIA(NVDA)、Microsoft(MSFT)、S&P500 ETF(SPY)の株価データを用いて、

株価データ取得
株価推移分析
リターン分析
リスク・リターン分析
RandomForestによる翌営業日終値予測
RMSEによるモデル評価

を実施しました。

分析結果から、NVIDIAは高いリターンを示す一方でリスクも大きいことが確認できました。

また、RandomForestを利用することで株価の傾向をある程度予測できることを確認できました。

今後は以下の改善を検討しています。

移動平均線などのテクニカル指標の追加
特徴量エンジニアリング
ハイパーパラメータチューニング
XGBoostやLightGBMとの比較
時系列分析モデルとの比較

これらを実施することで、さらなる予測精度向上を目指したいと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?