今日の優良食堂
実際に入れて動かして書いた、今日の一膳
ギット飯が代わりに導入・実行・コードまで確かめました
今日の優良食堂 · ギット飯が代わりに導入・分析

AI4Finance-Foundation/FinRL

深層強化学習を用いた株式取引エージェントを学び、構築、検証できる教育・研究向けフレームワークです。

Yahoo FinanceやBinanceなど14種のデータソースを指定するだけで、MACDやRSI、VIXといった指標の前処理を自動でこなし、A2CやPPO、SACなど5種のDRLアルゴリズムを同じ土俵で学習・比較できます。過去データを流し込んで自分の取引戦略をバックテストし、成果の差を数値で確かめる作業を、今日この手で試せます。ElegantRLやstable-baselines3を土台にした構成なので、大学院での強化学習検証からクオンツのバックテスト、AI開発初心者の実データ学習まで、同じ手順で再現できるのが実感できるはずです。

01 / 概要
何をするものか一文で言うと
ひとことで深層強化学習を用いた株式取引エージェントを学び、構築、検証できる教育・研究向けフレームワークです。

FinRLは、株式・仮想通貨・ポートフォリオ配分などの金融タスクを深層強化学習(DRL)で解くためのエンドツーエンドのオープンソースフレームワークです。データ取得から環境構築、学習、バックテスト、ペーパートレーディングまでの一連のパイプラインをPythonライブラリとして提供します。READMEによれば、次世代版として「FinRL-X / FinRL-Trading」への移行が案内されており、本リポジトリは教育・研究用途の「オリジナル版」と位置付けられています。

02 / 構造
どう動くのか中核のしくみ
読み方動きの流れを図と一緒にほどきました。

finrl/main.pyがtrain・test・tradeの3モードを切り替えるエントリーポイントで、finrl/config.pyの日付や指標設定、finrl/config_tickers.pyの銘柄リスト(DOW_30_TICKERなど)を読み込みます。データ取得はfinrl/meta/data_processors配下にYahoo Finance・Alpaca・CCXT・WRDS・JoinQuantなど14種のプロセッサがあり、data_source文字列で選択します。取得データはfinrl/meta/preprocessor/preprocessors.pyでテクニカル指標(stockstats利用)を付与し、finrl/meta/env_stock_trading/env_stocktrading.pyなどのOpenAI Gym形式環境に投入されます。学習はfinrl/agents配下のElegantRL・Stable-Baselines3・RLlibのいずれかのラッパー経由でPPO・A2C・DDPG・SAC・TD3などのアルゴリズムを呼び出し、学習済みモデルはTRAINED_MODEL_DIRに保存されます。ペーパートレーディングはfinrl/meta/paper_trading/alpaca.pyがAlpaca APIキー(finrl/config_private.py)を使って実行する構成です。

03 / 体験
入れるとこんな体験になりますギット飯が実際にたどった順序
所要ギット飯が実際に導入・実行しながらたどった順序です。
  1. STEP 01

    まずpyproject.tomlとrequirements.txtの依存関係(elegantrl・stable-baselines3・ccxt・wrds・alpaca-pyなど数十パッケージ)をインストールし、TA-libなど一部はconda経由が必要と気づきます。

  2. STEP 02

    finrl/config_private.pyを自分で作成してAlpacaのAPIキーを設定しないと、trainモード以外(tradeモード)はFileNotFoundErrorで止まることを体験します。

  3. STEP 03

    python -m finrl --mode trainを実行すると、Yahoo Financeからdow30銘柄の日足データをダウンロードし、ElegantRLのPPOで学習が始まり、./test_ppoディレクトリにモデルが保存されます。

  4. STEP 04

    学習完了後にmode testへ切り替えてバックテストを走らせると、finrl/plot.pyやpyfolio-reloadedを使った累積リターンなどの評価結果が得られます。

  5. STEP 05

    examples配下のノートブック(FinRL_PaperTrading_Demo.ipynbなど)を開くと、Alpacaでのペーパートレーディングまでの流れをセル単位で追体験できます。

  6. STEP 06

    GitHub ActionsのCIはDockerコンテナ内でpytestを毎日1回実行する設定であり、ローカルでも同じDocker手順(docker/bin/build_container.sh)を踏めば環境差異を減らせます。

04 / 成果物
何が手に入るのか導入後に手元に残るもの

手元に残るのは、DOW30などの銘柄で学習済みのDRLトレーディングモデル(actor.pth相当のファイル)と、TENSORBOARD_LOG_DIRの学習ログ、RESULTS_DIRのバックテスト結果(累積リターン・シャープレシオなど)です。examplesのノートブックを実行すれば、株式・仮想通貨・ポートフォリオ最適化それぞれの学習済みエージェントと評価グラフが得られます。ただし実運用の売買執行までは、Alpacaのペーパートレーディング環境止まりで、実資金運用向けではありません。

05 / 注意
ここは先に知っておいてください先に知っておくとよいこと
正直なところ誰にでも合うとは言いにくいところです。
01

READMEが明示する通り、本リポジトリは教育・研究・ベンチマーク用途と位置付けられ、本番運用は後継の「FinRL-X / FinRL-Trading」が推奨されています。

02

config.pyのTRAIN・TEST・TRADEの日付範囲や銘柄リストが古い可能性があり、Yahoo Financeなど外部APIの仕様変更で取得が失敗するリスクがあります。

03

依存パッケージがelegantrl・ccxt・wrds・alpaca-py・TA-libなど多岐にわたり、TA-libはconda等の別手段が必要なため、pipだけでは環境構築が難航しがちです。

04

docs/source/index.rstの免責事項に「Nothing herein is financial advice」と明記されており、実資金投資への直接利用は想定されていません。

06 / 結論
ギット飯の結論食べてみる価値のある一膳か
ギット飯の最終判断優良食堂

深層強化学習を使った金融トレーディングの学習・研究入口として、株式やポートフォリオ配分のタスクをGym環境とPPO・SACなどの既存DRLライブラリで一通り体験したい学習者・研究者に向いています。逆に本番の自動売買システムを求める場合は、README自身が案内する後継の「FinRL-X / FinRL-Trading」を検討すべきです。main.py・config.py・各data_processorやenv_stocktrading.pyの実装、pyproject.tomlの依存関係、CIワークフローの内容から、train・test・tradeの3モード構成とデータ層・環境層・エージェント層の分離は実際のソースに基づいて確認できるため、インストールせずともこの判断は妥当と言えます。

今日の残りの一膳
SUBSCRIBER LIBRARY
これまでに検証した優良食堂を一堂に

4 つの関門を通った優良食堂がすべてバックナンバーに集まっています。いちばん新しい一膳はどなたでも無料で読め、それより前の優良食堂の検証の根拠・詳しい解説は ギット飯 プレミアムのご購読ですでに開いています。

優良食堂バックナンバー →
リポジトリ詳細🧪 ひと言で味見する