rl-execution について
取引コストを抑える大口注文の分割・執行タイミングを、強化学習で研究するためのスキルです。戦略シミュレーションとAlmgren–Chrissモデルを扱います。
主な機能
- 01強化学習の状態・行動・報酬設計
- 02TWAP、VWAP、自適応戦略のシミュレーション
- 03Almgren–Chriss軌道の計算
- 04マーケットインパクトのモデル化
活用シーン
- 01シミュレーション市場での執行戦略比較
- 02大口注文の適応型スケジューリング研究
- 03価格インパクトを踏まえた執行コスト推定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ agiprolabs/ claude-trading-skills --skill rl-executionインストール後、Claude Code で/rl-executionを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/execution_algorithms.mdrl_framework.mdscripts/almgren_chriss.pyexecution_simulator.py詳細
RL による執行最適化
取引執行における強化学習(RL)では、エージェントに大口注文を分割してタイミングを調整させ、総市場インパクトを最小限に抑える方法を学習させます。固定スケジュール(TWAP、VWAP)に従う代わりに、RL エージェントはリアルタイムの市場状態を観測し、その場で取引レートを調整します。
執行最適化が重要な理由
すべての取引には、提示スプレッド以外にもコストが発生します。
| コスト項目 | 原因 | 典型的な規模 |
|---|---|---|
| スプレッドコスト | ビッドとアスクの間で約定すること | DEX で 5~50 bps |
| 一時的インパクト | 流動性の消費 | 取引レートに応じて増加 |
| 永続的インパクト | 情報漏洩 | 総取引量に応じて増加 |
| タイミングリスク | 待機中の価格変動 | ボラティリティと時間に応じて増加 |
流動性の薄いプールで 100 SOL の成行買いを行うと、価格が 2~5% 動く可能性があります。これを数分かけて 10 SOL ずつ 10 回に分ければ、コストを 30~60% 削減できます。問題は、最適に分割する方法です。そこで執行アルゴリズムと RL が活用されます。
執行のための RL フレームワーク
状態空間
エージェントは各意思決定ステップで、次の情報を観測します。
state = [
remaining_qty, # How much is left to trade (0-1 normalized)
time_remaining, # Fraction of allowed horizon remaining
current_price, # Current mid-price (normalized to arrival price)
spread, # Current bid-ask spread
volatility, # Recent realized volatility
volume, # Recent trading volume (normalized)
]
行動空間
各ステップで取引する量を制御する離散行動です。
actions = [0%, 10%, 25%, 50%, 100%] # of remaining quantity
行動空間を小さくすると、問題を扱いやすくできます。各行動は、現在の時間ステップで執行する残り注文量の割合を表します。
報酬関数
報酬は、ベンチマークと比較した執行コストにペナルティを与えます。
reward = -(execution_price - arrival_price) * quantity_traded
すべてのステップで合計すると、総報酬は実装ショートフォールの負の値になります。エージェントは総コストを最小化するよう学習します。
エピソードの構成
1 エピソードは、注文の発注から完了までを表します。
- エージェントが注文を受け取ります:T 個の時間ステップ以内に Q 単位を買う、または売る
- 各ステップで、エージェントが行動(取引量)を選択します
- 市場シミュレーターが価格インパクトを適用し、状態を更新します
- 数量がすべて執行されるか、時間が切れるとエピソードが終了します
- 期限時点で残っている数量は、成行で執行されます(ペナルティ)
標準的な執行アルゴリズム
TWAP(時間加重平均価格)
最も単純なベースラインです。すべての時間ステップに注文を均等に分割します。
trade_per_step = total_quantity / num_steps
利点:シンプルで決定論的であり、実装が容易です。 欠点:市場の状況をまったく考慮しません。
VWAP(出来高加重平均価格)
各期間の予想出来高に比例して注文を分割します。
trade_at_step_t = total_quantity * (expected_volume[t] / total_expected_volume)
利点:流動性があるときに取引量を増やします。 欠点:正確な出来高予測が必要であり、適応性もありません。
Almgren-Chriss 最適執行
基礎となる分析モデルです。執行コストとタイミングリスクの組み合わせを最小化します。
minimize: E[cost] + λ * Var[cost]
線形インパクトを仮定すると、最適な執行軌道を閉形式で導出できます。完全な導出については、references/execution_algorithms.md を参照してください。
RL ベースの適応型執行
シミュレーションでの経験から執行ポリシーを学習する RL エージェント(DQN、PPO など)です。
# Pseudocode training loop
for episode in range(num_episodes):
state = env.reset(order_qty=Q, horizon=T)
done = False
while not done:
action = agent.select_action(state)
next_state, reward, done, info = env.step(action)
agent.store_transition(state, action, reward, next_state, done)
agent.update()
state = next_state
利点:現在の市場状況に適応し、非線形パターンを学習できます。 欠点:現実的なシミュレーターが必要であり、シミュレーションと実環境のギャップや学習の不安定さがあります。
価格インパクトモデル
シミュレーターでは、標準的な 2 要素のインパクトモデルを使用します。
temporary_impact = η * (trade_rate / avg_volume)
permanent_impact = γ * (trade_rate / avg_volume)
- 一時的インパクトは取引後に減衰します(流動性が回復します)
- 永続的インパクトは均衡価格を変動させます(情報効果)
時刻 t にサイズ q の取引を行う場合の執行価格:
exec_price = mid_price + permanent_impact + temporary_impact
mid_price_next = mid_price + permanent_impact + noise
このスキルを使用する場面
このスキルが特に役立つのは、次のような場合です。
- 注文サイズが利用可能な流動性に対して大きい(日次出来高の 1% 超)
- 市場インパクトが大きい(流動性の薄い DEX プール、時価総額の小さいトークン)
- 執行時間枠に柔軟性がある(ミリ秒単位ではなく、数分から数時間)
- コスト削減によって複雑さを正当化できる(機関投資家規模の注文)
小口の個人注文(流動性の高いペアで 1,000 ドル未満)では、単純な成行注文や基本的なスリッページ上限で十分です。代わりに slippage-modeling スキルを参照してください。
実用上の制約
- シミュレーションと実環境の差:シミュレーション市場では、実際のあらゆる動態(キュー内の位置、敵対的なフロー、MEV)を再現できません。
- 非定常性:市場のマイクロストラクチャーは時間とともに変化するため、あるレジームで学習したモデルが別のレジームでは機能しない場合があります。
- DEX 特有の事情:オンチェーンでの執行は連続時間ではなく、ブロック単位の粒度(Solana では約 400ms)になります。ガス代や優先手数料もコストに加わります。
- データ要件:現実的なシミュレーションには、学習用の過去のオーダーブックデータまたは取引データが必要です。
他のスキルとの連携
| スキル | 連携 |
|---|---|
slippage-modeling | シミュレーターの調整に使うインパクト推定値を提供します |
position-sizing | 執行する注文の合計サイズを決定します |
liquidity-analysis | 現実的なシミュレーションに必要な利用可能流動性を評価します |
volatility-modeling | 状態ベクトルに使うボラティリティ推定値を提供します |
jupiter-swap | 算出した取引スケジュールを実際にオンチェーンで執行します |
クイックスタート
執行戦略を比較する(API 不要)
python scripts/execution_simulator.py
シミュレーション市場で TWAP、VWAP、適応型戦略を実行し、多数の試行にわたる執行コストを比較します。
Almgren-Chriss の最適軌道
python scripts/almgren_chriss.py
指定した市場パラメーターに基づいて解析的に最適な執行軌道を計算し、TWAP と比較します。
ファイル
参考資料
references/execution_algorithms.md— TWAP、VWAP、Almgren-Chriss、IS、RL の執行アルゴリズムと、その数式および比較references/rl_framework.md— MDP の定式化、環境設計、学習方法、RL 執行に関する実用上の考慮事項
スクリプト
scripts/execution_simulator.py— 価格インパクトを考慮し、TWAP、VWAP、適応型戦略を比較する注文執行シミュレーターscripts/almgren_chriss.py— 軌道の計算とコスト分析を行う Almgren-Chriss 最適執行モデル
依存関係
uv pip install numpy
API キーは不要です。すべてのスクリプトはシミュレーション/デモモードで実行されます。
参考文献
- Almgren, R. & Chriss, N. (2001). 「ポートフォリオ取引の最適執行」 Journal of Risk, 3(2), 5-39.
- Bertsimas, D. & Lo, A. (1998). 「執行コストの最適制御」 Journal of Financial Markets, 1(1), 1-50.
- Ning, B., Lin, F. H. T., & Jaimungal, S. (2021). 「最適執行のための Double deep Q-learning」Applied Mathematical Finance, 28(4), 361-380.
免責事項
このスキルは、執行アルゴリズムの研究を目的とした教育用分析ツールを提供します。金融アドバイスではありません。シミュレーション結果が実際の運用成果を保証するものではありません。規模を拡大する前に、必ず小さなサイズで執行戦略をテストしてください。