市场数据快照与就绪检查:脏数据如何让估值看起来对、其实错
市场数据快照与就绪检查:脏数据如何让估值看起来对、其实错
组合 VaR 文末留过一句话:市场数据缺了还在出数,比模型选错更危险。本文把这句话展开成一门小课。
先建立一个直觉:定价函数几乎总是会返回一个数。 曲线少一根支柱、波动率在到期日插成负数、债券没有市价,程序仍可能吐出 0、昨天的值,或一个「看起来像价格」的 NaN 替代物。单笔练习时你盯着屏幕;日终几百笔时,错误会混进汇总,再被 VaR 当成真的。
1. 先做一个会出错的思想实验
假设今天要估三笔:一年期 IRS、一张 USD/CNH 香草、一张沪深 300 雪球。
- IRS 的折现曲线文件在,但今天的 bootstrap 失败了,程序静默用了昨天的曲线。
- 香草的波动率曲面缺了 1Y 支柱,插值在翼部给出 σ = −0.02,再被某处改成 0.0001。
- 雪球的 LocalVol 对象根本没建成,函数用了 20% 常数,没有报警。
三笔都有 PV,组合加总得出来,95% VaR 也有。账面上「跑通了」。错的是:你不知道这三笔里有两笔不该进报告。
就绪检查要回答的不是「价格好不好看」,而是更早的一句:今天这批交易,该用的市场对象能不能用?不能用,就不要开跑。
想一想。 若你只检查「文件在不在」,上面三笔都会过关。文件在,不等于曲线能插、曲面为正、日期对齐。
2. 快照:一天一张市场照片
把某日用到的利率曲线、外汇远期点、波动率面、信用曲线、即期和历史行情,打成一份日期对齐的包。猛犸公开资料里常见的名字是 MCP_MARKET_DATA_{日期}.json。顶层键就是类型定义(日历、日计数、插值、单位已预填);MCP 再转成对象。Excel 侧用 LiveStore / RawMD 取出对象,不必每张表手搓一根曲线。公开样本:mcp_marketdata。
标准回答「什么叫一条能进估值的市场数据」;下面的四道关卡回答「今天这份实例过不过定义」。
学的时候记住三件事:
- 同一估值日、同一份快照。 定价和 历史模拟 VaR 必须读同一张照片,否则风险和绩效会分叉。
- 对象有身份证。 曲线、曲面都有 ID(例如某条人民币互换、某张 USDCNH 波动率面)。交易上写的名字,要能在快照里找到。
- 能取到对象,还不等于能在这笔交易的日期上取值。 1Y 到期的期权,需要曲面上 1Y 附近是正的、可插的。
单笔计算器可以临时拼对象;组合批次则应先固定快照,再问「就绪了没有」。
3. 四道关卡(由浅到深)
不必背层号。按「一道关过不了,后面不必跑」来学。
| 关卡 | 问的问题 | 过不了时的典型样子 |
|---|---|---|
| 1. 东西在不在 | 估值日能不能解析?快照有没有、日期是否对得上? | 缺当天包,或包是昨天的 |
| 2. 名字对得上吗 | 这笔 IRS / 期权 / 雪球要的曲线、曲面、现价,ID 能否解析出来? | 交易写了 CNY_SWAP,包里只有另一套键 |
| 3. 对象能不能用 | 曲线能否 bootstrap?在交割日 / 到期日插值是否成功、波动率是否为正? | 空支柱、插值失败、σ ≤ 0 |
| 4. 约定和语义 | 日计数、利率惯例能否识别?期权是否已到期?市价债有没有报价? | 静默落到默认惯例;过期期权仍在出「价格」 |
第 3 关和第 4 关要用 这笔交易的日期 去探针,而不是只看元数据「曲面有 12 个点」。12 个点可以全在短端,1Y 期权仍然插不出来。
三种使用方式,课堂和车间不一样:
- 关掉:练习单笔、自己盯着报错。
- 只报告:先出问题清单,让人修数据,批次仍跑(适合补数阶段)。
- 门禁:有错误就阻断整批,不写逐笔结果。日终正式批次应走这一档。
想一想。 「只报告」会让你看到问题,但 VaR 仍可能被脏数污染。正式限额用的批次,应选门禁。
4. 一份问题单长什么样
就绪检查的输出不该是一句「失败」。学习者可以按这几列读:
- 卡在第几关;
- 哪根曲线 / 哪张曲面 / 哪笔交易;
- 下一步怎么修(补支柱、改 ID、换快照日期、不要用已到期的期权)。
修好再跑,比「先出数再对账」便宜。事后的质量报告(这笔用了哪条曲线、指标是否异常)仍然有用,但它回答的是「算完了好不好」;门禁回答的是「该不该算」。两件事不要互相替代。
5. 和单笔 Excel 的关系
公开站后半段的 Excel 案例(LiveStore、RawMD、交叉远期、信用曲线)其实是在练同一块肌肉:从一份标准 JSON 取出对象再读数,而不是在格子里重新发明曲线。
| 练习 | 文档 |
|---|---|
| 从快照取外汇波动率并给香草定价 | MCP-TC40 |
| 交叉远期点两条路径对照 | MCP-TC35 |
| 信用曲线取风险率 / 违约概率 | MCP-TC43 |
| 原始市场数据函数一览 | Raw Market Data |
单笔练习过关,只说明「这条对象链通了」。组合批次还要加上面的第 3、4 关:对 本批每一笔的日期 做探针。
6. 常见卡住的地方
文件在就当数据好。 过期快照、空支柱、惯例静默回退,都过得了「文件存在」。
用组合加总来发现数据错误。 加总会把错误摊薄。应在开跑前按交易阻断。
过期期权和缺曲线一视同仁。 过期可以警告、从本批摘掉;缺折现曲线应挡住整批。
定价一套快照、风险再读另一天的包。 这是 HS-VaR 里「两套重估」的数据版。
7. 动手与延伸
| 想继续看 | 文档 |
|---|---|
| 为何必须同一快照重估 | 历史模拟 VaR |
| 曲线怎么从报价长出来 | Bootstrapping |
| 波动率面从哪来 | 外汇隐含波动率、该用哪条波动率 |
| 交叉远期 | XCCY Basis |
| 信用曲线 | 信用曲线怎么建 |
课堂练习:故意拿一份缺 1Y 支柱的波动率面,给 1Y 香草定价。先看函数是否仍返回数字;再设想门禁应在第几关拦住。能讲清「拦在定价前」和「跑完再对账」的差别,这一节就过了。
