QuantDingerQuantDingerv5.7.1 Docs 文档中心
English GitHub

Alpaca 成交手续费对账

Alpaca 可能先返回订单成交,再稍后提供权威的费用记录。因此,QuantDinger 将“已成交”和“手续费已确认”作为两个独立状态:交易记录已经出现时,手续费仍可能显示“待确认”。

页面状态说明

页面显示 含义
待确认 成交已入账,但尚未收到权威的手续费或零手续费证据。
非零手续费 Alpaca 活动记录返回了成交费用,QuantDinger 已按实际费用入账。
确认后的 $0.00 Alpaca 明确返回零佣金,系统以 actual_zero 保存,而不是把缺失值猜成零。

顶部成本卡片汇总的是已持久化的执行记录。仍处于待确认状态的费用不会被静默当作零,也不会在对账完成前计入权威成本。

对账流程

  1. 券商确认成交后,系统立即保存订单和成交数量。
  2. 如果成交响应没有权威费用证据,交易保持 fee_status=pending。
  3. 超过配置的重试间隔后,Alpaca 同步 Worker 会重新检查仍含待确认费用的已完成订单。
  4. 系统把券商活动记录标准化为按币种拆分的费用明细。
  5. 在可转换时将费用换算为报价币种,并按成交金额比例回填到对应交易记录。
  6. 非零费用保存为 actual;明确确认的零费用保存为 actual_zero;证据来源记录为 rest。

该过程具备幂等性:只有手续费状态仍为待确认的交易才会被回填,因此重复同步不会重复计费。

运维排查

如果手续费长时间保持待确认:

  1. 确认 trading worker 正常,并且与 API 连接同一个数据库。
  2. 确认 Alpaca 凭据有效,且具备读取订单和账户活动的权限。
  3. 确认待处理订单已有券商订单 ID,且成交数量大于零。
  4. 在 trading-worker 日志中检查 alpaca_fill_sync、鉴权错误或活动查询失败。
  5. 检查对应 qd_strategy_trades 记录:未完成时为 fee_status=pending;完成后应为 actual 或 actual_zero,并带有 fee_source。

不要因为券商暂时未返回费用,就手动把待确认费用改成零。这会把“缺少证据”错误地变成“零费用”的会计事实。

适用范围

本文描述 QuantDinger 的 Alpaca 策略执行账本。账户层面的最终费用仍以 Alpaca 对账单和账户活动为外部权威来源。监管费、活动费、ADR 费、利息及其他券商级费用可能独立于单笔成交佣金到达,并在数据可用时分项展示。