1993–1997:股东卡、证券账户、资金账号、客户号、席位号#
——中国证券市场为什么需要这么多 ID?#
今天,一个投资者登录证券 App,可能只看到一个账号。
但在1990年代的中国证券市场里,一个投资者可能同时拥有:
客户号 证券账户 股东代码 股东卡 资金账号 营业部号 席位号这些东西看起来非常混乱。
但如果把它们放回1993—1997年的历史环境,就会发现:
它们并不是重复设计。
每一个 ID 都对应证券市场中的一个不同对象。
更准确地说:
人 ↓ 客户 ↓ 券商 ↓ 资金账户 ↓ 证券账户 ↓ 交易席位 ↓ 交易所这套 ID 体系,实际上就是后来证券柜台数据库的骨架。
一、先看今天的一笔交易#
假设:
张三通过证券公司买入:
600000
1000股今天的用户感觉非常简单:
张三
↓
证券 App
↓
买入 600000
↓
1000股
↓
成交但后台实际上必须回答很多问题:
这个人是谁?
他是哪家券商的客户?
他的证券账户是什么?
他的资金账户是什么?
这笔订单属于谁?
订单从哪个交易通道出去?
使用哪个交易席位?
成交以后股票记到哪个证券账户?
资金从哪个资金账户扣除?所以真正的数据链条是:
CUSTOMER
↓
ACCOUNT
↓
ORDER
↓
TRADE
↓
POSITION而1990年代,这些对象还没有被今天的软件统一抽象出来。
它们是在实践中一点一点形成的。
二、为什么“一个人一个账号”根本不够?#
这是理解早期证券账户体系的第一步。
假设:
张三只有一个 ID:
100001那么这个 ID 需要同时表示:
张三是谁以及:
张三有多少钱以及:
张三有多少股票以及:
张三通过哪个营业部交易以及:
张三的订单从哪个交易席位进入交易所这是不合理的。
因为这些其实是不同的业务对象。
三、证券市场至少有三个不同的“身份”#
可以先把它们拆成:
人账户交易通道第一层:人#
例如:
张三
身份证号:
XXXXXXXX这是:
CUSTOMER第二层:账户#
张三可以有:
资金账户和:
证券账户第三层:交易通道#
张三的订单需要通过:
证券公司
↓
交易席位
↓
交易所进入市场。
所以:
客户 ID和:
席位 ID完全不是一个东西。
四、最容易混淆的概念:股东卡 ≠ 证券账户#
这是很多早期证券史资料最容易混在一起的地方。
“股东卡”更接近:
投资者拥有某个证券市场股东身份的凭证。
而:
证券账户更接近:
登记结算体系中的证券持有账户。
可以粗略理解:
股东卡
↓
你是谁
你具有哪个市场的股东身份而:
证券账户
↓
你的证券资产记在哪里在纸质时代:
股票凭证本身承担了一部分权利证明功能。
无纸化以后:
股东身份
+
证券持仓越来越依赖:
证券账户
+
登记系统五、为什么投资者会拿到“股东卡”?#
因为证券市场必须给投资者一种可以理解、可以携带的身份凭证。
尤其是在1990年代:
电子数据库对于普通投资者来说非常抽象。
于是:
证券登记系统可以给投资者:
股东卡作为:
你已经在证券登记体系中登记的外部凭证。
所以股东卡可以看作:
电子登记身份
↓
纸面身份凭证它并不是证券交易撮合系统本身。
六、证券账户真正解决什么问题?#
证券账户回答的是:
这些证券到底记在谁名下?
例如:
证券账户:
A123456789
持仓:
600000 → 1000股
600001 → 500股这就是:
POSITION的来源。
七、一个非常重要的历史变化#
1986年:
股票
↓
纸质凭证1991年以后:
股票
↓
证券账户因此:
股票编号逐渐不再等同于:
所有权身份而变成:
证券代码
+
证券账户
+
持仓数量共同表达证券关系。
八、那么“资金账号”又是什么?#
如果:
证券账户回答:
你有多少股票?
那么:
资金账号回答:
你在证券公司这里有多少钱?
例如:
资金账号:
F00123456
可用资金:
50,000 RMB于是:
证券账户
↓
股票
资金账号
↓
钱这两个账户必须分开。
九、为什么资金账户不能直接等于证券账户?#
因为股票和钱属于不同的基础设施。
证券:
交易所
↓
登记结算系统资金:
券商
↓
银行因此:
证券账户和:
资金账户背后连接的是不同系统。
十、1990年代证券柜台的核心关系#
可以画成:
客户
│
▼
┌───────────┐
│ 客户号 │
└─────┬─────┘
│
┌───────┴────────┐
│ │
▼ ▼
资金账号 证券账户
│ │
▼ ▼
资金余额 证券持仓这已经非常接近现代柜台系统的数据模型。
十一、但是订单怎么办?#
张三提交:
买入:
600000
1000股系统必须知道:
是谁下的单?答案:
客户号还要知道:
从哪个账户扣钱?答案:
资金账号还要知道:
股票最后记到哪里?答案:
证券账户还要知道:
订单通过什么渠道进入交易所?答案:
席位 / 交易单元于是一个订单实际上需要关联:
ORDER
│
├── CUSTOMER
│
├── CASH_ACCOUNT
│
├── SECURITIES_ACCOUNT
│
├── SECURITY
│
└── TRADING_CHANNEL十二、这就是为什么早期柜台系统越来越复杂#
刚开始可能只有:
客户
股票
数量后来变成:
客户
↓
客户号
↓
资金账号
↓
证券账户
↓
股东代码
↓
营业部
↓
席位
↓
证券
↓
委托
↓
成交
↓
清算
↓
持仓这不是程序员故意把系统做复杂。
而是证券市场本身越来越复杂。
十三、营业部又是什么?#
1990年代中国证券市场仍然高度依赖营业部。
营业部是投资者和证券公司之间的重要接触点。
投资者:
来到营业部办理:
开户
股东账户登记
资金开户
委托交易
查询
交割
资金存取因此营业部也需要自己的编号。
例如:
Broker = 某证券公司
Branch = 上海某营业部十四、为什么必须有“营业部号”?#
因为同一个证券公司可以有:
上海营业部
北京营业部
深圳营业部
广州营业部所以:
证券公司和:
营业部不是同一个对象。
数据库上可能形成:
BROKER
│
├── BRANCH 001
├── BRANCH 002
├── BRANCH 003
└── BRANCH 004十五、然后就是最重要的“席位号”#
证券公司有营业部。
营业部有客户。
客户有订单。
但是:
订单怎么进入交易所?
答案:
交易席位十六、席位最初到底是什么?#
不要把90年代的席位直接理解成:
一个数据库字段最初它是非常物理化的。
交易所大厅里有:
交易员
电话
终端
席位证券公司需要通过自己的交易席位进入交易所。
因此:
证券公司
↓
交易席位
↓
交易所十七、席位不是客户身份#
例如:
张三可能是:
客户号:
C001他的订单可能通过:
席位:
S027进入交易所。
所以:
C001是:
客户身份。
而:
S027是:
交易通道 / 市场参与资格。
两者完全不同。
十八、一个营业部可以服务很多客户#
例如:
营业部 001
客户:
C0001
C0002
C0003
...
C9999但是:
这些客户可能共享:
一个或多个交易席位于是:
Branch 001
│
├── Customer A
├── Customer B
├── Customer C
│
└── Trading Seat S027十九、这就是“多客户 → 一个交易通道”#
从技术架构看:
Customer A ─┐
Customer B ─┤
Customer C ─┼──→ Trading Gateway ──→ Exchange
Customer D ─┘这实际上就是后来:
集中交易系统的雏形。
二十、于是一个订单的完整生命周期出现了#
例如:
张三买入:
600000
1000股完整链条:
客户
↓
客户号
↓
资金账号
↓
证券账户
↓
营业部
↓
交易席位
↓
交易所
↓
订单
↓
成交
↓
清算
↓
持仓二十一、如果把它转换成数据库#
可以想象早期证券柜台已经需要:
CUSTOMERACCOUNTSECURITY_ACCOUNTCASH_ACCOUNTBRANCHSEATORDERTRADEPOSITION关系可能类似:
CUSTOMER
│
├───────────────┐
│ │
▼ ▼
CASH_ACCOUNT SEC_ACCOUNT
│ │
│ ▼
│ POSITION
│ ▲
│ │
└──────→ ORDER → TRADE
│
▼
SEAT
│
▼
EXCHANGE二十二、这就是90年代证券软件真正的“数据骨架”#
很多后来非常复杂的证券柜台系统,本质上都围绕这些对象运转:
客户
账户
证券
委托
成交
持仓
资金
席位
清算区别只是:
后来的系统把它们从纸和人工流程变成了计算机对象。
二十三、为什么“客户号”后来又越来越重要?#
因为:
证券账户只能表示证券登记关系。
资金账号只能表示资金关系。
但券商需要管理:
这个人和券商之间的整体业务关系。
所以需要一个更高层的对象:
CUSTOMER例如:
客户号:
C100001下面挂:
资金账号 F001
证券账户 A001
多个交易权限
多个业务关系二十四、这就是现代“客户主数据”的雏形#
现代系统通常会区分:
Customer
Account
Position
Order原因就是:
一个客户不一定只有:
一个账户例如:
CUSTOMER C001
├── CASH_ACCOUNT F001
│
├── SEC_ACCOUNT A001
│
├── SEC_ACCOUNT A002
│
└── OTHER_ACCOUNT ...二十五、为什么中国证券市场后来会出现“一个客户多个账户”?#
因为不同市场、不同交易所、不同业务权限可能需要不同的登记关系。
例如早期市场存在:
上海证券账户和:
深圳证券账户等不同市场体系。
因此:
一个自然人不一定只对应:
一个证券账户二十六、于是“股东代码”和“证券账户”也开始出现历史差异#
在实际业务中,投资者经常会看到:
股东代码这个概念。
它强调的是:
投资者在某一证券市场 / 登记体系中的股东身份。
而:
证券账户更强调:
登记结算系统中的证券账户对象。
随着中国证券登记结算体系不断统一,二者的关系越来越规范化。
但是在早期历史资料里,名称并不总是完全一致。
因此研究90年代系统时:
不要看到“股东号”“股东代码”“证券账号”就默认它们一定是同一个字段。
必须看具体年代和具体机构。
二十七、这对研究老证券软件非常重要#
因为老系统里可能出现:
CUSTOMER_NOCLIENT_NOFUND_ACCOUNTSEC_ACCOUNTSH_ACCOUNTSZ_ACCOUNTSEAT_NOBRANCH_NO这些字段看起来都像:
“一个号码”实际上代表的是不同对象。
二十八、一个订单可能同时带着很多 ID#
假设:
客户号:
C001234他的:
资金账号:
F009876上海证券账户:
SH123456营业部:
BR001席位:
S027然后下单:
ORDER-1995-000123买:
600000
1000股交易所成交后:
TRADE-1995-000789清算完成后:
POSITION最终:
SH123456
↓
600000
↓
1000 shares资金:
F009876
↓
-10,000 RMB二十九、这就是证券系统最核心的“关联关系”#
一笔交易必须能够被完整追踪:
谁下的单?
↓
哪个客户?
用什么资金?
↓
哪个资金账户?
买什么?
↓
哪个证券?
股票记到哪里?
↓
哪个证券账户?
从哪里出去?
↓
哪个席位?
什么时候成交?
↓
哪个 Trade?
最终持仓多少?
↓
哪个 Position?三十、这就是后来“可追溯性”的基础#
现代金融系统特别强调:
Audit Trail也就是:
每一笔业务都能追溯。
例如:
Customer
↓
Order
↓
Execution
↓
Trade
↓
Clearing
↓
Settlement
↓
Position1990年代虽然没有今天这么成熟的软件体系,
但业务上已经必须解决这个问题。
三十一、如果没有这些 ID,会发生什么?#
假设系统只记录:
600000
1000股问题来了:
谁买的?
哪个营业部?
哪个账户?
哪个资金来源?
哪个席位?
哪笔成交?全部无法回答。
因此:
证券 IT 的本质之一,就是把“人、账户、证券、交易、资金、市场通道”建立稳定的身份关系。
三十二、从这个角度看,“股东卡”其实只是整个体系最外层的一张纸#
可以把整个结构画成:
投资者
│
▼
┌───────────┐
│ 股东卡 │
└─────┬─────┘
│
▼
证券账户 / 股东代码
│
▼
持仓而另一边:
投资者
│
▼
客户号
│
▼
资金账号
│
▼
资金然后交易把两边连接起来:
资金账户
│
│
▼
ORDER
│
▼
TRADE
│
▼
证券账户
│
▼
POSITION三十三、再加上交易席位#
于是完整模型变成:
INVESTOR
│
▼
CUSTOMER
/ \
/ \
▼ ▼
CASH_ACCOUNT SEC_ACCOUNT
│ │
│ ▼
│ POSITION
│ ▲
│ │
└──────→ ORDER → TRADE
│
▼
SEAT
│
▼
EXCHANGE这张图非常重要。
因为它实际上已经非常接近后来证券柜台系统的核心架构。
三十四、这时候才能理解“集中柜台”为什么必然出现#
早期:
营业部 A
↓
自己的客户数据
营业部 B
↓
自己的客户数据
营业部 C
↓
自己的客户数据如果每个营业部独立运行:
客户
账户
委托
成交
持仓都会分散。
但是总部希望看到:
整个证券公司
↓
所有客户
↓
所有账户
↓
所有交易
↓
所有持仓
↓
所有风险于是出现:
集中化#
三十五、集中柜台的核心思想#
从:
Branch A → Local System
Branch B → Local System
Branch C → Local System变成:
Branch A ─┐
Branch B ─┼──→ Central Brokerage System
Branch C ─┘于是:
Customer
Account
Order
Trade
Position开始进入一个统一的数据库体系。
三十六、但是交易所仍然在另一边#
于是系统出现两个世界:
券商内部世界#
客户
资金账户
证券账户
订单
持仓
风险交易所世界#
席位
订单
成交
行情
交易状态两边必须连接。
这就是:
交易接口#
三十七、交易接口最终演化成证券中间件#
最早可能只是:
电话然后:
终端再后来:
专线
通信协议
交易网关
消息队列
交易中间件最终形成:
Brokerage Core
│
▼
Transaction Middleware
│
▼
Exchange Gateway
│
▼
Exchange三十八、所以“席位”其实是后来中间件架构的历史前身之一#
可以这样理解:
早期:
营业部
↓
交易员
↓
席位
↓
交易所后来:
营业部
↓
柜台系统
↓
交易中间件
↓
交易网关
↓
席位 / 交易单元
↓
交易所这就是:
从人工交易员到软件交易网关的演化。
三十九、1993~1997年的真正技术变化#
这几年真正发生的,不只是:
电脑更多了而是证券市场开始形成稳定的:
身份体系
+
账户体系
+
交易体系
+
清算体系可以总结成:
1986
Paper Certificate
1990
Exchange + Seat
1991
Securities Account + Paperless Trading
1993
Central Registration & Settlement
1993–1997
Customer / Account / Seat / Order /
Trade / Position
开始形成软件化的数据结构四十、为什么这一时期对金证、恒生特别重要?#
因为到了90年代中后期,证券公司已经不只是需要:
一个营业部软件而是需要:
总部
↓
多个营业部
↓
多个客户
↓
多个账户
↓
多个席位
↓
多个交易市场
↓
交易所
↓
登记结算
↓
银行这时候单纯的:
“柜台程序”已经不够。
市场需要:
集中式交易处理
消息路由
交易接口
账户同步
清算处理
异常恢复
多营业部连接这就是后来:
KCBP
KCXP
AS
AR这类系统出现的历史技术背景。
四十一、从历史上看,证券软件其实是在不断“拆对象”#
最开始:
股票凭证后来拆成:
证券
+
股东然后:
股东
+
证券账户再然后:
客户
+
资金账户
+
证券账户再然后:
客户
+
账户
+
订单
+
成交
+
持仓
+
席位最终:
Customer
Account
Order
Trade
Position
Settlement
Channel成为现代证券系统的基本对象。
四十二、所以不要把90年代证券柜台理解成“一个大程序”#
它更应该理解成:
一组围绕金融对象建立起来的数据处理系统。
核心对象:
Customer
Account
Security
Order
Trade
Position
Cash
Seat
Settlement核心关系:
Customer
↓
Account
↓
Order
↓
Trade
↓
Position核心外部接口:
Bank
Exchange
Registration & Settlement四十三、最终形成一张完整的90年代证券 IT 图#
INVESTOR
│
▼
┌─────────┐
│CUSTOMER │
└────┬────┘
│
┌─────────────┴─────────────┐
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ CASH ACCOUNT│ │ SEC ACCOUNT │
└──────┬──────┘ └──────┬──────┘
│ │
▼ ▼
CASH POSITION
│ ▲
│ │
└──────────┐ ┌──────────┘
▼ ▲
ORDER
│
▼
TRADE
│
▼
CLEAR
│
▼
SETTLEMENT
│
▼
CENTRAL REGISTRY
Order Path:
CUSTOMER
↓
BRANCH
↓
BROKERAGE SYSTEM
↓
TRADING GATEWAY
↓
SEAT / TRADING UNIT
↓
EXCHANGE四十四、最重要的结论#
1990年代证券市场里的:
股东卡
证券账户
资金账号
客户号
营业部号
席位号看起来像一堆重复的数字。
其实它们分别解决的是不同的问题:
| ID / 对象 | 主要回答的问题 |
|---|---|
| 身份证 / 客户身份 | 你是谁? |
| 客户号 | 你在券商体系里是谁? |
| 证券账户 | 证券登记在哪里? |
| 股东代码 | 你在特定市场中的股东身份是什么? |
| 股东卡 | 如何向投资者体现这种股东身份? |
| 资金账号 | 钱记在哪里? |
| 营业部号 | 哪个服务机构管理这个客户? |
| 席位号 | 交易从哪个市场通道进入? |
| 委托号 | 客户下了哪一笔订单? |
| 成交号 | 哪一笔交易真正成交? |
四十五、而这正是证券 IT 与普通 ERP 最大的区别之一#
ERP 主要管理:
客户
商品
订单
库存
财务证券系统管理:
客户
账户
证券
资金
委托
成交
持仓
席位
清算
登记而且这些对象必须满足:
高并发
强一致性
可追溯
可清算
不可随意丢失
严格审计所以证券柜台系统天然比普通业务系统复杂。
四十六、从股东卡到 KCBP,中间其实只差了一条“数字化链条”#
整个历史可以压缩成:
股票凭证
↓
股东名册
↓
股东卡
↓
证券账户
↓
资金账户
↓
客户号
↓
订单号
↓
成交号
↓
席位号
↓
交易接口
↓
集中柜台
↓
交易中间件这条线一旦看懂:
90年代中国证券软件为什么会出现各种“柜台、接口、转码、路由、席位、主站、前置、中心”的概念,就全部串起来了。
四十七、下一步真正应该研究什么?#
到这里,我们已经知道:
客户是谁股票记在哪里钱记在哪里订单从哪里出去但是还有一个最关键的问题:
券商总部到底是怎么把几十个、几百个营业部连接起来的?
例如:
营业部 001
营业部 002
营业部 003
...
营业部 100每个营业部都有:
客户
资金
证券账户
订单但是交易所只有:
席位 / 交易通道于是总部必须建立一个巨大的:
营业部
↓
集中柜台
↓
交易主站
↓
交易席位
↓
交易所而且还必须解决:
消息怎么路由?
订单怎么编号?
客户怎么映射?
席位怎么映射?
成交怎么回来?
清算数据怎么回来?
断线怎么办?
重复报单怎么办?
交易所和柜台的数据怎么对账?这就进入了真正的证券中间件时代。
下一篇:#
《1997~2001:证券公司为什么必须“集中交易”?从营业部电脑到总部集中柜台,KCBP/KCXP到底解决了什么问题?》#
这一篇开始,就可以正式进入:
营业部 Local System
↓
集中柜台
↓
交易主站
↓
KCBP / KCXP
↓
席位
↓
交易所