题目进度 0 / 0 ✓ 0
系统功能清单:各子系统功能列表 / 数据模型 / 外部接口
这里是所有系统功能的”菜单”——你不需要一次全部实现,但需要知道最终长什么样。
flowchart TB
subgraph 前端层
Sales[销售工作台]
Trader[交易员工作台]
Ops[运营工作台]
Risk[风控工作台]
PM[管理层驾驶舱]
end
subgraph 业务层
OMS[交易管理系统 OMS]
CRM[客户管理系统]
PM_SYS[产品管理系统]
end
subgraph 风控与结算层
Risk_SYS[风险管理系统<br/>限额/Greeks/VaR]
Collateral[抵押品管理]
Settle[清算结算]
end
subgraph 数据与定价层
Pricing[定价引擎]
MktData[行情数据]
RefData[参考数据]
end
subgraph 外部接口
CCP[中央对手方]
CSD[登记结算]
Reg[监管报送]
end
前端层 --> 业务层
业务层 --> 风控与结算层
风控与结算层 --> 数据与定价层
业务层 --> 外部接口
风控与结算层 --> 外部接口
一、交易管理系统(OMS)
功能清单
| ID | 功能 | 说明 | 优先级 |
|---|
| OMS-01 | 交易录入(Swap) | 收益互换专用录入界面 | P0 |
| OMS-02 | 交易录入(Option) | 期权专用录入界面 | P0 |
| OMS-03 | 交易录入(Snowball) | 雪球专用录入界面 | P0 |
| OMS-04 | 批量录入 | 批量导入交易数据(CSV/Excel) | P1 |
| OMS-05 | 交易查询 | 多维度查询(客户/产品/日期/状态) | P0 |
| OMS-06 | 交易修改 | 改单/撤销(需审批) | P0 |
| OMS-07 | 交易审批 | 大额/异常交易审批工作流 | P0 |
| OMS-08 | 交易状态跟踪 | 已确认/待确认/已结算 | P0 |
| OMS-09 | 交易标签 | 自定义标签+筛选 | P2 |
数据模型(核心字段)
{
"trade": {
"trade_id": "主键",
"product_type": "swap/option/snowball/structured_note/cross_border",
"product_sub_type": "equity_swap/vanilla_option/knock_in_knock_out/...",
"counterparty_id": "对手方ID",
"sales_id": "销售ID",
"trader_id": "交易员ID",
"status": "pending/confirmed/settled/terminated/matured",
"underlying": "标的代码",
"notional": "名义本金",
"currency": "币种",
"trade_date": "交易日",
"effective_date": "生效日",
"maturity_date": "到期日",
"create_time": "创建时间",
"update_time": "最后更新时间"
}
}
二、定价引擎
功能清单
| ID | 功能 | 说明 | 优先级 |
|---|
| PRC-01 | Black-Scholes 定价 | 香草期权 | P0 |
| PRC-02 | 蒙特卡洛模拟 | 路径依赖型(雪球等) | P0 |
| PRC-03 | 波动率曲面管理 | 曲面构建、插值、存储 | P0 |
| PRC-04 | 曲线管理 | 折现曲线、远期曲线 | P0 |
| PRC-05 | 批量估值 | 全量持仓定时估值 | P0 |
| PRC-06 | 单一交易定价 | 实时单笔定价 | P0 |
| PRC-07 | 定价结果校验 | 异常值检测 | P1 |
三、风险引擎
| ID | 功能 | 优先级 |
|---|
| RSK-01 | Greeks 计算(Delta/Gamma/Vega/Theta/Rho) | P0 |
| RSK-02 | VaR 计算 | P0 |
| RSK-03 | PFE 计算 | P0 |
| RSK-04 | 限额实时监控 | P0 |
| RSK-05 | 压力测试 | P1 |
| RSK-06 | CVA 计算 | P1 |
| RSK-07 | 风险报告生成 | P0 |
四、外部接口清单
| 外部系统 | 接口类型 | 数据内容 | 方向 |
|---|
| 中证登 | API | 结算指令 | 发送 |
| 上清所 | API | 集中清算 | 发送 |
| 托管行 | 文件 | 资金结算 | 双向 |
| 彭博 | API | 市场数据/估值 | 接收 |
| Wind | API | 中国市场数据 | 接收 |
| 中证报价 | API | 监管报送 | 发送 |
| CSRC | 文件 | 监管报表 | 发送 |
| AML 系统 | API | 客户筛查 | 双向 |
| 电子签章 | API | 签署文件 | 双向 |
十二、实战映射:CICC ODTS 实际实现对照
前面是理想化的系统功能清单。下面对照中金公司 ODTS 系统(约 2016-2024)的实际实现,看真实系统如何取舍。这对于理解”教科书 vs 实战”的差距非常有帮助。
12.1 功能实现对照表
| 功能 ID | 理想功能 | ODTS 实际实现 | 实现程度 |
|---|
| OMS-01~03 | 专用录入界面 | edsWeb JSP + new-edsweb Vue 表单,各有独立的交易录入页 | ✅ 实现 |
| OMS-04 | 批量录入 | eds-web-app 有 PreBookController 支持 GMATrade 批量导入 | ✅ 实现 |
| OMS-05 | 多维度查询 | edsWeb 有 78 个 JSP 模块支持多维度搜索 | ✅ 实现 |
| OMS-06 | 交易修改 | ContractHelper + ContractStateMachine 管理生命周期 | ✅ 实现 |
| OMS-07 | 交易审批 | 基于 Shiro 的权限控制+审批流 | ✅ 实现 |
| PRC-01 | B-S 定价 | hedging-as 通过 EDS Library + IRS SOAP 引擎定价 | ✅ 实现 |
| PRC-02 | 蒙特卡洛 | hedging-as 用 Spark 集群跑 Monte Carlo(10.110.166.245:7077) | ✅ 实现 |
| PRC-03 | 波动率曲面 | edsWeb vol/ 模块 + hedging-as VolatilityCalculator | ✅ 实现 |
| RSK-01 | Greeks | hedging-as pricing/ 模块批量计算 | ✅ 实现 |
| RSK-05 | 压力测试 | hedging-as PressTestRunnable + Spark 并行路径 | ✅ 实现 |
| COL-01~03 | 保证金 | hedging-as 8 条保证金规则(Rule 1-8)+ Drools + Neo | ✅ 实现 |
| CRM-01~08 | 客户管理 | edsWeb 对手方管理模块(开户/评级/KYC) | ✅ 核心实现 |
| REG-01~06 | 监管报送 | ofareg 独立项目 9000+ commits——报送是独立子系统 | ✅ 远超预期 |
| REG-07 | 年度合规 | 部分自动化,部分人工 | ⚠️ 半自动 |
| DWH-01~07 | 数据仓库 | 无独立数仓——各系统自维护报表 | ❌ 无统一数仓 |
| 产品方案生成 | Term Sheet/Pitch Book | 通过 EasyPoi + iText 在 eds-web-app 生成合同文件 | ⚠️ 部分实现 |
12.2 实际系统 vs 理想蓝图的关键差异
| 差异项 | 理想蓝图(BA 设计) | 实际 ODTS |
|---|
| 系统边界 | OMS/定价/风控/抵押品分立 | edsWeb+eds-web-app 高度耦合,功能在两个项目中并存 |
| 数据库 | 统一数据仓库 | 各系统直接查 Oracle,无独立数仓层 |
| 接口协议 | REST API 统一标准 | REST + Protobuf/TCP + ActiveMQ + Kafka + ZMQ + SOAP 同时存在 |
| 前端架构 | 统一前端 | edsWeb(JSP)+ new-edsweb(Vue)+ Odyssey(Qiankun)+ odts-linear-web(Vue3)多个前端共存 |
| 测试覆盖 | 全面自动化测试 | test/ 目录仅 9 个测试文件——大型金融系统常见短板 |
| 开发周期 | 瀑布式完整交付 | 渐进式演进,多个”过渡方案”在生产环境运行多年 |
12.3 实际系统的”非理想但务实”设计
这些设计在教科书里不会出现,但在实际系统中很常见:
-
“三大件”架构 (2016):一个前端项目(edsWeb)加两个后端项目(eds-web-app + hedging-as),通过多种协议通信。不是微服务,但比超大单体更灵活。
-
双通道前端通信 (2016-2021):edsWeb 同时维护 REST API 和 Protobuf/TCP 两条通信路径——旧页面用 Protobuf,新页面用 REST。这是架构迁移期间的常见模式。
-
Vue 嵌入 JSP (2021):new-edsweb 作为 git submodule 嵌在 edsWeb 项目里,菜单由旧 JSP 渲染、内容由 Vue SPA 渲染。Vue 通过 Axios 请求后端获取 HTML 菜单并解析注入——这种”hack”在企业渐进式迁移中很典型。
-
遗留代码共存 (2024):hedging-as 同时使用 JFinal、Spark、Py4J、Drools、FIX 协议——多种技术栈层叠,因为”跑得好就不动”。
-
Gradle + 本地 lib/:72 个 JAR 放在 eds-web-app/lib/ 里而不走 Maven 中央仓库(包括 ojdbc6.jar、drools 等)——因为内部网络限制或需要修改过的私有版本。
下一步:compliance-checklist.md
五、抵押品管理系统(Collateral Management)
功能清单
| ID | 功能 | 说明 | 优先级 |
|---|
| COL-01 | 初始保证金计算 | ISDA SIMM / 证监会标准 | P0 |
| COL-02 | 变动保证金计算 | 每日估值变动的保证金追缴 | P0 |
| COL-03 | 保证金追缴 | 自动生成追缴通知并跟踪 | P0 |
| COL-04 | 抵押品管理 | 现金/国债/股票等抵押品管理 | P0 |
| COL-05 | 抵押品折算率维护 | Haircut/折价率管理 | P0 |
| COL-06 | 保证金报告 | 每日保证金报告 | P1 |
| COL-07 | 争议管理 | 保证金争议登记与处理 | P1 |
| COL-08 | 三方面票(Tri-party) | 托管行对接 | P2 |
数据模型
{
"collateral": {
"collateral_id": "唯一编号",
"trade_id": "关联交易ID",
"party": "我方/对手方",
"margin_type": "initial/variation",
"currency": "币种",
"required_amount": "要求金额",
"posted_amount": "已缴金额",
"status": "pending/settled/disputed",
"valuation_date": "估值日期",
"csa_agreement": "CSA协议编号"
}
}
六、CRM系统
功能清单
| ID | 功能 | 说明 | 优先级 |
|---|
| CRM-01 | 客户信息管理 | 基本资料、联系方式、分类 | P0 |
| CRM-02 | KYC 管理 | 客户身份认证、证件管理 | P0 |
| CRM-03 | AML 筛查 | 制裁名单、政治人物、黑名单 | P0 |
| CRM-04 | 适当性管理 | 客户等级(C1-C5)评定 | P0 |
| CRM-05 | 客户分类 | 专业投资者/普通投资者 | P0 |
| CRM-06 | 客户信用评级 | 内部信用评级管理 | P1 |
| CRM-07 | 关联关系管理 | 关联方、一致行动人 | P1 |
| CRM-08 | 客户生命周期 | 开户→激活→休眠→销户 | P0 |
七、监管报送系统(Regulatory Reporting)
功能清单
| ID | 功能 | 监管对象 | 频率 | 优先级 |
|---|
| REG-01 | 场外日报 | 中证报价 | 每日 | P0 |
| REG-02 | 场外月报 | 中证报价 | 每月 | P0 |
| REG-03 | 适当性报表 | CSRC | 季度 | P0 |
| REG-04 | 反洗钱报表 | 央行反洗钱中心 | 每月 | P0 |
| REG-05 | 大额交易报告 | CSRC | 实时 | P0 |
| REG-06 | 异常交易报告 | CSRC | 实时 | P0 |
| REG-07 | 年度合规报告 | CSRC | 每年 | P1 |
| REG-08 | 压力测试报告 | 公司内部+监管 | 定期 | P1 |
报送系统架构
业务系统(数据源)
↓
数据仓库(ETL + 数据校验)
↓
报表生成(模板引擎 + 格式转换)
↓
合规审核(人工复核 + 电子签章)
↓
报送接口(自动提交 + 回执确认)
八、数据仓库与BI系统
功能清单
| ID | 功能 | 数据源 | 优先级 |
|---|
| DWH-01 | 交易数据仓库 | OMS | P0 |
| DWH-02 | 市场数据存储 | Wind/Bloomberg | P0 |
| DWH-03 | 风险数据仓库 | 风险引擎 | P0 |
| DWH-04 | 财务报表数据 | 财务系统 | P1 |
| DWH-05 | 客户行为分析 | CRM | P2 |
| DWH-06 | 监管报表数据 | 各系统 | P0 |
| DWH-07 | 管理层驾驶舱 | 聚合报表 | P0 |
数据流架构
[OMS] ─→ 日终批量 ─→ [ODS层] ─→ [DWD层] ─→ [DWS层] ─→ [应用层]
[定价] ─→ ↗ 清洗 轻度聚合 BI看板
[Risk] ─→ ↗ 主题宽表 监管报表
[CRM] ─→ ↗ API服务
九、系统集成全景图
┌──────────────┐
│ 管理层看板 │
└──────┬───────┘
│
┌──────────┬────────────┼────────────┬──────────┐
▼ ▼ ▼ ▼ ▼
┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐
│ OMS │ │ 定价 │ │ 风险 │ │ 抵押品 │ │ CRM │
│交易管理│ │引擎 │ │引擎 │ │管理系统│ │客户管理│
└───┬────┘ └───┬────┘ └───┬────┘ └───┬────┘ └───┬────┘
│ │ │ │ │
└──────────┴──────────┴──────────┴──────────┘
│
┌─────▼─────┐
│ 数据仓库 │
└─────┬─────┘
│
┌──────────┼──────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│ 监管报送 │ │ 合规监控 │ │ 财务系统 │
└─────────┘ └─────────┘ └─────────┘
十、外部接口详细说明
| 外部系统 | 接口协议 | 数据内容 | 通信方向 | 频率 |
|---|
| 中证登 | Socket/文件 | 结算指令、成交回报 | 双向 | 实时 |
| 上清所 | MQ/文件 | 集中清算数据 | 双向 | 日终 |
| 托管行 | SFTP | 资金流水、余额 | 双向 | 日终 |
| 彭博 TOMS | API/REST | 交易确认、估值 | 双向 | 实时 |
| Wind | API/Socket | 行情、参考数据 | 接收 | 实时 |
| 中证报价 | API/REST | 备案、报送 | 发送 | 每日 |
| CSRC | 文件/门户 | 监管报表 | 发送 | 定期 |
| AML系统 | API/REST | 客户筛查 | 双向 | 实时 |
| 电子签章 | API/REST | 合同签署 | 双向 | 实时 |
| 税务系统 | 文件 | 增值税、印花税 | 发送 | 每月 |
十一、系统非功能性需求
| 需求类型 | 要求 | 说明 |
|---|
| 可用性 | 99.99%(交易时间) | 交易时段不可宕机 |
| 响应时间 | 定价≤1s,查询≤3s | 用户体验关键 |
| 容量 | 支持10万+交易/日 | 头部券商水平 |
| 数据保留 | 交易数据≥10年 | 监管要求 |
| 灾备 | 同城+异地双活 | 监管要求 |
| 安全等级 | 等保三级+ | 监管要求 |
| 审计日志 | 所有操作留痕 | 合规要求 |
| 数据加密 | 传输+存储加密 | 安全要求 |