株を予測売買するMLBotを作るとき、どの機械学習モデルを選択するのかが非常に重要になる。
私が最初に機械学習を勉強するために調べ回ったときは、投資系のコンペティションで勾配ブースティングが使われることが多いという情報があったので、動作が軽量なLightGBMから始めることにした。その後、いまいち良い結果を得られなかったので再び調べてみたところ、NNモデルも良いという話を耳にして現在はPytorchを触っている。
どうやら決定木で閾値が固定されるLGBMに対し、NNは連続関数の近似で出力が滑らかになるかららしい…全く分からない。そこで、機械学習モデルについて調べ直してみると分類体系の理解がかなり浅かったため、MLBot開発は機械学習モデルの概要把握というゼロベースからスタートすることにした。
MLモデルの分類
AIにアドバイスを貰いながらMLモデルを大まかに分類すると次のようになる。
| 手法 | ライブラリ | 系統 | モデル名 |
|---|---|---|---|
| LGBM | LightGBM | 勾配ブースティング | LGBM |
| XGBoost | XGBoost | 勾配ブースティング | XGBoost |
| CatBoost | CatBoost | 勾配ブースティング | CatBoost |
| RandomForest | scikit-learn | アンサンブル | RandomForest |
| SVM | scikit-learn | カーネル法 | SVM |
| GaussianProcess | scikit-learn、GPyTorch | カーネル法 | GaussianProcess |
| ARIMA | statsmodels | 時系列モデル | ARIMA、SARIMA、VARIMA |
| Prophet | Prophet | 時系列モデル | Prophet |
| MLP | PyTorch、TensorFlow/Keras | NNモデル | MLP |
| LSTM | PyTorch、TensorFlow/Keras | NNモデル | LSTM |
| GRU | PyTorch、TensorFlow/Keras | NNモデル | GRU |
| CNN | PyTorch、TensorFlow/Keras | NNモデル | CNN |
| Transformer | PyTorch、TensorFlow/Keras | NNモデル | Transformer |
| TFT | PyTorch Forecasting、neuralforecast | NNモデル | TFT |
| N-BEATS | PyTorch Forecasting、neuralforecast | NNモデル | N-BEATS |
| GPT | OpenAI API | LLM | GPT-4o etc. |
| LLaMA | HuggingFace | LLM | LLaMA3 etc. |
| Claude | Anthropic API | LLM | Claude 3.7 etc. |
| ローカルLLM | Ollama | LLM | LLaMA3・Mistral・Gemma etc. |
調べてみて分かったことは、NNモデルというのはPytorchを使ったMLモデルだけを指すものではないらしい。そして、Pytorchだけでも複数の手法でモデル構築できることが分かった。また、勉強がてら作っているモデルはMLPであるということも判明した。
まとめ
リストの中で株の売買に向いているMLモデルは何かAIに聞いてみると、やはり勾配ブースティング系になるらしい。次点はMLPで、テキスト系特徴量を扱う場合はLLMになるようだ。
軸としてはLightGBM・XGBoost・CatBoostの勾配ブースティング系を使い、比較対象としてPyTorch MLPでのNNモデルを試すのが良さそうだ。また、特徴量作成や判断補助としてLLMを導入することも視野に入れた方が良いだろう。

コメント