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])