金融与交易
建设或排障交易所连接与行情基础设施时,用 FIX/专有协议…
适用于券商、做市商或机构交易团队设计、运维、排障交易所 FIX/OUCH/ITCH/PITCH/Pillar/BOE 连接、行情馈送、交易暂停、Co-location/DR 与 Rule 15c3-5/CAT/Reg SCI 合规。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
建设或排障交易所连接与行情基础设施时,用特定
解决思路
- DMA:自建与交易所的 FIX 会话或专有协议连接,直接向 matching engine 发单,并自行承担 pre-trade risk controls。
- Sponsored Access:通过保荐经纪商的 MPID 路由订单,确保赞助方按 Rule 15c3-5 实施 pre-trade 风控;使用 filtered access,避免 unfiltered,因为 SEC 已通过 Rule 15c3-5 实质禁止。
- FIX:使用 tag-value 消息格式做订单路由和执行报告,例如 Tag 35=D 表示 New Order Single、Tag 35=8 表示 Execution Report;根据场所选择 FIX 4.2、FIX 4.4、FIX 5.0/FIXT 1.1。
- 专有协议:Nasdaq 订单入口用 OUCH,Nasdaq 行情 Level 3 用 ITCH,Cboe BZX/BYX/EDGX/EDGA 行情用 PITCH,NYSE/NYSE Arca/NYSE American/NYSE National 用 Pillar,Cboe 订单入口低延迟用 BOE。
- Co-location:把交易服务器放入交易所同一数据中心以降低延迟;Proximity Hosting 放在交易所附近数据中心,延迟略高但通常成本更低;关注 NYSE Mahwah、Nasdaq Carteret 等主要美国交易所数据中心。
- Extranet:使用 TNS、IPC/Atos Connexus Cloud、BSO、Options Technology 等金融外联网,通过单一物理连接接入多个交易所和交易场所,同时管理共享网络依赖风险。
- 冗余设计:为每个生产 FIX 会话或行情馈送配置 primary/backup,使用不同物理路径、不同交换机、不同 extranet/carrier、Co-location 内 cross-connect 冗余,并保留可恢复交易的地理 DR 站点。
- FIX Logon:发送 MsgType=A,包含 SenderCompID、TargetCompID、约定 heartbeat interval,处理对端 Logon 响应;部分场所要求加密或认证 token。
- FIX Logout:发送 MsgType=5 优雅终止会话;实现应先等待对端 Logout 响应,再关闭 TCP 连接。
- FIX Heartbeat:在约定间隔发送 MsgType=0;订单会话常用 30 秒,行情会话常用 10-30 秒。
- FIX TestRequest:Heartbeat 超时未收到时发送 MsgType=1;接收方必须回复带 TestReqID 的 Heartbeat。
- FIX ResendRequest:检测到序列号 gap 时发送 MsgType=2,请求重传指定序列号范围。
- FIX SequenceReset:使用 MsgType=4;GapFillFlag=Y 为 gap-fill,推进序列号跳过无需重传的管理消息;GapFillFlag=N 为 reset,仅用于会话初始化或错误恢复,禁止不当使用以免丢消息。
- FIX Reject:消息未通过会话级校验时发送 MsgType=3;它表示解析失败,不表示业务级拒单。
- FIX 会话配置:为每条 FIX 会话分配唯一 SenderCompID/TargetCompID,按交易所或对手方约定设置。
- FIX 会话配置:按场所要求设置 heartbeat interval,订单会话与行情会话可采用不同值。
- FIX 会话配置:按交易所文档决定 ResetOnLogon;有的每次 Logon 重置序列号到 1,有的跨会话持久化序列号并依赖 ResendRequest/SequenceReset 恢复。
- FIX 编码:标准 FIX 使用 ASCII tag=value,字段间以 SOH 0x01 分隔;若场所支持行情 FAST,可使用 FIX Adapted for Streaming 二进制压缩降低带宽。
- 序列号管理:每侧维护 outgoing sequence number 和 expected incoming sequence number,发送一条递增 outgoing,接收一条递增 expected incoming。
- 序列号管理:持久化序列号到磁盘,使应用重启后可恢复会话而不必重置。
- 序列号管理:若收到消息序列号大于 expected,检测到 gap 并发出 ResendRequest。
- 序列号管理:若收到消息序列号小于 expected 且未标记 PossDup,会话进入不可恢复状态,应断开连接。
- Gap 恢复:发送 ResendRequest,指定 BeginSeqNo 到 EndSeqNo;EndSeqNo=0 表示无穷或直到最新。
- Gap 恢复:发送方用 PossDupFlag=Y 重传缺失消息。
- Gap 恢复:接收方必须幂等处理 PossDup 消息,例如 PossDup 的 Execution Report 不应在 OMS 中触发第二次 fill。
- 会话排期:盘前时段建立 FIX 会话,通常在 7:00 或 8:00 ET,部分场所 4:00 ET,以完成 Logon、序列同步和盘前消息。
- 会话排期:常规交易 9:30-16:00 ET,FIX 会话必须在开盘集合竞价前完全可用。
- 会话排期:盘后订单入口可能持续到 17:00 或 20:00 ET,具体取决于场所;部分场所扩展时段需要单独会话参数。
- 会话排期:日终按交易所流程 logout,并根据要求重置或持久化序列号。
- 行情深度:按消费应用选择层级;Level 1 top of book/NBBO 和 last sale 适合组合与合规流程,Level 2 逐场所 depth of book 支持市场冲击估计和 book-imbalance 策略,Level 3 逐订单行情如 Nasdaq ITCH、Cboe PITCH 适合做市和低延迟策略。
- 行情深度:选择层级时评估 feed 成本、带宽和 feed-handler 复杂度,它们随深度急剧上升。
- SIP:使用 CTA/CQS 获取 NYSE 等上市证券的合并成交和报价,使用 UTP 获取 Nasdaq 上市证券跨场所合并成交和报价;SIP 是官方 NBBO 和 Reg NMS trade-through protection 的参考。
- SIP:理解 SIP 因合并过程通常慢于 direct exchange feeds,延迟差异是监管讨论主题。
- Direct Feeds:订阅各交易所自有行情,仅提供该交易所活动但比 SIP 更快;低延迟策略应订阅 direct feeds 并自建 internal/synthetic/direct NBBO。
- 行情归一化:把交易所特定 symbology 映射到公司 internal security master,把交易所特定消息格式转换为统一 schema。
- 行情归一化:按 exchange timestamp 对不同来源消息排序。
- 行情归一化:处理不同价格格式,包括 decimal 和 fixed income 的 fractional。
- 行情归一化:对同时出现在 consolidated 和 direct feeds 的事件去重。
- 数据供应商:接入 Bloomberg Terminal/B-PIPE/BLPAPI,使用 Bloomberg tickers/FIGIs;接入 Refinitiv Elektron/Eikon,使用 RIC;接入 ICE Data Services 的实时、参考和 evaluated pricing 数据。
- 数据供应商:管理 vendor-specific latency、symbology 层,以及交易所数据再分发协议和 per-user licensing。
- MWCB:每日基于前一日 S&P 500 收盘值计算阈值;Level 1 7% 在 3:25 PM ET 前触发则停牌 15 分钟,3:25 PM ET 或之后触发则继续交易;Level 2 13% 同样处理;Level 3 20% 无论何时触发均停牌至当日结束。
- MWCB:每级每日只能触发一次;Level 1 停牌不阻止后续市场继续下跌时触发 Level 2 或 Level 3。
- LULD:参考价为前 5 分钟窗口内 reported transaction prices 的算术平均值,常规交易时段每 30 秒更新。
- LULD:价格带按参考价上下百分比计算;Tier 1 证券如 S&P 500、Russell 1000 和部分 ETPs 用 5%,Tier 2 证券用 10%;开盘前 15 分钟和收盘前 25 分钟用 20% 更宽带。
- LULD limit state:若 NBBO 触及上/下价格带,例如 best offer 等于 lower band 或 best bid 等于 upper band,证券进入 limit state,交易继续但禁止在带外成交。
- LULD trading pause:若 limit state 持续 15 秒,primary listing exchange 宣布 5 分钟 trading pause;暂停后通过 re-opening auction 恢复交易。
- LULD:系统必须实时监控 LULD bands,并阻止提交会违反 price bands 的订单。
- 监管停牌:处理 news pending T1 halt、news dissemination T2 halt、SEC Section 12(k) trading suspension(最长 10 个 business days)、IPO/direct listing pre-opening halts。
- 交易所特定停牌:处理 volatility interruptions、matching engine issues 等,通过交易所特定 market data messages 和 administrative notices 获知。
- 停牌系统处理:检测到 halted security 后,立即停止向受影响 venue(s) 发送该证券的新订单。
- 停牌系统处理:确定 open orders 处置方式;部分 halt 类型会使交易所取消所有 resting orders,另一些则保留在 book 上。
- 停牌系统处理:告警 traders 和 portfolio managers。
- 停牌系统处理:决定恢复交易时是排队提交新订单请求还是拒绝它们。
- 停牌系统处理:监控 resumption message 和 re-opening auction。
- 停牌系统处理:记录 halt 事件用于 regulatory reporting,包括 CAT reporting 中的 halt-related order events。
- Symbology:理解 ticker symbols 由交易所分配、随公司行动变化且不全局唯一;CUSIP 用于美国/加拿大且需 CUSIP Global Services 许可;ISIN 包装美国证券的 CUSIP,用于跨境结算和监管报告;SEDOL 覆盖英国/爱尔兰上市;FIGI 是 Bloomberg 开放许可标识,具有 composite 和 share-class 粒度。
- Symbology:维护 security master 或 symbology mapping service,在 ticker、CUSIP、ISIN、FIGI、venue symbology 之间转换。
- Symbology:映射必须处理 one-to-many 关系,例如同一公司实体有 common stock、preferred stock、warrants、rights;处理随时间变化,如 ticker changes、CUSIP changes due to corporate actions;处理 venue-specific suffixes 或 extensions。
- Symbology:公司行动会改变标识;ticker change 替换交易符号,CUSIP change 发生在证券 fundamental terms 变化时,如 stock split、merger、share class conversion;系统应消费交易所和数据供应商隔夜及有时盘中分发的 reference data updates。
- 特殊符号:处理 WI(when-issued)、RT(rights)、WS(warrants)、U(units)以及不同 share class 的交易所特定后缀,如 A、B。
- 盘前时段:执行 4:00 AM - 9:30 AM ET 规则;盘前流动性低、价差宽,可能只允许 limit orders、不允许 market orders,且并非所有证券可交易。
- 常规交易时段:执行 9:30 AM - 4:00 PM ET 规则;所有 NMS protections 适用,包括 Reg NMS trade-through rules、LULD bands、market-wide circuit breakers;时段以 opening auction 开始,以 closing auction 结束。
- 盘后时段:执行 4:00 PM - 8:00 PM ET 规则;与盘前类似,流动性低、许多场所仅限 limit orders、价差宽。
- Opening Auction:盘前积累订单并发布 indicative match price 和 volume;9:30 AM ET 在单一 clearing price 撮合,最大化 executable volume;Nasdaq 称为 Opening Cross,NYSE 使用 DMM 系统。
- Closing Auction:确定官方收盘价,用于 NAV 计算、index rebalancing 和 benchmarking;Nasdaq Closing Cross 接受 MOC 和 LOC orders,NYSE 由 DMM 协助;许多交易日 5-10% 或更多总成交量在 closing auction 成交。
- Half-Day Sessions:Independence Day 前一日(July 3,若 July 3 为周末则 July 2)、Thanksgiving 次日、Christmas Eve(December 24,若为周末则 December 23)提前至 1:00 PM ET 收盘;系统必须调整 session times 和 early close handling。
- Holiday Calendar:维护市场假日日历,包括 New Year's Day、MLK Day、Presidents Day、Good Friday、Memorial Day、Juneteenth、Independence Day、Labor Day、Thanksgiving、Christmas,以及 half-day sessions;每年按交易所发布日程更新。
- Holiday Calendar:避免假日日历错误导致向休市场所发单被拒,或市场开盘时未发单。
- Primary/Backup:每个生产 FIX 会话或 data feed 都应有 backup;primary 和 backup 使用不同物理网络路径、不同交换机、不同 extranet、不同 ISP,避免 common-mode failures;例如 primary 走 TNS,backup 走 IPC。
- Failover Testing:定期测试 primary 到 backup 的切换,不仅做年度 DR 演练,还要在 production trading 中进行受控 failover。
- Heartbeat Monitoring:FIX 会话级用 heartbeats 检测断线;基础设施级增加网络健康检查如 ping、TCP connect、应用级健康检查如周期测试消息或行情吞吐计时、延迟监控并在退化时告警;告警 technologists 和 trading desks。
- Session Recovery:断线后通过 heartbeat timeout 或 TCP reset 检测 disconnection。
- Session Recovery:重连时使用 exponential backoff,避免压垮交易所 gateway。
- Session Recovery:使用持久化序列号重新建立会话。
- Session Recovery:通过 ResendRequest/SequenceReset 做 gap recovery 以同步状态。
- Session Recovery:重连后核对 open order state,确定断线期间订单是 filled、partially filled 还是 canceled。
- DR 与跨区域连接:维护 secondary site 的交易能力,以 standby 或 warm-standby 模式保留 FIX sessions、market data feeds 和网络基础设施;定义 RTO 和 RPO;决定 DR 站点使用相同还是不同 SenderCompID,并与交易所协调。
- Performance Monitoring:持续监控 application layer 的 one-way 和 round-trip network latency、peak periods 的 messages per second、packet loss rates、order acknowledgment latency、market data timeliness(exchange timestamp 到 firm receipt timestamp 的差距)。
- Performance Monitoring:延迟尖峰或吞吐退化可能表示网络拥塞、硬件问题或交易所 gateway 问题。
- Reg SCI:若属于 SCI entity,如交易所、达到约 5% NMS volume 的某些 ATS、clearing agencies、SIP processors、某些 exempt clearing agencies,必须建立 policies/procedures 确保系统 capacity、integrity、resiliency、availability、security;进行 periodic reviews/testing 包括 business continuity testing;及时向 SEC 通知 SCI events;提供 annual SCI reviews。
- Reg SCI:broker-dealers 应理解 Reg SCI,因为交易所系统故障会影响连接,且运营大型 ATS 的 broker-dealers 可能自身成为 SCI entities。
- CAT:按 FINRA 代表 SROs 运营的 CAT 要求,报告 NMS securities 和 OTC equity securities 中每个订单的完整生命周期,从 order origination 到 routing、modification、cancellation、execution。
- CAT:报告 customer identification(通过 FDID)、order receipt 和 origination timestamps、order routing events 包括 destination venue、order modifications 和 cancellations、execution details 如 price、quantity、venue。
- CAT:分配 CAT Reporter IDs,把 customer accounts 映射到 FDIDs,每日向 CAT processor 提交报告;连接基础设施必须捕获 CAT 所需的 timestamps 和 routing details。
- Rule 15c3-5:每个提供 market access 的 broker-dealer 必须建立、记录并维护 risk management controls 和 supervisory procedures,合理管理 market access 的财务、监管和其他风险。
- Rule 15c3-5:pre-trade controls 必须防止超过 preset credit 或 capital thresholds 的订单,防止 erroneous orders,例如 price reasonability checks、order size limits、duplicate order detection,限制 trading systems 仅授权人员访问,并符合所有适用监管要求,例如 short sale restrictions、trading halts。
- Rule 15c3-5:controls 必须处于 broker-dealer 的直接和独家控制之下,不能委托给客户或另一方;至少每年 review market access controls 的有效性。
- Pre-Trade Risk Controls:实现 order price collars、maximum order size limits、per symbol 和 aggregate 的 position limits 与 capital exposure limits、duplicative order detection、kill switches、restricted securities lists 用于 halted/delisted/restricted securities、short sale compliance checks;这些控制必须实时运行且延迟影响最小。
- 参考 references/examples.md 中的端到端示例:设计连接五个 equity venues 的 FIX connectivity 并带 Rule 15c3-5 controls;建设 consolidated 和 direct feeds 的 market data infrastructure;在 OMS、SOR 和 market data systems 中实现 trading halt handling。
- 跨应用重启持久化 FIX sequence numbers,避免序列号重置导致重复订单提交或漏掉 execution reports。
- 为 primary 和 backup FIX sessions 使用不同网络路径,避免单个 switch 或 carrier 故障同时中断两条连接。
- 在 gap recovery 中正确处理 PossDupFlag;把 PossDup execution report 当作新 fill 会导致重复计数,必须幂等处理。
- 延迟敏感策略不要只依赖 SIP 获取 NBBO;应订阅 direct feeds 并构建 internal NBBO,同时知道 SIP 慢数百微秒到个位数毫秒。
- 在 order router 中更新并遵守 LULD price bands,避免订单因违反 price bands 被交易所拒绝。
- 按 halt 类型分别处理 resting orders、resume mechanisms 和 regulatory obligations,不要把所有 halt 类型同等对待。
- 维护并测试当前 holiday calendar,避免系统在市场假日尝试交易或漏掉 half-day early closes。
- 确保 Rule 15c3-5 pre-trade risk controls 不能被 trading staff 绕过、覆盖或禁用;控制必须由 broker-dealer 的 risk management function 独家控制。
- 定期测试 failover procedures;未测试的 backup connection 在真实故障时可能无效,不提供 resilience。
- 内部系统不要只用 ticker symbols 作唯一标识;ticker symbols 会变化、会被重用且不全局唯一;应使用稳定标识如 CUSIP、ISIN 或 internal IDs,并配合 symbology mapping。
- 分析 latency 时区分 exchange timestamps 和 receipt timestamps;两个时钟可能未同步,one-way latency 测量需要 clock synchronization,例如 PTP 或 GPS。
- 不要假设 FIX session Logon 就代表交易所可接受订单;许多交易所有单独的 trading session status messages,用于指示 matching engine 从 pre-open 转为 open。
适用边界 · 注意事项
- 当系统只处理内部订单生命周期、订单状态机或执行报告处理,不涉及交易所/ATS 连接、FIX/专有协议或行情馈送时,不适用;应改用 order-lifecycle。
- 当没有交易所会员/保荐经纪商关系、市场数据许可、Co-location/extranet 或相关监管义务(Rule 15c3-5、CAT、Reg SCI)时,不能直接套用本文的接入与合规实现。
- 当业务不面向美国股票/期权等 NMS 市场,且不涉及 SIP/CTA/CQS/UTP、LULD、MWCB、CAT 等美国规则时,相关行情、熔断和监管细节不适用。