Skip to main content

活动

机器翻译译自英文(docs.alpaca.markets)本页 124 段已全部译完

快速参考

简介

Alpaca 的 Activity SSE 是一个单一 Server-Sent Events 端点,它以统一的模式实时流式传输每个活动——交易成交、公司行动、费用、分录、转账等。

它替代或取代以下旧版端点:

旧版端点替代状态类型
GET /v1/events/nta已完全替代。 所有 NTA 事件都可在 Activity SSE 上以更丰富的模式获得。SSE
GET /v1/accounts/activities已完全替代。 通过 since / until 参数支持历史活动查询。2026 年 2 月 11 日之后记录的活动可在新端点上获得。REST
GET /v2/events/trades可用事件子集。 交易成交、更正和作废可在 Activity SSE 上获得。非成交订单生命周期事件(例如 accepted、canceled、expired、replaced)不是活动,不会出现。如果你依赖这些事件,请继续将 Trade Events SSE 与 Activity SSE 一起使用。Trade Events SSE 流的延迟通常也更低。SSE

这对你为何重要:

  • 所有活动使用单一连接,而非单独的 NTA 和 REST 端点。同时需要非成交订单生命周期事件(例如 accepted、canceled)的合作伙伴仍需使用 Trade Events SSE 获取这些事件,但所有财务状态变化都通过单一的 Activity SSE 连接进行。
  • 统一模式,具有公共信封和类型特定的 details,消除不一致的字段命名。
  • 稳定标识符(ref_id),用于每个活动,可在 SSE 和未来的 REST 端点中使用。
  • 基于 ULID 的 event_id,用于每个事件,可实现字典序排序和确定性回放。

核心概念:状态机复制

Alpaca 期望每个合作伙伴维护一个后端系统,镜像客户账户的财务状态——持仓、现金余额和交易历史。

Activity SSE 是保持该镜像同步的机制:

  1. 连接 Activity SSE。
  2. 在事件发生时接收每个活动事件。
  3. 将事件应用到你的本地状态(更新持仓、调整现金、记录交易)。
  4. 持久化最后成功处理事件的 event_id(ULID)。
  5. 重连时,使用 since_id 参数从持久化的 event_id 恢复。使用 ref_id 作为去重键,以幂等方式处理任何重新投递的事件。

每个活动事件代表一个已在 Alpaca 一侧发生的状态变化。你的系统应应用这些事件以收敛到相同的状态。


端点参考

注意: 此端点目前位于 /v2beta1/ 下提供。当它进入正式可用状态时,路径可能会改变。

活动 SSE

流式传输账户活动事件。

API 参考请见此处。

单个事件查询

返回由 event_id ULID 标识的单个活动事件。

API 参考请见此处。


事件模式

每个事件都遵循两层结构:顶层为公共字段,外加一个包含特定于活动类型字段的 details 对象。

公共字段(每个事件上都存在)

字段类型必需说明
account_idUUID是此活动所属的账户。
atdatetime(RFC 3339)是业务事件时间戳——即活动在源系统(OMS 或 Ledgie)中发生并发出的时间。
event_idULID是可按字典序排序、单调递增的事件标识符。组成:前 6 个字节以毫秒精度编码当前 UTC 时间,后 10 个字节为熵。时间部分编码事件流发出事件的时间戳(发布时间)。用于基于游标的回放。
activity_typestring是主要活动分类(例如 TRD、DIV、SPLIT、FEE)。
activity_subtypestring否类型内的进一步分类(例如 CDIV、FSPLIT、REG)。
ref_idUUID是此活动的稳定唯一标识符。对于交易:执行 ID。对于非交易活动:交易记录 ID。用作你的去重键。
statusstring是活动的状态(例如 executed)。
executed_atdatetime(RFC 3339)是活动执行的时间。
settle_datedate是活动的结算日期。
qtydecimal string否涉及证券的数量。
pricedecimal string否涉及证券的价格。
net_amountdecimal string否净现金影响(正数 = 贷记,负数 = 借记)。
currencystring是ISO 货币代码(例如 USD)。
swap_ratedecimal string否本币活动的外汇兑换汇率。
swap_fee_bpsdecimal string否以基点表示的外汇兑换费用。
previous_idUUID否当此活动更正或取消先前活动时存在。包含先前活动的 ref_id。
detailsobject是特定于活动类型的字段。结构因 activity_type 和 activity_subtype 而异。

details 对象

details 对象包含特定于活动类型的字段。这种设计避免了过多的 null 值,并提供丰富的类型特定数据。

例如,TRD(交易成交)活动的 details 包含 order_id、side、symbol、cum_qty、leaves_qty、order_status 和 execution_type。DIV / CDIV(现金股息)活动的 details 包含 ca_id、symbol、rate、entitled_qty、cash_payout 和公司行动日期。

每种活动类型的完整 details 模式在 API 参考中定义,示例可在下面的最后一节中找到。

details.parent_id 将活动链接到相关交易(ref_id)。它出现在:

  • 与父交易一对一对应的 FEE 子类型(例如 COM、OCOM)。基于交易量的费用(REG、TAF、CAT、ORF、NRV、NRC、BSWP)不包含它。
  • 当有可用的父交易 ref_id 时,交易产生的 INT / FI。这些事件还包含 details.order_id。

对于 INT / FI,details.interest_type 为 coupon 或 accrued。票息有 rate。赎回应计有 price 和 accrued_interest_rate。交易应计有 order_id。


支持的活动类型

交易活动

activity_typeactivity_subtype说明
TRD—交易成交(股票或期权)。details.execution_type 为以下之一:fill、trade_correct、trade_bust。多腿订单每腿产生一个 TRD 事件,每个事件有各自的 ref_id,但 details.order_id 相同。

公司行动(股票)

activity_typeactivity_subtype说明
CGDSTCG短期资本利得
CGDLTCG长期资本利得
DIVCDIV现金股息
DIVSDIV股票股息
DIVSPD代息付款
DIVROC资本返还
SPLITFSPLIT正向股票拆分
SPLITRSPLIT反向股票拆分
SPLITUSPLIT单位拆分
SPIN—分拆
MACMA现金并购
MASMA股票并购
MASCMA股票与现金并购
NCSNC代码名称变更
NCCNCCUSIP 名称变更
NCSCNC代码与 CUSIP 名称变更
REOREOS纯股票重组
REOREOC纯现金重组
REOREOSC股票与现金重组
REORGWRM无价值移除
VOFVDST权利分配
VOFVTND要约收购
VOFVWRT认股权证行权
VOFVRGT供股要约
VOFVEXH交换要约
FIMAT—固定收益到期/赎回
DIVNRA—股息税预扣

公司行动(期权)

activity_typeactivity_subtype说明
OPCADIV.CDIV期权 CA:现金股息
OPCADIV.SDIV期权 CA:股票股息
OPCAMA.CMA期权 CA:现金并购
OPCAMA.SMA期权 CA:股票并购
OPCAMA.SCMA期权 CA:股票与现金并购
OPCANC.SNC期权 CA:代码名称变更
OPCANC.CNC期权 CA:CUSIP 名称变更
OPCANC.SCNC期权 CA:代码与 CUSIP 名称变更
OPCASPIN期权 CA:分拆
OPCASPLIT.FSPLIT期权 CA:正向拆分
OPCASPLIT.RSPLIT期权 CA:反向拆分
OPCASPLIT.USPLIT期权 CA:单位拆分

期权(非公司行动)

activity_typeactivity_subtypeDescription
OPASN—期权指派
OPEXC—期权行权
OPEXP—期权到期
OPTRD—期权交易(与指派/行权配对)
OPCSH—期权现金结算

转账与分录

activity_typeactivity_subtype说明
ACATC—ACAT 转账(现金)
ACATS—ACAT 转账(证券)
FOPT—免付款交割转账(DTCC)。以前报告为 ACATC/ACATS。如果你筛选 ACAT 类型以捕获所有转账,请添加 FOPT 处理。
JNLC—分录(现金)
JNLS—分录(证券)
CSW—现金提取
CSD—现金支付(贷记/现金流入)
MEM—即时入金备忘记账

费用与利息

activity_typeactivity_subtype说明
FEEREG监管(SEC)费
FEETAF交易活动费
FEEORF期权监管费
FEEOCC期权清算公司费
FEENRV非零售场所费
FEENRC非零售佣金费
FEELCT本币交易费
FEECOM佣金
FEECAT综合审计追踪费
FEEADRADR 费
FEEOCOM期权佣金(行权/清算)
FEEBSWP银行扫款费
INTMGN保证金利息
INTCDT信用利息
INTSWP扫款利息
INTQII合格利息收入
INTFPSL全额支付证券借贷利息收入
INTFI固定收益票息、赎回应计或交易应计

预扣税

activity_typeactivity_subtype说明
WHSWH州预扣税
WHFWH联邦预扣税
WHSLWH销售预扣税

集成指南(新合作伙伴)

如果你是新的 Alpaca 合作伙伴,请直接与 Activity SSE 集成。不要使用旧版端点。

步骤 1 — 建立 SSE 连接

使用你的 Broker API 凭据向 /v2beta1/events/activities 发起长连接 HTTP GET 请求。服务器将保持连接打开,并在事件发生时推送 data: 行。

步骤 2 — 解析每个事件

每个 SSE data: 行包含一个 JSON 对象。先解析公共字段(activity_type、ref_id、event_id、account_id),然后根据 activity_type 和 activity_subtype 路由到类型特定的处理逻辑。

步骤 3 — 将事件应用到你的本地状态

对于每个事件,更新你的本地数据库:

  • TRD(交易成交): 记录成交。更新账户中该代码的持仓。按 net_amount 调整现金。
  • DIV(股息): 对于 CDIV,将 net_amount 贷记到现金。对于 SDIV,将 qty 股添加到持仓。
  • SPLIT: 按 details 中的拆分比例调整持仓数量。
  • FEE / INT: 按 net_amount 调整现金。
  • JNLC / JNLS: 相应地调整现金或持仓。
  • MA、SPIN、NC、REORG: 按公司行动详情更新持仓(移除旧股份、添加新股份、酌情贷记现金)。

步骤 4 — 持久化游标

成功处理每个事件后,持久化 event_id(ULID)。这是你的回放游标。

步骤 5 — 处理重连

当你的连接断开时(网络问题、服务器重启、部署):

  1. 重新连接到同一端点。
  2. 将 since_id 设置为最后成功处理的 event_id。
  3. 处理收到的所有事件,按 ref_id 去重。

步骤 6 — 处理更正和作废

当事件上存在 previous_id 时,表示此活动更正或取消了先前 ref_id 与 previous_id 匹配的活动。请在你系统中冲销原活动并应用新活动。

步骤 7 — 处理 SSE 注释

以 : 开头的行是 SSE 注释,而非数据。请专门处理以下两种:

  • :heartbeat — 连接存活。无需操作。
  • : you are reading too slowly, dropped N messages — 你的消费者太慢。你已错过事件。将 since_id 设置为最后处理的 event_id 重新连接以回放错过的事件。
  • : internal server error — 服务器正在关闭连接。请重新连接。

步骤 8 — 历史回放

要读取历史数据(例如在初始开户或对账期间),请使用 since 时间戳或 since_id 进行连接。如果你使用 since_id 且未指定 until_id,服务器将首先流式传输从该点开始的所有历史事件,然后过渡到实时。


迁移手册(现有合作伙伴)

本节面向当前使用旧版 NTA Events SSE(/v1/events/nta)和/或 Activities REST 端点(/v1/accounts/activities)的合作伙伴。我们也记录了与当前 Trade Events SSE(/v2/events/trades)的差异,尽管我们不认为新端点能完全替代它。

有哪些变化

方面旧版Activity SSE
端点三个独立端点(trade SSE、NTA SSE、activities REST)单一端点:/v2beta1/events/activities
事件 ID取决于端点版本的整数(event_id)+ ULID(event_ulid)仅 ULID(event_id)
活动标识SSE 和 REST 之间没有共同的稳定 ID每个事件上的 ref_id(UUID)
模式交易和 NTA 事件之间扁平、不一致的字段两层:公共信封 + 类型特定的 details 对象
交易活动命名FILL(REST)/ event: fill(SSE)activity_type: TRD
NTA 类型字段entry_type + entry_sub_typeactivity_type + activity_subtype
自由文本描述NTA 事件上的 description 字段已移除。由 details 中的结构化字段替代。
内嵌订单对象交易事件上的完整订单对象仅 details 中的关键订单字段(order_id、client_order_id、side、symbol、order_status 等)
per_share_amount出现在旧版 NTA 事件上由 details.rate 替代(在适用时)
position_qty出现在交易事件上不存在。请在本地根据成交计算。

订单生命周期事件

Trade Events SSE 为完整订单生命周期发出事件:accepted、new、pending_new、fill、partial_fill、canceled、expired、replaced、rejected、done_for_day、held、stopped、suspended、pending_cancel、pending_replace、calculated、order_replace_rejected、order_cancel_rejected、trade_bust、trade_correct。

Activity SSE 仅发出代表实际活动的事件——即改变账户财务状态的事件:

  • fill → activity_type: TRD,details.execution_type: fill
  • trade_correct → activity_type: TRD,details.execution_type: trade_correct
  • trade_bust → activity_type: TRD,details.execution_type: trade_bust

不导致成交的订单生命周期事件(accepted、new、canceled、expired、replaced 等)不是活动,不会出现在 Activity SSE 上。这些事件不会改变持仓或现金。

如果你的应用依赖这些非成交订单生命周期事件(例如显示“订单已接受”或“订单已取消”通知),你应继续使用 Trade Events SSE(/v2/events/trades)进行订单生命周期跟踪,同时使用 Activity SSE 进行活动跟踪。

对于持仓、现金和交易历史的状态机复制,仅 Activity SSE 就足够了。

字段映射:Trade Events SSE → Activity SSE

交易事件字段Activity SSE 字段说明
account_idaccount_id不变。
atat不变。在这两个端点中,该字段都编码业务事件时间戳——即活动在源系统中发生的时间。如果你以前将 at 用作执行时间的代理,请改用 executed_at。
event_id(整数,v1)—已移除。请改用基于 ULID 的 event_id。
event_ulid(v1)/ event_id(v2)event_id现在始终为 ULID。
event(例如 fill、new)details.execution_type仅会发出 fill、trade_correct、trade_bust。非成交的生命周期事件不属于活动。
timestampexecuted_at已重命名。旧版 timestamp 字段(每种事件类型语义不同)已由 executed_at 替代。
order.iddetails.order_id不再内嵌订单对象;关键字段提升到 details。
order.client_order_iddetails.client_order_id—
order.symboldetails.symbol—
order.asset_iddetails.asset_id—
order.sidedetails.side—
order.statusdetails.order_status—
order.filled_qtydetails.cum_qty已重命名。订单的累计成交数量。
order.commissiondetails.commission—
order.*(其他字段)—其余订单字段(limit_price、stop_price、time_in_force 等)不包含在内。
priceprice移至公共信封。
qtyqty移至公共信封。
position_qty—已移除。请在你方根据累计成交计算。
execution_idref_id已重命名。值相同(执行 UUID)。
previous_execution_idprevious_id已重命名。在 trade_correct 和 trade_bust 事件上出现。

字段映射:旧版 NTA Events SSE → Activity SSE

旧版 NTA 事件字段Activity SSE 字段说明
account_idaccount_id不变。
atat不变。在两个旧版 SSE 端点中,at 都是业务事件时间戳——即活动在源系统中发生的时间。在 Activity SSE 中,at 字段保持此语义。详见上方的 Trade Events 映射。
event_id(整数)—已移除。
event_ulidevent_id已重命名。现在是主要事件标识符。
id(记录 UUID)ref_id已重命名。活动的稳定唯一标识符。
entry_typeactivity_type已重命名。值相同(例如 DIV、FEE、JNLC)。
entry_sub_typeactivity_subtype已重命名。值相同(例如 CDIV、REG、TAF)。
statusstatus不变。
qtyqty不变。现在是字符串格式的十进制数。
priceprice不变。现在是字符串格式的十进制数。
net_amountnet_amount不变。现在是字符串格式的十进制数。
settle_datesettle_date不变。
system_datedetails.system_date移入 details。格式从 datetime 改为 date(YYYY-MM-DD)。
symboldetails.symbol移入 details(按类型在适用时出现)。
cusipdetails.cusip移入 details(按类型在适用时出现)。
description—已移除。以前在自由文本描述中的所有信息现在都以 details 中的结构化字段表示。
per_share_amountdetails.rate已重命名并移动。表示每股费率(例如股息率)。
group_iddetails.group_id移入 details。对相关活动进行分组(例如拆分的两条腿)。
corporate_action_iddetails.ca_id已重命名并移入 details。
swap_rateswap_rate不变。保持在顶层。
execution_id—曾出现在某些旧版 NTA 费用事件上。在新模式中,使用 details.parent_id 进行费用到父交易的链接。

字段映射:旧版 Activities REST → Activity SSE

旧版 REST 字段Activity SSE 字段说明
idref_id已重命名。
activity_type(FILL)activity_type(TRD)FILL 现为 TRD。
activity_type(非交易)activity_type非交易类型的值相同。
activity_sub_typeactivity_subtype已重命名(移除下划线)。值相同。
transaction_timeexecuted_at已重命名。
datesettle_date已重命名。
net_amountnet_amount不变。
qtyqty不变。
priceprice不变。
sidedetails.side移至 details(仅交易活动)。
symboldetails.symbol移至 details。
order_iddetails.order_id移至 details(仅交易活动)。
cum_qtydetails.cum_qty移至 details(仅交易活动)。
leaves_qtydetails.leaves_qty移至 details(仅交易活动)。
order_statusdetails.order_status移至 details(仅交易活动)。

迁移检查清单

使用此检查清单跟踪你从旧版端点迁移到 Activity SSE 的进度。

准备工作:

  • 阅读并理解本指南以及 ActivityEventV2 的 OpenAPI 规范。
  • 清点代码库中所有从 Trade SSE、旧版 NTA SSE 或 Activities REST 消费的位置。
  • 确定你是否依赖非成交订单生命周期事件(例如 accepted、canceled、expired)。如果是,请继续使用 Trade Events SSE 获取这些事件。

实现:

  • 构建 GET /v2beta1/events/activities 的消费者,解析公共信封字段。
  • 实现路由逻辑,按 activity_type(以及需要时按 activity_subtype)分派到类型特定的处理程序。
  • 更新你的数据模型,将 ref_id 存储为主要活动标识符,将 event_id(ULID)存储为你的回放游标。
  • 将对 entry_type / entry_sub_type 的引用替换为 activity_type / activity_subtype。
  • 将对 description 自由文本字段的引用替换为从 details 读取的结构化字段。
  • 如果你以前从交易事件中存储 position_qty,请改为根据累计成交计算持仓数量。
  • 如果你引用了 per_share_amount,请改为读取 details.rate。
  • 更新去重逻辑,使用 ref_id 而非旧版 id 字段。
  • 实现交易更正和作废的 previous_id 处理。
  • 验证你的重连逻辑使用 since_id 与 ULID event_id。

验证:

  • 并行运行旧版和新版消费者。比较收到的活动:每个交易成交和旧版 NTA 事件都应有一个对应的 Activity SSE 事件,其 ref_id 相匹配。
  • 验证同一活动的旧版和新版事件之间的 net_amount、qty、price 和 settle_date 是否匹配。
  • 确认公司行动详情(拆分比例、股息率、并购条款)是否已从 details 对象中正确提取。
  • 测试重连:断开你的消费者,等待,使用 since_id 重新连接,并验证没有事件丢失且重复事件得到处理。

切换:

  • 验证通过后,停用你的旧版 NTA SSE 消费者。
  • 停用你的旧版 Activities REST 轮询(如果用于实时跟踪)。
  • 如果你不需要非成交的订单生命周期事件,停用你的 Trade SSE 消费者。
  • 监控是否有丢弃的消息(留意 : you are reading too slowly 注释)。

事件示例

每种活动的代表性示例。所有标识符均已替换为占位符。

{
  "account_id": "<ACCID>",
  "event_id": "<EVTID>",
  "ref_id": "<REFID>",
  "activity_type": "TRD",
  "qty": "0.04",
  "price": "480.338",
  "currency": "USD",
  "net_amount": "-19.21",
  "status": "executed",
  "at": "2026-01-02T14:43:59.052726Z",
  "executed_at": "2026-01-02T14:43:59.05095724Z",
  "settle_date": "2026-01-05",
  "details": {
    "asset_id": "<ASID>",
    "order_id": "<ORID>",
    "client_order_id": "<CLID>",
    "side": "buy",
    "order_status": "filled",
    "execution_type": "fill",
    "symbol": "MSFT",
    "cum_qty": "0.04",
    "leaves_qty": "0"
  }
}
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID>",
  "ref_id": "<REFID>",
  "activity_type": "TRD",
  "qty": "1",
  "price": "9.3",
  "currency": "USD",
  "net_amount": "-930.02",
  "status": "executed",
  "at": "2026-01-10T14:30:02.89489Z",
  "executed_at": "2026-01-10T14:30:02.888518094Z",
  "settle_date": "2026-01-06",
  "details": {
    "asset_id": "<ASID>",
    "order_id": "<ORID>",
    "client_order_id": "<CLID>",
    "side": "buy",
    "order_status": "filled",
    "execution_type": "fill",
    "symbol": "F260109C00006000",
    "cum_qty": "1",
    "leaves_qty": "0",
    "commission": "0"
  }
}
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID>",
  "ref_id": "<REFID>",
  "activity_type": "CSD",
  "qty": "0",
  "price": "0",
  "currency": "USD",
  "net_amount": "1382000",
  "status": "executed",
  "at": "2026-01-15T14:00:08.514798Z",
  "executed_at": "2026-02-13T09:37:31.970401Z",
  "settle_date": "2026-02-13",
  "details": {
    "system_date": "2026-02-13"
  }
}
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID>",
  "ref_id": "<REFID>",
  "activity_type": "CSW",
  "qty": "0",
  "price": "0",
  "currency": "USD",
  "net_amount": "-7",
  "status": "executed",
  "at": "2026-01-17T02:00:08.514798Z",
  "executed_at": "2026-01-17T04:35:10.338561Z",
  "settle_date": "2026-01-16",
  "details": {
    "system_date": "2026-01-20"
  }
}
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID>",
  "ref_id": "<REFID>",
  "activity_type": "JNLC",
  "qty": "0",
  "price": "0",
  "currency": "USD",
  "net_amount": "-4.81",
  "status": "executed",
  "at": "2026-01-15T02:00:08.514798Z",
  "executed_at": "2026-01-15T08:00:00.925529Z",
  "settle_date": "2026-01-15",
  "details": {
    "journal_id": "<JRLID>",
    "system_date": "2026-01-15"
  }
}
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID>",
  "ref_id": "<REFID>",
  "activity_type": "JNLS",
  "qty": "0.00911",
  "price": "638.2799",
  "currency": "USD",
  "net_amount": "0",
  "status": "executed",
  "at": "2026-01-15T02:00:08.514798Z",
  "executed_at": "2026-01-15T23:54:13.330501Z",
  "settle_date": "2026-01-15",
  "details": {
    "journal_id": "<JRLID>",
    "symbol": "AAPL",
    "system_date": "2026-01-15"
  }
}
# there are some fees, that do not have one single transaction from which they are derived, but they are derived on a volume/bulk/duration of transactions. For them, there is no `parent_id` relationship. Such fees sub-types include: REG, TAF, CAT, ADR, ORF, BSWP, NRV, NRC, ADR, OCOM, LOC

{
  "account_id": "<ACCID>",
  "event_id": "<EVTID>",
  "ref_id": "<REFID>",
  "activity_type": "FEE",
  "activity_subtype": "TAF",
  "qty": "0",
  "price": "0",
  "currency": "USD",
  "net_amount": "-0.01",
  "status": "executed",
  "at": "2026-01-16T01:00:08.514798Z",
  "executed_at": "2026-01-16T01:00:00Z",
  "settle_date": "2026-01-16",
  "details": {
    "system_date": "2026-01-15"
  }
}


# All other fees, will have parent_id relationship setup, as they have one-to-one relationship with the transaction which they are derived from. 
# These fees may have sub-types
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID>",
  "ref_id": "<REFID>",
  "activity_type": "FEE",
  "activity_subtype": "OCC",
  "qty": "0",
  "price": "0",
  "currency": "USD",
  "net_amount": "-0.02",
  "status": "executed",
  "at": "2026-01-15T14:00:08.514798Z",
  "executed_at": "2026-01-15T14:44:09.189982Z",
  "settle_date": "2026-01-15",
  "details": {
    "parent_id": "<PTID>",
    "system_date": "2026-01-15"
  }
}

# or no sub-type at all
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID>",
  "ref_id": "<REFID>",
  "activity_type": "FEE",
  "qty": "0",
  "price": "0",
  "currency": "USD",
  "net_amount": "-0.02",
  "status": "executed",
  "at": "2026-01-15T14:00:08.514798Z",
  "executed_at": "2026-01-15T14:44:09.189982Z",
  "settle_date": "2026-01-15",
  "details": {
    "parent_id": "<PTID>",
    "system_date": "2026-01-15"
  }
}
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID>",
  "ref_id": "<REFID>",
  "activity_type": "ACATC",
  "qty": "0",
  "price": "0",
  "currency": "USD",
  "net_amount": "118.79",
  "status": "executed",
  "at": "2025-12-06T02:00:08.514798Z",
  "executed_at": "2025-12-06T00:00:42.17753Z",
  "settle_date": "2025-12-08",
  "details": {
    "request_id": "<RQTID>",
    "external_id": "20251110012345@000031",
    "system_date": "2025-12-05",
    "hold_date": "2025-12-08"
  }
}
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID>",
  "ref_id": "<REFID>",
  "activity_type": "ACATS",
  "qty": "4",
  "price": "157.44",
  "currency": "USD",
  "net_amount": "0",
  "status": "executed",
  "at": "2025-12-06T02:00:08.514798Z",
  "executed_at": "2025-12-06T00:00:42.17753Z",
  "settle_date": "2025-12-08",
  "details": {
    "request_id": "<RQTID>",
    "external_id": "20252220054321@000007",
    "symbol": "AAPL",
    "system_date": "2025-12-05",
    "hold_date": "2025-12-08"
  }
}
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID>",
  "ref_id": "<REFID>",
  "activity_type": "INT",
  "activity_subtype": "MGN",
  "qty": "0",
  "price": "0",
  "currency": "USD",
  "net_amount": "-3.01",
  "status": "executed",
  "at": "2026-01-15T14:00:08.514798Z",
  "executed_at": "2026-02-28T05:56:15.207304Z",
  "settle_date": "2026-02-27",
  "details": {
    "system_date": "2026-03-02"
  }
}
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID>",
  "ref_id": "<REFID>",
  "activity_type": "INT",
  "activity_subtype": "FPSL",
  "qty": "0",
  "price": "0",
  "currency": "USD",
  "net_amount": "0.01",
  "status": "executed",
  "at": "2026-01-15T14:00:08.514798Z",
  "executed_at": "2026-02-27T05:00:30.215648Z",
  "settle_date": "2026-02-27",
  "details": {
    "system_date": "2026-02-27"
  }
}
// Coupon
// interest_type: coupon. Has rate.
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID>",
  "ref_id": "<REFID>",
  "activity_type": "INT",
  "activity_subtype": "FI",
  "qty": "0",
  "price": "0",
  "currency": "USD",
  "net_amount": "3203.13",
  "status": "executed",
  "at": "2026-07-27T16:00:08.514798Z",
  "executed_at": "2026-07-27T16:00:00Z",
  "settle_date": "2026-07-27",
  "details": {
    "interest_type": "coupon",
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "entitled_qty": "205000",
    "cash_payout": "3203.125",
    "cusip": "61761J3R8",
    "isin": "US61761J3R84",
    "rate": "15.625",
    "record_date": "2026-07-24",
    "payment_date": "2026-07-27",
    "position_date": "2026-07-24",
    "system_date": "2026-07-27"
  }
}

// Accrued interest on call
// interest_type: accrued. Has price and accrued_interest_rate.
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID>",
  "ref_id": "<REFID>",
  "activity_type": "INT",
  "activity_subtype": "FI",
  "qty": "0",
  "price": "0",
  "currency": "USD",
  "net_amount": "42.50",
  "status": "executed",
  "at": "2026-07-08T16:00:08.514798Z",
  "executed_at": "2026-07-08T16:00:00Z",
  "settle_date": "2026-07-09",
  "details": {
    "interest_type": "accrued",
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "entitled_qty": "10000",
    "cash_payout": "42.50",
    "cusip": "037833EK4",
    "isin": "US037833EK41",
    "price": "101.25",
    "accrued_interest_rate": "4.25",
    "record_date": "2026-07-08",
    "payment_date": "2026-07-09",
    "position_date": "2026-07-08",
    "system_date": "2026-07-09"
  }
}

// Trade accrued
// interest_type: accrued. Has order_id. parent_id when a parent trade ref_id is available.
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID>",
  "ref_id": "<REFID>",
  "activity_type": "INT",
  "activity_subtype": "FI",
  "qty": "10",
  "price": "99.50",
  "currency": "USD",
  "net_amount": "12.34",
  "status": "executed",
  "at": "2026-09-03T16:04:08.514798Z",
  "executed_at": "2026-09-03T16:04:00Z",
  "settle_date": "2026-09-03",
  "details": {
    "interest_type": "accrued",
    "order_id": "<ORID>",
    "parent_id": "<PTID>",
    "system_date": "2026-09-03"
  }
}
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-1>",
  "ref_id": "<REFID-1>",
  "activity_type": "DIV",
  "activity_subtype": "CDIV",
  "qty": "0",
  "price": "0",
  "currency": "USD",
  "net_amount": "28.25",
  "status": "executed",
  "at": "2026-05-19T07:44:25.462922Z",
  "executed_at": "2026-05-19T16:00:00Z",
  "settle_date": "2026-05-19",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "symbol": "VG",
    "cusip": "92333F101",
    "entitled_qty": "113",
    "rate": "0.25",
    "cash_payout": "28.25",
    "foreign": "false",
    "special": "false",
    "ex_date": "2026-05-19",
    "record_date": "2026-05-19",
    "system_date": "2026-05-19",
    "payable_date": "2026-05-19",
    "position_date": "2026-05-19"
  }
}
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-1>",
  "ref_id": "<REFID-1>",
  "activity_type": "DIV",
  "activity_subtype": "ROC",
  "qty": "0",
  "price": "0",
  "currency": "USD",
  "net_amount": "28.25",
  "status": "executed",
  "at": "2026-05-19T07:44:25.462922Z",
  "executed_at": "2026-05-19T16:00:00Z",
  "settle_date": "2026-05-19",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "symbol": "VG",
    "cusip": "92333F101",
    "entitled_qty": "113",
    "rate": "0.25",
    "cash_payout": "28.25",
    "foreign": "false",
    "special": "false",
    "ex_date": "2026-05-19",
    "record_date": "2026-05-19",
    "system_date": "2026-05-19",
    "payable_date": "2026-05-19",
    "position_date": "2026-05-19"
  }
}
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID>",
  "ref_id": "<REFID>",
  "activity_type": "DIV",
  "activity_subtype": "SDIV",
  "qty": "0.002709921",
  "price": "0",
  "currency": "USD",
  "net_amount": "0",
  "status": "executed",
  "at": "2026-01-02T17:00:08.514798Z",
  "executed_at": "2026-01-02T17:00:00Z",
  "settle_date": "2025-12-29",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "symbol": "SBS",
    "new_qty": "0.094116171",
    "entitled_qty": "0.09140625",
    "paid_qty": "0.002709921",
    "rate": "1.029647",
    "ex_date": "2025-12-29",
    "record_date": "2025-12-29",
    "system_date": "2026-01-02",
    "payable_date": "2026-01-02",
    "position_date": "2025-12-26"
  }
}
# Substitute payment in lieu of dividend
# Often paired with a DIV/CDIV for the same corporate action. The SPD covers shares loaned out (e.g., via Fully Paid Securities Lending); the CDIV covers shares held on record date.
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID>",
  "ref_id": "<REFID>",
  "activity_type": "DIV",
  "activity_subtype": "SPD",
  "qty": "0",
  "price": "0",
  "currency": "",
  "net_amount": "-0.03",
  "status": "executed",
  "at": "2025-10-17T16:00:08.514798Z",
  "executed_at": "2025-10-17T16:00:00Z",
  "settle_date": "2025-10-17T00:00:00Z",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "symbol": "ULTY",
    "entitled_qty": "77",
    "rate": "0.000338",
    "cash_payout": "0.026026",
    "foreign": "false",
    "special": "true",
    "ex_date": "2025-10-16",
    "record_date": "2025-10-16",
    "system_date": "2025-10-17",
    "payable_date": "2025-10-17",
    "position_date": "2025-10-16",
    "due_bill_on_date": "2025-09-03",
    "due_bill_off_date": "2025-09-02"
  }
}
# DIVNRA is linked to its parent DIV activity via details.parent_id, which matches the parent DIV's ref_id. Parent can be a DIV/CDIV or a DIV/SPD.

{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-2>",
  "ref_id": "<REFID-2>",
  "activity_type": "DIVNRA",
  "qty": "0",
  "price": "0",
  "currency": "USD",
  "net_amount": "-8.47",
  "status": "executed",
  "at": "2026-05-19T07:44:25.462922Z",
  "executed_at": "2026-05-19T07:44:21.799701Z",
  "settle_date": "2026-05-19",
  "details": {
    "symbol": "VG",
    "cusip": "92886T201",
    "parent_id": "<REFID-1>",
    "system_date": "2026-05-19",
    "tax_rate": "<withholding-rate, e.g: 0.15 for AUS>",
    "tax_country": "<3-digit-country-code>"
  }
}
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-1>",
  "ref_id": "<REFID-1>",
  "activity_type": "MA",
  "activity_subtype": "CMA",
  "qty": "0",
  "price": "0",
  "currency": "USD",
  "net_amount": "0.03",
  "status": "executed",
  "at": "2026-01-15T14:00:08.514798Z",
  "executed_at": "2026-02-27T17:00:00Z",
  "settle_date": "2026-02-27",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "acquiree_qty": "0.045366059",
    "acquiree_symbol": "<ACQUIREE_SYMBOL>",
    "acquiree_cusip": "<ACQUIREE_CUSIP>",
    "cash_rate": "0.583043",
    "cash_payout": "0.03",
    "system_date": "2026-02-27",
    "payable_date": "2026-02-27",
    "position_date": "2026-02-26",
    "effective_date": "2026-02-02"
  }
}

{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-2>",
  "ref_id": "<REFID-2>",
  "activity_type": "MA",
  "activity_subtype": "CMA",
  "qty": "-0.045366059",
  "price": "0",
  "currency": "USD",
  "net_amount": "0",
  "status": "executed",
  "at": "2026-01-15T14:00:08.514798Z",
  "executed_at": "2026-02-27T17:00:00Z",
  "settle_date": "2026-02-27",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "acquiree_qty": "0.045366059",
    "cash_rate": "0.583043",
    "cash_payout": "0.03",
    "system_date": "2026-02-27",
    "payable_date": "2026-02-27",
    "position_date": "2026-02-26",
    "effective_date": "2026-02-02",
    "acquiree_cusip": "<ACQUIREE_CUSIP>",
    "acquiree_symbol": "<ACQUIREE_SYMBOL>"
    
  }
}
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-1>",
  "ref_id": "<REFID-1>",
  "activity_type": "MA",
  "activity_subtype": "SMA",
  "qty": "-2000",
  "price": "0.8",
  "currency": "USD",
  "net_amount": "0",
  "status": "executed",
  "at": "2026-01-15T14:00:08.514798Z",
  "executed_at": "2026-02-25T05:00:00Z",
  "settle_date": "2026-02-25",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "acquiree_qty": "2000",
    "acquirer_qty": "200",
    "acquiree_rate": "1",
    "acquirer_rate": "0.1",
    "acquiree_symbol": "<ACQUIREE_SYMBOL>",
    "acquirer_symbol": "<ACQUIRER_SYMBOL>",
    "acquiree_cusip": "<ACQUIREE_CUSIP>",
    "acquirer_cusip": "<ACQUIRER_CUSIP>",
    "system_date": "2026-02-25",
    "payable_date": "2026-02-25",
    "position_date": "2026-02-24",
    "effective_date": "2026-02-24"
  }
}

{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-2>",
  "ref_id": "<REFID-2>",
  "activity_type": "MA",
  "activity_subtype": "SMA",
  "qty": "200",
  "price": "8",
  "currency": "USD",
  "net_amount": "0",
  "status": "executed",
  "at": "2026-01-15T14:00:08.514798Z",
  "executed_at": "2026-02-25T05:00:00Z",
  "settle_date": "2026-02-25",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "acquiree_qty": "2000",
    "acquirer_qty": "200",
    "acquiree_rate": "1",
    "acquirer_rate": "0.1",
    "acquiree_symbol": "<ACQUIREE_SYMBOL>",
    "acquirer_symbol": "<ACQUIRER_SYMBOL>",
    "acquiree_cusip": "<ACQUIREE_CUSIP>",
    "acquirer_cusip": "<ACQUIRER_CUSIP>",
    "system_date": "2026-02-25",
    "payable_date": "2026-02-25",
    "position_date": "2026-02-24",
    "effective_date": "2026-02-24"
  }
}
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-1>",
  "ref_id": "<REFID-1>",
  "previous_id": "<PRID-1>",
  "activity_type": "MA",
  "activity_subtype": "SCMA",
  "qty": "0",
  "price": "0",
  "currency": "USD",
  "net_amount": "8.29",
  "status": "executed",
  "at": "2026-01-15T14:00:08.514798Z",
  "executed_at": "2026-02-13T17:00:00Z",
  "settle_date": "2026-02-13",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "acquiree_qty": "0.394803871",
    "acquirer_qty": "0.394803871",
    "cash_rate": "21",
    "acquiree_rate": "1",
    "acquirer_rate": "1",
    "acquiree_symbol": "<ACQUIREE_SYMBOL>",
    "acquirer_symbol": "<ACQUIRER_SYMBOL>",
    "acquiree_cusip": "<ACQUIREE_CUSIP>",
    "acquirer_cusip": "<ACQUIRER_CUSIP>",
    "cash_payout": "8.29",
    "system_date": "2026-02-13",
    "payable_date": "2026-02-13",
    "position_date": "2026-02-12",
    "effective_date": "2026-02-12"
  }
}

{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-2>",
  "ref_id": "<REFID-2>",
  "previous_id": "<PRID-2>",
  "activity_type": "MA",
  "activity_subtype": "SCMA",
  "qty": "-0.394803871",
  "price": "15.704",
  "currency": "USD",
  "net_amount": "0",
  "status": "executed",
  "at": "2026-01-15T14:00:08.514798Z",
  "executed_at": "2026-02-13T17:00:00Z",
  "settle_date": "2026-02-13",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "acquiree_qty": "0.394803871",
    "acquirer_qty": "0.394803871",
    "cash_rate": "21",
    "acquiree_rate": "1",
    "acquirer_rate": "1",
    "acquiree_symbol": "<ACQUIREE_SYMBOL>",
    "acquirer_symbol": "<ACQUIRER_SYMBOL>",
    "acquiree_cusip": "<ACQUIREE_CUSIP>",
    "acquirer_cusip": "<ACQUIRER_CUSIP>",
    "cash_payout": "8.29",
    "system_date": "2026-02-13",
    "payable_date": "2026-02-13",
    "position_date": "2026-02-12",
    "effective_date": "2026-02-12"
  }
}

{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-3>",
  "ref_id": "<REFID-3>",
  "previous_id": "<PRID-3>",
  "activity_type": "MA",
  "activity_subtype": "SCMA",
  "qty": "0.394803871",
  "price": "0",
  "currency": "USD",
  "net_amount": "0",
  "status": "executed",
  "at": "2026-01-15T14:00:08.514798Z",
  "executed_at": "2026-02-13T17:00:00Z",
  "settle_date": "2026-02-13",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "acquiree_qty": "0.394803871",
    "acquirer_qty": "0.394803871",
    "cash_rate": "21",
    "acquiree_rate": "1",
    "acquirer_rate": "1",
    "acquiree_symbol": "<ACQUIREE_SYMBOL>",
    "acquirer_symbol": "<ACQUIRER_SYMBOL>",
    "acquiree_cusip": "<ACQUIREE_CUSIP>",
    "acquirer_cusip": "<ACQUIRER_CUSIP>",
    "cash_payout": "8.29",
    "system_date": "2026-02-13",
    "payable_date": "2026-02-13",
    "position_date": "2026-02-12",
    "effective_date": "2026-02-12"
  }
}
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-1>",
  "ref_id": "<REFID-1>",
  "activity_type": "NC",
  "activity_subtype": "SNC",
  "qty": "-7.30762391",
  "price": "328.77",
  "currency": "USD",
  "net_amount": "0",
  "status": "executed",
  "at": "2026-01-15T14:00:08.514798Z",
  "executed_at": "2026-02-26T17:00:00Z",
  "settle_date": "2026-02-26",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "old_symbol": "RNA",
    "new_symbol": "RNAM",
    "position_qty": "7.30762391",
    "system_date": "2026-02-26",
    "position_date": "2026-02-25"
  }
}

{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-2>",
  "ref_id": "<REFID-2>",
  "activity_type": "NC",
  "activity_subtype": "SNC",
  "qty": "7.30762391",
  "price": "328.77",
  "currency": "USD",
  "net_amount": "0",
  "status": "executed",
  "at": "2026-01-15T14:00:08.514798Z",
  "executed_at": "2026-02-26T17:00:00Z",
  "settle_date": "2026-02-26",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "old_symbol": "RNA",
    "new_symbol": "RNAM",
    "position_qty": "7.30762391",
    "system_date": "2026-02-26",
    "position_date": "2026-02-25"
  }
}
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-1>",
  "ref_id": "<REFID-1>",
  "activity_type": "NC",
  "activity_subtype": "CNC",
  "qty": "-4.68546239",
  "price": "26.89",
  "currency": "USD",
  "net_amount": "0",
  "status": "executed",
  "at": "2026-01-15T14:00:08.514798Z",
  "executed_at": "2026-02-23T17:00:00Z",
  "settle_date": "2026-02-23",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "old_symbol": "BRIF",
    "new_symbol": "BRIF",
    "position_qty": "4.68546239",
    "system_date": "2026-02-23",
    "position_date": "2026-02-20"
  }
}

{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-2>",
  "ref_id": "<REFID-2>",
  "activity_type": "NC",
  "activity_subtype": "CNC",
  "qty": "4.68546239",
  "price": "26.89",
  "currency": "USD",
  "net_amount": "0",
  "status": "executed",
  "at": "2026-01-15T14:00:08.514798Z",
  "executed_at": "2026-02-23T17:00:00Z",
  "settle_date": "2026-02-23",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "old_symbol": "BRIF",
    "new_symbol": "BRIF",
    "position_qty": "4.68546239",
    "system_date": "2026-02-23",
    "position_date": "2026-02-20"
  }
}
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-1>",
  "ref_id": "<REFID-1>",
  "activity_type": "NC",
  "activity_subtype": "SCNC",
  "qty": "1",
  "price": "0.1001",
  "currency": "USD",
  "net_amount": "0",
  "status": "executed",
  "at": "2026-01-15T14:00:08.514798Z",
  "executed_at": "2026-02-25T17:00:00Z",
  "settle_date": "2026-02-25",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "old_symbol": "SVIWF",
    "new_symbol": "NUCLW",
    "position_qty": "1",
    "system_date": "2026-02-25",
    "position_date": "2026-02-24"
  }
}

{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-2>",
  "ref_id": "<REFID-2>",
  "activity_type": "NC",
  "activity_subtype": "SCNC",
  "qty": "-1",
  "price": "0.1001",
  "currency": "USD",
  "net_amount": "0",
  "status": "executed",
  "at": "2026-01-15T14:00:08.514798Z",
  "executed_at": "2026-02-25T17:00:00Z",
  "settle_date": "2026-02-25",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "old_symbol": "SVIWF",
    "new_symbol": "NUCLW",
    "position_qty": "1",
    "system_date": "2026-02-25",
    "position_date": "2026-02-24"
  }
}
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-1>",
  "ref_id": "<REFID-1>",
  "activity_type": "SPLIT",
  "activity_subtype": "FSPLIT",
  "qty": "-0.54796447",
  "price": "62.32",
  "currency": "USD",
  "net_amount": "0",
  "status": "executed",
  "at": "2026-01-15T14:00:08.514798Z",
  "executed_at": "2026-02-27T17:00:00Z",
  "settle_date": "2026-02-26",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "reorg_id": "3038297",
    "symbol": "SF",
    "old_qty": "0.54796447",
    "new_qty": "0.821946705",
    "old_rate": "1",
    "new_rate": "1.5",
    "ex_date": "2026-02-27",
    "record_date": "2026-02-12",
    "system_date": "2026-02-27",
    "payable_date": "2026-02-26",
    "position_date": "2026-02-26",
    "due_bill_redemption_date": "2026-02-27"
  }
}

{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-2>",
  "ref_id": "<REFID-2>",
  "activity_type": "SPLIT",
  "activity_subtype": "FSPLIT",
  "qty": "0.821946705",
  "price": "41.5467",
  "currency": "USD",
  "net_amount": "0",
  "status": "executed",
  "at": "2026-01-15T14:00:08.514798Z",
  "executed_at": "2026-02-27T17:00:00Z",
  "settle_date": "2026-02-26",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "reorg_id": "3038297",
    "symbol": "SF",
    "old_qty": "0.54796447",
    "new_qty": "0.821946705",
    "old_rate": "1",
    "new_rate": "1.5",
    "ex_date": "2026-02-27",
    "record_date": "2026-02-12",
    "system_date": "2026-02-27",
    "payable_date": "2026-02-26",
    "position_date": "2026-02-26",
    "due_bill_redemption_date": "2026-02-27"
  }
}
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-1>",
  "ref_id": "<REFID-1>",
  "activity_type": "SPLIT",
  "activity_subtype": "RSPLIT",
  "qty": "-33",
  "price": "7",
  "currency": "USD",
  "net_amount": "0",
  "status": "executed",
  "at": "2026-01-15T14:00:08.514798Z",
  "executed_at": "2026-02-27T05:00:00Z",
  "settle_date": "2026-02-27",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "reorg_id": "3049682",
    "symbol": "XRPT",
    "old_qty": "33",
    "new_qty": "1.65",
    "old_rate": "20",
    "new_rate": "1",
    "ex_date": "2026-02-27",
    "record_date": "2026-02-27",
    "system_date": "2026-02-27",
    "payable_date": "2026-02-27",
    "position_date": "2026-02-26"
  }
}

{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-2>",
  "ref_id": "<REFID-2>",
  "activity_type": "SPLIT",
  "activity_subtype": "RSPLIT",
  "qty": "1.65",
  "price": "140",
  "currency": "USD",
  "net_amount": "0",
  "status": "executed",
  "at": "2026-01-15T14:00:08.514798Z",
  "executed_at": "2026-02-27T05:00:00Z",
  "settle_date": "2026-02-27",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "reorg_id": "3049682",
    "symbol": "XRPT",
    "old_qty": "33",
    "new_qty": "1.65",
    "old_rate": "20",
    "new_rate": "1",
    "ex_date": "2026-02-27",
    "record_date": "2026-02-27",
    "system_date": "2026-02-27",
    "payable_date": "2026-02-27",
    "position_date": "2026-02-26"
  }
}
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-1>",
  "ref_id": "<REFID-1>",
  "activity_type": "SPLIT",
  "activity_subtype": "USPLIT",
  "qty": "-8",
  "price": "26.31",
  "currency": "USD",
  "net_amount": "0",
  "status": "executed",
  "at": "2026-01-15T14:00:08.514798Z",
  "executed_at": "2026-02-17T17:00:00Z",
  "settle_date": "2026-02-17",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "old_symbol": "CCCXU",
    "new_symbol": "INFQ",
    "alternate_symbol": "INFQ.WS",
    "old_qty": "8",
    "new_qty": "8",
    "alternate_qty": "2",
    "old_rate": "1",
    "new_rate": "1",
    "alternate_rate": "0.25",
    "system_date": "2026-02-17",
    "payable_date": "2026-02-17",
    "position_date": "2026-02-13",
    "effective_date": "2026-02-17"
  }
}

{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-2>",
  "ref_id": "<REFID-2>",
  "activity_type": "SPLIT",
  "activity_subtype": "USPLIT",
  "qty": "8",
  "price": "26.31",
  "currency": "USD",
  "net_amount": "0",
  "status": "executed",
  "at": "2026-01-15T14:00:08.514798Z",
  "executed_at": "2026-02-17T17:00:00Z",
  "settle_date": "2026-02-17",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "old_symbol": "CCCXU",
    "new_symbol": "INFQ",
    "alternate_symbol": "INFQ.WS",
    "old_qty": "8",
    "new_qty": "8",
    "alternate_qty": "2",
    "old_rate": "1",
    "new_rate": "1",
    "alternate_rate": "0.25",
    "system_date": "2026-02-17",
    "payable_date": "2026-02-17",
    "position_date": "2026-02-13",
    "effective_date": "2026-02-17"
  }
}

{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-3>",
  "ref_id": "<REFID-3>",
  "activity_type": "SPLIT",
  "activity_subtype": "USPLIT",
  "qty": "2",
  "price": "0",
  "currency": "USD",
  "net_amount": "0",
  "status": "executed",
  "at": "2026-01-15T14:00:08.514798Z",
  "executed_at": "2026-02-17T17:00:00Z",
  "settle_date": "2026-02-17",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "old_symbol": "CCCXU",
    "new_symbol": "INFQ",
    "alternate_symbol": "INFQ.WS",
    "old_qty": "8",
    "new_qty": "8",
    "alternate_qty": "2",
    "old_rate": "1",
    "new_rate": "1",
    "alternate_rate": "0.25",
    "system_date": "2026-02-17",
    "payable_date": "2026-02-17",
    "position_date": "2026-02-13",
    "effective_date": "2026-02-17"
  }
}
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID>",
  "ref_id": "<REFID>",
  "activity_type": "SPIN",
  "qty": "0.2",
  "price": "0",
  "currency": "USD",
  "net_amount": "0",
  "status": "executed",
  "at": "2026-01-15T14:00:08.514798Z",
  "executed_at": "2026-02-27T17:00:00Z",
  "settle_date": "2026-02-26",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "reorg_id": "3044458",
    "new_symbol": "RNA",
    "source_symbol": "RNAM",
    "new_qty": "0.2",
    "source_qty": "2",
    "new_rate": "0.1",
    "source_rate": "1",
    "new_price": "0",
    "source_price": "72.82",
    "ex_date": "2026-02-27",
    "record_date": "2026-02-12",
    "system_date": "2026-02-27",
    "payable_date": "2026-02-26",
    "position_date": "2026-02-26",
    "due_bill_redemption_date": "2026-02-27"
  }
}
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID>",
  "ref_id": "<REFID>",
  "activity_type": "FIMAT",
  "qty": "-1000",
  "price": "100",
  "currency": "USD",
  "net_amount": "1000",
  "status": "executed",
  "at": "2026-01-15T17:00:08.514798Z",
  "executed_at": "2026-01-15T17:00:00Z",
  "settle_date": "2026-01-15",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "qty": "1000",
    "cash_payout": "1000",
    "system_date": "2026-01-15",
    "payment_date": "2026-01-15"
  }
}
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID>",
  "ref_id": "<REFID>",
  "activity_type": "VOF",
  "activity_subtype": "VDST",
  "qty": "9.975695601",
  "price": "0",
  "currency": "USD",
  "net_amount": "0",
  "status": "executed",
  "at": "2026-01-12T17:00:08.514798Z",
  "executed_at": "2026-01-12T17:00:00Z",
  "settle_date": "2026-01-05",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "reorg_id": "3018482",
    "new_symbol": "HYT.RT",
    "source_symbol": "HYT",
    "new_qty": "9.975695601",
    "source_qty": "9.975695601",
    "rate": "1",
    "ex_date": "2026-01-02",
    "record_date": "2026-01-02",
    "system_date": "2026-01-12",
    "payable_date": "2026-01-05",
    "position_date": "2025-12-31",
    "expiration_date": "2026-01-26"
  }
}
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID>",
  "ref_id": "<REFID>",
  "activity_type": "REORG",
  "activity_subtype": "WRM",
  "qty": "-200",
  "price": "0",
  "currency": "USD",
  "net_amount": "0",
  "status": "executed",
  "at": "2026-01-15T17:00:08.514798Z",
  "executed_at": "2026-01-15T17:00:00Z",
  "settle_date": "2026-01-15",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "symbol": "CLNNW",
    "removed_qty": "200",
    "system_date": "2026-01-15",
    "position_date": "2026-01-14"
  }
}
# options - non corporate action related types: OPASN, OPEXC, OPEXP, OPTRD
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID>",
  "ref_id": "<REFID>",
  "activity_type": "OPASN",
  "qty": "14",
  "price": "0",
  "currency": "USD",
  "net_amount": "0",
  "status": "executed",
  "at": "2026-01-14T21:00:08.514798Z",
  "executed_at": "2026-01-14T21:00:00Z",
  "settle_date": "2026-01-14",
  "details": {
    "group_id": "<GRPID>",
    "system_date": "2026-01-14"
  }
}
# old contract removal leg
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-1>",
  "ref_id": "<REFID-1>",
  "activity_type": "OPCA",
  "activity_subtype": "DIV.CDIV",
  "qty": "-7",
  "price": "0.19",
  "currency": "USD",
  "net_amount": "133",
  "status": "executed",
  "at": "2026-07-13T08:25:15.080016Z",
  "executed_at": "2026-07-13T16:00:00Z",
  "settle_date": "2026-07-13",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "symbol": "FIZZ",
    "cusip": "635017106",
    "old_contract_symbol": "FIZZ260717P00030000",
    "new_contract_symbol": "FIZZ260717P00026750",
    "qty": "7",
    "rate": "3.25",
    "foreign": "false",
    "special": "true",
    "ex_date": "2026-07-13",
    "record_date": "2026-07-13",
    "system_date": "2026-07-13",
    "payable_date": "2026-07-30",
    "position_date": "2026-07-10"
  }
}

# new contract creation leg
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-2>",
  "ref_id": "<REFID-2>",
  "activity_type": "OPCA",
  "activity_subtype": "DIV.CDIV",
  "qty": "7",
  "price": "0.19",
  "currency": "USD",
  "net_amount": "-133",
  "status": "executed",
  "at": "2026-07-13T08:25:19.214049Z",
  "executed_at": "2026-07-13T16:00:00Z",
  "settle_date": "2026-07-13",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "symbol": "FIZZ",
    "cusip": "635017106",
    "old_contract_symbol": "FIZZ260717P00030000",
    "new_contract_symbol": "FIZZ260717P00026750",
    "qty": "7",
    "rate": "3.25",
    "foreign": "false",
    "special": "true",
    "ex_date": "2026-07-13",
    "record_date": "2026-07-13",
    "system_date": "2026-07-13",
    "payable_date": "2026-07-30",
    "position_date": "2026-07-10"
  }
}
# old contract removal leg
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-1>",
  "ref_id": "<REFID-1>",
  "activity_type": "OPCA",
  "activity_subtype": "DIV.SDIV",
  "qty": "-2",
  "price": "0.2",
  "currency": "USD",
  "net_amount": "40",
  "status": "executed",
  "at": "2025-12-29T10:00:11.144201Z",
  "executed_at": "2025-12-29T17:00:00Z",
  "settle_date": "2025-12-29",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "reorg_id": "3019202",
    "symbol": "ITUB",
    "cusip": "465562106",
    "old_contract_symbol": "ITUB260116C00008000",
    "new_contract_symbol": "ITUB2260116C00007770",
    "qty": "2",
    "rate": "1.03",
    "ex_date": "2025-12-29",
    "record_date": "2025-12-29",
    "system_date": "2025-12-29",
    "payable_date": "2025-12-31",
    "position_date": "2025-12-26"
  }
}

# new contract creation leg
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-2>",
  "ref_id": "<REFID-2>",
  "activity_type": "OPCA",
  "activity_subtype": "DIV.SDIV",
  "qty": "2",
  "price": "0.1942",
  "currency": "USD",
  "net_amount": "-40.01",
  "status": "executed",
  "at": "2025-12-29T10:00:16.145582Z",
  "executed_at": "2025-12-29T17:00:00Z",
  "settle_date": "2025-12-29",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "reorg_id": "3019202",
    "symbol": "ITUB",
    "cusip": "465562106",
    "old_contract_symbol": "ITUB260116C00008000",
    "new_contract_symbol": "ITUB2260116C00007770",
    "qty": "2",
    "rate": "1.03",
    "ex_date": "2025-12-29",
    "record_date": "2025-12-29",
    "system_date": "2025-12-29",
    "payable_date": "2025-12-31",
    "position_date": "2025-12-26"
  }
}
# old contract removal leg
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-1>",
  "ref_id": "<REFID-1>",
  "activity_type": "OPCA",
  "activity_subtype": "DIV.ROC",
  "qty": "-5",
  "price": "0.15",
  "currency": "USD",
  "net_amount": "75",
  "status": "executed",
  "at": "2026-04-28T08:11:14.996362Z",
  "executed_at": "2026-04-28T16:00:00Z",
  "settle_date": "2026-04-28",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "old_contract_symbol": "VISN260515P00016000",
    "new_contract_symbol": "VISN1260515P00016000",
    "qty": "5",
    "system_date": "2026-04-28",
    "position_date": "2026-04-27"
  }
}

# new contract creation leg
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-2>",
  "ref_id": "<REFID-2>",
  "activity_type": "OPCA",
  "activity_subtype": "DIV.ROC",
  "qty": "5",
  "price": "0.15",
  "currency": "USD",
  "net_amount": "-75",
  "status": "executed",
  "at": "2026-04-28T08:11:14.996362Z",
  "executed_at": "2026-04-28T16:00:00Z",
  "settle_date": "2026-04-28",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "old_contract_symbol": "VISN260515P00016000",
    "new_contract_symbol": "VISN1260515P00016000",
    "qty": "5",
    "system_date": "2026-04-28",
    "position_date": "2026-04-27"
  }
}
# old contract removal leg
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-1>",
  "ref_id": "<REFID-1>",
  "activity_type": "OPCA",
  "activity_subtype": "MA.SMA",
  "qty": "-3",
  "price": "0.65",
  "currency": "USD",
  "net_amount": "195",
  "status": "executed",
  "at": "2026-05-12T10:51:14.881163Z",
  "executed_at": "2026-05-12T16:00:00Z",
  "settle_date": "2026-05-12",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "reorg_id": "3017560",
    "acquiree_symbol": "UDMY",
    "acquirer_symbol": "COUR",
    "acquiree_cusip": "902685106",
    "acquirer_cusip": "22266M104",
    "old_contract_symbol": "UDMY260821C00005000",
    "new_contract_symbol": "COUR1260821C00005000",
    "qty": "3",
    "acquiree_rate": "1",
    "acquirer_rate": "0.8",
    "system_date": "2026-05-12",
    "payable_date": "2026-05-12",
    "position_date": "2026-05-11",
    "effective_date": "2026-05-11"
  }
}

# new contract creation leg
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-2>",
  "ref_id": "<REFID-2>",
  "activity_type": "OPCA",
  "activity_subtype": "MA.SMA",
  "qty": "3",
  "price": "0.65",
  "currency": "USD",
  "net_amount": "-195",
  "status": "executed",
  "at": "2026-05-12T10:51:21.103005Z",
  "executed_at": "2026-05-12T16:00:00Z",
  "settle_date": "2026-05-12",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "reorg_id": "3017560",
    "acquiree_symbol": "UDMY",
    "acquirer_symbol": "COUR",
    "acquiree_cusip": "902685106",
    "acquirer_cusip": "22266M104",
    "old_contract_symbol": "UDMY260821C00005000",
    "new_contract_symbol": "COUR1260821C00005000",
    "qty": "3",
    "acquiree_rate": "1",
    "acquirer_rate": "0.8",
    "system_date": "2026-05-12",
    "payable_date": "2026-05-12",
    "position_date": "2026-05-11",
    "effective_date": "2026-05-11"
  }
}
# old contract removal leg
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-1>",
  "ref_id": "<REFID-1>",
  "activity_type": "OPCA",
  "activity_subtype": "MA.SCMA",
  "qty": "-20",
  "price": "2.01",
  "currency": "USD",
  "net_amount": "4020",
  "status": "executed",
  "at": "2026-06-02T10:04:35.420592Z",
  "executed_at": "2026-06-02T16:00:00Z",
  "settle_date": "2026-06-02",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "old_contract_symbol": "THR261120C00090000",
    "new_contract_symbol": "CECO1261120C00090000",
    "qty": "20",
    "system_date": "2026-06-02",
    "position_date": "2026-06-01"
  }
}

# new contract creation leg
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-2>",
  "ref_id": "<REFID-2>",
  "activity_type": "OPCA",
  "activity_subtype": "MA.SCMA",
  "qty": "20",
  "price": "2.01",
  "currency": "USD",
  "net_amount": "-4020",
  "status": "executed",
  "at": "2026-06-02T10:04:35.420592Z",
  "executed_at": "2026-06-02T16:00:00Z",
  "settle_date": "2026-06-02",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "old_contract_symbol": "THR261120C00090000",
    "new_contract_symbol": "CECO1261120C00090000",
    "qty": "20",
    "system_date": "2026-06-02",
    "position_date": "2026-06-01"
  }
}
# old contract removal leg
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-1>",
  "ref_id": "<REFID-1>",
  "activity_type": "OPCA",
  "activity_subtype": "NC.SNC",
  "qty": "-1",
  "price": "29.1",
  "currency": "USD",
  "net_amount": "2910",
  "status": "executed",
  "at": "2026-06-24T08:40:37.427535Z",
  "executed_at": "2026-06-24T16:00:00Z",
  "settle_date": "2026-06-24",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "old_symbol": "SATS",
    "new_symbol": "ECHO",
    "old_cusip": "278768106",
    "new_cusip": "278768106",
    "old_contract_symbol": "SATS271217C00120000",
    "new_contract_symbol": "ECHO271217C00120000",
    "qty": "1",
    "system_date": "2026-06-24",
    "position_date": "2026-06-23"
  }
}

# new contract creation leg
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-2>",
  "ref_id": "<REFID-2>",
  "activity_type": "OPCA",
  "activity_subtype": "NC.SNC",
  "qty": "1",
  "price": "29.1",
  "currency": "USD",
  "net_amount": "-2910",
  "status": "executed",
  "at": "2026-06-24T08:40:46.012399Z",
  "executed_at": "2026-06-24T16:00:00Z",
  "settle_date": "2026-06-24",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "old_symbol": "SATS",
    "new_symbol": "ECHO",
    "old_cusip": "278768106",
    "new_cusip": "278768106",
    "old_contract_symbol": "SATS271217C00120000",
    "new_contract_symbol": "ECHO271217C00120000",
    "qty": "1",
    "system_date": "2026-06-24",
    "position_date": "2026-06-23"
  }
}
# old contract removal leg
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-1>",
  "ref_id": "<REFID-1>",
  "activity_type": "OPCA",
  "activity_subtype": "NC.CNC",
  "qty": "-4",
  "price": "0.22",
  "currency": "USD",
  "net_amount": "88",
  "status": "executed",
  "at": "2025-09-29T07:21:46.420695Z",
  "executed_at": "2025-09-29T16:00:00Z",
  "settle_date": "2025-09-29",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "old_symbol": "WOLF",
    "new_symbol": "WOLF",
    "old_cusip": "977852102",
    "new_cusip": "97785W106",
    "old_contract_symbol": "WOLF260116C00002000",
    "new_contract_symbol": "WOLF1260116C00002000",
    "qty": "4",
    "system_date": "2025-09-29",
    "position_date": "2025-09-26"
  }
}

# new contract creation leg
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-2>",
  "ref_id": "<REFID-2>",
  "activity_type": "OPCA",
  "activity_subtype": "NC.CNC",
  "qty": "4",
  "price": "0.22",
  "currency": "USD",
  "net_amount": "-88",
  "status": "executed",
  "at": "2025-09-29T07:22:37.461371Z",
  "executed_at": "2025-09-29T16:00:00Z",
  "settle_date": "2025-09-29",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "old_symbol": "WOLF",
    "new_symbol": "WOLF",
    "old_cusip": "977852102",
    "new_cusip": "97785W106",
    "old_contract_symbol": "WOLF260116C00002000",
    "new_contract_symbol": "WOLF1260116C00002000",
    "qty": "4",
    "system_date": "2025-09-29",
    "position_date": "2025-09-26"
  }
}
# old contract removal leg
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-1>",
  "ref_id": "<REFID-1>",
  "activity_type": "OPCA",
  "activity_subtype": "NC.SCNC",
  "qty": "-1",
  "price": "3.7",
  "currency": "USD",
  "net_amount": "370",
  "status": "executed",
  "at": "2026-04-06T08:23:56.397116Z",
  "executed_at": "2026-04-06T16:00:00Z",
  "settle_date": "2026-04-06",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "old_symbol": "BITF",
    "new_symbol": "KEEL",
    "old_cusip": "09173B107",
    "new_cusip": "486917107",
    "old_contract_symbol": "BITF270115C00000500",
    "new_contract_symbol": "KEEL270115C00000500",
    "qty": "1",
    "system_date": "2026-04-06",
    "position_date": "2026-04-02"
  }
}

# new contract creation leg
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-2>",
  "ref_id": "<REFID-2>",
  "activity_type": "OPCA",
  "activity_subtype": "NC.SCNC",
  "qty": "1",
  "price": "3.7",
  "currency": "USD",
  "net_amount": "-370",
  "status": "executed",
  "at": "2026-04-06T08:23:56.397116Z",
  "executed_at": "2026-04-06T16:00:00Z",
  "settle_date": "2026-04-06",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "old_symbol": "BITF",
    "new_symbol": "KEEL",
    "old_cusip": "09173B107",
    "new_cusip": "486917107",
    "old_contract_symbol": "BITF270115C00000500",
    "new_contract_symbol": "KEEL270115C00000500",
    "qty": "1",
    "system_date": "2026-04-06",
    "position_date": "2026-04-02"
  }
}
# old contract removal leg
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-1>",
  "ref_id": "<REFID-1>",
  "activity_type": "OPCA",
  "activity_subtype": "SPIN",
  "qty": "-1",
  "price": "8.36",
  "currency": "USD",
  "net_amount": "836",
  "status": "executed",
  "at": "2026-07-01T09:42:22.981030Z",
  "executed_at": "2026-07-01T04:00:00Z",
  "settle_date": "2026-07-01",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "new_symbol": "MBGL",
    "source_symbol": "SPGI",
    "new_cusip": "60744M106",
    "source_cusip": "78409V104",
    "old_contract_symbol": "SPGI260821C00470000",
    "new_contract_symbol": "SPGI1260821C00470000",
    "qty": "-1",
    "new_rate": "1",
    "source_rate": "1",
    "new_price": "22.05",
    "source_price": "407.26",
    "ex_date": "2026-07-01",
    "record_date": "2026-06-15",
    "system_date": "2026-07-01",
    "payable_date": "2026-07-01",
    "position_date": "2026-06-30"
  }
}

# new contract creation leg
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-2>",
  "ref_id": "<REFID-2>",
  "activity_type": "OPCA",
  "activity_subtype": "SPIN",
  "qty": "1",
  "price": "8.36",
  "currency": "USD",
  "net_amount": "-836",
  "status": "executed",
  "at": "2026-07-01T09:42:22.981030Z",
  "executed_at": "2026-07-01T04:00:00Z",
  "settle_date": "2026-07-01",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "new_symbol": "MBGL",
    "source_symbol": "SPGI",
    "new_cusip": "60744M106",
    "source_cusip": "78409V104",
    "old_contract_symbol": "SPGI260821C00470000",
    "new_contract_symbol": "SPGI1260821C00470000",
    "qty": "-1",
    "new_rate": "1",
    "source_rate": "1",
    "new_price": "22.05",
    "source_price": "407.26",
    "ex_date": "2026-07-01",
    "record_date": "2026-06-15",
    "system_date": "2026-07-01",
    "payable_date": "2026-07-01",
    "position_date": "2026-06-30"
  }
}
# old contract removal leg
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-1>",
  "ref_id": "<REFID-1>",
  "activity_type": "OPCA",
  "activity_subtype": "SPLIT.FSPLIT",
  "qty": "-1",
  "price": "1.07",
  "currency": "USD",
  "net_amount": "107",
  "status": "executed",
  "at": "2026-07-15T08:23:48.523132Z",
  "executed_at": "2026-07-15T16:00:00Z",
  "settle_date": "2026-07-14",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "reorg_id": "3102892",
    "symbol": "KORU",
    "old_cusip": "25461A387",
    "new_cusip": "25461A387",
    "old_contract_symbol": "KORU260717C01700000",
    "new_contract_symbol": "KORU260717C00085000",
    "old_qty": "1",
    "new_qty": "20",
    "old_rate": "1",
    "new_rate": "20",
    "ex_date": "2026-07-15",
    "record_date": "2026-07-13",
    "system_date": "2026-07-15",
    "payable_date": "2026-07-14",
    "position_date": "2026-07-15",
    "due_bill_redemption_date": "2026-07-15"
  }
}

# new contract creation leg
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-2>",
  "ref_id": "<REFID-2>",
  "activity_type": "OPCA",
  "activity_subtype": "SPLIT.FSPLIT",
  "qty": "20",
  "price": "0.05",
  "currency": "USD",
  "net_amount": "-100",
  "status": "executed",
  "at": "2026-07-15T08:23:53.983324Z",
  "executed_at": "2026-07-15T16:00:00Z",
  "settle_date": "2026-07-14",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "reorg_id": "3102892",
    "symbol": "KORU",
    "old_cusip": "25461A387",
    "new_cusip": "25461A387",
    "old_contract_symbol": "KORU260717C01700000",
    "new_contract_symbol": "KORU260717C00085000",
    "old_qty": "1",
    "new_qty": "20",
    "old_rate": "1",
    "new_rate": "20",
    "ex_date": "2026-07-15",
    "record_date": "2026-07-13",
    "system_date": "2026-07-15",
    "payable_date": "2026-07-14",
    "position_date": "2026-07-15",
    "due_bill_redemption_date": "2026-07-15"
  }
}
# old contract removal leg
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-1>",
  "ref_id": "<REFID-1>",
  "activity_type": "OPCA",
  "activity_subtype": "SPLIT.RSPLIT",
  "qty": "-454",
  "price": "0.83",
  "currency": "USD",
  "net_amount": "37682",
  "status": "executed",
  "at": "2026-07-15T13:52:50.100451Z",
  "executed_at": "2026-07-15T16:00:00Z",
  "settle_date": "2026-07-15",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "reorg_id": "3102961",
    "symbol": "SOXS",
    "old_cusip": "25461H572",
    "new_cusip": "25461H291",
    "old_contract_symbol": "SOXS260821C00005000",
    "new_contract_symbol": "SOXS2260821C00005000",
    "qty": "454",
    "old_rate": "10",
    "new_rate": "1",
    "ex_date": "2026-07-15",
    "record_date": "2026-07-15",
    "system_date": "2026-07-15",
    "payable_date": "2026-07-15",
    "position_date": "2026-07-15"
  }
}

# new contract creation leg
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-2>",
  "ref_id": "<REFID-2>",
  "activity_type": "OPCA",
  "activity_subtype": "SPLIT.RSPLIT",
  "qty": "454",
  "price": "0.83",
  "currency": "USD",
  "net_amount": "-37682",
  "status": "executed",
  "at": "2026-07-15T13:53:25.520705Z",
  "executed_at": "2026-07-15T16:00:00Z",
  "settle_date": "2026-07-15",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "reorg_id": "3102961",
    "symbol": "SOXS",
    "old_cusip": "25461H572",
    "new_cusip": "25461H291",
    "old_contract_symbol": "SOXS260821C00005000",
    "new_contract_symbol": "SOXS2260821C00005000",
    "qty": "454",
    "old_rate": "10",
    "new_rate": "1",
    "ex_date": "2026-07-15",
    "record_date": "2026-07-15",
    "system_date": "2026-07-15",
    "payable_date": "2026-07-15",
    "position_date": "2026-07-15"
  }
}
# old contract removal leg
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-1>",
  "ref_id": "<REFID-1>",
  "activity_type": "OPCA",
  "activity_subtype": "SPLIT.USPLIT",
  "qty": "-3",
  "price": "10",
  "currency": "USD",
  "net_amount": "3000",
  "status": "executed",
  "at": "2026-05-07T07:00:00.000000Z",
  "executed_at": "2026-05-07T16:00:00Z",
  "settle_date": "2026-05-07",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "old_symbol": "PLTR",
    "new_symbol": "PLTT",
    "alternate_symbol": "PLTRX",
    "old_cusip": "69608A108",
    "new_cusip": "69608A109",
    "alternate_cusip": "74255L555",
    "old_contract_symbol": "PLTR260515C00165000",
    "new_contract_symbol": "PLTT1260515C00165000",
    "qty": "3",
    "old_rate": "1",
    "new_rate": "1",
    "alternate_rate": "1",
    "system_date": "2026-05-07",
    "position_date": "2026-05-06",
    "effective_date": "2026-05-07"
  }
}

# new contract creation leg
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-2>",
  "ref_id": "<REFID-2>",
  "activity_type": "OPCA",
  "activity_subtype": "SPLIT.USPLIT",
  "qty": "3",
  "price": "10",
  "currency": "USD",
  "net_amount": "-3000",
  "status": "executed",
  "at": "2026-05-07T07:00:00.000000Z",
  "executed_at": "2026-05-07T16:00:00Z",
  "settle_date": "2026-05-07",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "old_symbol": "PLTR",
    "new_symbol": "PLTT",
    "alternate_symbol": "PLTRX",
    "old_cusip": "69608A108",
    "new_cusip": "69608A109",
    "alternate_cusip": "74255L555",
    "old_contract_symbol": "PLTR260515C00165000",
    "new_contract_symbol": "PLTT1260515C00165000",
    "qty": "3",
    "old_rate": "1",
    "new_rate": "1",
    "alternate_rate": "1",
    "system_date": "2026-05-07",
    "position_date": "2026-05-06",
    "effective_date": "2026-05-07"
  }
}
# old contract removal leg
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-1>",
  "ref_id": "<REFID-1>",
  "activity_type": "OPCA",
  "activity_subtype": "VOF.VDST",
  "qty": "-1",
  "price": "0.23",
  "currency": "USD",
  "net_amount": "23",
  "status": "executed",
  "at": "2026-07-06T11:40:36.859065Z",
  "executed_at": "2026-07-06T16:00:00Z",
  "settle_date": "2026-07-06",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "old_contract_symbol": "EOSE260717P00005000",
    "new_contract_symbol": "EOSE1260717P00005000",
    "qty": "1",
    "system_date": "2026-07-06",
    "position_date": "2026-07-02"
  }
}

# new contract creation leg
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-2>",
  "ref_id": "<REFID-2>",
  "activity_type": "OPCA",
  "activity_subtype": "VOF.VDST",
  "qty": "1",
  "price": "0.23",
  "currency": "USD",
  "net_amount": "-23",
  "status": "executed",
  "at": "2026-07-06T11:40:36.859065Z",
  "executed_at": "2026-07-06T16:00:00Z",
  "settle_date": "2026-07-06",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "old_contract_symbol": "EOSE260717P00005000",
    "new_contract_symbol": "EOSE1260717P00005000",
    "qty": "1",
    "system_date": "2026-07-06",
    "position_date": "2026-07-02"
  }
}
# old contract removal leg
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-1>",
  "ref_id": "<REFID-1>",
  "activity_type": "OPCA",
  "activity_subtype": "CADJ",
  "qty": "-1",
  "price": "0.69",
  "currency": "USD",
  "net_amount": "69",
  "status": "executed",
  "at": "2026-07-23T08:46:42.453905Z",
  "executed_at": "2026-07-23T16:00:00Z",
  "settle_date": "2026-07-23",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "old_contract_symbol": "EOSE1260731C00005500",
    "new_contract_symbol": "EOSE260731C00005500",
    "qty": "1",
    "system_date": "2026-07-23",
    "position_date": "2026-07-22"
  }
}

# new contract creation leg
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-2>",
  "ref_id": "<REFID-2>",
  "activity_type": "OPCA",
  "activity_subtype": "CADJ",
  "qty": "1",
  "price": "0.69",
  "currency": "USD",
  "net_amount": "-69",
  "status": "executed",
  "at": "2026-07-23T08:49:32.667749Z",
  "executed_at": "2026-07-23T16:00:00Z",
  "settle_date": "2026-07-23",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "old_contract_symbol": "EOSE1260731C00005500",
    "new_contract_symbol": "EOSE260731C00005500",
    "qty": "1",
    "system_date": "2026-07-23",
    "position_date": "2026-07-22"
  }
}
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID>",
  "ref_id": "<REFID>",
  "activity_type": "FOPT",
  "qty": "10",
  "price": "100",
  "currency": "USD",
  "net_amount": "0",
  "status": "executed",
  "at": "2026-01-14T02:00:08.514798Z",
  "executed_at": "2026-01-14T17:33:52.409539Z",
  "settle_date": "2026-01-14",
  "details": {
    "external_id": "DEF5GRE2E5CW1F09",
    "contra": "00000632",
    "symbol": "IBM",
    "system_date": "2026-01-14"
  }
}
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID>",
  "ref_id": "<REFID>",
  "activity_type": "MEM",
  "qty": "42",
  "price": "42",
  "currency": "USD",
  "net_amount": "1764",
  "status": "executed",
  "at": "2026-01-14T02:00:08.514798Z",
  "executed_at": "2025-09-03T16:04:00.512126999Z",
  "settle_date": "2025-09-03",
    "details": {
    "transfer_id": "63febd60-51ad-4b90-b9a5-f4553972154d",
    "system_date": "2025-09-03",
    "group_id": "cebd684a-0f6a-4437-8435-0c99af5f86a9"
  },
}
// A CGD event could have 1 leg or 2 legs, because it can have either the LTCG/STCG subtype or both subtypes. 
// LTCG leg
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-1>",
  "ref_id": "<REFID-1>",
  "activity_type": "CGD",
  "activity_subtype": "LTCG",
  "qty": "0",
  "price": "0",
  "currency": "USD",
  "net_amount": "45.86",
  "status": "executed",
  "at": "2026-01-09T14:00:00.123456Z",
  "executed_at": "2026-01-09T16:00:00Z",
  "settle_date": "2026-01-09",
  "details": {
    "ca_id":  "<CAID>",
    "group_id": "<GRPID>",
    "symbol": "GCAD",
    "cusip": "36261K509",
    "entitled_qty": "100",
    "cash_payout": "45.855",
    "rate": "0.45855",
    "long_term_rate": "0.45855",
    "short_term_rate": "0.11019",
    "ex_date": "2025-12-26",
    "record_date": "2025-12-29",
    "payable_date": "2026-01-09",
    "position_date": "2025-12-26",
    "system_date": "2026-01-09"
  }
}

// STCG leg
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-2>",
  "ref_id": "<REFID-2>",
  "activity_type": "CGD",
  "activity_subtype": "STCG",
  "qty": "0",
  "price": "0",
  "currency": "USD",
  "net_amount": "11.02",
  "status": "executed",
  "at": "2026-01-09T14:00:00.456789Z",
  "executed_at": "2026-01-09T16:00:00Z",
  "settle_date": "2026-01-09",
  "details": {
    "ca_id":  "<CAID>",
    "group_id": "<GRPID>",
    "symbol": "GCAD",
    "cusip": "36261K509",
    "isin": "US36261K5090",
    "entitled_qty": "100",
    "cash_payout": "1.1019",
    "rate": "0.11019",
    "short_term_rate": "0.11019",
    "ex_date": "2025-12-26",
    "record_date": "2025-12-29",
    "payable_date": "2026-01-09",
    "position_date": "2025-12-26",
    "system_date": "2026-01-09"
  }
}
// A stock-only reorganization emits one SSE event per leg.
// Example: stock only, 1-for-1 exchange (CEPT → SECZ). Example: 50 CEPT shares convert 1:1 into 50 SECZ shares.
// Leg 1 — remove source shares (details.removed_qty = 50) 
{
  ...
  "activity_type": "REO",
  "activity_subtype": "REOS",
  "qty": "-50",
  "net_amount": "0",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "reorg_id": "12345",
    "source_symbol": "CEPT",
    "source_cusip": "12345A678",
    "source_isin": "US1234567890",
    "removed_qty": "50",
    "effective_date": "2026-07-02",
    "payable_date": "2026-07-02",
    "position_date": "2026-07-02",
    "system_date": "2026-07-02"
  }
}

// Leg 2 — add destination shares
{
  ...
  "activity_type": "REO",
  "activity_subtype": "REOS",
  "qty": "50",
  "net_amount": "0",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "reorg_id": "12345",
    "source_symbol": "CEPT",
    "source_cusip": "12345A678",
    "source_isin": "US1234567890",
    "source_qty": "50",
    "symbol": "SECZ",
    "cusip": "98765Z432",
    "isin": "US9876543210", 
    "source_rate": "1",
    "new_rate": "1",
    "qty": "50",
    "effective_date": "2026-07-02",
    "payable_date": "2026-07-02",
    "position_date": "2026-07-02",
    "system_date": "2026-07-02"
  }
}

// It's possible to have multi-leg variant that add shares for more than one symbol. For example, three legs: 
// - removal (−50 CEPT) - example above
// - add SECZ (+50) - example above 
// - add SPNA (+10) - described below 

// Leg 3 — adds second target shares (SPNA)
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-3>",
  "ref_id": "<REFID-3>",
  "activity_type": "REO",
  "activity_subtype": "REOS",
  "qty": "10",
  "price": "63.45",
  "currency": "USD",
  "net_amount": "0",
  "status": "executed",
  "at": "2026-07-02T04:00:08.514798Z",
  "executed_at": "2026-07-02T04:00:00Z",
  "settle_date": "2026-07-02",
  "details": {
    "ca_id":  "<CAID>",
    "group_id": "<GRPID>",
    "reorg_id": "12345",
    "source_symbol": "CEPT",
    "source_cusip": "12345A678",
    "source_isin": "US1234567890",
    "source_qty": "50",
    "symbol": "SPNA",
    "cusip": "55555Q111",
    "isin": "US55555Q111",
    "source_rate": "1",
    "new_rate": "0.2",
    "qty": "10",
    "effective_date": "2026-07-02",
    "payable_date": "2026-07-02",
    "position_date": "2026-07-02",
    "system_date": "2026-07-02"
  }
}
// Example: cash only ($10.00/share cash-out)
// Cash-only reorganization. No new stock-leg fields.
// 50 shares at $10.00/share → $500 cash payout.

{
  "account_id": "<ACCID>",
  "event_id": "<EVTID>",
  "ref_id": "<REFID>",
  "activity_type": "REO",
  "activity_subtype": "REOC",
  "qty": "-50",
  "price": "10.00",
  "net_amount": "0",
  "status": "executed",
  "at": "2026-07-02T04:00:08.514798Z",
  "executed_at": "2026-07-02T04:00:00Z",
  "settle_date": "2026-07-02",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "reorg_id": "12345",
    "source_symbol": "CEPT",
    "source_cusip": "12345A678",
    "removed_qty": "50",
    "effective_date": "2026-07-02",
    "payable_date": "2026-07-02",
    "position_date": "2026-07-02",
    "system_date": "2026-07-02"
  }
}

// Leg 2 - add cash
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID>",
  "ref_id": "<REFID>",
  "activity_type": "REO",
  "activity_subtype": "REOC",
  "qty": "0",
  "currency": "USD",
  "net_amount": "500",
  "status": "executed",
  "at": "2026-07-02T04:00:08.514798Z",
  "executed_at": "2026-07-02T04:00:00Z",
  "settle_date": "2026-07-02",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "reorg_id": "12345",
    "source_symbol": "CEPT",
    "source_cusip": "12345A678",
    "source_qty": "50",
    "cash_rate": "10",
    "cash_payout": "500",
    "effective_date": "2026-07-02",
    "payable_date": "2026-07-02",
    "position_date": "2026-07-02",
    "system_date": "2026-07-02"
  }
}
// Example: stock and cash. Mixed consideration: 50 CEPT → 25 SECZ + $150 cash.
// 3 events

// leg 1 - remove shares 
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-1>",
  "ref_id": "<REFID-1>",
  "activity_type": "REO",
  "activity_subtype": "REOSC",
  "qty": "-50",
  "price": "12.69",
  "currency": "USD",
  "net_amount": "0",
  "status": "executed",
  "at": "2026-07-02T04:00:08.514798Z",
  "executed_at": "2026-07-02T04:00:00Z",
  "settle_date": "2026-07-02",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "reorg_id": "12345",
    "source_symbol": "CEPT",
    "source_cusip": "12345A678",
    "source_isin": "US1234567890",
    "removed_qty": "50",
    "effective_date": "2026-07-02",
    "payable_date": "2026-07-02",
    "position_date": "2026-07-02",
    "system_date": "2026-07-02"
  }
}

// leg 2 - add cash
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-2>",
  "ref_id": "<REFID-2>",
  "activity_type": "REO",
  "activity_subtype": "REOSC",
  "qty": "0",
  "currency": "USD",
  "net_amount": "150",
  "status": "executed",
  "at": "2026-07-02T04:00:08.514798Z",
  "executed_at": "2026-07-02T04:00:00Z",
  "settle_date": "2026-07-02",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "reorg_id": "12345",
    "source_symbol": "CEPT",
    "source_cusip": "12345A678",
    "source_qty": "50",
    "cash_rate": "3",
    "cash_payout": "150",
    "effective_date": "2026-07-02",
    "payable_date": "2026-07-02",
    "position_date": "2026-07-02",
    "system_date": "2026-07-02"
  }
}

// leg 3 - add shares
{
  "account_id": "<ACCID>",
  "event_id": "<EVTID-3>",
  "ref_id": "<REFID-3>",
  "activity_type": "REO",
  "activity_subtype": "REOSC",
  "qty": "25",
  "price": "12.69",
  "currency": "USD",
  "net_amount": "0",
  "status": "executed",
  "at": "2026-07-02T04:00:08.514798Z",
  "executed_at": "2026-07-02T04:00:00Z",
  "settle_date": "2026-07-02",
  "details": {
    "ca_id": "<CAID>",
    "group_id": "<GRPID>",
    "reorg_id": "12345",
    "source_symbol": "CEPT",
    "source_cusip": "12345A678",
    "source_isin": "US1234567890",
    "source_qty": "50",
    "symbol": "SECZ",
    "cusip": "98765Z432",
    "isin": "US9876543210",
    "source_rate": "1",
    "new_rate": "0.5",
    "qty": "25",
    "effective_date": "2026-07-02",
    "payable_date": "2026-07-02",
    "position_date": "2026-07-02",
    "system_date": "2026-07-02"
  }
}

重要说明

某些活动类型(如下所列)在示例中缺失。我们正在努力在活动于我们的生产环境中处理后尽快添加这些示例。

  • VOF/VTND
  • VOF/VWRT
  • VOF/VRGT
  • VOF/VEXH

最佳实践

幂等处理

重连期间你可能会收到重复事件。使用 ref_id 作为你的去重键。在应用事件之前,检查你是否已处理过具有该 ref_id 的活动。

重连策略

  • 实现带指数退避的自动重连。
  • 始终使用设置为最后成功处理的 event_id 的 since_id 重新连接。
  • 出于对账目的重连时,将 since 设置为你最后处理的事件时间戳之前几分钟,以应对可能的顺序边界情况。

账户范围

Activity SSE 为你的代理下所有账户流式传输事件,包括公司账户——不仅是客户账户。

消息排序

  • 保证按账户排序。 如果同一账户的事件 E1 先于 E2 到达,则 E1 先发生。
  • 不保证跨账户排序。 使用 at 或 event_id 字段来确定跨账户的顺序。

事件排序与业务时间

event_id(ULID)和 at 字段编码不同的时间戳:

  • at 是业务事件时间戳——即活动在源系统中实际发生的时间。
  • event_id(ULID)编码发布序列时间戳——即事件被追加到内部活动流的时间。这决定了事件的投递和回放顺序。

在正常运行中,两者几乎相同。然而,在基础设施延迟或回填期间,它们可能会发生偏离。如果 Alpaca 回填历史活动,它会出现在 event_id 序列的末尾(反映其发布的时间),即使其 at 值反映的是原始业务时间。

since 和 until 查询参数按业务时间戳(at)进行筛选。类似 since=2026-01-15T00:00:00Z&until=2026-01-16T00:00:00Z 的查询返回的事件可能包含 event_id 值超出此范围的活动,这些活动只是因为回填而稍后才被投递。

对于基于游标的回放,始终使用 since_id 与最后处理的 event_id。since/until 时间戳参数最适合对账和广泛的历史查询,而非无间隙恢复。如果你指定 since,还需要指定 until——而 since_id 可以让你保持结束日期开放,并过渡到实时消费。

时间戳编码

since 和 until 参数接受带时区的 RFC 3339 时间戳。时区偏移中的 + 字符(例如 +07:00)必须进行 URL 编码为 %2B:

/v2beta1/events/activities?since=2026-01-02T15:04:05%2B07:00

消费者性能

如果你的消费者无法跟上事件速率,服务器将丢弃消息并发送注释:: you are reading too slowly, dropped N messages。为避免这种情况:

  • 异步处理事件——从流中读入缓冲区,再从缓冲区处理。
  • 避免在流读取循环中进行阻塞 I/O(例如同步数据库写入)。
  • 对于事件量大的客户,我们还提供分片流式传输。请联系我们。

SSE 投递与余额和持仓查询

Activity SSE 在事件被记录到账本后立即投递。余额和持仓查询(例如 Trading Account 或 Account Portfolio 端点)可能不会立即反映该活动,因为它们依赖于单独的日内调整流程。

不要假设收到活动事件就意味着账户的余额或持仓已在查询端点中更新。如果你的工作流通过检查余额来响应 SSE 事件,请构建轮询或重试机制以应对传播延迟。