Learning
VOL. VII · NO. 14 · OTC Derivatives · 21 JUL 2026

Systems And Data

OTC 衍生品 · 21 JUL 2026 · 17 min read · 3,001 words
· · ·

14 系统架构与数据流(BA 视角)

这是你 IT 背景最能发挥价值的章节。用你对技术的理解,设计出既满足业务需求、又技术可行的系统。


一、OTC 衍生品系统全景图

核心系统架构

graph TB
    subgraph "前端(Front Office)"
        CRM[CRM 客户管理]
        PT[报价工作台]
        OMS[交易管理系统/OMS]
        RD[风险仪表盘]
    end
    
    subgraph "中台(Middle Office)"
        ENG[定价引擎]
        RISK[风险引擎]
        VM[估值系统]
        COLL[抵押品管理]
    end
    
    subgraph "后台(Back Office)"
        SETT[结算系统]
        ACCT[会计/财务系统]
        REG[监管报送]
        DOC[文档管理]
    end
    
    subgraph "外部系统"
        MT[市场数据/Wind/BBG]
        CSD[中证登/上清所]
        BANK[托管行]
        REGAPI[监管接口]
        AML[反洗钱系统]
    end
    
    CRM --> OMS
    PT --> OMS
    OMS --> ENG
    OMS --> RISK
    OMS --> SETT
    OMS --> DOC
    RISK --> VM
    VM --> COLL
    VM --> ACCT
    SETT --> CSD
    SETT --> BANK
    REG --> REGAPI
    CRM --> AML
    MT --> ENG
    MT --> RISK
    MT --> VM

二、核心系统功能列表

交易管理系统(OMS)

功能说明优先级
交易录入支持键盘快捷键的快速录入最高
交易修改改单、撤销最高
交易查询按产品、客户、交易员查询
交易审批大额/异常交易审批流
批量处理批量录入、批量修改
审计日志所有操作记录

定价引擎

功能说明
模型管理支持 B-S、蒙特卡洛、二叉树等模型
曲线管理折现曲线、远期曲线维护
波动率管理波动率曲面维护与更新
批量计算全量持仓定时估值
API 接口供其他系统调用的定价服务

风险引擎

功能说明
Greeks 计算Delta/Gamma/Vega/Theta/Rho
VaR 计算参数法/历史模拟
PFE 计算潜在未来敞口
压力测试历史情景/假设情景
限额监控实时/日终限额检查

抵押品管理系统

功能说明
保证金计算IM/VM 计算
Margin Call自动通知、跟踪
抵押品管理出入库、替换、折扣率
对账持仓/估值对账
争议管理争议记录、处理

产品方案自动生成(Term Sheet & 路演材料)

解决什么问题:Sales 做产品方案时,以前靠手工拼 PPT/Word——慢、容易错、格式不统一、合规风险高。系统自动生成后:快、一致、审计可查。

核心流程

产品参数配置(定价系统 / 配置界面)

模板引擎(Term Sheet / Pitch Book)

数据填充(产品参数 + 市场数据 + 图表)

合规预审(内容检查 → 自动放行或人工审批)

版本存档(每次生成存历史版本)

输出(PDF / Word / PPT / HTML)

Term Sheet(条款说明书)

  • 一页纸,描述交易核心条款
  • 数据来源:定价引擎(参数、票息、封顶/保本线)+ 产品配置
  • 必须包含:产品名称、期限、挂钩标的、名义本金、收益结构、风险揭示
  • 图表:自动生成 Payoff Diagram(收益结构图)

路演材料(Pitch Book)

  • 多页 PPT,面向客户的完整方案
  • 包含:市场观点、产品方案、案例回测(Backtest)、风险分析、条款 Summary
  • 数据来源:研究团队输入 + 历史回测引擎 + 市场数据

系统功能需求

功能说明
模板管理预置 Term Sheet(A4一页)/Pitch Book(多页PPT)模板,支持版本管理
参数填充从定价系统或配置界面读取产品参数,自动填入模板
图表生成Payoff Diagram、回测走势图、风险热力图自动绘制
批量生成同一产品对多个客户一键生成
合规检查内容关键词检查(如”保本”是否合规)、统一风险揭示语句
审批流生成后→合规/产品审批→审批通过才可发送客户
版本管理每次生成的版本号 + 差异对比
输出格式PDF(默认)/ Word(可编辑)/ PPT(路演)/ HTML(邮件)
签名集成支持电子签章(客户签署回传)

上下游系统

上游                          下游
定价引擎(参数)        →   Term Sheet/Pitch Book
市场数据(行情/图表)    →   图表生成
客户信息(CRM)          →   抬头信息、风险评级
合规系统                →   内容合规检查
                        →   PDF → 邮件发送客户
                        →   Word → Sales 修改后定稿
                        →   版本 → 文档管理系统归档

PM/BA 关注点

  • 模板谁维护?(产品部?市场部?)
  • 数据源准确性:定价参数跟交易系统一致吗?
  • 合规检查规则:哪些词不能用?哪些必须写?
  • 输出速度:生成一页 Term Sheet 需要几秒?

三、数据流设计

核心数据流

市场数据(Wind/BBG)
    ↓ 实时价格/曲线/波动率
定价引擎 ←——→ 交易系统(持仓、参数)
    ↓ MtM/Greeks
风险引擎 ←——→ 抵押品系统
    ↓ 风险报告/限额

报表系统(监管/内部/客户)

关键数据实体

实体属性来源
交易ID、产品类型、标的、名义本金、期限、价格交易录入
持仓交易 ID、当前数量、成本、MtM交易系统
客户ID、名称、评级、额度、适当性CRM
市场数据价格、波动率、曲线Wind/BBG
风险指标Greeks、VaR、PFE风险引擎
抵押品类型、金额、折扣率、归属抵押品系统

四、关键系统设计考量

考量说明
实时 vs 批处理交易录入需实时,日终估值可批量
数据一致性跨系统数据需对账机制
高可用交易时段系统不可宕机
性能批量计算需在指定窗口完成
可扩展性支持新产品、新市场
安全性角色权限、数据隔离、审计


五、实战案例:CICC ODTS 系统真实架构(IT BA 视角)

前面是一般化的 OTC 衍生品系统设计蓝图。下面以中金公司(CICC)的实际 ODTS 系统为例,展示真实系统的演进历程和架构决策。作为 IT BA,你会在多个项目中遇到这种”从单体到微服务、从 JSP 到 SPA”的技术演进。

5.1 系统全景(2024 年现状)

graph TB
    subgraph "前端生态"
        UT[UniLink<br/>Vue3 + pnpm monorepo<br/>下一代统一前端]
        OLT[odts-linear-web<br/>Vue3 + Vite<br/>PB线性产品交易UI]
        ORW[odts-rm-web<br/>Vue2 + Element UI<br/>风险管理工作台]
        NODT[new-edsweb<br/>Vue2 + Element UI<br/>ODTS SPA]
        ODY[Odyssey微前端壳<br/>Qiankun + Vue2<br/>主应用/子应用]
        OLD[edsWeb旧前端<br/>JSP + Tiles + jQuery<br/>仍在运行]
    end

    subgraph "网关与认证"
        GW[odyssey-internal-gateway<br/>Spring Cloud Gateway<br/>Nacos + Apollo]
        AUTH[odyssey-fuxi-auth-web<br/>SSO + JWT + RBAC]
    end

    subgraph "核心后端服务"
        EA[eds-web-app<br/>Spring Boot 1.5<br/>Oracle + Kafka + Pulsar]
        HAS[hedging-as<br/>JFinal + Spark<br/>定价/对冲/保证金]
        SSS[ods-edsPriceServer<br/>定价引擎服务]
        CSV[odyssey-cash-manager-service<br/>资金/结算管理]
        RPS[odyssey-report-processing<br/>监管报送合并]
    end

    subgraph "数据与行情"
        DDB[DolphinDB<br/>高频行情时序库]
        REDIS[Redis<br/>缓存/RPC注册中心]
        MQ[ActiveMQ / Kafka / Pulsar<br/>消息队列]
    end

    subgraph "对外报送"
        OFA[ofareg<br/>柜台报送/备案平台<br/>Spring Boot + MyBatis]
    end

    OLD --> EA
    NODT --> EA
    ODY --> GW
    GW --> AUTH
    OLT -->|Axios| EA
    OLT -->|Axios| CSV
    ORW --> GW
    UT --> EA
    EA --> HAS
    HAS --> DDB
    HAS --> REDIS
    OFA -->|TR报送| REGAPI[中证报价/CSRC]
    CSV --> SETTAPI[托管行]

5.2 技术栈演进时间线

阶段年份项目前端技术后端技术架构风格
EDS 时代2016-2017edsWeb / eds-web-app / hedging-asJSP + Tiles 3 + jQuery + BootstrapSpring Boot 1.5 + MyBatis + Oracle + Drools”三大件”单体 → 前后端分离
Vue 改造2021-2022new-edswebVue 2.6 + Element UI + DevExtreme复用 eds-web-app REST API前端 SPA + 旧后端 API
Odyssey 平台2022-2023odyssey-main-web / option / swap / swap-rmVue 2 + Qiankun 微前端Spring Cloud Gateway + Nacos + Apollo + 多微服务微前端 + 微服务
PB 重构2023-2024odts-linear-web (PB Refactor)Vue 3 + Vite + AG Grid Enterprise + Element Plus复用/扩展后端服务新一代 SPA
UniLink 统一2024-unilink-parent-web (13+ 子应用)Vue 3 + TypeScript + pnpm monorepo + Turborepo平台化后端服务企业级 monorepo
风险管理持续odts-rm-web / odyssey-swap-rm-webVue 2 + Element UI + Qinakun独立风险服务业务线专属前端

5.3 核心项目关系详解

5.3.1 edsWeb + eds-web-app + hedging-as:EDS 时代”三大件”

这是 ODTS 系统的最早期实现(2016-2017),由三个紧密协作的 Java 项目组成:

项目Git 出生角色端口关键技术
edsWeb2016-12-16前端 Web 层8080Spring MVC 4.1 + Apache Tiles 3 + JSP/JSPX + Shiro + Hibernate 4
eds-web-app2016-12-28后端应用服务8087Spring Boot 1.5 + MyBatis + Oracle + Drools + ActiveMQ + MINA Protobuf
hedging-as2017-02-22对冲/定价引擎8082JFinal + Spark(MC) + Oracle + QuickFIX/J + ZMQ + ActiveMQ

通信方式

[旧前端 edsWeb:8080] ←→ REST/JSON → [eds-web-app:8087] ← RPC/Protobuf → [hedging-as:8082]
[edsWeb 旧前端] ←→ Protobuf/TCP(MINA) → [AccessApp 网关] → [eds-web-app]

关键架构特征

  • 双通道前端通信:edsWeb 同时使用 REST(Spring MVC Controller)和 Protobuf/TCP(MINA NIO + AccessApp 网关)
  • 双数据层:eds-web-app 同时维护 MyBatis(REST API)和自定义 DAO(遗留 Action 层)
  • 规则引擎:Drools(28 个规则目录)处理对冲、确认、结算、保证金逻辑
  • 多数据库:Oracle(主库)+ DolphinDB(行情时序)+ MySQL(ATP 清算)

5.3.2 new-edsweb:旧前端的 Vue 替代(2021+)

2021 年,团队用 Vue 2 SPA 逐步替换 edsWeb 的 JSP 页面:

  • 位置:作为 edsWeb/ 项目的 git submodule 嵌入,部署在同一 Tomcat 下
  • 集成方式:旧 JSP 菜单链接指向 /assets/vue/#/xxx,Vue 路由劫持后渲染新页面
  • 菜单:仍然是 JSP 服务端渲染——Vue 启动后通过 Axios 请求旧后端获取 HTML 菜单,解包注入 DOM
  • APIhttp.js 自动添加 baseURL 前缀,host.js 动态判断开发/生产环境
  • 典型页面:开户(innerOpenAccount)、银行流水(bankFlow)、外汇(foreignExchange)、风控指标(riskIndicators)等 38 个路由

BA 笔记:这种”Vue SPA 嵌入 JSP 系统”是大型企业系统前后端分离的典型过渡模式。菜单仍由后端控制,前端专注于业务功能页面。

5.3.3 Odyssey 平台(2022+)

Odyssey 是 ODTS 的微服务化升级,引入了:

  • 微前端:Qiankun 框架,main-web 作为壳应用,加载 option-web / swap-web / swap-rm-web / public-web
  • API 网关:Spring Cloud Gateway + Nacos(服务发现)+ Apollo(配置中心)
  • 统一认证:Fuxi(复曦)SSO + JWT
  • 平台化服务:cash-manager(资金管理)、quotation(行情)、report-processing(报送)

5.3.4 odts-linear-web:PB Refactor(2023+)

PB(Prime Brokerage)线性产品的最现代前端

  • 技术栈:Vue 3 + Vite + AG Grid Enterprise(专业表格)+ Element Plus
  • 范围:完整覆盖收益互换、期权管理、指数增强、跨境锁仓、ETF 校验等业务
  • 特点:4000+ commits,JIRA 引用 ODTSPB-XXXX / PBRM-XXXX

5.3.5 ofareg:柜台报送平台

ODTS 与监管机构的报送桥梁

  • 项目 9000+ commits,是代码量最大的项目
  • 对接中证报价、CSRC、交易所等外部监管接口
  • Spring Boot + MyBatis-Plus 多模块架构

5.4 核心模块与业务功能映射

业务功能eds-web-app 实现hedging-as 实现前端
交易管理72 个 REST ControllerProtobuf Action 层edsWeb + new-edsweb + odts-linear-web
定价 & GreeksSpark Monte Carlo + EDS Library各前端查询接口
保证金计算Drools 规则(28 目录)MarginService (Rule 1-8)JSP + new-edsweb
EOD 处理112 Cron 任务risk/checkpoint/eododts-linear-web
压力测试调用 hedging-asSpark 分布式计算JFinal Web 控制台
中证报价报送ofareg 独立系统
合同生成EasyPoi + iText合同状态机多前端
日终估值Cron 调用CalService + Sparkodts-linear-web
资金管理CashVrControllerodyssey-cash-manager

5.5 数据库架构

数据库用途访问方式
Oracle (odtsdb)所有业务数据——合同、交易、持仓、客户、风控JDBC 连接池(Druid/C3P0/BasicConnectionPool)
DolphinDB高频行情数据——实时报价、历史 tickJava API(2.00.11.1)
MySQL (ATP)清算数据——清算中心视图查询MyBatis + Druid
Redis缓存、RPC 注册中心、消息流Redisson + Jedis Sentinel
OpenHFT Chronicle-Map堆外内存 KV 存储(低延迟定价缓存)hedging-as 专用

5.6 消息队列架构

MQ用途所在项目
ActiveMQ对冲数据分发(eds-hedging-data topic)、风险规则更新eds-web-app / hedging-as
Kafka流式事件处理、CDC(Change Data Capture)、订单流eds-web-app
Pulsar (Dipper)平台级消息流——CICC DataCOE 数据平台eds-web-app (DipperMqAccessServer)
ZeroMQ低延迟行情推送(snapshot + streaming)hedging-as
Redis StreamsIMS 订单/敲入敲出流eds-web-app

5.7 架构决策记录(ADR)

决策选择替代方案理由
双通道前端通信REST + Protobuf/TCP纯 REST历史原因——旧 AccessApp 使用 Protobuf,新 REST API 逐步替代
规则引擎选型Drools + Easy-Rules自研规则业务规则频繁变化(保证金/确认),规则引擎可视化维护
定价计算Spark 分布式 + EDS Library单机计算Monte Carlo 路径计算量大,Spark 集群并行(10.110.166.245:7077
新旧前端共存Vue SPA 嵌入 JSP全量重写渐进式迁移,降低风险——38 个页面逐步替换 78 个 JSP 模块
行情数据库DolphinDB自研/Kudu时序数据查询性能要求极高,DolphinDB 专为金融场景优化

5.8 给 IT BA 的关键洞察

  1. 渐进式架构演进:从”三大件”单体 → Vue 混搭 → 微前端 → 微服务 → monorepo,每一步都保持向后兼容
  2. 新旧系统长期共存:2024 年 edsWeb(2016)仍在运行,与 Vue 3 SPA 共存——这是大型金融机构的常态
  3. 开发语言集中:全部 Java 8 + Vue(2/3),没有夸语言跨技术栈的复杂混合,利于维护
  4. 内部生态完善:CICC 有自研框架(Fuxi、Dipper、DataCOE、HMC SDK),系统深度嵌套在企业生态中
  5. 监管驱动建设:ofareg 报送平台、EOD 处理、SAC 报告等模块的复杂度源自监管要求,而非业务本身
  6. 中资券商特点:Oracle 为主库、GBK 编码、中国市场数据为主——与外资投行差异化明显

5.9 Odyssey 微服务交互全景

EDS 核心系统与 Odyssey 中台微服务之间的数据流:

5.9.1 服务调用链(跨系统视角)

[前端 Odyssey Main Web / Qiankun 子应用]
    |
    v
[odyssey-internal-gateway]               ← Spring Cloud Gateway, Nacos LB
    |-- /api/auth/** → [odyssey-fuxi-auth-web]   ← JWT 签发 + RBAC
    |-- /api/cash/** → [odyssey-cash-manager-service] ← 保证金追缴 + 资金划转
    |-- /api/report/** → [odyssey-report-processing-service] ← EDS→OFA 数据处理
    |-- /api/core/** → [eds-web-app]           ← 核心业务 API
    |
    v
[eds-web-app] ←→ [hedging-as]              ← RPC/Protobuf, 定价/对冲
    |                    |
    v                    v
[Oracle ODTSDB]     [ActiveMQ/Kafka/Pulsar]
    |
    v
[Dipper/Pulsar 消息流] → [PostgreSQL Finalized]

5.9.2 各微服务详解

odyssey-cash-manager-service(资金管理)

功能触发方式源数据目标
保证金追缴指令生成EOD 第 7 步 MarginStep.javahedging-asodyssey-cash-manager-service → IPMP
资金划转确认IPMP 回调IPMPOracle ODTSDB
清算对账每日定时Oracle ODTSDB + 托管行接口对账报告
资金流水查询用户请求 (REST API)ODTSDB ATP 视图前端表格展示

代码路径:odyssey-cash-manager-service/src/main/java/com/cicc/odyssey/cash/controller/ + service/MarginCallService.java

odyssey-report-processing-service(报告加工)

这个服务是 EDS → OFA 的中间数据处理层:

hedging-as (EOD 第 8 步)
    → REST/JSON
        → odyssey-report-processing-service (数据合并/校验)
            → REST/JSON
                → ofareg (柜台报送)
                    → 中证报价 / CSRC / 交易所

处理内容:

  • 交易数据 OTC → 柜台格式映射(字段级转换)
  • 多系统数据合并(EDS + odyssey-cash-manager + 外部数据)
  • 报送前合规校验(利率、汇率、标的限额)
  • 报送失败重试与人工干预接口

代码路径:odyssey-report-processing-service/src/main/java/com/cicc/odyssey/report/service/

odyssey-fuxi-auth-web(斧溪认证)

功能说明
SSO 单点登录统一接入,支持企业微信/Domain
JWT 签发无状态 Token,网关校验
RBAC 权限交易员/风控/运营/管理员 多角色
审计日志操作记录,满足合规要求

odyssey-internal-gateway(内部网关)

功能实现
路由Nacos 服务发现 → 按服务名路由
认证校验拦截所有请求,调用 fuxi-auth-web 校验 JWT
限流Sentinel 流量控制
配置Apollo 配置中心,支持动态路由规则

5.9.3 关键交互时序——保证金追缴

1. hedging-as EOD 第 7 步 → 计算所有交易对手的 Margin 缺口
2. hedging-as → Pulsar 消息 → odyssey-cash-manager-service
3. odyssey-cash-manager-service → 生成 MarginCall 指令
4. odyssey-cash-manager-service → REST → IPMP 发起资金划转
5. IPMP → 异步回调 → odyssey-cash-manager-service → 更新状态
6. odyssey-cash-manager-service → JUMS → 交易对手/交易员 接收追保通知

下一步:15-Client-Ecosystem.md 了解客户生态,或参考实战案例中的系统实现细节