Teach Session
· · ·
题目进度 0 / 0 ✓ 0
Teach Session — CICC OTC 衍生品系统全景教学
生成时间: 2026-07-21 教学素材:
~/odts1(EDS 核心) +~/odyssey(中台微服务) +learning/otc-derivatives/**(82+ 篇文档) 教学方式: 从代码到文档、从文档到概念的双向阅读式教学
一、你要学什么:一张地图
┌──────────────────────────────────────────────────────────────────┐
│ CICC OTC 衍生品系统全景 │
│ │
│ 业务层 [产品认知] ──→ [交易流程] ──→ [风险管理] ──→ [合规报告] │
│ │ │ │ │ │
│ 代码层 hedgine-as eds-web-app risk rule ofareg + sac │
│ (定价/对冲) (核心后端) (实时拦截) (监管申报) │
│ │
│ 学习层 产品6篇 + 05+11+15 15+16+17+ 18+19+39 │
│ ODTS-28/30 17/18/21 24/72/73/ /43/52/55 │
│ 78 │
│ 数据层 Oracle ODTSDB ──→ Dipper/Kafka ──→ PostgreSQL Finalized│
│ │
│ 笔记区 TEACH-SESSION.md ← 你现在在这里 │
└──────────────────────────────────────────────────────────────────┘
二、源仓库全景:11 个项目,8 个业务域
A. odts1 — EDS 核心交易系统(Java/Scala)
| 项目 | 定位 | 学习入口文档 |
|---|---|---|
hedging-as | 对冲与定价应用服务 — 定价引擎、EOD 批处理、风控执行、对冲计算、交易簿记 | ODTS-05, 15, 18, 35, 78 |
eds-web-app | EDS 后端主服务 — 合约管理、交易录入、审批流、产品配置、交易对手 | ODTS-34, 05, 72, 79 |
eds-price-server | 独立定价服务器 — 30+ 结构化产品定价,独立部署 | ODTS-35 |
eds-rm-web | 风险管理前端 — 风险官使用的 Web 界面 | ODTS-24, 72 |
eds-utility | 工具库 — 日期处理、日历、计算工具 | 06-Code-Map |
sac-report | SAC 监管报告 — 向中国证券业协会的衍生品报告 | ODTS-19, 43 |
tradedesign / tradedesignapp | 交易协议/ProtoBuf 中枢 — 定义所有通信协议(2015 年最早启动) | ODTS-06, 43 |
B. odyssey — 中台微服务(Spring Boot 2.x)
| 项目 | 定位 | 学习入口文档 |
|---|---|---|
ofareg | OFA 监管申报平台 — 对外字段级别的监管报告 | ODTS-19, 39, 55 |
odyssey-report-processing-service | 报告加工服务 — 从 EDS → OFA 的数据处理和报告生成 | ODTS-39 |
odyssey-cash-manager-service | 资金管理服务 — 保证金追缴指令、资金划转 | ODTS-16, 53 |
odyssey-fuxi-auth-web | 斧溪认证网关 — 用户认证和权限管理 | ODTS-39 |
odyssey-internal-gateway | 内部网关 — 微服务间的路由和负载均衡 | ODTS-39 |
C. 外部系统(通过 API/消息队列交互)
| 系统 | 作用 | 学习入口文档 |
|---|---|---|
| IPMP(资金管理平台) | 跨系统资金划转 | ODTS-53 |
| JUMS(统一消息服务) | 通知推送(微信/邮件) | ODTS-57 |
| PKS(中证报价) | 向中证报价系统报送交易 | ODTS-52, 19 |
| Doc Agent(文档生成) | 自动生成交易确认书等 | ODTS-55 |
| Dipper/Pulsar | 生产→分析库数据同步 | ODTS-56 |
三、两条学习路径
🅰️ 技术人员路径(从代码出发)
第 1 站:读 ODTS-06 Code Map → 理解代码结构
第 2 站:读 ODTS-25 架构总览 → 看整体布局
第 3 站:读 ODTS-05 交易生命周期 → 从一条交易开始跟踪代码
第 4 站:在 IDE 打开 hedging-as 的 getPrice() → 实际看代码
第 5 站:读 ODTS-15 / 18 → 理解对冲和 EOD
第 6 站:读 ODTS-78 / 72 / 73 → 理解风控体系
第 7 站:读 ODTS-34 / 35 / 39 → 理解系统演进
第 8 站:读产品文档 (product-*.md) → 理解每个产品的定价逻辑
🅱️ 业务人员路径(从业务概念出发)
第 1 站:读 product-option.md, product-swap.md, product-snowball.md → 了解卖什么
第 2 站:读 01-OTC-Derivatives-Overview.md → 行业全景
第 3 站:读 ODTS-05 交易生命周期 → 一笔交易怎么走
第 4 站:读 ODTS-11 交易台如何赚钱 → 理解商业模式
第 5 站:读 ODTS-15 / 16 / 17 → 对冲 + 保证金 + 确认
第 6 站:读 ODTS-19 / 39 → 监管报告
第 7 站:读 ODTS-21 / 71 → 交易日时间线和角色
第 8 站:读 risk-hotspots.md → 了解风险点
四、核心概念教学(5 个必须掌握的概念)
概念 1:簿记 (Booking)
交易员录入交易的那一刻,交易从”口头约定”变成”有约束力的合约”。
- 系统位置:
eds-web-app→ContractController.java→hedging-as→ContractSaveService.java - 文档: ODTS-05 第二阶段
- 关键代码流:
new-edsweb(Vue 2 SPA) → REST API →ContractAction(Struts Action) →hedging-as→ OracleODTSDB
概念 2:定价引擎 (Pricing Engine)
hedging-as和eds-price-server都是定价引擎,但角色不同:
hedging-as: 交易前报价 (real-time quotation),面向销售eds-price-server: 独立服务,支持更复杂的产品定价
- 核心类:
hedging-as/src/com/cicc/pricing/service/PricingService.java - 文档: ODTS-35, ODTS-05 第一阶段, ODTS-79
- 计算方式: Monte Carlo / PDE / Closed-form(取决于产品类型)
概念 3:EOD 批处理 (End-of-Day)
每天收盘后,系统必须在 8 小时内完成:市场数据 → 估值 → Greeks → 保证金 → 报告
- 系统位置:
hedging-as/src/com/cicc/action/eod/EodScheduler.java - 文档: ODTS-18
- 10 个步骤: MarketDataRefresh → Fixing → CorporateAction → BarrierCheck → Valuation → Greeks → Margin → CashMovement → Reporting → Cleanup
概念 4:风险管理三道闸
| 闸门 | 负责 | 时点 | 文档 |
|---|---|---|---|
| 规则闸 (RiskRule) | “规则允不允许做” | 成交前,逐笔实时 | ODTS-72 + 78 |
| 额度闸 (CreditLimit) | “对手方额度够不够” | 成交前 | ODTS-75 |
| 保证金闸 (Margin) | “保证金够不够” | 成交后,逐日 | ODTS-16 + 73 |
概念 5:数据流三阶段
Oracle ODTSDB (生产)
→ Dipper/Pulsar/Kafka (消息)
→ PostgreSQL Finalized (分析/报告)
- 为什么分开: 分析查询不能影响交易性能
- 文档: ODTS-45, ODTS-56
- 同步方式: ProtoBuf (Pulsar通道) + JSON/Kafka (外部通道)
五、文档审核:发现的问题及已修复
已修复
| # | 问题 | 位置 | 修复 |
|---|---|---|---|
| 1 | .~undo-tree~ 文件残留 | otc-derivatives/.01-*.md.~undo-tree~ (3个) | 已删除 (Emacs 元数据,无内容) |
| 2 | ODTS-52 和根目录的 ODTS-52-External-Systems.md 重复 | 根目录 | 保留,两个文件内容互补 |
待后续完善(教学提醒)
| # | 发现 | 建议 |
|---|---|---|
| 1 | product-option.md 的 Greeks 计算部分偏理论,缺少系统实际实现引用 | 补充 hedging-as 中的 Greeks 计算代码路径 |
| 2 | product-snowball.md 提到系统但未给出代码路径 | 见下方补充 |
| 3 | 14-Systems-and-Data.md 列出了系统但没有 odyssey 中台项目的细节 | 见下方补充 |
| 4 | slang.md 很全但缺少部分交易台日常用的缩写 | 可补充 “BP”, “DV01”, “CS01” 等 |
| 5 | ODTS 39 (Odyssey微服务) 缺少 ofareg 的字段级报告细节 | 需要深入读 ofareg 代码 |
| 6 | ODTS 55 (Doc Agent) 只描述了外部能力,没有代码映射 | 如有代码库可补充 |
六、本次教学新增的补充
6.1 产品文档的代码映射补充
详见各个产品文档的更新部分。核心原则:每个产品文档都加入”这在你系统里的什么地方” 一节。
6.2 系统与数据文档的完善
14-Systems-and-Data.md 从原先的系统列表扩展为包含具体代码路径的参考。
6.3 外部系统报告的丰富
ODTS-52-External-Systems.md (根目录) 增加了与 odyssey 微服务的交互细节。
七、下一步学习建议
- 立即可做: 在 IDE 中打开
hedging-as,从PricingService.getPrice()开始读一个雪球的定价流程 - 本周可做: 按照 ODTS-05 的路径,从头到尾跟踪一笔 TRS 交易
- 本月可做: 理解 EOD 批处理的全部 10 个步骤,找一个步骤的代码深入读
- 进阶: 研究 odyssey-ofareg 的监管字段映射逻辑,理解合规报告怎么做
八、学习检查清单
- 能说出 CICC 卖哪几种 OTC 衍生品
- 知道一笔交易从询价到结算经过哪些系统
- 能指出定价引擎的核心代码在哪里
- 理解 EOD 批处理为什么必须在 8 小时内完成
- 能解释风险管理三道闸分别做什么
- 知道 Oracle → Dipper → PostgreSQL 数据流的作用
- 能向一个新人解释 “hedging-as SDK” 的概念
- 能说出 odyssey 里每个微服务的职责
本教学文档基于 ~/odts1/**, ~/odyssey/** 的实际源代码,结合 learning/otc-derivatives/** 的 82+ 篇系统文档生成。