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

债券子类型,中国债券可选值为:

  • "TREASURY_BOND":国债

  • "CENTRAL_BANK_BILL":央行票据

  • "CDB_BOND":政策性金融债(国开)

  • "EIBC_BOND":政策性金融债(进出口行)

  • "ADBC_BOND":政策性金融债(农发行)。

  • "MTN":中期票据

  • "CORP_BOND":企业债。

  • "UNSECURED_CORP_BOND":无担保企业债

  • "SHORT_FIN_BOND":短期融资券

  • "NCD":同业存单

  • "LOC_GOV_BOND":地方政府债

  • "COMM_BANK_FIN_BOND":商业银行普通金融债

  • "BANK_SUB_CAP_BOND":商业银行二级资本债

  • "ABS":资产支持证券

  • "PPN":非公开发行债

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

债券子类型,中国债券可选值为:

  • "TREASURY_BOND":国债

  • "CENTRAL_BANK_BILL":央行票据

  • "CDB_BOND":政策性金融债(国开)

  • "EIBC_BOND":政策性金融债(进出口行)

  • "ADBC_BOND":政策性金融债(农发行)。

  • "MTN":中期票据

  • "CORP_BOND":企业债。

  • "UNSECURED_CORP_BOND":无担保企业债

  • "SHORT_FIN_BOND":短期融资券

  • "NCD":同业存单

  • "LOC_GOV_BOND":地方政府债

  • "COMM_BANK_FIN_BOND":商业银行普通金融债

  • "BANK_SUB_CAP_BOND":商业银行二级资本债

  • "ABS":资产支持证券

  • "PPN":非公开发行债

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

债券子类型,中国债券可选值为:

  • "TREASURY_BOND":国债

  • "CENTRAL_BANK_BILL":央行票据

  • "CDB_BOND":政策性金融债(国开)

  • "EIBC_BOND":政策性金融债(进出口行)

  • "ADBC_BOND":政策性金融债(农发行)。

  • "MTN":中期票据

  • "CORP_BOND":企业债。

  • "UNSECURED_CORP_BOND":无担保企业债

  • "SHORT_FIN_BOND":短期融资券

  • "NCD":同业存单

  • "LOC_GOV_BOND":地方政府债

  • "COMM_BANK_FIN_BOND":商业银行普通金融债

  • "BANK_SUB_CAP_BOND":商业银行二级资本债

  • "ABS":资产支持证券

  • "PPN":非公开发行债

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

收付标识,可选:

  • "Pay":本方支付固定利率、接收浮动利率(pay fixed / receive floating)

  • "Receive":本方接收固定利率、支付浮动利率(receive fixed / pay floating)

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"。支持如下货币对:

  • EURUSD:欧元兑美元

  • USDCNY:美元兑人民币

  • EURCNY:欧元兑人民币

  • GBPCNY:英镑兑人民币

  • JPYCNY:日元兑人民币

  • HKDCNY:港币兑人民币

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"。支持如下货币对:

  • EURUSD:欧元兑美元

  • USDCNY:美元兑人民币

  • EURCNY:欧元兑人民币

  • GBPCNY:英镑兑人民币

  • JPYCNY:日元兑人民币

  • HKDCNY:港币兑人民币

nearExpiry DATE 近端到期日。
nearDelivery DATE 近端交割日,实际资金交割发生的日期。
direction STRING

交易方向,可选值:

  • "Buy":在近端买入外币(买 near),在远端卖出外币(卖 far)。

  • "Sell":在近端卖出外币(卖 near),在远端买回外币(买 far)。

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"。支持如下货币对:

  • EURUSD:欧元兑美元

  • USDCNY:美元兑人民币

  • EURCNY:欧元兑人民币

  • GBPCNY:英镑兑人民币

  • JPYCNY:日元兑人民币

  • HKDCNY:港币兑人民币

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(外汇欧式期权定价)