最終成果物として作成したレポートである、AIによる株価予測の実践例を紹介します。PythonとFacebook(現Meta)が開発した時系列予測ライブラリ「Prophet」を用いて、Apple社の株価を予測し、さらに財務指標との関係性を探りました。
このレポートはgoogle ドキュメントで作成し提出したのを、少し体裁整えてリライトしたものです。(内容はほぼそのまま)
1.はじめに
私は電気メーカーを定年退職し、セカンドキャリアに向けたリスキリングに取り組んでいます。在職中はハードウェア開発を中心に、要件定義やシステム設計、評価・保守まで幅広くモノづくりに関わってきましたが、ソフトウェア開発の実装経験はほとんどありませんでした。
今後はこれまでとは異なる領域での活動に挑戦したいと考え、データ分析・AIスキルの習得を目指してAidemyのデータ分析講座を受講しました。本記事はその最終課題として作成した成果物をもとに構成しています。
2.概要 ~この記事でわかること・対象読者
- 対象読者:
- AIやPython、データ分析に興味はあるが知識はまだ浅い方
- リスキリングに挑戦したい方
- AIのユースケースを探している方
- この記事でわかること:
- 株価予測AIの基本的な仕組みと実装例
- Prophetを使った時系列予測の流れ
- 分析の深掘りや発展のヒント
- この記事で扱わないこと:
- 株価予想の正否や投資助言
- 財務指標の影響についての断定的結論
3.目的 ~株価予測AIの目的とテーマ設定
本プロジェクトでは、Apple社(AAPL)の株価を対象に、以下の2つの目的を設定しました:
- Prophetを用いた株価予測モデルの試作
- 財務指標が株価に与える影響の可視化と考察
使用した主な財務指標は以下の通りです:
- PER(株価収益率)
- PBR(株価純資産倍率)
- ROE(自己資本利益率)
- 配当利回り
- 配当性向
- 自己資本比率
なお、筆者は現在、DX(IT+AI+データサイエンス)とFP(ファイナンシャルプランニング)の両面からリスキリングを進めており、本テーマはその統合的な実践例として位置づけています。
4.実行環境と使用ライブラリ
分析はGoogle Colaboratory上で実施し、以下のPythonライブラリを使用しました:
- Python 3.12.11
- Google Colaboratory
- 使用ライブラリ: yfinance, prophet, pandas, matplotlib, scikit-learn, shap, japanize-matplotlib
yfinance:株価データの取得prophet:時系列予測モデルpandas:データ処理matplotlib:グラフ描画scikit-learn:回帰分析shap:特徴量の重要度可視化japanize-matplotlib:日本語フォント対応
5.時系列分析、Prophetモデルについて
時系列分析は、時間の経過とともに変化するデータを解析し、将来の値を予測する手法です。 本レポートでは、Apple(AAPL)の株価予測にFacebook(現Meta)が開発した時系列予測ライブラリ「Prophet」を使用しました。 Prophetは2017年に公開されたモデルで、少ない設定で予測が可能なため、学習用サンプルとして適しています。 今回は、株価の長期的な傾向や季節的なパターンを簡単に可視化できる点を評価し、採用しました。 本レポートではモデル構造の詳細分析は行わず、あくまで株価予測の実施例として利用しています。
6.結果
準備
colabでグラフを表示する際に日本語が□に化けるので最初に日本語をインストール
!pip install japanize-matplotlib
import japanize_matplotlib
※最初はローマ字で対応していたが、調べる中で日本語表示の対応方法を理解したため、採用した
6.1 株価予測(Prophet)
ソースコードは末尾に記載
今回、Prophetモデル以外にも他の時系列分析であるSARIMAモデルや、回帰、ディープラーニングも試してみたが、一番それっぽい結果になったモデルを報告に採用した。
Prophetや回帰モデルは、過去の平均的な上昇傾向をそのまま延長するような予測結果となった。(人が実績のグラフを見て未来を延長した線をイメージすると同じ)しかし、これは選出したモデルや説明変数(データ)をかなり適当に選んでいて、精度に関する深堀は行ってないためと思う。(今回は時間がなくまずは試してみるという趣旨と考え断念した。)
特に、ディープラーニングでは予実の乖離が大きくなり、予測グラフもほぼ一直線になるなど納得しにくい結果となった。その結果、ディープラーニングを使う場合の説明変数の選び方が難しく、分析する課題の複雑さによって無理にディープラーニングを使用せずに適切なモデルを使用するべきであることを実感する結果になった。
6.2 財務指標分析(Lasso回帰)
ソースコードは末尾に記載
本テーマを試そうと思ったきっかけは、ディープラーニングが複数の説明変数から重要な特徴量を自ら見つけるという特性を試してみたかったからである。個別銘柄の株価水準を表す指標として株価収益率(PER)、自己資本利益率(ROE)、株価純資産倍率(PBR)、配当利回り、配当性向、自己資本率があげられるが、実際株価にどの程度影響しているのかという観点で実感する機会が少ないので、このような課題に対する分析に有効ではないかと考えた。
しかし前述の通り、そもそも株価予想のモデルでディープラーニングがまったく期待し た精度にならず、本来はモデル適正化が必要なのだろうが、時間もないので今回は深堀を断念した(実際、やっては見たが結果はLasso回帰の結果とは全く違っていた)
そこで、このような分析に適した機械学習を調べたところLasso解析が良さそうだったため採用した。株価純資産倍率が一番となりそれらしい結果となったが、L1正則化によ り重要ではない説明変数はゼロとなり、重要度の低い要素について(どの程度低いかなど)解釈が難しい結果となった。

6.3 財務指標分析(ランダムフォレスト+SHAP)
ソースコードは末尾に記載
Lasso解析でPBRやROE以外の要素がゼロになったのでランダムフォレストでの分析を試みた。結果、自己資本比率が2番目になったが株価純資産倍率(PBR)が1位となる結果は同じだった。
分析手法により見方も変わるので結果にぶれがあるが、今回はデータ選択や分析モデル など手法はカット&トライ的に選んだため、この観点での深堀は不十分である。重要度の可視化についても、データの事前処理や相関分析などを事前に調査し、適切なモデルを使用するなど設計が必要であると感じた。

次のページはSHAP値による分析を載せている。影響方向と強さのグラフはなかなか面白く、左側がマイナス方向に、右側側がプラス方向への影響度を表し、色が強さを示している(赤●が高く、青●が低い)。 PBRはプラス側に影響度が高い●があるので結果として1位になっているが、マイナス方向にも●があり、色を考慮しないと左右対称な結果に見える(色が違うので強さが違うが)
今時点では、正確にグラフの結果を読み解くことはできないが、この様に可視化されたデータからは次の疑問や課題が生まれてくることが体感でき、分析の深堀や分析結果を展開して新たな課題を解決するといった使い方ができそうだと感じた。
なお、FPの観点からは「成長性(PBR・ROE)」と「財務健全性(自己資本比率)」が重視となり、短期的な割安感(PER)や配当利回りよりも、中長期的な企業価値の伸びと安全性が評価され株価に影響している と(仮に)分析することができる。


7. 今後の課題
- ディープラーニングの適用性検証
- データ拡充と特徴量の再考
- 評価指標の厳密化
8. 終わりに
今回の分析を通じて、Prophetによる株価予測と財務指標の影響可視化を一通り体験できました。 セカンドキャリアとしてプログラマーを目指すわけではありませんが、AI活用のハードルを下げ、FP領域などでの普及を後押しできるような役割を担いたいと考えています。
(参考)報告以外に試してみたテーマ 猛暑日予想
今年の異常な暑さを分析するために、気象庁から仙台の気象データを入手し30℃/月となる日数を予想するモデルをSARIMAモデルで実施
(課題) 日別データは月単位での取得なり、過去数年のデータをWebから拾うのは大変で少ないデータでwebスクレイピングも試してみたが短期的な予想はあまり面白い結果にならなかったので断念した。説明変数に前年度の最高気温以外に最低気温、雨量、雪量、台風の出現数などを入れたら異常気象(猛暑日数の異常増加)への関連性などが見えるのではと夢を描いたが、短時間でやるのは無理そうなので断念した。
以上がレポートの本文です。
関連記事
・退職後のリスキリング体験記①|専門実践教育訓練給付金×Aidemyでデータ分析を学ぶ | cafe future blend
・ソースコードをすべて公開してます
リスキリング体験記③|株価予測AI×財務分析|Python×Prophetで学ぶAidemy成果物と実践コード | cafe future blend


コメント