FreqAI-LSTM:Freqtradeユーザー向けのPyTorch LSTMモデル実装
はじめに
Freqtradeを利用している方の中には、標準的なインジケータベースの戦略を超えて機械学習モデルを組み込みたいと考える方も多いはずです。そのための仕組みが FreqAI であり、任意のMLモデルを差し込んで、学習・再学習・推論を運用できるようになっています。
今回紹介する FreqAI-LSTM (Netanelshoshan/freqAI-LSTM) は、まさにその枠組みに「LSTM回帰モデル」を差し込むためのオープンソースです。FreqAIのフォークではなく、独自のPyTorchモデルとサンプル戦略の実装集と位置づけられます。
このリポジトリの概要
目的
FreqAIで利用可能なPyTorchベースのLSTM回帰器を提供
主な特徴
- LSTMによる時系列予測(窓サイズ・層数・隠れ次元など柔軟に設定可能)
- 多因子ターゲット生成(複数インジケータをz-score化→重み付け→スコア集約)
- レジームフィルタ(強気/弱気/中立)やボラティリティ調整の例示
- サンプル戦略・サンプルconfigを同梱
ライセンス
MIT License
技術的な中身
モデル構成
| 要素 | 説明 |
|---|---|
| LSTM層 | 複数層のLSTMで時系列依存を捉える |
| 正則化 | BatchNorm、Dropout、AlphaDropoutを利用 |
| 出力層 | 全結合層 + ReLU活性化 |
| ハイパーパラメータ |
config.jsonから柔軟に設定可能 |
設定可能なハイパーパラメータ
-
num_lstm_layers: LSTM層数 -
hidden_dim: 隠れ次元数 -
dropout_percent: ドロップアウト率 -
window_size: 時系列窓サイズ -
batch_size: バッチサイズ -
n_epochs: エポック数
導入手順(コマンド例付き)
以下は簡単な導入フローです:
1. リポジトリのクローン
git clone https://github.com/Netanelshoshan/freqAI-LSTM.git
cd freqAI-LSTM
2. モデル・トレーナーを配置
cp torch/BasePyTorchModel.py freqtrade/freqai/base_models/
cp torch/PyTorchLSTMModel.py freqtrade/freqai/torch/
cp torch/PyTorchModelTrainer.py freqtrade/freqai/torch/
cp torch/PyTorchLSTMRegressor.py user_data/freqaimodels/
3. 戦略・configをコピー
cp strategies/freqai_LSTM_strategy.py user_data/strategies/
cp config-example.json user_data/config-lstm.json
4. データダウンロード
freqtrade download-data --config user_data/config-lstm.json --timeframes 1h 4h
5. 学習
freqtrade freqai-train --config user_data/config-lstm.json
6. バックテスト
freqtrade backtesting --config user_data/config-lstm.json -s freqai_LSTM_strategy
公式FreqAIとの関係
FreqAIは「モデル運用のフレームワーク」であり、アルゴリズム本体はユーザーが実装します。本リポジトリはその実装例にあたり、
- FreqAIのコアではなく
- 外部からプラグイン的に利用できるLSTM実装
として機能します。つまり「FreqAI派生」ではなく「FreqAI対応モデル集」と表現するのが正確です。
運用上の注意点
PyTorch移行の背景
TensorFlow版で最新Freqtrade (2024.02以降) と相性問題が出たため、PyTorchへ移行。
タイムフレーム制限
既定の config_validation.py が5m足までに制限しており、修正が必要な場合がある。
過学習リスク
小規模データで高精度を出せるが、実運用ではOOS検証やウォークフォワードが必須。
再現性の確保
シード固定、DataLoaderのシャッフル制御、検証データ分割に注意。
機械学習モデルは過学習しやすいため、必ず十分な検証期間でのテストを行ってください。
既存戦略との比較検証方法
LSTMを導入した場合の効果を確認するには、既存のインジケータベース戦略との比較が重要です。以下の流れで比較を行うとよいでしょう。
1. ベースライン戦略を選定
例:単純なEMAクロスオーバー戦略
2. 同一データセットで検証
# ベースライン戦略
freqtrade backtesting --config user_data/config-baseline.json -s EmaCrossStrategy
# LSTM戦略
freqtrade backtesting --config user_data/config-lstm.json -s freqai_LSTM_strategy
3. 評価指標を比較
以下の指標で両戦略を比較します:
- 勝率 (Win Rate)
- シャープレシオ (Sharpe Ratio)
- プロフィットファクター (Profit Factor)
- ドローダウン (Max Drawdown)
4. OOS検証(ウォークフォワード)
堅牢性を確認するため、以下の設定で検証:
- 学習期間: 2年
- 検証期間: 半年
- これをずらしながら反復
5. 可視化
freqtrade plot-dataframe --config user_data/config-lstm.json -s freqai_LSTM_strategy
freqtrade plot-dataframe を用いて、予測シグナルと価格の関係をグラフ化。
どんな人に向いているか?
このツールは以下のような方におすすめです:
推奨する人
- Freqtradeユーザーで、FreqAIを使ってディープラーニング(LSTM)を試したい人
- 既存のインジケータや特徴量設計をそのまま活かしつつ、予測モデルを差し替えてみたい人
- 多因子スコアリング手法(インジケータを集約してターゲット生成)を参考にしたい人
注意が必要な人
- 機械学習の基礎知識がない方(過学習やバイアスの概念理解が重要)
- すぐに利益を出したい方(十分な検証期間が必要)
まとめ
FreqAI-LSTMは、Freqtrade環境でLSTMを気軽に試せる実装例です。単なるサンプルではなく、
- 実際に運用を見据えた構造
- 多因子ターゲット生成の工夫
- PyTorch移行でのGPU対応
といった要素が揃っています。
Freqtradeユーザーにとって「機械学習で一歩先へ」進む入り口として、チェックしてみる価値のあるリポジトリと言えるでしょう。
関連リンク
タグ
#Freqtrade #FreqAI #LSTM #PyTorch #機械学習 #自動売買 #暗号資産 #時系列予測