parseInstrument
语法
parseInstrument(obj)
参数
obj 可以是字典、或由字典组成的元组,表示要解析的金融工具描述。
详情
将输入的金融工具产品描述(obj)转换成一个 INSTRUMENT 类型对象(金融工具),用于后续建模和定价。可解析的金融工具详见下文说明。
注意:parseInstrument
会在序列化或反序列化过程中保留非标准标量或向量字段(即不属于金融工具预定义属性的字段)。
返回值:INSTRUMENT 类型
金融工具支持与字段要求
INSTRUMENT 为 DophinDB 在 3.00.4 版本上新增的数据类型,用于支持金融工具的存储,为后续各类金融产品的定价与风险计量提供基础。
在金融工具的描述中,需要包含若干关键字段,parseInstrument
将根据这些字段生成相应的金融工具对象。目前仅支持生成下图分类树中叶节点所示的金融工具类型:

贴现债(DiscountBond)
字段名 | 类型 | 描述 | 是否必填 |
---|---|---|---|
productType | STRING | 固定填 "Cash" | 是 |
assetType | STRING | 固定填 "Bond" | 是 |
bondType | STRING | 固定填 "DiscountBond" | 是 |
version | INT | 版本号,默认值 0 | 否 |
nominal | DOUBLE | 名义金额,默认值 100 | 否 |
instrumentId | STRING | 债券代码,如 "259926.IB" | 否 |
start | DATE | 起息日 | 是 |
maturity | DATE | 到期日 | 是 |
dayCountConvention | STRING | 日期计数惯例,可选 "ActualActualISDA", "ActualActualISMA", "Actual365", "Actual360" | 是 |
issuePrice | DOUBLE | 发行价格 | 是 |
currency | STRING | 货币,默认为 "CNY" | 否 |
cashFlow | TABLE | 债券现金流表 | 否 |
discountCurve | STRING | 定价时参考的贴现曲线名称,如 "CNY_TRASURY_BOND" | 否 |
spreadCurve | STRING | 定价时参考的利差曲线名称 | 否 |
subType | STRING |
债券子类型,中国债券可选值为:
|
否 |
creditRating | STRING | 信用等级类型,可选值为:"B", "BB", "BBB", "BBB+", "A-", "A", "A+", "AA-", "AA", "AA+", "AAA-", "AAA", "AAA+" | 否 |
下例定义了一个 DiscountBond 类型的 INSTRUMENT 对象。
bond = {
"productType": "Cash",
"assetType": "Bond",
"bondType": "DiscountBond",
"version": 0,
"instrumentId": "259924.IB",
"start": 2025.04.17,
"maturity": 2025.07.17,
"issuePrice": 99.664,
"dayCountConvention": "ActualActualISDA"
}
instrument = parseInstrument(bond)
print(instrument)
零息债(ZeroCouponBond)
字段名 | 类型 | 描述 | 是否必填 |
---|---|---|---|
productType | STRING | 固定填 "Cash" | 是 |
assetType | STRING | 固定填 "Bond" | 是 |
bondType | STRING | 固定填 "ZeroCouponBond" | 是 |
version | INT | 版本号,默认值 0 | 否 |
nominal | DOUBLE | 名义金额,默认值 100 | 否 |
instrumentId | STRING | 债券代码,如 "250401.IB" | 否 |
start | DATE | 起息日 | 是 |
maturity | DATE | 到期日 | 是 |
coupon | DOUBLE | 票面利率,如 0.03 表示 3% | 是 |
frequency | STRING | 付息频率 | 是 |
dayCountConvention | STRING | 日期计数惯例,可选 "ActualActualISDA", "ActualActualISMA", "Actual365", "Actual360" | 是 |
currency | STRING | 货币,默认为 "CNY" | 否 |
cashFlow | TABLE | 债券现金流表 | 否 |
discountCurve | STRING | 定价时参考的贴现曲线名称,如 "CNY_TRASURY_BOND" | 否 |
spreadCurve | STRING | 定价时参考的利差曲线名称 | 否 |
subType | STRING |
债券子类型,中国债券可选值为:
|
否 |
creditRating | STRING | 信用等级类型,可选值为:"B", "BB", "BBB", "BBB+", "A-", "A", "A+", "AA-", "AA", "AA+", "AAA-", "AAA", "AAA+" | 否 |
下例定义了一个 ZeroCouponBond 类型的 INSTRUMENT 对象。
bond = {
"productType": "Cash",
"assetType": "Bond",
"bondType": "ZeroCouponBond",
"version": 0,
"instrumentId": "250401.IB",
"start": 2025.01.09,
"maturity": 2026.02.05,
"coupon": 0.0119,
"dayCountConvention": "ActualActualISDA"
}
instrument = parseInstrument(bond)
print(instrument)
固定利率债(FixedRateBond)
字段名 | 类型 | 描述 | 是否必填 |
---|---|---|---|
productType | STRING | 固定填 "Cash" | 是 |
assetType | STRING | 固定填 "Bond" | 是 |
bondType | STRING | 固定填 "FixedRateBond" | 是 |
version | INT | 版本号,默认值 0 | 否 |
nominal | DOUBLE | 名义金额,默认值 100 | 否 |
instrumentId | STRING | 债券代码,如 "250401.IB" | 否 |
start | DATE | 起息日 | 是 |
maturity | DATE | 到期日 | 是 |
coupon | DOUBLE | 票面利率,如0.03表示3% | 是 |
frequency | STRING | 付息频率 | 是 |
dayCountConvention | STRING | 日期计数惯例,可选 "ActualActualISDA", "ActualActualISMA", "Actual365", "Actual360" | 是 |
currency | STRING | 货币,默认为 "CNY" | 否 |
cashFlow | TABLE | 债券现金流表 | 否 |
discountCurve | STRING | 定价时参考的贴现曲线名称,如 "CNY_TRASURY_BOND" | 否 |
spreadCurve | STRING | 定价时参考的利差曲线名称 | 否 |
subType | STRING |
债券子类型,中国债券可选值为:
|
否 |
creditRating | STRING | 信用等级类型,可选值为:"B", "BB", "BBB", "BBB+", "A-", "A", "A+", "AA-", "AA", "AA+", "AAA-", "AAA", "AAA+" | 否 |
下例定义了一个 FixedRateBond 类型的 INSTRUMENT 对象。
bond = {
"productType": "Cash",
"assetType": "Bond",
"bondType": "FixedRateBond",
"version": 0,
"instrumentId": "240021.IB",
"start": 2024.10.25,
"maturity": 2025.10.25,
"issuePrice": 100,
"coupon": 0.0133,
"frequency": "Annual",
"dayCountConvention": "ActualActualISDA"
}
instrument = parseInstrument(bond)
print(instrument)
国债期货(BondFutures)
字段名 | 类型 | 描述 | 是否必填 |
---|---|---|---|
productType | STRING | 固定值为 "Futures" | 是 |
futuresType | STRING | 固定值为 "BondFutures" | 是 |
version | INT | 版本号,默认值 0 | 否 |
nominal | DOUBLE | 名义金额,默认值 100 | 是 |
instrumentId | STRING | 国债期货代码,如 "T2509" | 否 |
maturity | DATE | 到期日 | 是 |
settlement | DATE | 交割日 | 是 |
underlying | 字典 | 固定利率债券结构,表示标的可交割债券 | 是 |
nominalCouponRate | DOUBLE | 名义票面利率 | 是 |
下例定义了一个 BondFutures 类型的 INSTRUMENT 对象。
bond ={
"productType": "Cash",
"assetType": "Bond",
"bondType": "FixedRateBond",
"version": 0,
"instrumentId": "220010.IB",
"start": 2020.12.25,
"maturity": 2031.12.25,
"issuePrice": 100.0,
"coupon": 0.0149,
"frequency": "Annual",
"dayCountConvention": "ActualActualISDA"
}
futures = {
"productType": "Futures",
"futuresType": "BondFutures",
"version": 0,
"instrumentId": "T2509", //期货代码
"nominal": 100.0,
"maturity": "2022.09.09",
"settlement": "2022.09.11",
"underlying": bond,
"nominalCouponRate": 0.03 //与国债期货品种匹配的名义利率,可从中金所获取
}
instrument = parseInstrument(futures)
print(instrument)
存款(Deposit)
字段名 | 类型 | 描述 | 是否必填 |
---|---|---|---|
productType | STRING | 固定填 "Cash" | 是 |
assetType | STRING | 固定填 "Deposit" | 是 |
version | INT | 版本号,默认值 0 | 否 |
notional | ANY 向量 | 名义本金,格式如 ["USD", 1.0]。 | 是 |
instrumentId | STRING | 存款参考利率指数,如 "SHIBOR_3M" | 否 |
start | DATE | 起息日 | 是 |
maturity | DATE | 到期日 | 是 |
rate | DOUBLE | 存款利率 | 是 |
dayCountConvention | STRING | 日期计数惯例, 可选 "ActualActualISDA", "ActualActualISMA", "Actual365", "Actual360" | 是 |
payReceive | STRING | 收付标识,"Pay" 表示支付,"Receive" 表示收取 | 是 |
domesticCurve | STRING | 定价时参考的贴现曲线名称,人民币存款默认为 "CNY_FR_007" | 否 |
calendar | STRING | 交易日历 | 否 |
下例定义了一个 Deposit 类型的 INSTRUMENT 对象。
deposit = {
"productType": "Cash",
"assetType": "Deposit",
"version": 0,
"start": 2025.05.15,
"maturity": 2025.08.15,
"rate": 0.02,
"dayCountConvention": "Actual360",
"notional":["CNY", 1E6],
"payReceive": "Receive"
}
instrument = parseInstrument(deposit)
print(instrument)
利率互换(IrFixedFloatingSwap)
字段名 | 类型 | 描述 | 是否必填 |
---|---|---|---|
productType | STRING | 固定填 "Swap" | 是 |
swapType | STRING | 固定填 "IrSwap" | 是 |
irSwapType | STRING | 固定填 "IrFixedFloatingSwap" | 是 |
version | INT | 版本号,默认值 0 | 否 |
notional | ANY 向量 | 名义本金,格式如 ["USD", 1.0] | 是 |
instrumentId | STRING | 利率互换名称,可填 "CNY_FR_007 , "CNY_SHIBOR_3M" | 否 |
start | DATE | 起息日 | 是 |
maturity | DATE | 到期日 | 是 |
fixedRate | DOUBLE | 固定端利率 | 是 |
calender | STRING | 交易日历 | 是 |
fixedDayCountConvention | STRING | 日期计数惯例,可选 "ActualActualISDA", "ActualActualISMA", "Actual365", "Actual360" | 是 |
floatingDayCountConvetion | STRING | 日期计数惯例,可选 "ActualActualISDA", "ActualActualISMA", "Actual365", "Actual360" | 是 |
spread | DOUBLE | 利差 | 是 |
iborIndex | STRING | 浮动端参考利率,可选FR_007和SHIBOR_3M | 是 |
frequency | STRING | 付息频率 | 是 |
payReceive | STRING |
收付标识,可选:
|
是 |
domesticCurve | STRING | 定价时参考的贴现曲线名称 | 否 |
foreignCurve | STRING | 定价时参考的远期曲线名称 | 否 |
下例定义了一个 IrFixedFloatingSwap 类型的 INSTRUMENT 对象。
swap = {
"productType": "Swap",
"swapType": "IrSwap",
"irSwapType": "IrFixedFloatingSwap",
"version": 0,
"start": 2021.05.15,
"maturity": 2023.05.15,
"frequency": "Quarterly",
"fixedRate": 0.02,
"calendar": "CFET",
"fixedDayCountConvention": "Actual365",
"floatingDayCountConvention": "Actual360",
"payReceive": "Pay",
"iborIndex": "SHIBOR_3M",
"spread": 0.0005,
"notional":["CNY", 1E8]
}
instrument = parseInstrument(swap)
print(instrument)
外汇远期(FxForward)
字段名 | 类型 | 描述 | 是否必填 |
---|---|---|---|
productType | STRING | 产品名称,固定值为 "Forward" | 是 |
forwardType | STRING | 远期类型,固定值为 "FxForward" | 是 |
version | INT | 版本号,默认值 0 | 否 |
notional | ANY 向量 | 名义本金,格式如 ["USD", 1.0] | 是 |
instrumentId | STRING | 金融工具 ID | 否 |
expiry | DATE | 到期日 | 是 |
delivery | DATE | 交割日 | 是 |
currencyPair | STRING |
货币对,格式如:"EURUSD","EUR.USD" 或 "EUR/USD"。支持如下货币对:
|
是 |
direction | STRING | 交易方向。可选:"Buy"、"Sell" | 是 |
strike | DOUBLE | 执行价格 | 是 |
domesticCurve | STRING | 定价时参考的本币贴现曲线名称 | 否 |
foreignCurve | STRING | 定价时参考的外币贴现曲线名称 | 否 |
下例定义了一个 FxForward 类型的 INSTRUMENT 对象。
forward = {
"productType": "Forward",
"forwardType": "FxForward",
"version": 0,
"expiry": 2025.09.24,
"delivery": 2025.09.26,
"currencyPair": "USDCNY",
"direction": "Buy",
"notional": ["USD", 1E8],
"strike": 7.2
}
instrument = parseInstrument(forward)
print(instrument)
外汇掉期(FxSwap)
字段名 | 类型 | 描述 | 是否必填 |
---|---|---|---|
productType | STRING | 产品名称,固定值为 "Swap" | 是 |
swapType | STRING | 远期类型,固定值为 "FxSwap" | 是 |
version | INT | 版本号,默认值 0 | 否 |
notional | ANY 向量 | 名义本金,格式如 ["USD", 1.0] | 是 |
currencyPair | STRING |
货币对,格式如:"EURUSD","EUR.USD" 或 "EUR/USD"。支持如下货币对:
|
是 |
nearExpiry | DATE | 近端到期日。 | 是 |
nearDelivery | DATE | 近端交割日,实际资金交割发生的日期。 | 是 |
direction | STRING |
交易方向,可选值:
|
是 |
nearStrike | DOUBLE | 近端行权价格 | 是 |
farExpiry | DATE | 远端到期日 | 是 |
farDelivery | DATE | 远端交割日,实际发生第二次资金交换的日期 | 是 |
farStrike | DOUBLE | 远端行权价格 | 是 |
domesticCurve | STRING | 定价时参考的本币贴现曲线名称 | 否 |
foreignCurve | STRING | 定价时参考的外币贴现曲线名称 | 否 |
下例定义了一个 FxSwap 类型的 INSTRUMENT 对象。
swap = {
"productType": "Swap",
"swapType": "FxSwap",
"version": 0,
"currencyPair": "EURUSD",
"direction": "Buy",
"notional": ["EUR", 1E6],
"nearStrike": 1.1,
"nearExpiry": 2025.12.08,
"nearDelivery": 2025.12.10,
"farStrike": 1.2,
"farExpiry": 2026.06.08,
"farDelivery": 2026.06.10
}
instrument = parseInstrument(swap)
print(instrument)
外汇欧式期权(FxEuropeanOption)
字段名 | 类型 | 描述 | 是否必填 |
---|---|---|---|
productType | STRING | 固定填 "Option" | 是 |
optionType | STRING | 固定填 "EuropeanOpiton" | 是 |
assetType | STRING | 固定填 "FxEuropeanOpiton" | 是 |
version | INT | 版本号,默认值 0 | 非必填 |
notional | ANY 向量 | 名义本金,格式如 ["USD", 1.0] | 是 |
instrumentId | STRING | 金融工具 ID | 否 |
maturity | DATE | 到期日 | 是 |
underlying | STRING |
货币对,格式如:"EURUSD","EUR.USD" 或 "EUR/USD"。支持如下货币对:
|
是 |
direction | STRING | 交易方向。可选值为:"Buy"、"Sell"。 | 是 |
strike | DOUBLE | 执行价格。 | 是 |
dayCountConvention | STRING | 日期计数惯例,可选 "ActualActualISDA", "ActualActualISMA", "Actual365", "Actual360" | |
payoffType | STRING | 收益类型,可选值为 "Call"、 "Put" | 是 |
domesticCurve | STRING | 定价时参考的本币贴现曲线名称 | 否 |
foreignCurve | STRING | 定价时参考的外币贴现曲线名称 | 否 |
下例定义了一个 FxEuropeanOption 类型的 INSTRUMENT 对象。
option = {
"productType": "Option",
"optionType": "EuropeanOption",
"assetType": "FxEuropeanOption",
"version": 0,
"notional": ["EUR", 1000000.0],
"strike": 1.2,
"maturity": "2025.10.08",
"payoffType": "Call",
"dayCountConvention": "Actual365",
"underlying": "EURUSD"
}
instrument = parseInstrument(option)
print(instrument)
相关函数:bondPricer(债券定价)、irDepositPricer(存款定价)、bondFuturesPricer(国债期货定价)、fxForwardPricer(外汇远期定价)、fxSwapPricer(外汇掉期定价)、irFixedFloatingSwapPricer(利率互换定价)、fxEuropeanOptionPricer(外汇欧式期权定价)