bondYieldCurveBuilder
语法
bondYieldCurveBuilder(referenceDate, currency, bonds,
terms, quotes, dayCountConvention, [compounding='Compounded'],
[frequency='Annual'], [curveName], [method='Bootstrap'],
[interpMethod='Linear'], [extrapMethod='Flat'])
详情
构建债券收益率曲线,可作为定价时使用的贴现曲线(即期收益率曲线)。
返回值:MKTDATA 类型对象。
参数
referenceDate DATE 类型标量,收益率曲线的参考日期。
currency STRING 类型标量,表示曲线所定义的货币,可选值为:
-
"CNY":人民币
-
"USD":美元
-
"EUR":欧元
-
"GBP":英镑
-
"JPY":日元
-
"HKD":港币
bonds INSTRUMENT 类型向量,表示用于曲线构建的样本债券,包含各债券的基本信息。不同类型的债券产品所需的关键字段各不相同,详见债券产品字段要求。
terms DURATION 类型的严格递增向量,与 bonds 等长,表示样本券的剩余期限。
quotes 数值类型的向量,与 bonds 等长,表示每只债券在 referenceDate 当日的到期收益率(YTM)报价。
dayCountConvention STRING 类型标量,表示计息日数规则,可选值为:
-
"Actual360": 实际/360
-
"Actual365": 实际/365
-
"ActualActualISDA":实际/实际,遵循 ISDA(International Swaps and Derivatives Association,国际掉期及衍生工具协会)规则
-
"ActualActualISMA": 实际/实际,遵循 ISMA(International Securities Market Association,国际证券市场协会)规则
compounding 可选参数,STRING 类型标量,表示利率复利方式。可选值为:
-
"Compounded":默认值,离散复利。
-
"Simple":简单复利。
-
"Continuous":连续复利。
frequency 可选参数,STRING 类型标量,表示曲线的频率,用于指定曲线的频率,不影响曲线构建,仅会记录在返回的曲线中,默认值为“Annual”。可选值为:
-
"Annual":默认值,每年付息一次
-
"NoFrequency":无计息频率
-
"Once":到期一次还本付息,仅用于贴现债和零息债
-
"Semiannual":每半年付息一次
-
"EveryFourthMonth":每四个月付息一次
-
"Quarterly":每季度付息一次
-
"BiMonthly":每两月付息一次
-
"Monthly":每月付息一次
-
"EveryFourthWeek":每四周付息一次
-
"BiWeekly":每两周付息一次
-
"Weekly":每周付息一次
-
"Daily":每日付息一次
-
"Other":其他计息频率
curveName 可选参数,STRING 类型标量,表示生成的曲线名称,默认为空。
method 可选参数,STRING 类型标量,表示曲线构建方法。 可选值为:
-
"Bootstrap":默认值,拨靴法。
-
"NS":Nelson-Siegel 模型,至少需要 4 个样本点输入用于曲线构建。
-
"NSS":Nelson-Siegel-Svensson 模型,至少需要 6 个样本点输入用于曲线构建。
interpMethod 可选参数,STRING 类型标量,表示内插方法。可选值为:
-
"Linear":默认值,线性插值。
-
"CubicSpline":三次样条插值。
-
"CubicHermiteSpline":三次埃尔米特样条插值。
extrapMethod 可选参数,STRING 类型标量,表示外插方法。可选值为:
-
"Flat":默认值,平插。
-
"Linear":线性插值。
例子
基于2025年8月18日的国债市场数据构建收益率曲线。
bond1 = {
"productType": "Cash",
"assetType": "Bond",
"bondType": "DiscountBond",
"version": 0,
"instrumentId": "259916.IB",
"start": 2025.03.13,
"maturity": 2025.09.11,
"issuePrice": 99.2070,
"dayCountConvention": "ActualActualISDA"
}
bond2 = {
"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"
}
bond3 = {
"productType": "Cash",
"assetType": "Bond",
"bondType": "FixedRateBond",
"version": 0,
"instrumentId": "250001.IB",
"start": 2025.01.15,
"maturity": 2026.01.15,
"issuePrice": 100,
"coupon": 0.0116,
"frequency": "Annual",
"dayCountConvention": "ActualActualISDA"
}
bond4 = {
"productType": "Cash",
"assetType": "Bond",
"bondType": "FixedRateBond",
"version": 0,
"instrumentId": "250013.IB",
"start": 2025.07.25,
"maturity": 2026.07.25,
"issuePrice": 100,
"coupon": 0.0133,
"frequency": "Annual",
"dayCountConvention": "ActualActualISDA"
}
bond5 = {
"productType": "Cash",
"assetType": "Bond",
"bondType": "FixedRateBond",
"version": 0,
"instrumentId": "250012.IB",
"start": 2025.06.15,
"maturity": 2027.06.15,
"issuePrice": 100,
"coupon": 0.0138,
"frequency": "Annual",
"dayCountConvention": "ActualActualISDA"
}
bond6 = {
"productType": "Cash",
"assetType": "Bond",
"bondType": "FixedRateBond",
"version": 0,
"instrumentId": "250010.IB",
"start": 2025.05.25,
"maturity": 2028.05.25,
"issuePrice": 100,
"coupon": 0.0146,
"frequency": "Annual",
"dayCountConvention": "ActualActualISDA"
}
bond7 = {
"productType": "Cash",
"assetType": "Bond",
"bondType": "FixedRateBond",
"version": 0,
"instrumentId": "250014.IB",
"start": 2025.07.25,
"maturity": 2030.07.25,
"issuePrice": 100,
"coupon": 0.0155,
"frequency": "Annual",
"dayCountConvention": "ActualActualISDA"
}
bond8 = {
"productType": "Cash",
"assetType": "Bond",
"bondType": "FixedRateBond",
"version": 0,
"instrumentId": "2500802.IB",
"start": 2025.05.25,
"maturity": 2032.05.25,
"issuePrice": 100,
"coupon": 0.0157,
"frequency": "Annual",
"dayCountConvention": "ActualActualISDA"
}
bond9 = {
"productType": "Cash",
"assetType": "Bond",
"bondType": "FixedRateBond",
"version": 0,
"instrumentId": "250011.IB",
"start": 2025.05.25,
"maturity": 2035.05.25,
"issuePrice": 100,
"coupon": 0.0167,
"frequency": "Semiannual",
"dayCountConvention": "ActualActualISDA"
}
bond10 = {
"productType": "Cash",
"assetType": "Bond",
"bondType": "FixedRateBond",
"version": 0,
"instrumentId": "2400102.IB",
"start": 2024.08.29,
"maturity": 2039.08.29,
"issuePrice": 100,
"coupon": 0.0225,
"frequency": "Semiannual",
"dayCountConvention": "ActualActualISDA"
}
bond11 = {
"productType": "Cash",
"assetType": "Bond",
"bondType": "FixedRateBond",
"version": 0,
"instrumentId": "2500004.IB",
"start": 2025.07.15,
"maturity": 2045.07.15,
"issuePrice": 100,
"coupon": 0.0192,
"frequency": "Semiannual",
"dayCountConvention": "ActualActualISDA"
}
bond12 = {
"productType": "Cash",
"assetType": "Bond",
"bondType": "FixedRateBond",
"version": 0,
"instrumentId": "2500005.IB",
"start": 2025.07.15,
"maturity": 2055.07.15,
"issuePrice": 100,
"coupon": 0.019,
"frequency": "Semiannual",
"dayCountConvention": "ActualActualISDA"
}
bond13 = {
"productType": "Cash",
"assetType": "Bond",
"bondType": "FixedRateBond",
"version": 0,
"instrumentId": "200007.IB",
"start": 2020.05.25,
"maturity": 2070.05.25,
"issuePrice": 100,
"coupon": 0.0373,
"frequency": "Semiannual",
"dayCountConvention": "ActualActualISDA"
}
bond14 = {
"productType": "Cash",
"assetType": "Bond",
"bondType": "FixedRateBond",
"version": 0,
"instrumentId": "2400003.IB",
"start": 2024.06.15,
"maturity": 2074.06.15,
"issuePrice": 100,
"coupon": 0.0253,
"frequency": "Semiannual",
"dayCountConvention": "ActualActualISDA"
}
referenceDate = 2025.08.18
bondsTmp = [bond1, bond2, bond3, bond4, bond5, bond6, bond7, bond8, bond9,
bond10, bond11, bond12, bond13, bond14]
bonds = parseInstrument(bondsTmp)
本案例参考外汇交易中心标准期限收盘收益率曲线历史数据下载_中国货币网,样本券的剩余期限(term)和报价(quote)均为模拟数据。
terms = [1M, 3M, 6M, 1y, 2y, 3y, 5y, 7y, 10y, 15y, 20y, 30y, 40y, 50y]
quotes=[1.3000, 1.3700, 1.3898, 1.3865, 1.4296, 1.4466, 1.6348,
1.7557, 1.7875, 1.9660, 2.1300, 2.1100, 2.1556, 2.1750]/100
// method = "BoostStarp"
bootstrapCurve = bondYieldCurveBuilder(referenceDate, `CNY, bonds, terms, quotes, "ActualActualISDA", method='Bootstrap')
bootstrapCurveDict = extractMktData(bootstrapCurve)
print(bootstrapCurveDict)
// method = "NS"
nsCurve = bondYieldCurveBuilder(referenceDate, `CNY, bonds, terms, quotes, "ActualActualISDA", method='NS')
nsCurveDict = extractMktData(nsCurve)
print(nsCurveDict)
// method = "NSS"
nssCurve = bondYieldCurveBuilder(referenceDate, `CNY, bonds, terms, quotes, "ActualActualISDA", method='NSS')
nssCurveDict=extractMktData(nssCurve)
print(nssCurveDict)
债券产品字段要求
贴现债
字段名 | 类型 | 描述 | 是否必填 |
---|---|---|---|
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+" | 否 |
零息债
字段名 | 类型 | 描述 | 是否必填 |
---|---|---|---|
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+" | 否 |
固定利率债
字段名 | 类型 | 描述 | 是否必填 |
---|---|---|---|
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+" | 否 |