parseMktData

语法

parseMktData(dict)

参数

dict 字典或表示该字典的 JSON 格式字符串(STRING 标量),用于指定待解析的市场数据内容。

详情

将输入的字典或 JSON 字符串解析为 MKTDATA 类型。

返回值:MKTDATA 类型对象。

市场数据支持与字段要求

MKTDATA 为 DolphinDB 新增的数据类型,为金融产品定价需要用到的市场数据提供支撑。

目前支持以下类型:

  • 即期价格:FxSpot(外汇即期汇率)

  • 期限结构曲线:IrYieldCurve(利率收益率曲线), AssetPriceCurve(资产价格曲线)

  • 波动率曲面:FxVolatilitySurface(外汇波动率曲面)

各种类型数据所需字段如下:

FxSpot

字段名 类型 描述 是否必填
mktDataType STRING 固定填 "Spot"
referenceDate DATE 参考日期
version INT 版本号,默认值 0
spotDate DATE 即期交割日,默认使用内部静态数据
spotType STRING 即期价格类型,固定填 "FxSpot"
value DOUBLE 即期价格
unit STRING

即期价格的单位,可选值为"EURUSD", "USDCNY", "EURCNY", "GBPCNY", "JPYCNY", "HKDCNY"。

货币对的表示也可由 ./ 分隔,例如 "EURUSD" 也可写为 "EUR.USD" 或 "EUR/USD"。

下例定义了一个 FxSpot 对象:

fxSpot = {
    "mktDataType": "Spot",
    "referenceDate": 2025.08.18,
    "version": 0, 
    "spotDate": 2025.08.20,
    "spotType": "FxSpot",
    "value": 7.2659,
    "unit": "USDCNY"
}

mktData = parseMktData(fxSpot)
print(mktData)

IrYieldCurve

字段名 类型 描述 是否必填
mktDataType STRING 固定填 "Curve"
referenceDate DATE 参考日期
version INT 版本号,默认值 0
curveType STRING 固定填 "IrYieldCurve"
dayCountConvention STRING

曲线的日期计数惯例,可选值为:

  • "Actual360":实际天数除以360

  • "Actual365":实际天数除以365(不区分闰年)

  • "ActualActualISMA":实际天数/实际天数(ISMA规则)

  • "ActualActualISDA":实际天数/实际天数(ISDA规则)

interpMethod STRING

内插方法,可选值为:

  • "Linear":线性插值

  • "CubicSpline":三次样条插值

  • "CubicHermiteSpline":三次埃尔米特样条插值

extrapMethod STRING

外插方法,可选值为:

  • "Flat":平插

  • "Linear":线性插值

dates DATE 向量 数据点的日期
values DOUBLE 向量 数据点的值,与 dates 中的元素一一对应
curveName STRING 曲线名称
currency STRING 货币,可选值为"CNY", "USD", "EUR", "GBP", "JPY", "HKD"
compounding STRING

复利类型,可选值为:

  • "Simple":单利

  • "Compounded":离散复利

  • "Continuous":连续复利

settlement DATE 结算日,如果指定了结算日,则后续期限间隔的计算都将从 settlement 开始,而不是 referenceDate
frequency INTEGRAL或 STRING

计息频率,可选值为:

  • -1 或 "NoFrequency":无效计息频率

  • 0 或 "Once":到期一次还本付息

  • 1 或 "Annual":每年付息一次

  • 2 或 "Semiannual":每半年付息一次

  • 3 或 "EveryFourthMonth":每四个月付息一次

  • 4 或 "Quarterly":每季度付息一次

  • 6 或 "BiMonthly":每两月付息一次

  • 12 或 "Monthly":每月付息一次

  • 13 或 "EveryFourthWeek":每四周付息一次

  • 26 或 "BiWeekly":每两周付息一次

  • 52 或 "Weekly":每周付息一次

  • 365 或 "Daily":每日付息一次

  • 999 或 "Other":其他计息频率

curveModel STRING

曲线构建模型,可选值为 "Bootstrap"(默认),"NS","NSS"。

当取值 "NSS" 或 "NS",无需传 interpMethodextrapMethoddatesvalues 字段。

curveParams DICT

模型的参数,当 curveModel取值 "NSS" 或 "NS" 时必填:

  • curveModel = "NS":应包含键 'beta0', 'beta1', 'beta2', 'lambda'

  • curveModel = "NSS":应包含键'beta0', ‘beta1', 'beta2', 'beta3', 'lambda0', 'lambda1'

下例定义了一个 IrYieldCurve 对象:

aod = 2025.07.01
curve = {
    "mktDataType": "Curve",
    "curveType": "IrYieldCurve",
    "version": 0, 
    "referenceDate": aod,
    "currency": "CNY",
    "dayCountConvention": "Actual365",
    "compounding": "Continuous",
    "interpMethod": "Linear",
    "extrapMethod": "Flat",
    "dates":[2025.07.07,2025.07.10,2025.07.17,2025.07.24,2025.08.04,2025.09.03,2025.10.09,2026.01.05,
        2026.04.03,2026.07.03,2027.01.04,2027.07.05,2028.07.03],
    "values":[0.015785,0.015931,0.016183,0.016381,0.016493,0.016503,0.016478,0.016234,0.016321,
        0.016378,0.015508,0.015185,0.014901],
    "settlement": aod+2
}

mktData = parseMktData(curve)
print(mktData)

AssetPriceCurve

字段名 类型 描述 是否必填
mktDataType STRING 固定填 "Curve"
referenceDate DATE 参考日期
version INT 版本号,默认值 0
curveType STRING 固定填 "AssetPriceCurve"
dates DATE 向量 数据点的日期
values DOUBLE 向量 数据点的值,与 dates 中的元素一一对应
curveName STRING 曲线名称

下例定义了一个 AssetPriceCurve 对象:

curve = {
    "mktDataType": "Curve",
    "curveType": "AssetPriceCurve",
    "version": 0, 
    "referenceDate": 2024.06.28,
    "curveName": "PRICE_SHIBOR_3M",
    "dates": [2024.06.21, 2024.06.24, 2024.06.25, 2024.06.26,2024.06.27],
    "values": [1.923, 1.922, 1.921, 1.919, 1.918]/100
}

mktData = parseMktData(curve)
print(mktData)

FxVolatilitySurface

字段名 类型 描述 是否必填
mktDataType STRING 固定填 "Surface"
referenceDate DATE 参考日期
version INT 版本号,默认值 0
surfaceType STRING 固定填 "FxVolatilitySurface"
smileMethod STRING

波动率微笑方法,可选值为:

  • "Linear":线性微笑

  • "CubicSpline":三次样条微笑

  • "SVI":SVI 模型微笑

  • "SABR":SABR 模型微笑

volSmiles DICT(STRING, ANY) 向量

波动率微笑向量,向量中每个元素为一条波动率微笑。

包含以下成员:

  • strikes: DOUBLE 类型向量,表示不同的行权价

  • vols: DOUBLE 类型向量,表示行权价对应的波动率,与 strikes等长

  • curveParams:字典DICT(STRING, DOUBLE)类型,表示波动率微笑方法的模型参数,只在 smileMethod 取值 "SVI" 或 "SABR" 时生效:

    • smileMethod = 'SVI': 应包含键 'a', 'b', 'rho', 'm', 'sigma'

    • smileMethod = 'SABR': 应包含键 'alpha', 'beta', 'rho', 'nu'

  • fwd:可选,DOUBLE 类型标量,当 smileMethod取值 "SVI" 或 "SABR" 时必填,表示远期值

termDates DATE 向量 volSmiles中每条波动率微笑对应的期限日期
surfaceName STRING 曲面名称
currencyPair STRING

外汇的货币对,可选值为"EURUSD", "USDCNY", "EURCNY", "GBPCNY", "JPYCNY", "HKDCNY"。

货币对的表示也可由 ./ 分隔,例如 "EURUSD" 也可写为 "EUR.USD" 或 "EUR/USD"。

下例定义了一个 FxVolatilitySurface 对象:

surf = {
	"surfaceName": "USDCNY",
	"mktDataType": "Surface",
	"surfaceType": "FxVolatilitySurface",
	"version": 0,
	"referenceDate": "2025.08.18",
	"smileMethod": "Linear",
	"termDates": [
		"2025.08.21",
		"2026.08.20"
	],
	"volSmiles":[{"strikes": [6.5,7,7.5],"vols": [0.1,0.1,0.1]},{"strikes": [6.5,7,7.5],"vols": [0.1,0.1,0.1]}],
	"currencyPair": "USDCNY"
}

surfUsdCny = parseMktData(surf)