如何衡量执行算法?

探索执行算法的机制、差异、局限性以及实际检验方法。

如何衡量执行算法?

执行算法:你测量的是什么

执行算法是决定如何将订单拆分为更小操作、以及这些操作如何定时和路由的方法。为了以可验证的方式衡量它们,应重点关注可测量的执行字段(发生了什么)和可测量的时间字段(何时发生)。然后仅在明确陈述的假设下比较结果,因为市场状况和执行成本可能主导最终结果。

机制与可测量字段

定义衡量方法的一种实用方式是从一个“订单事件日志”开始,针对单个母订单进行分析。

1) 时间字段

  • 请求时间:母订单提交的时间。
  • 执行开始时间:首次子订单执行尝试的时间。
  • 完成时间:母订单完全成交或终止的时间。
  • 队列/延迟窗口:发送子订单到收到确认或成交之间经过的时间(如果数据可记录)。

2) 成交质量字段

  • 成交率:已成交数量除以预期数量。
  • 剩余数量:完成时未成交的部分。
  • 成交分布:每个时间段内成交的数量。

3) 成本与价格影响字段 为避免歧义,使用选定的参考价格和明确定义的公式来计算成本。 常见的参考价格选择包括:

  • 开始时的中间价(如果你能观察到,即最佳买价和卖价之间的中点)
  • 决策价格:算法开始时的价格
  • 到达价格:第一个可执行时刻的价格

然后测量:

  • 滑点(Slippage):平均执行价格与参考价格之间的差值(有方向性)。
  • 执行缺口(Implementation shortfall,概念上):相对于参考价格的成本,包含价格变动和执行不完全两方面。

4) 约束与控制字段 如果算法有参数(例如参与目标或时间限制),应将其视为可测量输入,并验证在每种场景下算法满足这些约束的频率。

证据与示例计算(含明确假设)

假设你有一个100单位的母订单:

  • 母订单在10:00:00提交。
  • 首次子订单执行尝试在10:00:05。
  • 完全完成于10:00:35。
  • 所有成交的平均执行价格为1.2000。
  • 你的参考价格(执行开始时的中间价)为1.1980。

一个简单且可验证的滑点计算为:

  • 滑点 = 平均执行价格 − 参考价格
  • = 1.2000 − 1.1980 = 0.0020(每单位,以价格表示)

为使此计算独立且可复现,你还应说明:

  • 参考价格定义(10:00:05的中间价)
  • 数据粒度(成交价格和时间戳)
  • 是否使用了加权平均

如果你还观察到100单位中仅有90单位成交,则报告成交率 = 0.90,并将不完全成交视为一个独立的重要组成部分,而非仅归入价格因素。

局限性与失效模式(什么会破坏比较)

即使有严谨的指标,若忽略可变性,比较仍可能产生误导。

重要局限性

  • 市场条件主导:流动性、点差宽度和波动性可能在执行过程中变化并影响成本。
  • 不同场景下的成本差异:费用、佣金及任何与执行相关的收费都可能改变成本指标。
  • 基准依赖性:参考价格定义改变时,滑点数值也会变化。
  • 历史关系不能确立未来结果:一种市场机制下的过往表现可能不适用于另一种机制。

需测量或注意的失效模式

  • 部分成交:算法完成时仍有未成交数量。
  • 队列延迟与延迟敏感性:在拥堵加剧期间,执行时序可能恶化。
  • 相对于预期节奏的过度交易或交易不足:实际子订单频率可能偏离目标。
  • 停止/终止行为:频繁取消或提前退出可能使成本和完成时间比较产生偏差。

验证与下一个问题

要验证关于执行算法的声明,你需要三个可独立检查的内容:(1) 测量字段和公式,(2) 使用的时间戳和时间窗口,(3) 关于参考价格和数据可用性的假设。如果两方计算“相同”的指标,但选择了不同的参考价格或采样窗口,其结果可能合法地不一致。

一个有用的问题是:你实际拥有关于参考价格(中间价、到达价或其他代理)以及延迟/确认的数据吗?回答这个问题后,你可以在比较算法或提供商之前统一衡量定义。

外汇和差价合约交易具有重大风险。FoxiForex的信息仅用于教育,不构成个人财务建议。赞助内容会被清楚标注。