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"。 货币对的表示也可由 |
是 |
下例定义了一个 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 |
曲线的日期计数惯例,可选值为:
|
是 |
interpMethod | STRING |
内插方法,可选值为:
|
是 |
extrapMethod | STRING |
外插方法,可选值为:
|
是 |
dates | DATE 向量 | 数据点的日期 | 是 |
values | DOUBLE 向量 | 数据点的值,与 dates 中的元素一一对应 | 是 |
curveName | STRING | 曲线名称 | 否 |
currency | STRING | 货币,可选值为"CNY", "USD", "EUR", "GBP", "JPY", "HKD" | 是 |
compounding | STRING |
复利类型,可选值为:
|
是 |
settlement | DATE | 结算日,如果指定了结算日,则后续期限间隔的计算都将从 settlement 开始,而不是 referenceDate | 否 |
frequency | INTEGRAL或 STRING |
计息频率,可选值为:
|
否 |
curveModel | STRING |
曲线构建模型,可选值为 "Bootstrap"(默认),"NS","NSS"。 当取值 "NSS" 或 "NS",无需传 interpMethod、extrapMethod、dates、values 字段。 |
否 |
curveParams | DICT |
模型的参数,当 curveModel取值 "NSS" 或 "NS" 时必填:
|
否 |
下例定义了一个 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 |
波动率微笑方法,可选值为:
|
是 |
volSmiles | DICT(STRING, ANY) 向量 |
波动率微笑向量,向量中每个元素为一条波动率微笑。 包含以下成员:
|
是 |
termDates | DATE 向量 | volSmiles中每条波动率微笑对应的期限日期 | 是 |
surfaceName | STRING | 曲面名称 | 否 |
currencyPair | STRING |
外汇的货币对,可选值为"EURUSD", "USDCNY", "EURCNY", "GBPCNY", "JPYCNY", "HKDCNY"。 货币对的表示也可由 |
是 |
下例定义了一个 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)