FinRLは、株式・仮想通貨・ポートフォリオ配分などの金融タスクを深層強化学習(DRL)で解くためのエンドツーエンドのオープンソースフレームワークです。データ取得から環境構築、学習、バックテスト、ペーパートレーディングまでの一連のパイプラインをPythonライブラリとして提供します。READMEによれば、次世代版として「FinRL-X / FinRL-Trading」への移行が案内されており、本リポジトリは教育・研究用途の「オリジナル版」と位置付けられています。
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)を使って実行する構成です。
- STEP 01
まずpyproject.tomlとrequirements.txtの依存関係(elegantrl・stable-baselines3・ccxt・wrds・alpaca-pyなど数十パッケージ)をインストールし、TA-libなど一部はconda経由が必要と気づきます。
- STEP 02
finrl/config_private.pyを自分で作成してAlpacaのAPIキーを設定しないと、trainモード以外(tradeモード)はFileNotFoundErrorで止まることを体験します。
- STEP 03
python -m finrl --mode trainを実行すると、Yahoo Financeからdow30銘柄の日足データをダウンロードし、ElegantRLのPPOで学習が始まり、./test_ppoディレクトリにモデルが保存されます。
- STEP 04
学習完了後にmode testへ切り替えてバックテストを走らせると、finrl/plot.pyやpyfolio-reloadedを使った累積リターンなどの評価結果が得られます。
- STEP 05
examples配下のノートブック(FinRL_PaperTrading_Demo.ipynbなど)を開くと、Alpacaでのペーパートレーディングまでの流れをセル単位で追体験できます。
- STEP 06
GitHub ActionsのCIはDockerコンテナ内でpytestを毎日1回実行する設定であり、ローカルでも同じDocker手順(docker/bin/build_container.sh)を踏めば環境差異を減らせます。
手元に残るのは、DOW30などの銘柄で学習済みのDRLトレーディングモデル(actor.pth相当のファイル)と、TENSORBOARD_LOG_DIRの学習ログ、RESULTS_DIRのバックテスト結果(累積リターン・シャープレシオなど)です。examplesのノートブックを実行すれば、株式・仮想通貨・ポートフォリオ最適化それぞれの学習済みエージェントと評価グラフが得られます。ただし実運用の売買執行までは、Alpacaのペーパートレーディング環境止まりで、実資金運用向けではありません。
READMEが明示する通り、本リポジトリは教育・研究・ベンチマーク用途と位置付けられ、本番運用は後継の「FinRL-X / FinRL-Trading」が推奨されています。
config.pyのTRAIN・TEST・TRADEの日付範囲や銘柄リストが古い可能性があり、Yahoo Financeなど外部APIの仕様変更で取得が失敗するリスクがあります。
依存パッケージがelegantrl・ccxt・wrds・alpaca-py・TA-libなど多岐にわたり、TA-libはconda等の別手段が必要なため、pipだけでは環境構築が難航しがちです。
docs/source/index.rstの免責事項に「Nothing herein is financial advice」と明記されており、実資金投資への直接利用は想定されていません。
深層強化学習を使った金融トレーディングの学習・研究入口として、株式やポートフォリオ配分のタスクを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モード構成とデータ層・環境層・エージェント層の分離は実際のソースに基づいて確認できるため、インストールせずともこの判断は妥当と言えます。