parseMktData

语法

parseMktData(dict)

详情

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

参数

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

返回值

一个 MKTDATA 类型对象。

市场数据支持与字段要求

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

目前支持以下类型:

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

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

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

各种类型数据所需字段如下(注:"version" 为系统保留字段,为避免冲突,请勿将此名称用于自定义字段。):

FxSpot

字段名 类型 描述 是否必填
mktDataType STRING 固定填 "Spot"
referenceDate DATE 参考日期
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,
    "spotDate": 2025.08.20,
    "spotType": "FxSpot",
    "value": 7.2659,
    "unit": "USDCNY"
}

mktData = parseMktData(fxSpot)
print(mktData)

IrYieldCurve

字段名 类型 描述 是否必填
mktDataType STRING 固定填 "Curve"
referenceDate DATE 参考日期
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",
    "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 参考日期
curveType STRING 固定填 "AssetPriceCurve"
dates DATE 向量 数据点的日期
values DOUBLE 向量 数据点的值,与 dates 中的元素一一对应
curveName STRING 曲线名称

下例定义了一个 AssetPriceCurve 对象:

curve = {
    "mktDataType": "Curve",
    "curveType": "AssetPriceCurve",
    "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 参考日期
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",
	"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)