初めに
この記事では以前に投稿した、AI(Transformer)を用いた株価予測を少し改良し、Streamlitというライブラリを用いて、Webアプリケーション化したものを作成したため、その紹介を行っています。
ローカル環境で動くアプリケーションとなりますのでお手元のPCで簡単に試すことができると思います。作成したアプリケーションはGitHubにアップしておりますので、ご自由にCloneしてお使いください。
https://github.com/YusukeOhnishi/Transformer_for_StockPrediction
起動の仕方
作成したアプリケーションはDockerコンテナ上で動くようにしておりますので、Dockerを使う環境をお持ちでしたらDocker fileからビルドすることも可能です。またローカル環境でも動作するようにしております。
ローカルで実行する場合はpythonのバージョンは3.11.3となりますので、動作しない場合はこちらのバージョンをお使いください。
Dockerコンテナでの起動
以下のコマンドを実行し、Dockerfileをbuild、runします。
docker build -t stock_pred .
docker run -p 8501:8501 stock_pred
Docker imageをpullしてbuildすることも可能です。
https://hub.docker.com/repository/docker/yusuke0614/stock_predict/general
その場合は以下のコマンドを実行してください。
docker pull yusuke0614/stock_predict:latest
docker run -p 8501:8501 yusuke0614/stock_predict
実行には時間がかかります(主にpythonのライブラリインストールの箇所)。実行が完了しましたら、ブラウザhttp://localhost:8501
にアクセスすることで、起動すること画面に遷移することができます。
ローカルでの起動
ローカルで実行する場合にはpythonライブラリのインストールを行い、その後streamlitを起動する必要があるため、以下のコマンドを実行します。
pip install torch==2.1.0+cpu -f https://download.pytorch.org/whl/torch_stable.html
pip install -r requirement.txt
streamlit run main.py
コマンドを実行すると画面上にURLが表示されますので、そちらにアクセスすると、画面に遷移することができます。
実行デモ
画面を起動後サイドバーに、株式コードとデータの取得開始日、終了日の3つを入力します。
株式コードはyahoo financeから取得する場合は以下のような値を入力してください。
サイドバーへの入力が完了すると、入力したデータに基づき株価に関するデータが表示されます。データは表形式とグラフ形式で出力されます。
グラフの下にあるpredictボタンを押すと、入力したデータに基づいてモデルの再学習が行われます。再学習が完了すると、グラフが表示され5営業日後までの予測結果が出力されます。以下の場合だと赤点線で示された箇所が予測された値になります。
(モデルは事前学習として、東証プライム市場に上場している株式データ全件を用いてパラメータをフィッティングさせています。具体的に用いた、株式リストはGitHubに記載しておりますのでご参照下さい。)
最後に
今回はStreamlitを用いたアプリケーションを開発してみました。
改善点等ありましたらご連絡いただけると幸いです。またGitHubに掲載しているコードについても、頂いたご意見をもとに改修しようと思います。