PP. 株価予想(時系列データ予測)-9月(最終版)
0.前回の予想と答え合わせ
前回の予想は以下のサイトをご覧ください。
今回は答え合わせをしてみたいと思います。
1) 1487 : 上場インデックスファンド米国債券(為替ヘッジあり)
予想:下落傾向 (予想値:12607/13165 4%減少)
結果:13,585 3%上昇
下落予想に対して上昇しているため、予想は外れました。
2) 1489 : NEXT FUNDS 日経平均高配当株50指数連動型上場投信
予想:上昇傾向 (予想値:2503/2318 8%上昇)
結果:2,237 4%減少
上昇予想に対して減少しているため、予想は外れました。
3) 1540 : 三菱UFJ 純金上場信託(現物国内保管型)
予想:上昇傾向 (予想値:11527/11065 4%上昇)
結果:10,860 2%減少
上昇予想に対して減少しているため、予想は外れました。
4) 1678 : NEXT FUNDS インド株式指数・Nifty 50連動型上場投信
予想:上昇傾向 (予想値:412/388 6%上昇)
結果:362.3 7%減少
上昇予想に対して大きく減少しているため、予想は外れました。
5) 2558 : MAXIS米国株式(S&P500)上場投信
予想:上昇傾向 (予想値:26022/23935 9%上昇)
結果:22,760 5%減少
上昇予想に対して減少しているため、予想は外れました。
1.乖離した理由と考察
前回は2通り予想しました。
〇 データ通りのケース
日本株と米国株が大きく上昇し、インド株や金も上昇すると予想されました。米国債が下がっているので、米国金利の上昇を予想しています。
この条件が成立するケースを考えると、米国の景気が良いと判断され、利下げはされないと予想されるため金利はそのまま維持され、日銀も利上げできないと思われ円安傾向に動くような流れかなと思います。
〇 逆のケース
逆に動くとより大きく動くことになるかもしれないと思います。
その場合は米国金利が低下するが、株や金の価格が下落する傾向なので、円高方向に進むケースだと思います。
(米国がリセッションに進みそうだと市場が思ったケースかなと思います。)
今回の動きは比較的「逆のケース」に近い動きだと思います。
見るべきデータは金利が高止まりし、厄介なインフレと戦っていた1970年代も含むデータも必要かもしれません。
ただ自分が使用しているInvesting.comではそこまで昔の株価データをcsvファイルで落とせませんでした。
そのため今回の手法によるデータ解析を諦めようと思います。
最新の記事をテキストマイニングして、感情分析したほうが日々の株価予想はしやすいかもしれません。
最後に使用していたソースコードを参考までに記載しておきます。
よかったら参考にしてみてください。
2.調査方法とソースコード
Investing.com にて株価をcsvファイルで取得し、Google colab にてPythonを使用して解析ました。
ソースコードは以下の通りです。
〇 Google ドライブ上にcsvファイルを入れていたので、Google colab でアクセスできるようにマウント
from google.colab import drive
drive.mount('/content/drive')
〇 今回の解析に使用したneuralprophetのインストール
!pip install neuralprophet
〇 解析用のライブラリの読み込みとファイルの読み込み
(例.2558.csvファイルがStock_AIフォルダ配下にある場合)
from neuralprophet import NeuralProphet as Prophet
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('/content/drive/My Drive/Stock_AI/2558.csv',skiprows=1)
df2=df.set_axis(['date','price','start','high','low','yield','ratio'],axis=1)
df2.dtypes
〇 データ処理の前処理(並び替えや「,」の変換等)
dates=pd.to_datetime(df2['date'])
#1678ではcut
for i,val in enumerate(df2['price']):
val=val.replace(',','')
val=val.replace('.0','')
df2['price'][i]=float(val)
#--
prices=df2['price']
dates_sort=dates[::-1]
prices_sort=prices[::-1]
df=pd.DataFrame({'ds':dates_sort,'y':prices_sort})
df.tail()
〇 データの機械学習の実行
m = Prophet()
m.fit(df)
〇 予想値の出力
future = m.make_future_dataframe(df,periods=30)
forecast = m.predict(future)
forecast.tail(30)
〇 予想値のグラフ出力
m.plot(forecast)