parseInstrument
首发版本:3.00.4
语法
parseInstrument(obj)
详情
将输入的金融工具产品描述(obj)转换成一个 INSTRUMENT 类型对象(金融工具),用于后续建模和定价。可解析的金融工具详见INSTRUMENT 类型。
注意:parseInstrument
会在序列化或反序列化过程中保留非标准标量或向量字段(即不属于金融工具预定义属性的字段)。
参数
obj 可以是字典、由字典组成的元组、内存表、字符串标量或向量,表示要解析的金融工具描述。注意,如果 obj 指定为表,则该表只能存储单一类型的金融工具。
返回值
一个 INSTRUMENT 类型对象,表示金融工具。
例子
使用字典存储付息债的描述,通过 parseInstrument 解析该字典,以获得该付息债的 INSTRUMENT 类型对象。
bond = {
"productType": "Cash",
"assetType": "Bond",
"bondType": "FixedRateBond",
"instrumentId": "230205.IB",
"start": 2023.03.06,
"maturity": 2033.03.06,
"issuePrice": 100.0,
"coupon": 0.0302,
"calendar": "CFET",
"frequency": "Annual",
"dayCountConvention": "ActualActualISDA",
"subType": "CDB_BOND",
"issuer": "国家开发银行"
}
parseInstrument(bond)
通过 parseInstrument 解析由字典组成的元组,得到3个债券的 INSTRUMENT 类型对象。
bond1 = {
"productType": "Cash",
"assetType": "Bond",
"bondType": "DiscountBond",
"instrumentId": "259924.IB",
"start": 2025.04.17,
"maturity": 2025.07.17,
"issuePrice": 99.664,
"dayCountConvention": "ActualActualISDA",
"subType": "TREASURY_BOND",
"issuer": "中华人民共和国财政部"
}
bond2 = {
"productType": "Cash",
"assetType": "Bond",
"bondType": "ZeroCouponBond",
"instrumentId": "250401.IB",
"start": 2025.01.09,
"maturity": 2026.02.05,
"coupon": 0.0119,
"dayCountConvention": "ActualActualISDA",
"subType": "CDB_BOND",
"issuer": "国家农业发展银行"
}
parseInstrument([bond,bond1,bond2])
使用内存表存储金融工具描述,其每一列代表一个字段。通过 parseInstrument 解析该表,得到 INSTRUMENT
类型对象。
注意:如果某个产品缺少内存表中某列对应的字段,则在插入该产品的数据时,该字段将被设置为 NULL。
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", "国家农业发展银行")
parseInstrument(t)
使用字符串描述金融工具,通过 parseInstrument 解析该字符串,得到 INSTRUMENT 类型对象。
bond1 = {
"productType": "Cash",
"assetType": "Bond",
"bondType": "FixedRateBond",
"coupon": 0.0302,
"frequency": "Annual",
"version": 0,
"instrumentId": "230205.IB",
"nominal": 100,
"start": 2023.03.06,
"maturity": 2033.03.06,
"dayCountConvention": "ActualActualISDA",
"calendar": "CFET",
"currency": "CNY",
"discountCurve": "",
"spreadCurve": "",
"subType": "CDB_BOND",
"issuePrice": 100,
"issuer": "国家开发银行"
}
bond1Str = toStdJson(bond1)
parseInstrument(obj=bond1Str)
通过 parseInstrument 解析该字符串向量,得到多个 INSTRUMENT 类型对象。
bond2 = {
"productType": "Cash",
"assetType": "Bond",
"bondType": "DiscountBond",
"issuePrice": 99.664000000000001,
"version": 0,
"instrumentId": "259924.IB",
"nominal": 100,
"start": 2025.04.17,
"maturity": 2025.07.17,
"dayCountConvention": "ActualActualISDA",
"calendar": "",
"currency": "CNY",
"discountCurve": "",
"spreadCurve": "",
"subType": "TREASURY_BOND",
"issuer": "中华人民共和国财政部"
}
bond3 = {
"productType": "Cash",
"assetType": "Bond",
"bondType": "ZeroCouponBond",
"coupon": 0.0119,
"version": 0,
"instrumentId": "250401.IB",
"nominal": 100,
"start": 2025.01.09,
"maturity": 2026.02.05,
"dayCountConvention": "ActualActualISDA",
"calendar": "",
"currency": "CNY",
"discountCurve": "",
"spreadCurve": "",
"subType": "CDB_BOND",
"issuer": "国家农业发展银行"
}
bond2Str = toStdJson(bond2)
bond3Str = toStdJson(bond3)
parseInstrument(obj=[bond1Str,bond2Str,bond3Str])
