mcpField
R
rl-execution

rl-execution

github.com/agiprolabs数据与数据库456435 次安装8 周前更新
代码仓库

关于 rl-execution

面向交易执行研究的强化学习技能,介绍如何拆分和安排大额订单以降低成本,并提供策略模拟与 Almgren–Chriss 分析模型。

主要功能

  1. 01强化学习状态、动作与奖励设计
  2. 02TWAP、VWAP 和自适应策略模拟
  3. 03Almgren–Chriss 轨迹计算
  4. 04市场冲击建模

适用场景

  1. 01在模拟市场比较执行策略
  2. 02研究大额订单的自适应调度
  3. 03估算价格冲击下的执行成本

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/agiprolabs/claude-trading-skills --skill rl-execution

安装后在 Claude Code 中输入/rl-execution确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
execution_algorithms.md
rl_framework.md
scripts/
almgren_chriss.py
execution_simulator.py

详细介绍

RL 执行优化

用于交易执行的强化学习(RL)会教会 Agent 拆分大额订单并选择交易时机,从而最大限度地降低总市场冲击。RL Agent 不再遵循固定计划(TWAP、VWAP),而是观察实时市场状态,并动态调整交易速率。

执行优化为何重要

每笔交易的成本都不止报价价差:

成本组成部分成因典型幅度
价差成本跨越买卖价差DEX 上为 5-50 bps
临时冲击消耗流动性随交易速率变化
永久冲击信息泄露随总规模变化
时机风险等待期间价格漂移随波动率和时间变化

在流动性稀薄的池中,100 SOL 的市价买单可能会使价格变动 2-5%。将其拆分为十笔 10 SOL 的小单,并在几分钟内执行,可以降低 30-60% 的成本。问题在于如何进行最优拆分——这正是执行算法和 RL 发挥作用的地方。

执行的 RL 框架

状态空间

Agent 在每个决策步骤观察:

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

将所有步骤的奖励相加,得到的总奖励等于负的执行缺口。Agent 会学习如何最大限度地降低总成本。

回合结构

一个回合 = 从下单到完成的一笔订单:

  1. Agent 收到订单:在 T 个时间步内买入/卖出 Q 个单位
  2. 在每个步骤,Agent 选择一个动作(交易量)
  3. 市场模拟器应用价格冲击并更新状态
  4. 数量全部执行完毕或时间到期时,回合结束
  5. 到期时剩余的数量按市价执行(罚则)

标准执行算法

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 Agent(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

优点:能适应当前市场状况,并可学习非线性模式。 缺点:需要逼真的模拟器,存在仿真到现实的差距,且训练不稳定。

价格冲击模型

模拟器采用标准的双组件冲击模型:

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 技能。

实际局限性

  1. 仿真到现实的差距:模拟市场无法涵盖所有真实动态 (排队位置、对抗性流量、MEV)。
  2. 非平稳性:市场微观结构会随时间变化;在某种市场状态下 训练的模型可能在另一种状态下失效。
  3. DEX 特性:链上执行以区块为粒度(Solana 上约为 400ms),而非连续时间。Gas 和优先费会增加成本。
  4. 数据要求:训练需要历史订单簿或交易数据,以进行逼真的模拟。

与其他技能集成

技能集成方式
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). “用于最优执行的双重深度 Q 学习。” Applied Mathematical Finance,28(4),361-380。

免责声明

此技能提供用于研究执行算法的教育分析工具,不构成财务建议。模拟结果 不保证实际表现。扩大规模前,务必先用小额测试执行策略。

评论

支持 Markdown