A股与港股 SecurityID 映射规则:BBG、RIC、MIC 与多券商 FIX 适配
文章目录
本文面向 OMS/EMS、FIX 网关和券商接入研发人员,根据
oems-fix-v2/docs/SecurityIDMap.md整理,适用报文为 FIX 4.2 权益类新单(35=D)与撤单(35=F)。不构成投资建议,也不能替代券商接入规格、证券主数据或合规意见。源文档更新日期:2026-10-21。文中的“当前实现”仅指源文档记录的代码与 UAT 配置快照,不代表所有券商或其他网关路径的能力,也不等于已经通过端到端 UAT。环境账号与账户值不在本文公开列出。
一、结论:证券代码、交易所和交易通道是三个维度
接入多个市场和券商时,最容易出现的错误是把内部代码、Bloomberg 标识、RIC 和交易所代码当成同一套字符串。
| 维度 | 说明 | 示例 |
|---|---|---|
| 标的(Instrument) | 具体证券 | 601818、000001、00700 |
| 交易所(Exchange) | 上市或交易场所 | XSHG、XSHE、XBJE、XHKG |
| 通道(Channel) | 券商接入和市场准入方式 | QFII、CONN(本文指北向沪深港通) |
以同一只上海 A 股为例:
| 表示方式 | QFII | CONN |
|---|---|---|
| 内部 SecurityId | 601818.SS | 601818.SH |
| Bloomberg Symbol | 601818 CG | 601818 C1 |
| 标准 RIC | 601818.SS | 601818.SS |
| MIC | XSHG | XSHG |
核心结论是:在本文的映射口径下,Bloomberg 交易所代码会随 QFII/CONN 通道变化;同一证券的 RIC、ISIN、SEDOL 和场所 MIC 不随这两个通道变化。 内部后缀是项目约定,不能直接当作外部标准。
二、市场、板块与代码格式
2.1 A 股:先识别交易所,再处理板块
| 交易所 | 板块 | 常见代码前缀 | MIC | 补充说明 |
|---|---|---|---|---|
| 上交所 SSE | 主板 | 600/601/603/605 | XSHG | B 股为 900,不应混入普通 A 股映射 |
| 上交所 SSE | 科创板 | 688;689(CDR) | XSHG | 与主板共用场所 MIC |
| 深交所 SZSE | 主板 | 000/001/002/003 | XSHE | B 股为 200 |
| 深交所 SZSE | 创业板 | 300/301/302 | XSHE | 与深市主板共用场所 MIC |
| 北交所 BSE | 股票 | 920 | XBJE | 源文档记录自 2025-10-09 起统一使用 920 号段 |
北交所历史上存在 43/83/87/88 号段,其中 43/83/87 也涉及新三板。源项目的 GetQFIISfx 只按首字符 9 返回 BJ,旧号段会返回空串并被拒为 unknown stock type。因此本文所述当前北交所支持范围为 920xxx 股票,不能把历史代码直接送入现有路径。
代码前缀用于解释当前实现,不是完整的证券资格校验;实际标的和可交易范围仍要以证券主数据、账户和通道权限为准。
2.2 港股:五位内部代码不等于五位外部标识
| 市场或柜台 | 内部代码格式 | 常见范围或示例 | MIC |
|---|---|---|---|
| 港交所主板 | 五位,前导零补齐 | 00001–09999 为主 | XHKG |
| 港交所 GEM | 五位,前导零补齐 | 08000–08999 | XHKG |
| 人民币柜台 | 五位,8xxxx | 80700、81810 | XHKG |
GEM 的 08xxx 与人民币柜台的 8xxxx 不是一回事。 例如 08000 和 80700 不能因包含数字 8 就走同一条映射规则。
同一港股代码在不同标识体系中还会有不同的前导零处理:00700 对应 Bloomberg 700 HK,而 RIC 通常为 0700.HK。
三、内部编码:stocktype、后缀与 QFII/CONN
3.1 源项目的内部约定
| stocktype | 通道 | 代码首字符 → 内部后缀 | 当前支持范围 |
|---|---|---|---|
1 | CONN | 0/3 → ZK;5/6 → SH | 沪深 A 股路径 |
2 | QFII | 0/3 → SZ;5/6 → SS;9 → BJ | 沪深 A 股及 920 北交所路径 |
对应的源项目实现位置是:
src/utils/market_utils.go:GetConnSfx、GetQFIISfx;src/fixApi/trade.go:Trade()中的stocktype分支。
这里的后缀描述的是内部路由约定。例如 CONN 深市使用 .ZK,不表示标准 RIC 也存在 .ZK 后缀。
3.2 两种通道改变什么,不改变什么
| 项目 | QFII | CONN(北向沪深港通) |
|---|---|---|
| 含义 | Qualified Foreign Institutional Investor,合格境外机构投资者 | Stock Connect,通过沪港通、深港通北向交易 |
| 本文涉及市场 | 上交所、深交所、北交所 | 上交所、深交所 |
| 内部后缀:沪 / 深 / 京 | SS / SZ / BJ | SH / ZK / — |
| Bloomberg 交易所代码 | CG / CS / JC | C1 / C2 / — |
| RIC / MIC | 不因这两个通道变化 | 不因这两个通道变化 |
| 当前 SG FIX session | 默认 fix.ini | 默认 fix.ini |
源文档记录 SG 未配置 specialFixSessionFilePaths,因此当前 QFII 与 CONN 共用默认 FIX session。通道不同并不必然意味着 FIX session 不同,是否分会话属于券商和部署约定。
3.3 不要将港股塞进 A 股后缀判断
本文所述 Trade() 仅允许 stocktype ∈ {1, 2}。如果把港股 0700 送入该逻辑,其首字符 0 会被误判为深市,得到 CONN 的 ZK 或 QFII 的 SZ。
因此,后文港股标识表是映射参考,不是当前 SG A 股路径已经支持港股的声明。接入港股需要独立的市场或通道识别,不能复用 A 股首字符规则。
四、五类标识的映射规则
4.1 Bloomberg:交易所代码与通道有关
当 FIX 22=A 时,48 使用 Bloomberg Symbol,本文采用的格式为:
| |
| 市场与通道 | 内部后缀 | Bloomberg 代码 | 示例 |
|---|---|---|---|
| QFII 上海 | SS | CG | 601818 CG |
| QFII 深圳 | SZ | CS | 000001 CS |
| QFII 北京 | BJ | JC | 920xxx JC |
| CONN 上海 | SH | C1 | 601818 C1 |
| CONN 深圳 | ZK | C2 | 000001 C2 |
| 已采用北向 BBG 后缀 | C1 / C2 | 保持原代码 | 601818 C1 |
| 港股(映射参考) | HK | HK | 700 HK |
其中:
CG、CS、JC分别对应上海、深圳、北京市场;C1、C2分别对应沪港通、深港通北向;CH表示 China Composite,不是本文用于上海或深圳个股路由的交易所代码;- 港股 Bloomberg ticker 去掉前导零:
00700 → 700 HK;五位有效代码保留其有效数字,例如80388 HK。
源文档提醒,SG UAT ORC 可能仍接受旧的 CH/CS 口径。因此表中的映射调整必须经过券商规格确认和 UAT,不能仅凭字符串转换成功就切换实盘。
4.2 RIC:不要直接拼内部后缀
当 FIX 22=5 时,标准 RIC 格式为:
| |
| 市场 | 内部后缀 | 标准 RIC 后缀 | 示例 |
|---|---|---|---|
| 上海 | SH / SS | .SS | 601818.SS |
| 深圳 | ZK / SZ | .SZ | 000001.SZ |
| 北京 | BJ | .BJ | 920xxx.BJ |
| 港股 | HK | .HK | 0700.HK |
要点有三个:
- 同一证券的 RIC 不因 QFII/CONN 通道变化;上海
SH → SS,深圳ZK → SZ。 - 港股 RIC 通常补足四位:
00700 → 0700.HK、01810 → 1810.HK;超过四位时保留原长度。 - 当前非 SG 路径默认使用
22=5、48=内部 SecurityId,但这不等于输出已经全部标准化为 RIC。尤其.ZK不是标准 RIC;BCY 的现有券商约定又要求保留.ZK,不能未经确认全局替换。
标准标识映射与券商实际接收约定必须分层记录。 相同的 22=5,并不能证明各券商的 48 字符串要求完全一致。
4.3 MIC 与 Reuters Exchange Code:都不是 Bloomberg 代码
| 市场 | 内部后缀 | MIC | Reuters Exchange Code |
|---|---|---|---|
| 上海 | SH / SS | XSHG | SS |
| 深圳 | ZK / SZ | XSHE | SZ |
| 北京 | BJ | XBJE | BJ |
| 港股 | HK | XHKG | HK |
源文档记录 SG 的 100/207 接受 MIC 或 Reuters Exchange Code,当前网关使用 MIC。
C1/C2属于 Bloomberg 交易所代码,不是 MIC;- 北向沪深港通的场所 MIC 仍是
XSHG/XSHE; 100/207实际写 MIC、Reuters 代码还是内部后缀,需要按 broker contract 确定,不能一概推断。
4.4 ISIN:不能从股票代码直接推导
ISIN 对应 FIX 22=4,共十二位,由两位国家或地区代码、九位 NSIN 和一位校验位组成。
| 标的 | ISIN 示例 |
|---|---|
601818 | CNE100000SL4 |
000001 | CNE000000040 |
腾讯 00700 | KYG875721634 |
小米 01810 | KYG9830T1067 |
港交所 00388 | HK0388045442 |
ISIN 必须依赖证券主数据,不能按 ticker 算出。其前缀与发行人注册地等因素有关,不只由上市地决定;港股中可见 KYG(开曼)、BMG(百慕大)、HK(香港注册)等开头,不能把所有港股都硬编码为 HK 前缀。
4.5 SEDOL:同样依赖主数据
SEDOL 对应 FIX 22=2,是七位字母数字标识,由 LSEG 体系分配。
| 标的 | SEDOL 示例 |
|---|---|
601818 | B53SCQ5 |
000001 | 6802006 |
港交所 00388 | 6267359 |
SEDOL 不因 QFII/CONN 通道变化,也不能由股票代码直接推导。上述 ISIN、SEDOL 示例用于说明格式,实际接入前必须使用券商或权威证券主数据核对。
五、FIX 字段:22 决定 48 的解释方式
5.1 核心字段
| Tag | 名称 | 本文中的用法 |
|---|---|---|
22 | IDSource | 说明 48 使用哪一种证券标识体系 |
48 | SecurityID | 与 22 对应的标识值 |
55 | Symbol | 通常为裸 ticker;本文路径中 A 股六位,港股参考格式为五位;BCY 使用内部 SecurityId |
15 | Currency | 如 CNY、HKD,实际币种应与证券及柜台一致 |
207 | SecurityExchange | 按券商约定填写交易所标识 |
100 | ExDestination | 按券商约定填写交易目的地;本文所述撤单路径不发送 |
22 和 48 是一组字段。例如:
| |
5.2 FIX 4.2 的 IDSource 与券商准入是两件事
| 值 | 标准含义 |
|---|---|
1 | CUSIP |
2 | SEDOL |
4 | ISIN |
5 | RIC |
8 | Exchange Symbol |
A | Bloomberg Symbol |
源文档记录 SG 当前接受的 IDSource 为 1 / A,本网关实际使用 A。即使 FIX 标准定义了 RIC、ISIN 和 SEDOL,也不能默认当前 SG 会话全部接受;切换前必须先确认券商允许的 22 取值及相应 48 格式。
六、多券商新单:相同字段名,不同契约
以下是源文档记录的 Trade() 实现快照,broker 别名由 IsXxx() 判断,不应当作各券商所有产品和接入路径的通用规范。
公共限制包括:stocktype 仅为 1/2、qty > 0、业务入参 OrdType 仅为 0/1,以及 LIMIT 价格精度普通股票两位、ETF 三位。这里的业务枚举不是 FIX OrdType 的标准取值;价格序列化精度也不等于交易所 tick 校验。
| Broker | 22 | 48 SecurityID | 55 Symbol | 100/207 | 关键条件与限制 |
|---|---|---|---|---|---|
| 默认(MS/JPM/UBS/GS/BAML/CS/CLSA 等) | 5 | 内部 SecurityId:code.SH/.ZK/.SS/.SZ/.BJ | 裸代码 | 内部后缀 | condParams 控制 57/58/114;部分 broker 有额外 tag |
| BCY / Barclays | 5 | 内部 SecurityId | 内部 SecurityId | 内部后缀 | 发送 Tag 1;ClOrdID 使用 PackOrdId2;CONN 深市使用 .ZK,BCAP 拒绝 .SZ |
| SG | A | Bloomberg:CG/CS/JC 或 C1/C2 | 裸代码 | MIC:XSHG/XSHE/XBJE | 775=1;57=DMA/ALGO;业务 Side=3 → 114=N |
| BNPP | 5 | 内部 SecurityId | 裸代码 | dataCfg.tagMap 转换后的 MIC | DMA only;775=1;header 50/57;禁止 body 57;无 BJ 映射时拒单 |
| GFHK | 5 | 内部 SecurityId | 裸代码 | 内部后缀 | requiredParams 含 11001;业务 Side=2 时设置 77 |
| CITI | 5 | 内部 SecurityId | 裸代码 | 内部后缀 | 775=1;业务 Side=2 时设置 77 |
最值得记住的是:
- 当前只有 SG 使用
22=A的 Bloomberg 标识;其他列出的路径使用22=5与内部 SecurityId。 - BCY 是当前唯一让
55/48都使用内部 SecurityId 的 broker。 - BNPP 的交易所字段依赖配置映射:
SS/SH → XSHG,SZ/ZK → XSHE;没有 BJ 映射就不能宣称北交所已经可路由。 - 表中的
Side条件是源项目业务入参判断,不应直接当成 FIX Tag 54 的取值解释。
七、撤单:不能复制新单字段表
源项目 Cancel() 的字段要求与新单并不对称:
| Broker | 41 OrigClOrdID | 48 | 55 | 100/207 | 其他行为 |
|---|---|---|---|---|---|
| 默认 / BNPP / CITI | PackOrdId | 不发 | 裸代码 | 不发 | status >= 4 跳过 |
| BCY | PackOrdId2 | 内部 SecurityId | 内部 SecurityId | 不发 | 发送 Tag 1;status >= 4 跳过 |
| SG | PackOrdId | Bloomberg | 裸代码 | 不发 | status >= 4 跳过;不发 775 |
| GFHK | PackOrdId | 不发 | 裸代码 | 不发 | requiredParams 含 11001;status < 1 拒撤;status >= 4 跳过 |
这里有三个需要单独核对的边界:
- 本文所述撤单实现一律不发
100/207,不能将该行为推广为所有券商 FIX 规范的通用规则; tagMap/condParams在当前实现中只对新单生效;- 非 BCY 使用的
PackOrdId含进程启动日期,跨日重启后可能与原单标识不一致,需要对照原单记录核验OrigClOrdID。
表中的 status 是源项目的订单状态判断,不能直接等同于 FIX OrdStatus。
八、配置与会话:保留结构,不公开环境账户
8.1 当前 UAT 路由结构
| 通道或部署 | 源文档记录的会话安排 | 核对重点 |
|---|---|---|
| BCY CONN | 未配置特殊 session 路径 | 默认会话及账户映射 |
| BCY QFII | 深市存在专用 QFII session 配置 | 市场与特殊会话选择 |
| BNPP | 未配置特殊 session 路径 | DMA、header 路由字段及 tagMap |
| GFHK | 未配置特殊 session 路径 | 必填私有字段 |
| SG | 未配置特殊 session 路径 | QFII/CONN 共用默认 session,但证券映射不同 |
| GFGM | 独立仓库维护 | 不能把本仓库规则直接视为其实现证据 |
实际 UAT 账号、Tag 1 值和环境标识属于部署资料,不应从博客示例直接复制到任何运行环境。
8.2 dataCfg 的关键项
| Broker | tagMap | requiredParams | condParams |
|---|---|---|---|
| BCY CONN/QFII | {} | {} | 57=DMA/ALGO;业务 Side=3 时设置 114 |
| BNPP | 100/207:SS/SH → XSHG,SZ/ZK → XSHE | 775=1 | 业务 Side=3 时设置 114 |
| SG | {} | 775=1 | 57=DMA/ALGO;业务 Side=3 时设置 114 |
| GFHK | {} | 11001 | [] |
| CITI | {} | 775=1 | [] |
配置表与代码表必须一起看:字段由代码直接生成、配置补充还是映射替换,决定了修改配置能否真正改变最终报文。
九、完整映射示例
9.1 A 股:同一证券,不同通道
下表是各标识体系的并列对照,不表示当前网关已经实现所有输出格式。最后一列为场所 MIC;实际新单是否使用 MIC 仍取决于券商约定,本文所述撤单不发送 100/207。
| 标的 | 通道 | 内部后缀 | BBG(22=A) | RIC(22=5) | ISIN(22=4) | SEDOL(22=2) | 场所 MIC |
|---|---|---|---|---|---|---|---|
601818 | QFII | SS | 601818 CG | 601818.SS | CNE100000SL4 | B53SCQ5 | XSHG |
601818 | CONN | SH | 601818 C1 | 601818.SS | CNE100000SL4 | B53SCQ5 | XSHG |
000001 | QFII | SZ | 000001 CS | 000001.SZ | CNE000000040 | 6802006 | XSHE |
000001 | CONN | ZK | 000001 C2 | 000001.SZ | CNE000000040 | 6802006 | XSHE |
920xxx | QFII | BJ | 920xxx JC | 920xxx.BJ | 证券主数据 | 证券主数据 | XBJE |
920xxx 是格式占位,不是可发送的真实证券代码。
9.2 港股:前导零与柜台要单独处理
| 标的 | 内部代码 | BBG(22=A) | RIC(22=5) | ISIN(22=4) | SEDOL(22=2) | 场所 MIC |
|---|---|---|---|---|---|---|
| 腾讯 | 00700 | 700 HK | 0700.HK | KYG875721634 | 证券主数据 | XHKG |
| 小米 | 01810 | 1810 HK | 1810.HK | KYG9830T1067 | 证券主数据 | XHKG |
| 港交所 | 00388 | 388 HK | 0388.HK | HK0388045442 | 6267359 | XHKG |
补充规则:
- 南向港股通交易同一港交所证券、同一柜台时,不因通道本身改变其 BBG/RIC/ISIN/SEDOL/MIC;
C1/C2只用于本文的北向 A 股映射,不能用于港股;- 人民币柜台
8xxxx是独立柜台,需单独映射,不能机械复用港币柜台的 ticker 和币种; - 以上港股表格只是规则参考,源文档所述 SG A 股路径当前尚未支持港股。
十、实现边界与上线前验证
10.1 当前能力矩阵
| 能力 | 源文档记录的状态 | 源项目代码位置或依赖 |
|---|---|---|
| A 股 QFII:沪深 / 920 北交所 | 支持 | trade.go 中的 Trade()、GetQFIISfx |
| A 股 CONN:沪深 | 支持 | trade.go 中的 Trade()、GetConnSfx |
北交所历史 43/83/87/88 号段 | 不支持 | GetQFIISfx 仅识别首字符 9 |
| 港股接入本文所述路径 | 不支持 | Trade() 仅允许 stocktype 1/2 |
| Bloomberg 转换 | 支持 | market_utils.go 中的 ToBloombergSymbol |
| MIC 转换 | 支持 | market_utils.go 中的 ToMIC |
| 独立 RIC 转换 | 无独立函数 | 非 SG 路径直接使用内部 SecurityId |
| ISIN / SEDOL | 未接入证券主数据 | 需要主数据映射 |
这里的“支持”是源文档对代码能力的记录,不表示每个 broker、账户和市场组合均已具备生产准入。
10.2 最小核验清单
- 确认 SG 接受的 Bloomberg 口径:分别核验 QFII
601818 CG、000001 CS,以及 CONN601818 C1、000001 C2;注意 UAT ORC 的旧口径差异。 - 核对新单与撤单:分别检查实际 raw FIX 中的
22/48/55,以及新单100/207、撤单OrigClOrdID,不能只测转换函数。 - 北交所仅使用真实 920 标的验证:旧号段当前会被拒绝;还要检查券商资格及映射配置。
- 切换 RIC/ISIN/SEDOL 前先确认 IDSource:标准存在该枚举,不代表当前会话准入;ISIN/SEDOL 值必须来自主数据。
- 港股先做独立准入与映射:不能直接复用现有 A 股
stocktype和后缀判断。
源项目中可供核验的相关测试入口如下,需在 oems-fix-v2 仓库目录执行;这些命令不代表本文已经执行或完成券商 UAT:
| |
任何实际送单验证都应在获得授权的隔离测试环境中进行。规则变更、生产配置或实盘路由切换必须另行取得券商确认、UAT 证据与审批。
十一、术语速查
| 缩写或字段 | 英文全称 | 中文含义 | 读法或用途 |
|---|---|---|---|
| BBG | Bloomberg | 彭博 | B-B-G;本文 22=A 对应的标识体系 |
| RIC | Reuters Instrument Code | 路透证券代码 | R-I-C;22=5 |
| ISIN | International Securities Identification Number | 国际证券识别码 | I-S-I-N;ISO 6166,十二位,22=4 |
| SEDOL | Stock Exchange Daily Official List | 伦敦证交所每日官方名单代码 | SEE-dol;七位,22=2 |
| MIC | Market Identifier Code | 市场识别码 | M-I-C;ISO 10383,四位 |
| CUSIP | Committee on Uniform Security Identification Procedures | 北美证券标识体系 | Q-sip;九位,22=1 |
| FIX | Financial Information eXchange | 金融信息交换协议 | fix;本文指 FIX 4.2 |
| IDSource | Security ID Source | 证券标识来源 | Tag 22 |
| SecurityID | Security Identifier | 证券标识 | Tag 48 |
| Symbol | Ticker Symbol | 交易代码 | Tag 55 |
| ExDestination | Execution Destination | 交易目的地 | Tag 100 |
| SecurityExchange | Security Exchange | 证券交易所 | Tag 207 |
| QFII | Qualified Foreign Institutional Investor | 合格境外机构投资者 | Q-F-I-I |
| CONN | Stock Connect | 沪深港通 | 本文通道语境指北向;口头常读 connect |
| GEM | Growth Enterprise Market | 港交所创业板 | G-E-M;常见 08xxx |
| SSE | Shanghai Stock Exchange | 上海证券交易所 | S-S-E;MIC XSHG |
| SZSE | Shenzhen Stock Exchange | 深圳证券交易所 | S-Z-S-E;MIC XSHE |
| BSE | Beijing Stock Exchange | 北京证券交易所 | B-S-E;MIC XBJE |
| HKEX | Hong Kong Exchanges and Clearing | 香港交易所 | H-K-E-X;本文证券市场使用 MIC XHKG |
| CDR | Chinese Depositary Receipt | 中国存托凭证 | C-D-R;本文科创板示例为 689 开头 |
| ETF | Exchange Traded Fund | 交易所交易基金 | E-T-F;源项目 LIMIT 价格精度为三位 |
十二、资料来源与版本追踪
- 源项目文档:
oems-fix-v2/docs/SecurityIDMap.md,更新日期 2026-10-21;代码与配置结论均按该文档的快照表述,本文未重新认证源项目实现。 - SG FIX Protocol Specification – Equities v1.6:源项目中的券商规格资料,实际字段准入需核对获授权的有效版本。
- Bloomberg Exchange Codes Mapping
- HKEX Stock Code Allocation Plan
- HKEX ISIN 列表
- HKEX Stock Connect
- LSEG SEDOL
最后的工程建议:先解析证券、交易所和通道,再按券商契约生成 FIX 字段。内部 SecurityId、标准标识和券商特殊要求可以不同,但必须明确记录差异;不能靠一个后缀字符串同时承担全部语义。
文章作者 lucas
上次更新 2026-10-21