INSTRUMENT 类型
多资产是指投资组合中同时包含的多种金融工具类别,如债券、期货、期权、利率互换、外汇远期、信用违约互换等。这些工具的合约条款、数据结构和定价逻辑各异,传统方案需为每类资产单独建表。DolphinDB 的 INSTRUMENT 类型(首发版本 3.00.4)将它们抽象为同一种对象,实现跨资产类别的统一存储、查询与定价。
INSTRUMENT 的核心价值体现在:
-
统一存储:所有金融工具均可通过
parseInstrument函数解析为 INSTRUMENT 对象,存入同一字段。 -
高效关联:通过 instrumentId 字段,金融工具表可与交易表、持仓表等高效关联。
-
标准化定价:为
instrumentPricer等定价函数提供标准化的输入格式。 -
市场数据集成:与 Curve、Surface 等市场数据类型协同,构建完整的定价分析体系。
本文作为 INSTRUMENT 数据类型介绍文档,重点说明该类型在 DolphinDB 类型系统中的位置、声明与存储方式、对象结构、字段访问方式以及使用限制。各金融工具的完整字段定义由 parseInstrument 函数统一维护;定价函数的详细用法请参考 instrumentPricer 及各 Pricer 函数文档。
1. INSTRUMENT 类型对象
INSTRUMENT 是 DolphinDB 用于表示金融工具合约条款的扩展对象类型。单个 INSTRUMENT 对象由 parseInstrument 根据字典或表解析生成,可作为变量、表字段或函数参数使用。
1.1 声明与赋值
创建 INSTRUMENT 对象通常先定义金融工具字典,再调用 parseInstrument 解析:
bond = {
"productType": "Cash",
"assetType": "Bond",
"bondType": "FixedRateBond",
"instrumentId": "240021.IB",
"start": 2024.10.25,
"maturity": 2025.10.25,
"coupon": 0.0133,
"frequency": "Annual",
"dayCountConvention": "ActualActualISDA"
}
inst = parseInstrument(bond)
在表中存储 INSTRUMENT 对象时,可将列类型声明为 INSTRUMENT:
t = table(100:0, `id`inst, [STRING, INSTRUMENT])
insert into t values("240021.IB", inst)
1.2 类型识别
可使用 typestr 查看对象类型,使用 type 查看对应的类型 ID:
typestr(inst)
type(inst)
其中 typestr(inst) 返回 INSTRUMENT。若需要在脚本中判断对象类型,建议优先使用 typestr 与字符串 "INSTRUMENT" 比较。
1.3 存储与序列化
INSTRUMENT 对象可作为内存表字段存储,也可作为定价函数、字段提取函数等接口的输入。对于分布式表持久化、文本/Parquet 等外部格式导入导出以及 API 跨语言读写支持情况,请以对应版本的函数文档和发布说明为准;在生产环境使用前,建议用目标版本进行建表、写入、读取和重启恢复验证。
1.4 保留字段与约束
-
version 为系统保留字段,用于内部版本管理。自定义金融工具字段中请勿使用该名称,以免与系统字段冲突。
-
不同金融工具支持的字段、必填项和默认值由
parseInstrument统一校验。 -
INSTRUMENT 对象主要用于合约信息的统一表示、存储和传递,不建议直接对对象本身进行算术运算;应通过字段访问函数提取字段后再参与查询或计算。
2. INSTRUMENT分类与结构
DolphinDB 将市场上的金融工具抽象为标准的继承体系,主要分为标准型和非标准型,以及不同的资产大类。
2.1 按标准化程度分类
| 类型 | 特征 | 示例 |
|---|---|---|
| 标准型 | 条款清晰、有固定交易代码、可流通 | 期货、期权、债券等 |
| 非标准型 | 条款由双方定制、无交易代码、持有至到期 | 利率互换、外汇远期等 |
2.2 支持的资产类型
-
现金类 (Cash):包含债券、存款、债券买断式回购等。
-
期货类 (Futures):包含国债期货、利率期货等。
-
互换类 (Swap):包含利率互换、外汇掉期等。
-
期权类 (Option):包含欧式期权、美式期权、数字期权、区间累计期权等。
-
远期类 (Forward):包含债券远期、外汇远期、远期利率协议、标准债券远期等。
-
用户自定义 (UserDefined):支持存储任意结构的字典,适合 DolphinDB 目前还未定义的金融工具。
3. 金融工具字段参考
在描述金融工具时,需要提供若干关键字段,parseInstrument 将依据这些字段生成对应的金融工具对象。需要注意的是,version 为系统保留字段,为避免冲突,请勿将其用作自定义字段名称。
本章将列出当前已支持的各类金融工具及其对应字段。
3.1 现金类
贴现债
| 字段名 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
| productType | STRING | 固定填 "Cash" | 是 |
| assetType | STRING | 固定填 "Bond" | 是 |
| bondType | STRING | 固定填 "DiscountBond" | 是 |
| nominal | DOUBLE | 名义金额,默认值 100 | 否 |
| instrumentId | STRING | 债券代码,如 "259926.IB" | 否 |
| start | DATE | 起息日 | 是 |
| maturity | DATE | 到期日 | 是 |
| dayCountConvention | STRING | 日期计数惯例,可选 "ActualActualISDA", "ActualActualISMA", "Actual365", "Actual360" | 是 |
| issuePrice | DOUBLE | 发行价格 | 是 |
| currency | STRING | 货币,默认为 "CNY" | 否 |
| discountCurve | STRING | 定价时参考的贴现曲线名称,如 "CNY_TRASURY_BOND" | 否 |
| spreadCurve | STRING | 定价时参考的利差曲线名称 | 否 |
| subType | STRING |
债券子类型,中国债券可选值为:
|
否 |
| creditRating | STRING | 信用等级类型,可选值为:"B", "BB", "BBB", "BBB+", "A-", "A", "A+", "AA-", "AA", "AA+", "AAA-", "AAA", "AAA+" | 否 |
下例定义了一个贴现债券的 INSTRUMENT 对象。
bond = {
"productType": "Cash",
"assetType": "Bond",
"bondType": "DiscountBond",
"instrumentId": "259924.IB",
"start": 2025.04.17,
"maturity": 2025.07.17,
"issuePrice": 99.664,
"dayCountConvention": "ActualActualISDA"
}
instrument = parseInstrument(bond)
零息债
| 字段名 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
| productType | STRING | 固定填 "Cash" | 是 |
| assetType | STRING | 固定填 "Bond" | 是 |
| bondType | STRING | 固定填 "ZeroCouponBond" | 是 |
| 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" | 否 |
| discountCurve | STRING | 定价时参考的贴现曲线名称,如 "CNY_TRASURY_BOND" | 否 |
| spreadCurve | STRING | 定价时参考的利差曲线名称 | 否 |
| subType | STRING |
债券子类型,中国债券可选值为:
|
否 |
| creditRating | STRING | 信用等级类型,可选值为:"B", "BB", "BBB", "BBB+", "A-", "A", "A+", "AA-", "AA", "AA+", "AAA-", "AAA", "AAA+" | 否 |
下例定义了一个零息债的 INSTRUMENT 对象。
bond = {
"productType": "Cash",
"assetType": "Bond",
"bondType": "ZeroCouponBond",
"instrumentId": "250401.IB",
"start": 2025.01.09,
"maturity": 2026.02.05,
"coupon": 0.0119,
"dayCountConvention": "ActualActualISDA"
}
instrument = parseInstrument(bond)
固定利率债
| 字段名 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
| productType | STRING | 固定填 "Cash" | 是 |
| assetType | STRING | 固定填 "Bond" | 是 |
| bondType | STRING | 固定填 "FixedRateBond" | 是 |
| 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" | 否 |
| discountCurve | STRING | 定价时参考的贴现曲线名称,如 "CNY_TRASURY_BOND" | 否 |
| spreadCurve | STRING | 定价时参考的利差曲线名称 | 否 |
| subType | STRING |
债券子类型,中国债券可选值为:
|
否 |
| creditRating | STRING | 信用等级类型,可选值为:"B", "BB", "BBB", "BBB+", "A-", "A", "A+", "AA-", "AA", "AA+", "AAA-", "AAA", "AAA+" | 否 |
下例定义了一个固定利率债的 INSTRUMENT 对象。
bond = {
"productType": "Cash",
"assetType": "Bond",
"bondType": "FixedRateBond",
"instrumentId": "240021.IB",
"start": 2024.10.25,
"maturity": 2025.10.25,
"issuePrice": 100,
"coupon": 0.0133,
"frequency": "Annual",
"dayCountConvention": "ActualActualISDA"
}
instrument = parseInstrument(bond)
浮动利率债
| 字段名 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
| productType | STRING | 固定填 "Cash" | 是 |
| assetType | STRING | 固定填 "Bond" | 是 |
| bondType | STRING | 固定填 "FloatingRateBond" | 是 |
| nominal | DOUBLE | 名义金额,默认值为 100 | 否 |
| instrumentId | STRING | 债券代码,如 "1680437.IB" | 否 |
| start | DATE | 起息日 | 是 |
| maturity | DATE | 到期日 | 是 |
| iborIndex | STRING | 参考利率,如 "LPR_1Y" | 是 |
| lastFixing | DOUBLE | 上一次定息日的参考利率值 | 是 |
| spread | DOUBLE | 利差,默认值为 0.0 | 否 |
| frequency | STRING | 付息频率 | 是 |
| dayCountConvention | STRING | 日期计数惯例,可选 "ActualActualISDA"、"ActualActualISMA"、"Actual365"、"Actual360" | 是 |
| fixingOffsetDays | INT | 下一起息日与定息日之间的天数,默认值为 1 | 否 |
| currency | STRING | 货币,默认值为 "CNY" | 否 |
| cashFlow | TABLE | 债券现金流表 | 否 |
| discountCurve | STRING | 定价时参考的贴现曲线名称,如 "CNY_TREASURY_BOND" | 否 |
| spreadCurve | STRING | 定价时参考的利差曲线名称 | 否 |
| forwardCurve | STRING | 定价时参考的远期曲线名称 | 否 |
| subType | STRING |
债券子类型,中国债券可选值为:
|
否 |
| creditRating | STRING | 信用等级,可选 "B"、"BB"、"BBB"、"BBB+"、"A-"、"A"、"A+"、"AA-"、"AA"、"AA+"、"AAA-"、"AAA"、"AAA+" | 否 |
含权债
| 字段名 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
| productType | STRING | 固定填 "Cash" | 是 |
| assetType | STRING | 固定填 "Bond" | 是 |
| bondType | STRING | 固定填 "OptionBond" | 是 |
| nominal | DOUBLE | 名义金额,默认值100 | 否 |
| instrumentId | STRING | 债券代码,如 "242659.SH" | 否 |
| start | DATE | 起息日 | 是 |
| maturity | DATE | 到期日 | 是 |
| coupon | DOUBLE | 票面利率,如0.03表示3% | 是 |
| frequency | DOUBLE | 付息频率,如1表示每年付息1次 | 是 |
| principalRatio | DOUBLE 类型向量 |
提前偿还型债券的本金摊还比例向量。 向量长度等于债券期限,各元素表示对应期间偿还的本金占初始本金的比例,且所有元素之和为1。默认为空。 |
否 |
| exerciseDates | DATE 类型向量 | 含权债为行权时间的向量。默认为空。 | 否 |
| hasCallOption | BOOL | 该债券发行人是否有赎回权 | 是 |
| hasPutOption | BOOL | 该债券投资者是否有回售权 | 是 |
| hasCouponAdjust | BOOL | 该债券发行人是否有票面利率调整权 | 是 |
| newCoupon | DOUBLE | 票面利率调整后的新利率。当 hasCouponAdjust = true
且已到调整时点时生效。若 newCoupon 为空(默认值),则仍使用原票面利率。 |
否 |
| dayCountConvention | STRING | 日期计数惯例,可选 "ActualActualISDA", "ActualActualISMA", "Actual365", "Actual360",国债默认为 "Actual365",其他默认为 "ActualActualISMA" | 是 |
| subType | STRING |
债券子类型,中国债券可选值为:
默认值为空。 |
否 |
| creditRating | STRING | 信用等级类型,可选值为:"B", "BB", "BBB", "BBB+", "A-", "A", "A+", "AA-", "AA", "AA+", "AAA-", "AAA", "AAA+"。默认值为空。 | 否 |
下例定义了一个含权债的 INSTRUMENT 对象。
optionBond = {
"productType": "Cash",
"assetType": "Bond",
"bondType": "OptionBond",
"instrumentId": "242659.SH",
"nominal": 100.0,
"start": 2025.03.26,
"maturity": 2030.03.26,
"coupon": 0.0207,
"frequency": "Annual",
"exerciseDates": [2028.03.26],
"hasCallOption": true,
"hasPutOption": true,
"hasCouponAdjust": true,
"dayCountConvention": "ActualActualISMA"
}
instrument = parseInstrument(optionBond)
存款
| 字段名 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
| productType | STRING | 固定填 "Cash" | 是 |
| assetType | STRING | 固定填 "Deposit" | 是 |
| notionalAmount | DOUBLE | 名义本金金额 | 是 |
| notionalCurrency | STRING | 名义本金币种 | 是 |
| instrumentId | STRING | 存款参考利率指数,如 "SHIBOR_3M" | 否 |
| start | DATE | 起息日 | 是 |
| maturity | DATE | 到期日 | 是 |
| rate | DOUBLE | 存款利率 | 是 |
| dayCountConvention | STRING | 日期计数惯例, 可选 "ActualActualISDA", "ActualActualISMA", "Actual365", "Actual360" | 是 |
| payReceive | STRING | 收付标识,"Pay" 表示支付,"Receive" 表示收取 | 是 |
| discountCurve | STRING | 定价时参考的贴现曲线名称,人民币存款默认为 "CNY_FR_007" | 否 |
| calendar | STRING | 交易日历 | 否 |
下例定义了一个存款的 INSTRUMENT 对象。
deposit = {
"productType": "Cash",
"assetType": "Deposit",
"start": 2025.05.15,
"maturity": 2025.08.15,
"rate": 0.02,
"dayCountConvention": "Actual360",
"notionalAmount":1E6,
"notionalCurrency": "CNY",
"payReceive": "Receive"
}
instrument = parseInstrument(deposit)
债券买断式回购
| 字段名 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
| productType | STRING | 产品名称,固定值为 "Cash" | 是 |
| assetType | STRING | 资产类型,固定值为 "Repo" | 是 |
| repoType | STRING | 回购类型,固定值为 "BondOutrightRepo" | 是 |
| notionalAmount | DOUBLE | 名义本金额 | 是 |
| notionalCurrency | STRING | 名义本金货币,默认为 "CNY" | 否 |
| instrumentId | STRING | 自定义唯一标识,如 "repo000002" | 否 |
| start | DATE | 起息日 | 是 |
| maturity | DATE | 到期日 | 是 |
| rate | DOUBLE | 回购利率 | 是 |
| payReceive | STRING | 收付标识,"Pay" 表示正回购方,"Receive" 表示逆回购方 | 是 |
| underlying | DICT/INSTRUMENT | 抵押债券的基础信息 | 是 |
| dayCountConvention | STRING | 日期计数惯例,可选 "ActualActualISDA"、"ActualActualISMA"、"Actual365"、"Actual360" | 是 |
| discountCurve | STRING | 定价时参考的贴现曲线名称,人民币存款默认为 "CNY_FR_007" | 否 |
债券质押式回购合约
| 字段名 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
| productType | STRING | 固定值为 "Cash" | 是 |
| assetType | STRING | 固定值为 "Repo" | 是 |
| repoType | STRING | 固定值为 "BondPledgedRepo" | 是 |
| notionalAmount | DOUBLE | 名义本金额 | 是 |
| notionalCurrency | STRING | 名义本金货币,默认值为 "CNY" | 否 |
| instrumentId | STRING | 自定义唯一标识,如 "repo000001" | 否 |
| start | DATE | 起息日 | 是 |
| maturity | DATE | 到期日 | 是 |
| rate | DOUBLE | 回购利率 | 是 |
| payReceive | STRING | 收付标识,"Pay" 表示正回购方,"Receive" 表示逆回购方 | 是 |
| dayCountConvention | STRING | 日期计数惯例,可选值为 "ActualActualISDA"、"ActualActualISMA"、"Actual365"、"Actual360" | 是 |
| discountCurve | STRING | 定价时参考的贴现曲线名称;人民币场景默认值为 "CNY_FR_007" | 否 |
3.2 期货类
国债期货
| 字段名 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
| productType | STRING | 固定值为 "Futures" | 是 |
| futuresType | STRING | 固定值为 "BondFutures" | 是 |
| nominal | DOUBLE | 名义金额,默认值 100 | 是 |
| instrumentId | STRING | 国债期货代码,如 "T2509" | 否 |
| maturity | DATE | 到期日 | 是 |
| settlement | DATE | 结算日 | 是 |
| underlying | 字典 | 固定利率债券结构,表示标的可交割债券 | 是 |
| nominalCouponRate | DOUBLE | 名义票面利率 | 是 |
下例定义了一个国债期货的 INSTRUMENT 对象。
bond ={
"productType": "Cash",
"assetType": "Bond",
"bondType": "FixedRateBond",
"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",
"instrumentId": "T2509", //期货代码
"nominal": 100.0,
"maturity": 2022.09.09,
"settlement": 2022.09.11,
"underlying": bond,
"nominalCouponRate": 0.03 //与国债期货品种匹配的名义利率,可从中金所获取
}
instrument = parseInstrument(futures)
3.3 互换类
外汇掉期
| 字段名 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
| productType | STRING | 产品名称,固定值为 "Swap" | 是 |
| swapType | STRING | 远期类型,固定值为 "FxSwap" | 是 |
| notionalAmount | DOUBLE | 名义本金数量 | 是 |
| notionalCurrency | STRING | 名义本金货币 | 是 |
| 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 | 定价时参考的外币贴现曲线名称 | 否 |
下例定义了一个外汇掉期的 INSTRUMENT 对象。
swap = {
"productType": "Swap",
"swapType": "FxSwap",
"currencyPair": "EURUSD",
"direction": "Buy",
"notionalCurrency": "EUR",
"notionalAmount": 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)
利率互换
| 字段名 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
| productType | STRING | 固定填 "Swap" | 是 |
| swapType | STRING | 固定填 "IrSwap" | 是 |
| irSwapType | STRING | 固定填 "IrFixedFloatingSwap" | 是 |
| notionalAmount | DOUBLE | 名义本金额 | 是 |
| notionalCurrency | STRING | 名义本金货币 | 是 |
| instrumentId | STRING | 利率互换名称,可填 "CNY_FR_007 , "CNY_SHIBOR_3M" | 否 |
| start | DATE | 起息日 | 是 |
| maturity | DATE | 到期日 | 是 |
| fixedRate | DOUBLE | 固定端利率 | 是 |
| calendar | STRING | 交易日历 | 是 |
| fixedDayCountConvention | STRING | 固定端日期计数惯例,可选 "ActualActualISDA", "ActualActualISMA", "Actual365", "Actual360" | 是 |
| floatingDayCountConvention | STRING | 浮动端日期计数惯例,可选 "ActualActualISDA", "ActualActualISMA", "Actual365", "Actual360" | 是 |
| spread | DOUBLE | 利差 | 是 |
| iborIndex | STRING | 浮动端参考利率,可选FR_007和SHIBOR_3M | 是 |
| frequency | STRING | 付息频率 | 是 |
| payReceive | STRING |
收付标识,可选:
|
是 |
| discountCurve | STRING | 用于折现的曲线名称 | 否 |
| forwardCurve | STRING | 用于预测浮动利率的曲线名称 | 否 |
下例定义了一个利率互换的 INSTRUMENT 对象。
swap = {
"productType": "Swap",
"swapType": "IrSwap",
"irSwapType": "IrFixedFloatingSwap",
"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,
"notionalCurrency": "CNY",
"notionalAmount": 1E8
}
instrument = parseInstrument(swap)
信用违约互换
| 字段名 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
| productType | STRING | 固定填 "Swap" | 是 |
| swapType | STRING | 固定填 "CreditDefaultSwap" | 是 |
| notionalAmount | DOUBLE | 名义本金额 | 是 |
| notionalCurrency | STRING | 名义本金货币,默认为 "CNY" | 否 |
| instrumentId | STRING | 金融工具 ID | 否 |
| start | DATE | 起息日 | 是 |
| maturity | DATE | 到期日 | 是 |
| payReceive | STRING | 收付标识,"Pay" 表示支付,"Receive" 表示收取 | 是 |
| frequency | STRING | 付息频率,默认为 "Quarterly" | 否 |
| protectionLegRefPrice | DOUBLE | 保护腿参考价格 | 是 |
| protectionLegLeverage | DOUBLE | 保护腿杠杆率 | 是 |
| protectionLegRecoveryRate | DOUBLE | 保护腿回收率 | 是 |
| creditProtectionType | STRING |
信用保护类型,可选值为:
|
是 |
| creditPremiumType | STRING |
信用保费类型
|
是 |
| premiumRate | DOUBLE | 保费利率 | 是 |
| calendar | STRING | 交易日历 | 是 |
| dayCountConvention | STRING | 日期计数惯例,可选 "ActualActualISDA"、"ActualActualISMA"、"Actual365"、"Actual360" | 是 |
| businessDayConvention | STRING |
工作日惯例,可选值为:
|
是 |
| upfrontRate | DOUBLE | 前端费率 | 是 |
| rebateAccrual | BOOL | 是否计算返利计提 | 是 |
3.4 远期类
外汇远期
| 字段名 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
| productType | STRING | 产品名称,固定值为 "Forward" | 是 |
| forwardType | STRING | 远期类型,固定值为 "FxForward" | 是 |
| notionalAmount | DOUBLE | 名义本金 | 是 |
| notionalCurrency | STRING | 名义本金货币 | 是 |
| instrumentId | STRING | 金融工具 ID | 否 |
| expiry | DATE | 到期日 | 是 |
| delivery | DATE | 交割日 | 是 |
| currencyPair | STRING |
货币对,格式如:"EURUSD","EUR.USD" 或 "EUR/USD"。支持如下货币对:
|
是 |
| direction | STRING | 交易方向。可选:"Buy"、"Sell" | 是 |
| strike | DOUBLE | 执行价格 | 是 |
| domesticCurve | STRING | 定价时参考的本币贴现曲线名称 | 否 |
| foreignCurve | STRING | 定价时参考的外币贴现曲线名称 | 否 |
下例定义了一个外汇远期的 INSTRUMENT 对象。
forward = {
"productType": "Forward",
"forwardType": "FxForward",
"expiry": 2025.09.24,
"delivery": 2025.09.26,
"currencyPair": "USDCNY",
"direction": "Buy",
"notionalCurrency": "USD",
"notionalAmount": 1E8,
"strike": 7.2
}
instrument = parseInstrument(forward)
外汇无本金交割远期
| 字段名 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
| productType | STRING | 产品名称,固定值为 "Forward" | 是 |
| forwardType | STRING | 远期类型,固定值为 "FxNonDeliverableForward" | 是 |
| notionalAmount | DOUBLE | 名义本金金额,例如 1E7 | 是 |
| notionalCurrency | STRING | 名义本金货币,例如 "USD" | 是 |
| instrumentId | STRING | 金融工具 ID | 否 |
| expiry | DATE | 到期日 | 是 |
| delivery | DATE | 交割日 | 是 |
| currencyPair | STRING |
货币对,格式如:"EURUSD","EUR.USD" 或 "EUR/USD"。支持如下货币对:
|
是 |
| direction | STRING | 交易方向。可选:"Buy"、"Sell" | 是 |
| strike | DOUBLE | 执行价格 | 是 |
| settlementCurrency | STRING | 结算货币 | 是 |
| domesticCurve | STRING | 定价时参考的本币贴现曲线名称 | 否 |
| foreignCurve | STRING | 定价时参考的外币贴现曲线名称 | 否 |
债券远期
| 字段名 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
| productType | STRING | 固定填 "Forward" | 是 |
| forwardType | STRING | 固定填 "BondForward" | 是 |
| nominal | DOUBLE | 名义金额,默认值 100 | 否 |
| instrumentId | STRING | 债券远期代码,如 "BFD3M" | 否 |
| maturity | DATE | 到期日 | 是 |
| settlement | DATE | 交割日(必须与 maturity 一致,且不晚于基础债券到期日) | 是 |
| strike | DOUBLE | 执行价,约定的到期收益率 YTM。使用小数表示 | 是 |
| underlying | 字典或 INSTRUMENT | 标的可交割债券(固定利率债券或零息债券) | 是 |
标准债券远期
| 字段名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| productType | STRING | 是 | 固定填 "Forward"。 |
| forwardType | STRING | 是 | 固定填 "StdBondForward"。 |
| nominal | DOUBLE | 否 | 名义金额,默认值 100。 |
| instrumentId | STRING | 否 | 标准债券远期代码,如 "CDB3"。 |
| yearLength | INT | 是 | 虚拟券年限,一般为 3 年期、5 年期或 10 年期。 |
| maturity | DATE | 是 | 到期日(T-1 日,需调整为交易日)。 |
| settlement | DATE | 是 | 交割日(T 日),合约月份的第三个星期三。 |
| underlying | 字典或由 INSTRUMENT 组成的元组 | 是 | 固定利率债券,表示标的一篮子可交割债券。可通过 parseInstrument
解析债券字典生成。 |
| settlementType | STRING | 是 |
|
| nominalCouponRate | DOUBLE | 否 | 虚拟券名义票面利率,默认值为 0.03,表示 3%。 |
远期利率协议
| 字段名 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
| productType | STRING | 固定填 "Forward" | 是 |
| forwardType | STRING | 固定填 "IrForwardRateAgreement" | 是 |
| notionalAmount | DOUBLE | 名义本金数量,如 1E8 | 是 |
| notionalCurrency | STRING | 名义本金货币,默认为 "CNY" | 否 |
| instrumentId | STRING | FRA 合约期限标识,采用"远期期限X(远期期限+合约期限)"的表达方式,如 "3Mx6M" 表示该 FRA 在 3 个月后开始,于 6 个月后到期。 | 否 |
| start | DATE | 起息日 | 是 |
| maturity | DATE | 到期日,到期日=起息日+合约期限 | 是 |
| fixedRate | DOUBLE | 固定端利率 | 是 |
| calendar | STRING | 交易日历 | 是 |
| dayCountConvention | STRING | 日期计数惯例,可选 "ActualActualISDA", "ActualActualISMA", "Actual365", "Actual360" | 是 |
| iborIndex | STRING | 浮动端参考利率,可选 "FR_007" 和 "SHIBOR_3M" | 是 |
| payReceive | STRING |
收付标识,可选:
|
是 |
| discountCurve | STRING | 定价时参考的贴现曲线名称 | 否 |
| forwardCurve | STRING | 定价时参考的远期曲线名称 | 否 |
3.5 期权类
外汇欧式期权
| 字段名 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
| productType | STRING | 固定填 "Option" | 是 |
| optionType | STRING | 固定填 "EuropeanOption" | 是 |
| assetType | STRING | 固定填 "FxEuropeanOption" | 是 |
| notionalAmount | DOUBLE | 名义本金数量 | 是 |
| notionalCurrency | STRING | 名义本金货币 | 是 |
| 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 | 定价时参考的外币贴现曲线名称 | 否 |
| delivery | DATE | 交割日 | 否 |
下例定义了一个 外汇欧式期权的 INSTRUMENT 对象。
option = {
"productType": "Option",
"optionType": "EuropeanOption",
"assetType": "FxEuropeanOption",
"notionalCurrency": "EUR",
"notionalAmount": 1000000.0,
"strike": 1.2,
"maturity": 2025.10.08,
"payoffType": "Call",
"dayCountConvention": "Actual365",
"underlying": "EURUSD"
}
instrument = parseInstrument(option)
外汇区间累计期权
| 字段名 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
| productType | STRING | 固定填 "Option" | 是 |
| optionType | STRING | 固定填 "RangeAccrualOption" | 是 |
| assetType | STRING | 固定填 "FxRangeAccrualOption" | 是 |
| notionalAmount | DOUBLE | 名义本金金额,例如,1E7 | 是 |
| notionalCurrency | STRING | 名义本金货币,例如,"USD" | 是 |
| instrumentId | STRING | 金融工具 ID | 否 |
| start | DATE | 起息日 | 是 |
| maturity | DATE | 到期日 | 是 |
| underlying | STRING |
货币对,格式如:"EURUSD","EUR.USD" 或 "EUR/USD"。 支持如下货币对:
|
是 |
| direction | STRING | 交易方向。 可选值为:"Buy"、"Sell"。 | 否 |
| dayCountConvention | STRING | 日期计数惯例,可选 "ActualActualISDA", "ActualActualISMA", "Actual365", "Actual360" | 是 |
| lowerBarrier | DOUBLE | 区间下限 | 是 |
| upperBarrier | DOUBLE | 区间上限 | 是 |
| payoffType | STRING | 收益类型,可选值为 "Call"、 "Put"。 | 是 |
| reportCurrency | STRING | 报告货币 | 是 |
外汇数字期权
| 字段名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| productType | STRING | 是 | 固定填 "Option"。 |
| optionType | STRING | 是 | 固定填 "DigitalOption"。 |
| assetType | STRING | 是 | 固定填 "FxDigitalOption"。 |
| notionalAmount | DOUBLE | 是 | 名义本金金额。 |
| notionalCurrency | STRING | 否 | 名义本金货币,如 "USD"。必须与货币对中的 base currency(ccy1)一致,即只能填写货币对的第一个币种。 |
| 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"。 |
| reportCurrency | STRING | 是 | 最终输出(NPV / Greeks)使用的货币。 |
| domesticCurve | STRING | 否 | 定价时参考的本币贴现曲线名称。 |
| foreignCurve | STRING | 否 | 定价时参考的外币贴现曲线名称。 |
商品期货美式期权
| 字段名 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
| productType | STRING | 固定填 "Option" | 是 |
| optionType | STRING | 固定填 "AmericanOption" | 是 |
| assetType | STRING | 固定填 "CmFutAmericanOption" | 是 |
| notionalAmount | DOUBLE | 名义本金额 | 是 |
| notionalCurrency | STRING | 名义本金货币,默认值为 "CNY" | 否 |
| instrumentId | STRING | 合约代码,标准格式为:标的期货合约代码+合约到期月份+期权类型代码+行权价格,如白糖期权为 SR2509P6300 = SR+2509+P+6300 | 否 |
| direction | STRING | 买卖方向,可选值为 Buy,Sell。默认值为 Buy。 | 否 |
| maturity | DATE | 到期日 | 是 |
| strike | DOUBLE | 执行价格 | 是 |
| payoffType | STRING | 收益类型,可选 Call 和 Put | 是 |
| underlying | STRING | 标的期货合约代码,如 SR2509 | 是 |
| dayCountConvention | STRING | 日期计数惯例, 可选 "ActualActualISDA", "ActualActualISMA", "Actual365", "Actual360" | 是 |
| discountCurve | STRING | 定价时参考的贴现曲线名称,人民币存款默认为 "CNY_FR_007" | 否 |
商品期货欧式期权
| 字段名 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
| productType | STRING | 固定填 "Option" | 是 |
| optionType | STRING | 固定填 "EuropeanOption" | 是 |
| assetType | STRING | 固定填 "CmFutEuropeanOption" | 是 |
| notionalAmount | DOUBLE | 名义本金额 | 是 |
| notionalCurrency | STRING | 名义本金货币,默认值为 "CNY" | 否 |
| instrumentId | STRING |
合约代码,标准格式为:标的期货合约代码+合约到期月份+期权类型代码+行权价格,如白糖期权 SR2509P6300 = SR+2509+P+6300 |
否 |
| direction | STRING | 买卖方向 Buy Sell,默认为 Buy | 否 |
| maturity | DATE | 到期日 | 是 |
| strike | DOUBLE | 执行价格 | 是 |
| payoffType | STRING | 枚举,可选 Call 和 Put | 是 |
| underlying | STRING | 标的期货合约代码,如 SR2509 | 是 |
| dayCountConvention | STRING | 日期计数惯例,可选 "ActualActualISDA"、"ActualActualISMA"、"Actual365"、"Actual360" | 是 |
| discountCurve | STRING | 定价时参考的贴现曲线名称,人民币存款默认为 "CNY_FR_007" | 否 |
权益类美式期权
| 字段名 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
| productType | STRING | 固定填 "Option" | 是 |
| optionType | STRING | 固定填 "AmericanOption" | 是 |
| assetType | STRING | 固定填 "EqAmericanOption" | 是 |
| notionalAmount | DOUBLE | 名义本金额 | 是 |
| notionalCurrency | STRING | 名义本金货币,默认为 "CNY" | 否 |
| instrumentId | STRING |
合约代码,如代码 TCH250328C0040000的解读如下:
|
否 |
| direction | STRING | 买卖方向 "Buy"、"Sell",默认为 "Buy" | 否 |
| maturity | DATE | 到期日 | 是 |
| strike | DOUBLE | 执行价格 | 是 |
| payoffType | STRING | 枚举,可选Call和Put | 是 |
| underlying | STRING | 标的期货合约代码,如 "TCH" | 是 |
| dayCountConvention | STRING | 日期计数惯例, 可选 "ActualActualISDA", "ActualActualISMA", "Actual365", "Actual360" | 是 |
| discountCurve | STRING | 定价时参考的贴现曲线名称,人民币存款默认为 "CNY_FR_007" | 否 |
| dividendCurve | STRING | 定价时参考的股息曲线名称 | 否 |
权益类欧式期权
| 字段名 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
| productType | STRING | 固定填 "Option" | 是 |
| optionType | STRING | 固定填 "EuropeanOption" | 是 |
| assetType | STRING | 固定填 "EqEuropeanOption" | 是 |
| notionalAmount | DOUBLE | 名义本金额 | 是 |
| notionalCurrency | STRING | 名义本金货币,默认为 “CNY” | 否 |
| instrumentId | STRING |
合约代码,如中证 500ETF 期权 510500C2512M04800 |
否 |
| direction | STRING | 买卖方向 "Buy", "Sell",默认为 "Buy" | 否 |
| maturity | DATE | 到期日 | 是 |
| strike | DOUBLE | 执行价格 | 是 |
| payoffType | STRING | 枚举,可选 "Call" 或和 "Put" | 是 |
| underlying | STRING | 标的期货合约代码,如 510050 | 是 |
| dayCountConvention | STRING | 日期计数惯例,可选 "ActualActualISDA"、"ActualActualISMA"、"Actual365"、"Actual360" | 是 |
| discountCurve | STRING | 定价时参考的贴现曲线名称,人民币存款默认为 "CNY_FR_007" | 否 |
| dividendCurve | STRING | 定价时参考的股息曲线名称 | 否 |
权益类区间累计期权
| 字段名 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
| productType | STRING | 固定填 "Option"。 | 是 |
| optionType | STRING | 固定填 "RangeAccrualOption"。 | 是 |
| assetType | STRING | 固定填 "EqRangeAccrualOption"。 | 是 |
| instrumentId | STRING | 合约代码,场外期权可自定义。 | 否 |
| maturity | DATE | 到期日。 | 是 |
| delivery | DATE | 交割日。默认值等于 maturity。 | 否 |
| coupon | DOUBLE | 票息。 | 是 |
| lowerBarrier | DOUBLE | 区间下限。 | 是 |
| upperBarrier | DOUBLE | 区间上限。 | 是 |
| fixingDates | DATE 向量 | 观察日序列,要求递增。 | 是 |
| direction | STRING | 买卖方向,可选 "Buy" 和 "Sell"。默认值为 "Buy"。 | 否 |
| dayCountConvention | STRING | 日期计数惯例,可选 "ActualActualISDA"、"ActualActualISMA"、"Actual365"、"Actual360"。 | 是 |
| underlying | STRING | 标的名称,例如 "50ETF"。 | 是 |
| notionalAmount | DOUBLE | 名义本金额。 | 是 |
| notionalCurrency | STRING | 名义本金货币。默认值为 "CNY"。 | 否 |
| discountCurve | STRING | 定价时参考的贴现曲线名称。默认值为空字符串。 | 否 |
| dividendCurve | STRING | 定价时参考的股息曲线名称。默认值为空字符串。 | 否 |
权益类数字期权
| 字段名 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
| productType | STRING | 固定填 "Option" | 是 |
| optionType | STRING | 固定填 "DigitalOption" | 是 |
| assetType | STRING | 固定填 "EqDigitalOption" | 是 |
| instrumentId | STRING | 合约代码,场外期权可自定义 | 否 |
| maturity | DATE | 到期日 | 是 |
| strike | DOUBLE | 执行价格 | 是 |
| dayCountConvention | STRING | 日期计数惯例,可选值为 "ActualActualISDA"、"ActualActualISMA"、"Actual365"、"Actual360" | 是 |
| direction | STRING | 买卖方向,可选 "Buy"、"Sell",默认值为 "Buy" | 否 |
| payoffType | STRING | 收益类型,可选 "Call"、"Put" | 是 |
| underlying | STRING | 标的代码,例如 "510050" | 是 |
| notionalAmount | DOUBLE | 名义本金额 | 是 |
| notionalCurrency | STRING | 名义本金货币,默认值为 "CNY" | 否 |
| discountCurve | STRING | 定价时参考的贴现曲线名称,默认值为空 | 否 |
| dividendCurve | STRING | 定价时参考的股息曲线名称,默认值为空 | 否 |
利率上下限期权
| 字段名 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
| productType | STRING | 固定填 "Option" | 是 |
| optionType | STRING | 固定填 "EuropeanOption" | 是 |
| assetType | STRING | 固定填 "IrCapFloor" | 是 |
| notionalAmount | DOUBLE | 名义本金数量,如 "1E8" | 是 |
| notionalCurrency | STRING | 名义本金货币,如 "CNY",默认为 "CNY" | 否 |
| instrumentId | STRING |
合约代码,标准格式为: "Cap/Floor_参考利率_期权期限"。 例如:"Cap_LPR1Y_6M" 表示参考利率为 LPR_1Y、期权期限为 6M 的利率上限期权。 |
否 |
| iborIndex | STRING | 参考利率,可选值为 "LPR_1Y" 或 "LPR_5Y" | 是 |
| lastFixing | DOUBLE | 最近一个已经确定的参考利率的 fixing 值 | 否 |
| start | DATE | 起息日 | 是 |
| maturity | DATE | 到期日 | 是 |
| strike | DOUBLE | 执行利率 | 是 |
| capFloorType | STRING |
标识“利率上限”或“利率下限”,可选:
|
是 |
| frequency | STRING |
支付频率,不填则使用参考利率的惯用频率,对于 "LPR_1Y" 及 "LPR_5Y",默认为 "Quarterly”。 可选值为:
|
否 |
| dayCountConvention | STRING | 日期计数惯例,可选 "ActualActualISDA", "ActualActualISMA", "Actual365", "Actual360" | 是 |
| discountCurve | STRING | 定价时参考的贴现曲线名称,如 "CNY_FR_007" | 否 |
| forwardCurve | STRING | 定价时参考的远期曲线名称,如 "CNY_LPR_1Y" | 否 |
欧式利率互换期权
| 字段名 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
| productType | STRING | 固定填 "Option" | 是 |
| optionType | STRING | 固定填 "EuropeanOption" | 是 |
| assetType | STRING | 固定填 "IrEuropeanSwaption" | 是 |
| instrumentId | STRING |
合约代码,标准格式为: “SWPT_参考利率_期权期限x利率互换期限C/P” 比如:“SWPT_LPR1Y_1Y5YC” 表示参考利率为LPR1Y、期权期限为1Y的固定利率支付方利率互换期权,利率互换期限为5Y |
否 |
| start | DATE | 起息日 | 是 |
| maturity | DATE | 到期日 | 是 |
| strike | DOUBLE | 执行利率 | 是 |
| payoffType | STRING | 枚举,可选 Call 和 Put | 是 |
| underlying | DICT/INSTRUMENT | 标的资产:可解析成 IrFixedFloatingSwap 对象的字典或者 IrFixedFloatingSwap 对象 | 是 |
| dayCountConvention | STRING | 日期计数惯例, 可选 "ActualActualISDA", "ActualActualISMA", "Actual365", "Actual360" | 是 |
| discountCurve | STRING | 定价时参考的贴现曲线名称,人民币存款默认为 "CNY_FR_007" | 否 |
| forwardCurve | STRING | 定价时参考的远期曲线名称,如 "CNY_LPR_1Y" | 否 |
3.6 用户自定义字段
支持用户自定义金融工具,除 producType 外,所有字段均可自定义。
| 字段名 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
| productType | STRING | 固定填 "UserDefined" | 是 |
4. Instrument 的操作与处理
本章介绍 INSTRUMENT 对象创建后的常用操作,包括字段提取、条件查询、表内访问以及定价调用。
字段访问支持以下方式:
-
专用函数:
getInstrumentNominal()、getInstrumentMaturity()等 -
通用函数:
getInstrumentField(instrument, key) -
语法糖(3.00.6 起):
instrument.key和instrument["key"]。该语法也可用于 SQL 查询
结构化提取可使用 extractInstrument 从对象中获取指定字段并返回结构化结果。
定价调用方面,INSTRUMENT 对象作为各类定价函数(Pricer)的标准输入,为定价计算与风险度量提供统一的数据接口。
4.1 创建与解析
parseInstrument 将一个符合字段要求的字典、元组或内存表解析为 INSTRUMENT 对象。
// 通过字典创建
optionDict = {
"productType": "Option",
"optionType": "EuropeanOption",
"assetType": "EqEuropeanOption",
"notionalCurrency": "CNY",
"notionalAmount": 1E6,
"strike": 3.15,
"maturity": 2025.10.28,
"payoffType": "Call",
"dayCountConvention": "Actual365",
"underlying": "510050"
}
myOption = parseInstrument(optionDict)
// 通过表创建
create table t (
productType STRING,
assetType STRING,
bondType STRING,
version INT,
instrumentId STRING,
start DATE,
maturity DATE,
issuePrice DOUBLE,
coupon DOUBLE,
calendar STRING,
frequency STRING,
dayCountConvention STRING,
subType STRING,
issuer STRING
)
go
insert into t values( "Cash", "Bond", "FixedRateBond", 0, "230205.IB", 2023.03.06, 2033.03.06, 100.0, 0.0302, "CFET", "Annual", "ActualActualISDA", "CDB_BOND", "国家开发银行")
insert into t values( "Cash", "Bond", "DiscountBond", 0, "259924.IB", 2025.04.17, 2025.07.17, 99.664, NULL, NULL, NULL, "ActualActualISDA", "TREASURY_BOND", "中华人民共和国财政部")
insert into t values( "Cash", "Bond", "ZeroCouponBond", 0, "250401.IB", 2025.01.09, 2026.02.05, NULL, 0.0119, NULL, NULL, "ActualActualISDA", "CDB_BOND", "国家农业发展银行")
optionList = parseInstrument(t)
4.2 提取与查询
使用 extractInstrument 函数可以提取 INSTRUMENT 内容。
result = extractInstrument(myOption)
如要获取 instrument 中某个字段的值(如计息日规则、付息日、行权日等),可使用以 “getInstrument” 开头的函数,如使用
getInstrumentDayCountConvention 函数获取金融工具的计息日规则。
getInstrumentDayCountConvention(myOption)
// 输出:Actual365
也可使用更通用的 getInstrumentField 函数获取字段:
getInstrumentField(myOption, "dayCountConvention")
// 输出:Actual365
除了使用字段提取函数外,自 3.00.6 版本起,也支持通过语法糖直接获取 INSTRUMENT 对象中的字段值,包括点号语法
instrument.key 和方括号语法
instrument["key"]。
// 点号语法
instrument.dayCountConvention
// 输出:ActualActualISDA
// 方括号语法
instrument["strike"]
// 输出:3.15
该语法糖也可用于 SQL 查询中,便于直接查询或筛选 INSTRUMENT 列中的字段:
select id, inst.instrumentId, inst.maturity, inst.strike from t
where inst.productType = "Option"
4.3 定价函数
INSTRUMENT 对象是各类定价函数(Pricer)的标准输入。每个具体的金融工具都有对应的定价函数。
// 权益类欧式期权定价示例
pricingDate = 2024.05.20
spot = 3.0
npv = eqEuropeanOptionPricer(myOption, pricingDate, spot, discountCurve, dividendCurve, volSurface)
// 债券定价示例
bond = parseInstrument(bondDict)
bondPrice = bondPricer(bond, pricingDate, discountCurve)
下表展示了 INSTRUMENT 类型与其对应定价函数之间的映射关系。
| 定价函数 | 对应 Instrument 类型 | 主要市场数据/输入 | 说明 |
|---|---|---|---|
| instrumentPricer | 所有支持定价的 INSTRUMENT 类型 | 根据具体 Instrument 类型传入对应市场数据 | 统一定价接口 |
| bondPricer | DiscountBond, ZeroCouponBond, FixedRateBond, OptionBond, FloatingRateBond | pricingDate, discountCurve | 债券定价;FloatingRateBond 为 3.00.6 新增支持 |
| bondInstrumentCalculator | Bond 类 Instrument | pricingDate, yield / price 等 | 债券收益率、净价、全价等指标计算 |
| irDepositPricer | Deposit | pricingDate, discountCurve | 存款定价 |
| bondOutrightRepoPricer | BondOutrightRepo | pricingDate, discountCurve | 债券买断式回购定价 |
| bondPledgedRepoPricer | BondPledgedRepo | pricingDate, discountCurve | 债券质押式回购定价 |
| bondForwardPricer | BondForward | pricingDate, discountCurve | 债券远期定价 |
| stdBondForwardPricer | StdBondForward | pricingDate, discountCurve | 标准债券远期定价 |
| bondFuturesPricer | BondFutures | pricingDate, discountCurve | 国债期货定价 |
| irSwapPricer | IrFixedFloatingSwap | pricingDate, discountCurve, forwardCurve | 利率互换定价 |
| irForwardRateAgreementPricer | IrForwardRateAgreement | pricingDate, discountCurve, forwardCurve | 远期利率协议定价 |
| irCapFloorPricer | IrCapFloor | pricingDate, discountCurve, forwardCurve, volSurface | 利率上下限期权定价 |
| irEuropeanSwaptionPricer | IrEuropeanSwaption | pricingDate, discountCurve, forwardCurve, volSurface | 欧式利率互换期权定价 |
| fxForwardPricer | FxForward | pricingDate, spot, domesticCurve, foreignCurve | 外汇远期定价 |
| fxNonDeliverableForwardPricer | FxNonDeliverableForward | pricingDate, spot, domesticCurve, foreignCurve | 外汇无本金交割远期定价 |
| fxSwapPricer | FxSwap | pricingDate, spot, domesticCurve, foreignCurve | 外汇掉期定价 |
| fxEuropeanOptionPricer | FxEuropeanOption | pricingDate, spot, domesticCurve, foreignCurve, volSurface | 外汇欧式期权定价 |
| fxDigitalOptionPricer | FxDigitalOption | pricingDate, spot, domesticCurve, foreignCurve, volSurface | 外汇数字期权定价 |
| fxRangeAccrualOptionPricer | FxRangeAccrualOption | pricingDate, spot, domesticCurve, foreignCurve, volSurface | 外汇区间累计期权定价 |
| eqEuropeanOptionPricer | EqEuropeanOption | pricingDate, spot, discountCurve, dividendCurve, volSurface | 权益类欧式期权定价 |
| eqAmericanOptionPricer | EqAmericanOption | pricingDate, spot, discountCurve, dividendCurve, volSurface | 权益类美式期权定价 |
| eqDigitalOptionPricer | EqDigitalOption | pricingDate, spot, discountCurve, dividendCurve, volSurface | 权益类数字期权定价 |
| eqRangeAccrualOptionPricer | EqRangeAccrualOption | pricingDate, spot, discountCurve, dividendCurve, volSurface | 权益类区间累计期权定价 |
| cmFutEuropeanOptionPricer | CmFutEuropeanOption | pricingDate, futuresPrice, discountCurve, volSurface | 商品期货欧式期权定价 |
| cmFutAmericanOptionPricer | CmFutAmericanOption | pricingDate, futuresPrice, discountCurve, volSurface | 商品期货美式期权定价 |
| creditDefaultSwapPricer | CreditDefaultSwap | pricingDate, discountCurve, creditCurve | 信用违约互换定价 |
为解决这一问题,DolphinDB 将分散的定价流程进行统一封装,提供 instrumentPricer 接口,将
INSTRUMENT 与 MKTDATA 作为标准输入,实现定价函数选择与市场数据匹配的自动化,并支持批量输出
NPV。在此基础上,portfolioPricer
进一步引入头寸信息,使其能够直接对投资组合进行整体估值计算,从而将单笔交易定价扩展到组合层面的统一处理。
5. 总结
在实际应用中,INSTRUMENT 类型广泛用于金融数据建模、统一定价与风险管理等场景,覆盖从单笔交易估值到投资组合分析的完整流程。通过与市场数据(Curve、Surface 等)及定价接口(instrumentPricer、portfolioPricer)的结合,可以构建标准化的定价与分析体系。
由于具体业务场景较为丰富,不同金融工具在参数配置与使用方式上也存在差异,相关的完整示例与应用流程可参考各类金融产品的函数说明与案例教程。
相关教程: DolphinDB 面向金融交易与定价的统一数据模型、 FICC 与 Equity 定价函数、FICC 曲线/曲面构建。
