こんな悩みにお答えします。
1. Aidemy
・・・AIエンジニアとしてのスキルを身に付けたい。その延長で就職、転職できたら嬉しい方におすすめ。
2.侍エンジニア塾
・・・基礎力と即戦力を身に付けられる、満足度No.1スクール
3. TechAcademy
・・・副業に向けてスキルアップしたい。フリーランスなどを目指している方向け。
4. AIジョブカレッジ
・・・コスパ良く、質の高い講座を受けたい方におすすめ。
本記事の信頼性
現在はデータサイエンティストとして大企業で活動しています。
1. 結論:アップル株は横ばい傾向が続く⁉
Pythonによるアップル株の株価予測結果と市場予想から以下の推測を立てます。
大幅な利上げの決定から株価が下落する可能性を含みつつも、直近では120~150ドル程度のレンジで推移するとの予測結果でした。
そして大手銀行によるレポートでは、景気回復から2022年度末には株価回復の可能性も示唆されています。
また別記事では、アップル株の目標価格は200ドルとの見方もあり、この先1~2年をかけ上昇していくことも多いにあり得るでしょう。
2. アップル(Apple)概要
主力商品であるiPhoneをはじめ、Apple WatchやAir Podsなどのウェアラブル・アクセサリも好調です。
2022年6月17日現在のアップルの企業概要は以下のとおりです。
企業名 | Apple Inc. |
業種 | 電話 & 携帯端末 |
時価総額(百万USD) | 2,191,959.00 |
売上高(百万USD) | 365,817.00 |
公式HP | https://www.apple.com/ |
アップル株は堅調に推移していることが分かります。ここ10年近くは米国株にとって良い時期であったため、今後どう動くかが一つポイントになってきます。
3. 株価予測
それではここから、PythonのProphetというライブラリを用いてアップル株の株価を予測していきます。
>>【Python】Prophetを用いて株価を予測する方法(初心者向け)
>>【Python】株価と金利の相関関係を可視化する方法
a. 実験設定
対象 | アップル(AAPL) |
期間 | 2016/1/1~2022/6/17(取得期間) 2016/1/1~テストデータの前月(学習) 2020年以降の1ヶ月間(テスト) |
モデル | Prophet(株価対数) |
パラメータ | |
評価指標 |
テストデータとしては、2020年1月から2022年5月まで1ヶ月ごとにずらして実験を行います。テストデータに合わせて、2016年からテストデータの前月までを学習データとします。
モデルはProphetを採用し、株価の対数を予測値とします。
変化点)として2019年以降のFOMCを考慮し、株価が動くポイントとして反映しています。
b. 実験結果
・
・
・
実験結果は以下のとおり。ここでは全実験を載せず、標準偏差を出したRMSLEと予測範囲内に正解データが入っている確率を記載しています。
予測時期 | RMSLE | 予測範囲内のデータ数/総データ数 |
2020年01月~2022年05月 | 375/629(59.6%) |
RMSLEの値からは一概に言えませんが、正解率は約60%と悪くはないものの決して高いとは言えない結果でした。やはりFOMCだけを考慮したモデルでは個別銘柄の予測は難しいことが分かります。
上図では、予測範囲内に半数以上データが入っていた期間を赤枠、半数未満の期間を青枠で示しています。
c. サンプルコード
サンプルコードは以下のとおりです。日時を変更しながら実験を行いました。
import pandas as pd
import pandas_datareader.data as web
import matplotlib.pyplot as plt
import numpy as np
from fbprophet import Prophet
from sklearn.metrics import mean_squared_log_error
################################################################
st = '2016/01/01'
ed = '2022/06/17'
st_train = '2016/01/01'
ed_train = '2022/04/30'
st_test = ed_train
ed_test = '2022/05/31'
period = 61 #予測日数
y_type =1 #0:オリジナルの株価、1:対数株価
changepoint_flag = 0 #0:changepointを考慮しない、1:FOMCの翌日
fomc_list = ['2019-01-31','2019-03-21','2019-05-02','2019-06-20',
'2019-08-01','2019-09-19','2019-11-01','2019-12-12',
'2020-01-30','2020-03-19','2020-04-30','2020-06-11',
'2020-07-30','2020-09-17','2020-11-06','2020-12-17',
'2021-01-28','2021-03-18', '2021-04-29','2021-06-17',
'2021-07-29','2021-09-23','2021-11-04','2021-12-16',
'2022-01-27','2022-03-17','2022-05-05']
################################################################
main_target = 'AAPL'
lst1= ['AAPL']
stooq = web.DataReader(lst1, 'yahoo',start=st,end=ed)
df = stooq[st_train:ed_train]
#①株価 or ②③株価の対数
if y_type == 1:
df = df.dropna(how='any')
df['Adj Close'] = np.log(df['Adj Close'])
df = df.reset_index()
df[['ds','y']] = df[['Date' ,'Adj Close']]
df = df[['ds','y']]
else:
df = df.reset_index()
df[['ds','y']] = df[['Date' ,'Adj Close']]
df = df[['ds','y']]
df_actual = stooq[st_test:ed_test]
if y_type == 1:
df_actual = df_actual.dropna(how='any')
df_actual['Adj Close'] = np.log(df_actual['Adj Close'])
df_actual = df_actual.reset_index()
df_actual[['ds','y']] = df_actual[['Date' ,'Adj Close']]
df_actual = df_actual[['ds','y']]
if y_type == 1:
stooq = stooq.dropna(how='any')
stooq['Adj Close'] = np.log(stooq['Adj Close'])
stooq = stooq.reset_index()
stooq[['ds','y']] = stooq[['Date' ,'Adj Close']]
stooq = stooq[['ds','y']]
#FOMC日程考慮
if changepoint_flag==0:
m = Prophet(weekly_seasonality=True)
elif changepoint_flag==1:
m = Prophet(weekly_seasonality=True,changepoints=fomc_list)
#モデル学習+予測
m.fit(df)
future = m.make_future_dataframe(periods=period)
forecast = m.predict(future)
plt.rcParams["font.size"] = "25"
fig, ax = plt.subplots(figsize=(20,10))
pd.plotting.register_matplotlib_converters()
m.plot(forecast,ax=ax);
ax.plot(stooq["ds"],stooq["y"],color="r")
plt.rcParams["font.size"] = "13.3"
ax.set_title(str(main_target))
m.plot_components(forecast);
stooq.columns = stooq.columns.droplevel(1)
ans = pd.merge(forecast, stooq, on="ds", how='inner')
ans.set_index("ds",inplace=True)
y_pred = ans[st_test:ed_test]["yhat"]
y_true = ans[st_test:ed_test]["y"]
if y_type == 1:
y_pred = np.exp(y_pred)
y_true = np.exp(y_true)
#評価指標1:RMSLE
RMSLE=np.sqrt(mean_squared_log_error (y_true, y_pred))
print("RMSLE:",RMSLE)
y_pred_lower = ans[st_test:ed_test]["yhat_lower"]
y_pred_upper = ans[st_test:ed_test]["yhat_upper"]
ans_judge = ans[st_test:ed_test].copy()
if y_type == 1:
y_pred_lower = np.exp(y_pred_lower)
y_pred_upper = np.exp(y_pred_upper)
#評価指標2
cnt = 0
for i in ans_judge.index:
if y_pred_lower[str(i)] <= y_true[str(i)] <= y_pred_upper[str(i)]:
cnt += 1
print("予測数:",len(ans_judge.index),"範囲内:",cnt)
4. 今後の展望
それでは今後のアップル株はどうなるでしょうか。
・2022年7~8月:下落懸念が大きくも横ばいを維持。120ドル半ばが下限になるか
・2023年3月:上手く回復の波に乗れれば、150ドルまでの回復もあり得る
a. 2022年7~8月の株価は?
まずは今回作成したモデルを用いて、この先2ヶ月間のアップルの株価を予測してみます。
結果は上図のとおり(縦軸は株価の対数になっています)。赤線が実際のアップル株価で、青線が株価予測値(薄い青色のエリアが予測範囲)です。
これを見るとアップル株は今後2ヶ月間横ばいに推移すると考えられます。
また、気になる予測範囲は
- 最小値:126.6 ドル
- 最大値:167.3 ドル
とのこと。
執筆時点のアップル株価が130ドル程度なので、そろそろ下限ということですね。。
この結果については、この先2ヶ月間で答え合わせをしてみてください。
b. 2022年度末の株価は?
それでは、2022年下期以降の株価の動きを予想していきましょう。ここではマクロな視点から考えていきます。
2022年6月のFOMCにて政策金利政策に大きな動きがありました。
米連邦準備理事会(FRB)は15日の米連邦公開市場委員会(FOMC)で通常の3倍となる0.75%の利上げを決めた。上げ幅は1994年11月以来、27年7カ月ぶりの大きさ。金融緩和の縮小を始めてからもインフレの加速がとまらず、事前に示唆した利上げペースを上回る強硬策に出た。
これを受け、米国株は一段と下落しており、今後も株価下振れを警戒していく必要があるでしょう。
一方で三菱UFJ信託銀行では、景気回復と共に増益基調は継続すると見られ、22年度末(2023年3月)には株価の回復が見込まれると想定されています。
S&P500の値動き想定は以下のとおりで、1.1~1.2倍程度に上昇することになります。
- 2022年9月:4,500ドル
- 2023年3月:4,750ドル
この予想に則ると、米国で最も時価総額が高くS&P500を牽引しているアップル株も140~150ドル程度まで押し上げても違和感はないでしょう。
\毎月の収支レポートと市場動向はこちら/
5. まとめ
今回は、
・2022年7~8月:下落懸念が大きくも横ばいを維持。120ドル半ばが下限になるか
・2023年3月:上手く回復の波に乗れれば、150ドルまでの回復もあり得る
という結果でした。
ただ、予測モデルの精度はまだ改善の余地がありますし、FRBの金利政策に影響を受けやすい中で不安定な時期が続くことは間違いありません。
したがって、RSIやPERの値にも注目しつつ、あなた自身のタイミングで購入を検討してみてはいかがでしょうか。
・【株式投資】Pythonでスクリーニングする方法
・【Python】【株式投資】TA-Libによるテクニカル指標算出方法(移動平均、ボリンジャーバンド、MACD、RSI)
・【初心者向け】20分でできる!Pythonで銘柄スクリーニング結果をスマホへ通知する方法
・【Python】銘柄スクリーニング結果を定期的に通知する方法(無料)【30分でできる!】
本ブログでは、株式やプログラミングに関する記事を投稿しています。
プログラミング(Python)を学びたい方におすすめの書籍やプログラミングスクール、おすすめの学習方法などをご紹介しておりますのでぜひご覧ください。
は、プログラミングスクールという方法がおすすめです。
私の一押しは『TechAcademy』です。
質問することですぐに分からないところをクリアにできますし、進捗をサポートしてくれるため確実に成長することができます。
無料相談を実施しているため、まずは話を聞いてあなたのスタイルに合っているかどうか確認してみるのが良いと思います。
コメント