FreqtradeのAI機械学習モジュール「FreqAI」完全ガイド
はじめに
暗号資産や株式の自動売買に興味がある方なら、オープンソースの自動売買ボット「Freqtrade」をご存知かもしれません。その Freqtrade に統合された機械学習モジュール「FreqAI」について、詳細な調査を行いましたので、その結果を共有したいと思います。
FreqAI は、テクニカル指標などの入力シグナルから市場予測を行うための機械学習モデルの訓練や推論を、自動化・高度化するために設計されたフレームワークです。簡単に言えば、リアルタイムの価格データに対して強力なMLライブラリを手軽に適用できるサンドボックスのような役割を果たします。
1. FreqAI の概要
FreqAI とは何か
FreqAI は、オープンソースの自動売買ボット Freqtrade に統合された機械学習(ML)モジュールです。非営利のオープンソースプロジェクトであり、独自トークンの発行やシグナル販売は行っておらず、公式ドキュメント(Freqtrade の一部)以外に専用の商用サービス等も存在しません。
Freqtrade との関係
FreqAI は Freqtrade 本体に組み込まれたモジュールとして提供され、Freqtrade のエンジンやデータ処理機能と密接に連携します。Freqtrade が備える取引所 API 接続やバックテスト/分析ツール、ユーザーインターフェース(Telegram 通知や Web UI など)と組み合わせて、機械学習による予測をリアルタイム取引に活用できます。
提供する主な機能
FreqAI は高度な機械学習機能を取り入れるための多くの仕組みを備えています。
🔄 自己適応型の再学習
ライブ運用中にモデルを定期的に再訓練し、最新の市場データにモデルを適応させます。これにより時間の経過による市場構造の変化に追従し、モデルの予測精度を維持します。
⚡ 高速な特徴量エンジニアリング
ユーザーが定義した基本インジケータから、自動的に大量の特徴量を生成できます。例えば:
- 複数タイムフレーム(5分足・15分足・4時間足など)への拡張
- 相関する他通貨ペア(BTCやETHなど)の価格データの取り込み
- 過去の一定本数のローソク足をシフトさせた特徴追加
- 異なる期間のテクニカル指標計算
組み合わせ次第で1万以上の特徴量を自動生成可能です。
🚀 マルチスレッドと高パフォーマンス
モデルの訓練は取引実行とは分離した別スレッド上で行われ(GPU が利用可能な場合は GPU も活用)、訓練済み最新モデルとデータをメモリ上に保持して高速な予測を実現します。
🎯 リアリスティックなバックテスト
過去データに対してモデルの定期再学習をシミュレートする適応型バックテスト機能があります。一定期間ごとにモデルを再訓練し直しながらバックテストを行うことで、将来データの漏洩(ルックアヘッド)を防ぎ、ライブ運用時と近い条件で戦略の性能検証が可能です。
🔧 拡張性
Python で利用できるあらゆる機械学習ライブラリや手法を組み込める柔軟なアーキテクチャを採用しています。内部には代表的な分類器・回帰器・ディープラーニングモデルなど8種類以上のモデル例が実装されています。
🛡️ アウトライア(外れ値)除去
スマートな外れ値検出・除去機能により、訓練データや予測データ中の異常値による影響を低減できます。統計的に見て異常に離れたデータポイントを検知し除外することで、モデルがノイズに過剰適応するのを防ぎます。
💾 クラッシュ復元性
訓練済みモデルはディスク上に保存され、ボット再起動時に即座に再読み込み可能です。長時間のドライラン/本番運用でも不要になった古いモデルを自動削除してディスク容量を管理し、万一のクラッシュ後も前回のモデルを再利用してすぐ取引再開できる設計です。
2. 技術的詳細
対応している AI/機械学習手法・アルゴリズム
FreqAI は内部で多様な ML ライブラリを扱える設計になっており、以下が利用可能です:
- scikit-learn: 回帰・分類・クラスタリング・次元圧縮など汎用
- CatBoost: 勾配ブースティング決定木ベースの高性能な回帰・分類器
- LightGBM: 同じく勾配ブースティング系
- XGBoost: 同じく勾配ブースティング系
- PyTorch/TensorFlow: ディープラーニングフレームワーク
- Stable-Baselines3: 強化学習ライブラリ(OpenAI Gym 環境とPyTorchベース)
FreqAI には2023年時点で18種類のモデルクラスがあらかじめ実装されており、コマンドライン引数や設定で簡単に切り替えて比較することが可能です。
データ処理と予測手法
FreqAI でモデルに与える入力データ(特徴量)は、ユーザーが Freqtrade 戦略内で定義するカスタムインジケータから作られます。
# 特徴量の定義例
dataframe["%-rsi"] = ta.RSI(dataframe, timeperiod=14) # % で始まるカラムが特徴量
dataframe["&-future_price"] = dataframe["close"].shift(-10) # & で始まるカラムが目的変数
回帰 vs 分類
- 回帰モデル: 「N本後の終値」を連続値として予測
- 分類モデル: 「N本後に価格が上がるか下がるか」を2クラス分類
強化学習への対応
FreqAI は強化学習(Reinforcement Learning, RL)にも対応しており、トレーディングエージェントの学習を行うことも可能です。RL ではエージェントが市場を模した環境内で売買行動を学習し、累積利益などを最大化するよう訓練されます。
継続的学習とデプロイ
FreqAI 最大の特徴である継続的なモデル再訓練について:
例:「過去30日」を訓練期間、「直後7日」を運用期間と設定
┌────────────────┐ ┌─────────┐
│ 30日間で学習 │→│ 7日運用│
└────────────────┘ └─────────┘
↓ スライド
┌────────────────┐ ┌─────────┐
│ 次の30日で学習 │→│ 7日運用│
└────────────────┘ └─────────┘
このスライディングウィンドウ方式により、「常に最新○日分で訓練したモデル」が使われ続けるため、市場の変化にモデルが追従できます。
3. 導入・設定方法
インストール方法
FreqAI は Freqtrade 本体に同梱されているため、基本的には Freqtrade をインストールすると利用可能になります。
# FreqAI の依存関係をインストール
pip install -r requirements-freqai.txt
Docker を使う場合:
# FreqAI 組み込み済みイメージ
docker pull freqtradeorg/freqtrade:stable_freqai
# PyTorch を含むイメージ
docker pull freqtradeorg/freqtrade:stable_freqaitorch
# 強化学習用イメージ
docker pull freqtradeorg/freqtrade:stable_freqairl
設定ファイル(config)の記述
Freqtrade の設定 JSON 内に "freqai": { ... }
セクションを追加します:
{
"freqai": {
"enabled": true,
"train_period_days": 30,
"backtest_period_days": 7,
"identifier": "my_freqai_strategy",
"feature_parameters": {
"include_timeframes": ["5m", "15m", "1h", "4h"],
"include_corr_pairlist": ["ETH/USDT", "BTC/USDT"],
"include_shifted_candles": 2,
"indicator_periods_candles": [10, 20, 50],
"label_period_candles": 24
}
}
}
戦略コードの実装
FreqAI を利用する戦略クラスの実装例:
class MyFreqAIStrategy(IStrategy):
startup_candle_count: int = 300 # 十分大きく設定
def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
# カスタム指標計算など
# FreqAI の処理を開始
dataframe = self.freqai.start(dataframe, metadata, self)
return dataframe
def feature_engineering_expand_all(self, dataframe: DataFrame, period, **kwargs) -> DataFrame:
# 特徴量の定義(% で始まるカラム名)
dataframe["%-ema-period"] = ta.EMA(dataframe, timeperiod=period)
dataframe["%-rsi-period"] = ta.RSI(dataframe, timeperiod=period)
return dataframe
def set_freqai_targets(self, dataframe: DataFrame, **kwargs) -> DataFrame:
# 目的変数の定義(& で始まるカラム名)
dataframe["&-s_close"] = (
dataframe["close"].shift(-self.freqai_info["feature_parameters"]["label_period_candles"]).rolling(10).mean()
/ dataframe["close"] - 1
)
return dataframe
実行コマンド
freqtrade trade --config config_freqai.json --strategy MyFreqAIStrategy --freqaimodel LightGBMRegressor
4. 実用例・活用事例
XGBoost 対 CatBoost のライブトレード対決
Emergent Methods チームは、2023年2月中旬から3月上旬にかけて3週間、2つの FreqAI ボットをライブ稼働させ、一方には XGBoost 回帰モデル、もう一方には CatBoost 回帰モデルを使わせてリアルタイム予測・取引を行いました。
実験条件:
- 取引対象:19種類の暗号資産/USDTペア
- 再訓練頻度:約2時間ごと
- 特徴量:約3266次元(複数タイムフレーム、42種類のテクニカル指標等)
結果:
XGBoost モデル搭載のボットが CatBoost 搭載のボットを収益で約4倍上回るという顕著な差がつきました。またモデルの訓練速度や資源使用量でも XGBoost の方が高速・軽量でした。
その他の活用例
- ハイパーオプト(パラメータ最適化)との組み合わせ
- 予測結果の蓄積・分析による戦略改善
- マルチボット運用(プロデューサ/コンシューマーモード)
5. メリット・デメリット
🟢 メリット(強み)
幅広いアルゴリズム統合
CatBoost・LightGBM・XGBoost から TensorFlow/PyTorch のディープラーニング、Stable-Baselines の強化学習まで、単一のフレームワークで多彩な ML 手法を扱えます。
リアルタイム適応
定期的な自動再学習により、市場の変化についていけず陳腐化するリスクを低減します。
高度な特徴量エンジニアリング
複数タイムフレームや他通貨相関など、豊富な特徴量を自動生成できます。
信頼性向上の仕組み
外れ値検知や正規化などデータ品質管理が組み込まれているため、モデルの安定性が向上します。
コストがかからない
オープンソースであり、ソフト自体に料金は一切かかりません。
🔴 デメリット(弱点・課題)
学習コストと複雑さ
従来のシンプルなテクニカル戦略と比べて学習ハードルが高いのは否めません。特徴量の設計や過学習対策、データリーク防止など、機械学習特有の注意点を理解する必要があります。
即戦力の戦略がない
テンプレート戦略はあくまでデモ用であり、そのままでは一貫した利益を生む保証はありません。結局のところ勝てる戦略を設計するのはユーザー次第です。
計算資源・時間の要求
大量の特徴量や高頻度の再学習は CPU・メモリへの負荷が高く、低スペック環境では実行が難しい場合があります。
ソフトウェア上の制約
動的ペアリストとの非互換など、いくつか併用できない機能があります。
環境依存の問題
Apple シリコン(M1/M2)搭載 Mac で不具合が報告されています。
6. 他のAIトレーディングツールとの比較
TensorTrade や FinRL との比較
項目 | FreqAI | TensorTrade/FinRL |
---|---|---|
対象 | ライブ取引まで包括 | 研究・学習用 |
手法 | 回帰・分類・RL等多様 | 主に強化学習 |
リアルタイム | 完全対応 | 限定的 |
特徴量エンジニアリング | 自動化 | 手動実装 |
継続学習 | 標準搭載 | なし |
商用プラットフォームとの比較
- QuantConnect や Numerai: 有償クラウドサービス、ブラックボックス
- FreqAI: 完全オープンソース、ローカル実行、フル制御可能
まとめ
FreqAI は「オープンソースの自動売買ボット × 機械学習」というニッチを埋める存在であり、現状直接的な競合は多くありません。他のツールが個別要素にフォーカスする中、FreqAI は総合力と実践志向で優位に立っています。
ただし、その分ユーザーには幅広い知識が要求されますが、これは裏を返せば自由度の高さでもあります。
こんな人におすすめ
- 機械学習に興味があり、実際のトレードで試してみたい
- Freqtrade を既に使っており、より高度な戦略を求めている
- オープンソースで自由にカスタマイズしたい
- 研究・実験志向で、様々なアルゴリズムを比較検証したい
注意点
- 即座に利益を生む魔法のツールではありません
- 機械学習の基礎知識が必要です
- 十分な計算資源と時間を確保してください
- リスク管理を忘れずに
FreqAI は日々進化しているプロジェクトのため、興味がある方は公式ドキュメントで最新情報を確認することをお勧めします。
参考文献
この記事が FreqAI に興味を持つ方の参考になれば幸いです。質問や追加情報があれば、コメントでお知らせください!