FpML是专为OTC衍生品设计的强语义XML标准,强制校验币种、LEI、日期规则等字段,要求命名空间、版本匹配及深度嵌套解析,否则导致估值偏差、监管拒收或结算失败。

FpML 不是通用 XML 格式,而是一套专为场外衍生品(OTC derivatives)设计的、带强语义约束的行业级 XML 标准。
它解决的核心问题是:当两家银行确认一笔利率互换或信用违约互换时,如何让双方系统“说同一种话”,避免因字段理解偏差导致估值不一致、监管报送被拒、甚至净额结算失败。
为什么不能直接用普通 XML 写交易数据?
你可以手写一个 ,但 FpML 要求你明确:
– 这个名义本金是否含币种和计价日?
– 它属于哪个 ?该 party 是否绑定了 LEI(法人识别编码)?
– 它关联的是哪个 ?是否启用 “Modified Following” 日历调整规则?
这些不是可选项——FpML 的 XSD Schema(如 fpml-main-5-11.xsd)会强制校验:
– businessDayConvention 只能取枚举值("Following"、"ModifiedFollowing" 等)
– fpml:PositiveDecimal 类型字段不允许负数或空字符串
– 中的 creationTimestamp 必须带时区(如 2025-12-26T05:23:00+08:00)
常见解析失败的三个典型原因
- 没绑定命名空间:根元素漏了
xmlns="http://www.fpml.org/FpML-5/confirmation",导致 XPath 查询全失效 - 版本错配:用 FpML 5.10 的 XSD 去校验 5.14 报文,
等新元素直接报Validation failed for xml instance - 忽略
:很多开发认为日期就是字符串,但 FpML 要求把 “起息日是否顺延” 拆成独立节点,否则风控引擎可能按自然日计息,造成头寸偏差
在 SQL Server 里导入 FpML 时最易丢的数据
FpML 是深度嵌套结构,直接用 OPENROWSET + .nodes() 解析时,以下字段常被跳过:
-
@currency属性:比如—— 若只取文本值,就丢了币种信息100000000 -
这类 ID 引用:需先提取所有,再做 JOIN,否则对手方名称永远是 NULL -
下的和分属不同层级,用单层 XPath 易漏掉 spread
USD-LIBOR-BBA 0.005 3 M
FpML 的复杂性不在语法,而在它把法律条款(如 ISDA 第 5(a)(vi) 条“违约事件”)、会计处理(如估值层级 Level 2/3)、监管要求(如 CFTC 的 Real-Time Reporting 字段)全部压缩进 XML 元素与属性的组合里。
少读一个 或误判一个 xsi:nil="true",都可能让整笔互换在监管报送中被标记为“不完整”。










