Raw Market Data 相关函数
大约 4 分钟
Raw Market Data 相关函数
从标准 MCP_MARKET_DATA JSON 加载市场数据,构建 McpYieldCurve2 / McpFXForwardPointsCurve2 / McpFXVolSurface2 等对象,再用已有曲线 UDF 读数。
对象链(三条入口相同):
JSON → LiveStore / RawMD / JsonReader → mdlsGet* / rawmdGet* / mdjsonGet*
→ McpYieldCurve2 等 → YieldCurve2ZeroRate / Fxfpc2FXSpotRate / …注意:本页为 客户端 JSON 市场数据;服务端
McpLocalVolData/mkdtGetValue见 marketdata.md。
路径辅助
Excel: =McpWorkbookDir()
- 功能:返回当前工作簿所在目录(用于拼接相对路径)。
Excel: =McpResolvePath(relative_or_absolute_path)
- 功能:将
data/market_data/…等相对路径解析为绝对路径(相对工作簿目录)。
LiveStore(单文件 + patch)
Excel: =McpLiveMarketDataStore(snapshot_file_or_dir)
Python: MLiveMarketDataStore.loadSnapshot(path)
- 功能:加载
MCP_MARKET_DATA_YYYYMMDD.json快照,返回 LiveStore 句柄(McpLiveMarketDataStore@n)。 - 参数:JSON 文件路径或含按日 JSON 的目录;推荐相对工作簿路径如
data/market_data/MCP_MARKET_DATA_20260810.json。
Excel: =mdlsGetYieldCurve2(store, curve_id)
Excel: =mdlsGetFXForwardPointsCurve2(store, curve_id)
Excel: =mdlsGetFXVolSurface2(store, curve_id)
Excel: =mdlsGetLocalVol(store, curve_id)
- 功能:从 Store 取曲线/曲面/LocalVol 对象;必须先取对象,再用 yieldcurve.md / fxforwardratecurve.md / fxvolsurface.md / LocalVol 读数。
- 返回:
McpYieldCurve2@n/McpLocalVol@n等包装对象。 - P2 样例:
EURUSD_LOCALVOL(TC41);读数LocalVolGetVolatility。
Excel: =mdlsHistVolFromPriceData(store, product_type, instrument_code, valuation_date, sample_num, model)
- 功能:按
price_data_index读与快照同目录的 HIST CSV,动态构建McpHistVols(无需 JSON HistVol 节点)。 - 读数:
HvsGetVol(对象, 日期, sampleNum)。P2 样例:FXSPOT/USDCNH(TC42)。
Excel: =mdlsApplyUpdateFile(store, patch_file)
- 功能:对 Store 应用增量 patch JSON;须被读数单元格引用以保证计算顺序(patch 后再
mdlsGet*)。 - 返回:同一 Store 句柄。
Excel: =mdlsLastUpdateImpact(store)
- 功能:返回上次 patch 的 Impact 表(updated / affected curve_id);动态数组溢出。
- 相关:
mdlsLastPatchCurveIds、mdlsGetCurveBySection。
RawMD 目录管理器
Excel: =McpRawMarketManager(market_data_root)
Python: RawMarketDataManager(root=…)
- 功能:指向含
MCP_MARKET_DATA_YYYYMMDD.json的目录;按估值日缓存快照。
Excel: =rawmdGetYieldCurve2(manager, curve_id, valuation_date)
Excel: =rawmdGetFXForwardPointsCurve2(manager, curve_id, valuation_date)
Excel: =rawmdGetFXVolSurface2(manager, curve_id, valuation_date)
Excel: =rawmdGetLocalVol(manager, curve_id, valuation_date)
- 功能:按
curve_id+ 估值日取对象;估值日可空(用最新主索引日)。 - 别名:
rawmdYieldCurve2/rawmdLocalVol等与rawmdGet*等价。
Excel: =rawmdHistVolFromPriceData(manager, product_type, instrument_code, valuation_date, sample_num, model)
- 功能:与
mdlsHistVolFromPriceData相同;CSV 相对 RawMD 根目录(data/market_data)。
Excel: =rawmdGetYieldCurve(manager, curve_id, valuation_date)
Excel: =mdlsGetYieldCurve(store, curve_id)
- 功能:单边
McpYieldCurve。P1 样例USDDEPO_IMPLIED:JSON 用 FXFP + 锚定 YC 隐含构造(TC36)。
Excel: =rawmdGetSwapCurve(manager, curve_id, valuation_date)
Excel: =mdlsGetSwapCurve(store, curve_id)
- 功能:返回
McpSwapCurve@n。读数:SwapCurveZeroRate。P1 样例CNY_SWAP_FR007_BGN(TC39)。
Excel: =rawmdGetBondCurve(manager, curve_id, valuation_date)
Excel: =mdlsGetBondCurve(store, curve_id)
- 功能:返回
McpBondCurve@n。读数:BondCurveZeroRate。P1 样例CNY_BOND_TREASURY(TC38 RawMD)。
Excel: =rawmdGetCreditCurve(manager, curve_id, valuation_date)
Excel: =mdlsGetCreditCurve(store, curve_id)
Excel: =mdjsonGetCreditCurve(reader, curve_id)
- 功能:返回
McpCreditCurve@n。读数:CreditCurveHazardRate/CreditCurveDefaultProbability。 - P3 样例
CNY_CREDIT_CFETS(data_source=spreads,Spreads 单位 BP,4 个 tenor,依赖平坦CNYDEPO,TC43)。C++ 校准偶发失败时mdlsGet重试、rawmdGet走 Python 构建。
Excel: =rawmdGetBondSpreadCurve(manager, curve_id, valuation_date)
Excel: =mdlsGetBondSpreadCurve(store, curve_id)
- 功能:返回
McpBondSpreadCurve@n。读数:BondSpreadCurveZeroSpread。 - P3 样例
CNY_BOND_POLICY_SPREAD(two_curves:国债 vs 政策债,TC44)。须走 C++;PythonfromJson无法构建。 - 基准冲击:
rawmdBondSpreadSetBenchmark(spread, yield_curve),第二参数必须是MYieldCurve(样例CNYDEPO_BUMP),不能传 BondCurve。
Excel: =rawmdGetForwardCurve(manager, curve_id, valuation_date)
Excel: =mdlsGetForwardCurve(store, curve_id)
- 功能:返回非 FX
McpForwardCurve@n。读数:ForwardCurveForwardRate。P3 样例EQ_FORWARD(TC45)。别名:rawmdForwardCurve。
Excel: =rawmdGetVolSurface(manager, curve_id, valuation_date)
Excel: =mdlsGetVolSurface(store, curve_id)
- 功能:返回非 FX
McpVolSurface@n。读数:VolSurfaceGetVolatility。P3 样例EQ_VOL_SAMPLE(2×5 小网格,TC46)。别名:rawmdVolSurface。
Cross FXFP2
rawmdGetFXForwardPointsCurve2/mdlsGetFXForwardPointsCurve2取CNHTHB_FXFP_CROSS_2(JSONConstruction=Cross,无 Tenors,由 Leg1/Leg2 合成)。- Python
RawMarketDataManager.get_fx_forward_points_curve2无法构建 Cross2;请用 LiveStore / C++ Manager。 - 读数:
Fxfpc2FXSpotRate/Fxfpc2FXForwardOutright;Fxfpc2GetCurve得单边 Mid(TC35)。
Excel: =rawmdAvailableDates(manager)
Excel: =rawmdLatestValuationDate(manager)
- 功能:列出目录下可用估值日 / 最新估值日。
JsonReader(只读)
Excel: =McpMarketDataJsonReader(json_file)
Python: MMarketDataJsonReader.loadFromFile(path)
- 功能:单文件只读加载;不支持 patch。
Excel: =mdjsonGetYieldCurve2(reader, curve_id)
Excel: =mdjsonGetFXForwardPointsCurve2(reader, curve_id)
Excel: =mdjsonGetFXVolSurface2(reader, curve_id)
- 功能:与 LiveStore 相同 curve_id 应对齐;用于只读场景。
读数 UDF(对象链下游)
取到对象后,使用已有函数(详见对应 API 页):
| 对象 | 读数示例 |
|---|---|
McpYieldCurve2 | =YieldCurve2ZeroRate(curve, date, "MID") |
McpYieldCurve | =YieldCurveZeroRate(curve, date) |
McpFXForwardPointsCurve2 | =Fxfpc2FXSpotRate(curve, "MID") / Fxfpc2FXForwardOutright |
McpSwapCurve | =SwapCurveZeroRate(curve, date) |
McpBondCurve | =BondCurveZeroRate(curve, date) |
McpFXVolSurface2 | =FXVolSurface2GetVolatilityByDeltaStr(...) |
McpLocalVol | =LocalVolGetVolatility(lv, strike, expiry) |
McpHistVols | =HvsGetVol(hv, date, sampleNum) |
McpCreditCurve | =CreditCurveHazardRate(curve, date) / CreditCurveDefaultProbability |
McpBondSpreadCurve | =BondSpreadCurveZeroSpread(curve, date) |
McpForwardCurve | =ForwardCurveForwardRate(curve, date) |
McpVolSurface | =VolSurfaceGetVolatility(vs, strike, expiry, 0) |
禁止使用已移除的「跳过对象直接算」UDF(如 mdlsYieldCurve2ZeroRate)。
PyXLL 模块
在 pyxll.cfg 的 [PYXLL] modules 中注册(mcp_lifecycle 须放在最后):
mcp_raw_market_datamcp_market_data_livemcp_lifecycle
排错
| 现象 | 处理 |
|---|---|
#NAME? | 检查 modules 是否注册;Reload PyXLL |
| patch 无效果 | 确认 mdlsApplyUpdateFile 被 patch 后读数单元格引用 |
| 路径找不到 | 使用 data/market_data/… 相对路径或 McpResolvePath |
| JSON 缺 curve_id | 检查快照是否含对应 curve_id |
Excel 案例:TC31–TC46(见 excel/MCP-TC31.md … MCP-TC42.md / MCP-TC43.md … MCP-TC46.md)。
