本記事では、An AI-oriented Quantitative Investment PlatformであるQlibを使って株価の予測手順を紹介します。
Qlibとは
QlibはMicrosoftが開発するAI指向定量的投資プラットフォーム(AI-oriented quantitative investment
platform)です。
このプラットフォームには、データ処理、モデルのトレーニング、モデルの評価等、機械学習パイプラインに必要な処理は全て含まれています。
そしてアルファシーク、リスクモデリング、ポートフォリオ最適化、注文執行など、定量的投資全体をカバーしています。
ざっくりと言えば、株価予測に関する汎用的な処理のほとんどを有するAIプラットフォームと言えそうです。
Qlibの導入手順
セットアップ
それでは早速、開発環境にQlibをセットアップしていきます。
動作確認は下記の環境で行っています。
OS: Ubuntu 18.04.3 LTS
GPU: GeForce GTX 1080
なお、このデモはPythonで実装しています。
Pythonの実装に不安がある方、Pythonを使った機械学習について詳しく勉強したい方は、以下の書籍やオンライン講座などがおすすめです。
おすすめの書籍
[初心者向け] Pythonで機械学習を始めるまでに読んだおすすめ書籍一覧
本記事では、現役機械学習エンジニアとして働く筆者が実際に読んだ書籍の中でおすすめの書籍をレベル別に紹介しています。
おすすめのオンライン講座
[初心者向け] 機械学習がゼロから分かるおすすめオンライン講座
本記事では、機械学習エンジニアとして働く筆者が、AI・機械学習をまったく知らない方でも取り組みやすいおすすめのオンライン講座をご紹介しています。
それでは、Qlibをインストールしていきます。他の機械学習環境に影響を与えないためにMinicondaの仮想環境上に構築していきます。Minicondaのインストール手順は公式ドキュメントをご参照ください。
以上で、セットアップは完了です。
データ準備(Data Preparation)
次に、データを準備していきます。
なお--region
はcn
,us
,in
です。
それ以外のデータを使う場合は、自ら用意する必要があります。
このうち最後のyahoo/collector.py
は取得先のネットワークがあまり安定していないようなので
私見では非推奨です。(出典:
https://github.com/microsoft/qlib/issues/613)
株価予測モデルの学習(トレーニング)
今回はLightGBMで予測を行っていきます。
先ほど用意した学習用データを使ってモデルを生成します。
学習させたモデルの分析結果は以下の通りです。
次に視覚化した予測結果を出力します。
examples/workflow_by_code.ipynb
を実行します。
モデルのトレーニング、モデルの評価、視覚化などが非常に簡単に実行できます。
トラブルシューティング集
Requirement.parse('pyparsing<3,>=2.0.2')
エラー詳細
pkg_resources.ContextualVersionConflict: (pyparsing 3.0.4
(/home/k140411335/miniconda3/envs/QLIB/lib/python3.7/site-packages/pyparsing-3.0.4-py3.7.egg),
Requirement.parse('pyparsing<3,>=2.0.2'), {'packaging'})
解決方法
pip3 install pyparsing=="2.4.7"
ModuleNotFoundError: No module named 'torch'
解決方法
conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2
cudatoolkit=10.1 -c pytorch
ValueError: unsupported pickle protocol: 5
解決方法
pip3 install pickle5
でpickle5をインストールした後に、
QLIB/lib/python3.7/site-packages/pandas-1.3.4-py3.7-linux-x86_64.egg/pandas/io/pickle.py
の
import pickle
をimport pickle5 as pickle
に変更
参考:
Python 3.7 Error: Unsupported Pickle Protocol 5
ImportError: IProgress not found. Please update jupyter and ipywidgets.
解決方法
conda install -y -c conda-forge ipywidgets
jupyter nbextension enable --py widgetsnbextension
"No module named 'pandas.core.sparse.series'"
解決方法
pip install -U pandas
まとめ
本記事では、QLibで株価予測を行う方法を紹介しました。
本記事ではデフォルトで用意されている中国のデータを使って予測しましたが
日本のデータを用意すれば同様に日本株の予測も可能です。
また本記事では、機械学習を動かすことにフォーカスしてご紹介しました。
もう少し学術的に体系立てて学びたいという方には以下の書籍などがお勧めです。ぜひご一読下さい。
また動かせるだけから理解して応用できるエンジニアの足掛かりに下記のUdemyなどもお勧めです。
参考文献
1. 論文 - Qlib: An AI-oriented Quantitative Investment Platform
2. 論文 - Learning Multiple Stock Trading Patterns with Temporal Routing Adaptor and Optimal Transport
0 件のコメント :
コメントを投稿