67 KiB
债券
内容
- 债券收益率
- 债券敏感性指标
- 基本情况
- 可转债
- 债券派息和利率
- 债券估值
- 债券收益率曲线
- 债券组合
- 可转债转股及余额
- 债券指数估值
- 中间函数
- 标准券折算率
- 基本信息
- 行情单位变更日期
- 债券回购
债券收益率
内容
- bd_AdjustedDuration
- bd_RemainYear
- bd_RemainPayNumber
- bd_PayPrice
- bd_YTM
- bd_Interest3
- bd_AdjustedDuration3
- bd_Duration3
- bd_YTM3
- bd_CoupDayBS
- BondAccruedInterest
- BondAccruedInterest1
- BondAccruedInterest2
- BondAccruedInterest3
- BondAccruedInterest4
- BondCleanPrice
- BondDirtyPrice
- BondYieldToMaturity
- BondYieldToMaturity1
- BondYieldToMaturity2
- BondYieldToMaturity3
- 到期收益率
- 应计利息
- 常用计算天数
bd_AdjustedDuration
用途:债券收益率相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
范例
取得SH010107(21国债⑺)在20110913的修正久期
SetSysParam(pn_stock(), 'SH010107');
EndT := inttodate(20110913);
return bd_AdjustedDuration(EndT); // 8.689358
bd_RemainYear
用途:债券收益率相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
范例
取得SH010107(21国债⑺)在20110913的剩余年限(年)
SetSysParam(pn_stock(), 'SH010107');
EndT := inttodate(20110913);
return bd_RemainYear(EndT); // 9.890411
bd_RemainPayNumber
用途:债券收益率相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
范例
取得SH010107(21国债⑺)在20110913的剩余付息次数
SetSysParam(pn_stock(), 'SH010107');
EndT := inttodate(20110913);
return bd_RemainPayNumber(EndT); // 20
bd_PayPrice
用途:债券收益率相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
范例
取得SH010107(21国债⑺)在20110913的结算价(元)
SetSysParam(pn_stock(), 'SH010107');
EndT := inttodate(20110913);
return bd_PayPrice(EndT); // 103.26
bd_YTM
用途:债券收益率相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
范例
取得SH010107(21国债⑺)在20110913的到期收益率(%)
SetSysParam(pn_stock(), 'SH010107');
EndT := inttodate(20110913);
return bd_YTM(EndT); // 3.919539
bd_Interest3
用途:债券收益率相关函数。 参数:无。 返回:处理后的结果值。
范例
取得SH010107(21国债⑺)的应计利息(元)
SetSysParam(pn_stock(), 'SH010107');
return bd_Interest3(); // 0.27427
bd_AdjustedDuration3
用途:债券收益率相关函数。 参数:无。 返回:处理后的结果值。
范例
取得SH010107(21国债⑺)的修正久期
SetSysParam(pn_stock(), 'SH010107');
return bd_AdjustedDuration3(); // 8.683337
bd_Duration3
用途:债券收益率相关函数。 参数:无。 返回:处理后的结果值。
范例
// 取得SH010107(21国债⑺)的久期
SetSysParam(pn_stock(), 'SH010107');
return bd_Duration3(); // 9.023284
bd_YTM3
用途:债券收益率相关函数。 参数:无。 返回:处理后的结果值。
范例
取得SH010107(21国债⑺)的到期收益率(%)
SetSysParam(pn_stock(), 'SH010107');
return bd_YTM3(); // 3.914935
bd_CoupDayBS
用途:债券收益率相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
取得SH010107(21国债⑺)在20110913的当前付息期内截止到交易日的天数
SetSysParam(pn_stock(), 'SH010107');
EndT := inttodate(20110913);
return bd_CoupDayBS(EndT); // 45
BondAccruedInterest
范例
获得代码SH010107在20171218T的日间应计利息-现金流算法
Setsysparam(pn_Stock(), ”SH010107”);
Setsysparam(pn_bonddataprovider(), 2); // 数据供应商选择TS计算
Endt := 20171218T;
return BondInterest(Endt, 0);
获得代码SH010107在20171218T的日终应计利息-现金流算法
Setsysparam(pn_Stock(), ”SH010107”);
Setsysparam(pn_bonddataprovider(), 2); // 数据供应商选择TS计算
Endt := 20171218T;
return BondInterest(Endt, 1);
BondAccruedInterest1
BondAccruedInterest2
BondAccruedInterest3
BondAccruedInterest4
BondCleanPrice
BondDirtyPrice
BondYieldToMaturity
用途:债券收益率相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
范例债券SH010107在20171228日收盘买入持有到到期的收益率
Endt := 20171228T;
Setsysparam(pn_Stock(), "SH010107");
Setsysparam(pn_bonddataprovider(), 2); // 数据供应商选择TS计算
return BondYieldToMaturity(Endt);
BondYieldToMaturity1
- bd_AdjustedDuration
- bd_RemainYear
- bd_RemainPayNumber
- bd_PayPrice
- bd_YTM
- bd_Interest3
- bd_AdjustedDuration3
- bd_Duration3
- bd_YTM3
- bd_CoupDayBS
- BondAccruedInterest
- BondAccruedInterest1
- BondAccruedInterest2
- BondAccruedInterest3
- BondAccruedInterest4
- BondCleanPrice
- BondDirtyPrice
- BondYieldToMaturity
- BondYieldToMaturity1
- BondYieldToMaturity2
- BondYieldToMaturity3
- 到期收益率
- 应计利息
- 常用计算天数
BondYieldToMaturity2
- bd_AdjustedDuration
- bd_RemainYear
- bd_RemainPayNumber
- bd_PayPrice
- bd_YTM
- bd_Interest3
- bd_AdjustedDuration3
- bd_Duration3
- bd_YTM3
- bd_CoupDayBS
- BondAccruedInterest
- BondAccruedInterest1
- BondAccruedInterest2
- BondAccruedInterest3
- BondAccruedInterest4
- BondCleanPrice
- BondDirtyPrice
- BondYieldToMaturity
- BondYieldToMaturity1
- BondYieldToMaturity2
- BondYieldToMaturity3
- 到期收益率
- 应计利息
- 常用计算天数
BondYieldToMaturity3
用途:债券收益率相关函数。 参数:arg1,arg2,arg3,arg4,arg5(按示例顺序传入)。 返回:处理后的结果值。
算法
其中,Ci:每期现金流;
td:债券最后一期计息起始日到到期日天数(含2月29)
TY:债券最后一期完整周期天数(非完整周期表示最后一期计息起始日到下一虚拟付息日天数,含2月29)范例
已知某个固定利率周期性付息债券在20171220T全价102.5,频率为1,未来现金流数据如下所示:
| 计息起始日 | 付息日 | 本期付息 | 本期利率(%) | 本期付本金 | 剩余本金 | 现金流 |
|---|---|---|---|---|---|---|
| 20171028T | 20181028T | 3.5 | 3.5 | 0 | 100 | 3.5 |
| 20181028T | 20191028T | 3.5 | 3.5 | 50 | 50 | 53.5 |
| 20191028T | 20201028T | 1.75 | 3.5 | 50 | 0 | 51.75 |
求持有到期的到期收益率
Endt := 20171220T;
BondCash := array(("计息起始日":20171028T, "付息日":20181028T, "现金流":3.5),
("计息起始日":20181028T, "付息日":20191028T, "现金流":53.5),
("计息起始日":20191028T, "付息日":20201028T, "现金流":51.75));
t := BondCash[0, "付息日"] - Endt;
TS := BondCash[0, "付息日"] - BondCash[0, "计息起始日"];
PV := 102.5;
f := 1;
return BondYieldToMaturity3(PV, BondCash, f, t, TS);
返回:0.0261321222858299
到期收益率
用途:债券收益率相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
####### 内容
- BondYieldToMaturity_II
- MID_BondYieldToMaturity
- BondYieldTomaturity4
- ISBondPayRegular
- ISBondPayRugularByCash
####### BondYieldToMaturity_II
用途:债券收益率相关函数。 参数:
返回:处理后的结果值。
算法
若是规则的周期性付息,到期收益率(%)-摊余成本法=不处于最后付息周期的定期付息债--到期收益率;
若是不规则的周期性付息,到期收益率(%)-摊余成本法等于使用二分法得到的满足
(现金流1+y债券的付息年限)-摊余成本=0
其中,y的初值为0;
若是待偿期在一年以上的到期一次还本付息债券和零息债券,到期收益率(%)-摊余成本法=待偿期在一年以上的到期一次还本付息债券和零息债券的到期收益率;
若是待偿期在一年及以内的到期一次还本付息债券,零息债和最后一个付息周期的附息债,到期收益率(%)-摊余成本法=最后付息周期的定期付息债、待偿期在一年及以内的到期一次还本付息债券和零息债券的到期收益率范例
// 返回“BK010004”在2012年7月3日的到期收益率
Setsysparam(pn_Stock(), "BK010004");
return BondYieldToMaturity_II(100.8268, 20120703T, 0);
// 结果:4.55
债券SH010107在20171228日以102.35买入持有到到期的收益率
Endt := 20171228T;
price := 102.35;
Setsysparam(pn_Stock(), "SH010107");return BondYieldToMaturity_II(Endt, price);
债券SH010107在20171228日收盘买入持有到含权处理后的收益率
Endt := 20171228T;
price := 102.35;
Setsysparam(pn_Stock(), "SH010107");
return BondYieldToMaturity_II(Endt, price, 1);
####### MID_BondYieldToMaturity
- BondYieldToMaturity_II
- MID_BondYieldToMaturity
- BondYieldTomaturity4
- ISBondPayRegular
- ISBondPayRugularByCash
####### BondYieldTomaturity4
- BondYieldToMaturity_II
- MID_BondYieldToMaturity
- BondYieldTomaturity4
- ISBondPayRegular
- ISBondPayRugularByCash
####### ISBondPayRegular
- BondYieldToMaturity_II
- MID_BondYieldToMaturity
- BondYieldTomaturity4
- ISBondPayRegular
- ISBondPayRugularByCash
####### ISBondPayRugularByCash
- BondYieldToMaturity_II
- MID_BondYieldToMaturity
- BondYieldTomaturity4
- ISBondPayRegular
- ISBondPayRugularByCash
应计利息
####### 内容
- BondCouponExt
- BondFutureValue
- BondAccruedInterest5
- MID_BondAccruedInterest
####### BondCouponExt
用途:债券收益率相关函数。 参数:
返回:处理后的结果值。
算法
若债券的利率品种为固定利率,结算日票面利率为债券基本信息表中的票面利率;
若债券的利率品种为浮动利率,当付息方式为周期性付息时,结算日票面利率为结算日对应的上一个付息日的基准代码利率加上基本利差;当付息方式为到期一次还本付息时,结算日票面利率为起息日的基准代码利率加上基本利差;
若债券的利率品种为零息或者贴现时,结算日票面利率为(面额-发行价格)*(1/偿还年限);
若债券的利率品种为递进利率,结算日票面利率为现金流表中的本期利率(%)范例
// 返回“BK010004”在2012年7月3日的票面利率
Setsysparam(pn_Stock(), "BK000000");
return BondCouponExt(20120703T);
// 结果:2.42
####### BondFutureValue
用途:债券收益率相关函数。 参数:无。 返回:处理后的结果值。
算法
根据债券.债券派息和利率表中的信息获取本期付息和本期付本金,到期兑付日债券本息和=本期付息+本期付本金范例
// 返回’ BK000002’的到期兑付日债券本息和
SetSysParam(PN_Stock(), 'BK000002');
return BondFutureValue();
// 结果:102.8
####### BondAccruedInterest5
- BondCouponExt
- BondFutureValue
- BondAccruedInterest5
- MID_BondAccruedInterest
####### MID_BondAccruedInterest
- BondCouponExt
- BondFutureValue
- BondAccruedInterest5
- MID_BondAccruedInterest
常用计算天数
####### 内容
- BondDaysNewestPayment
####### BondDaysNewestPayment
用途:债券收益率相关函数。 参数:
返回:处理后的结果值。
范例
Setsysparam(pn_Stock(), "BK010004");
return BondDaysNewestPayment(20120703T, 1);
// 结果:365
债券敏感性指标
内容
- bdV_CleanPrice
- bdV_DirtyPrice
- bdV_YieldToMaturity
- BondConvexity
- BondConvexity1
- BondConvexity2
- BondBasisPointValue
- BondMacaulayDuration
- BondMacaulayDuration1
- BondMacaulayDuration2
- BondModifiedConvexity
- BondModifiedDuration
- 中间函数
- 久期
- 凸性
bdV_CleanPrice
用途:债券敏感性指标相关函数。 参数:
返回:处理后的结果值。
范例:
// 提取SH019405在20150630的债券净价数据
setsysparam(pn_stock(), "SH019405");
setsysparam(pn_date(), 20150630T);
return bdV_CleanPrice (0); // 数据提供商:中证
bdV_DirtyPrice
用途:债券敏感性指标相关函数。 参数:
返回:处理后的结果值。
范例:
// 提取SH019405在20150630的债券全价数据
setsysparam(pn_stock(), "SH019405");
setsysparam(pn_date(), 20150630T);
return bdV_DirtyPrice (0); // 数据提供商:中证
bdV_YieldToMaturity
用途:债券敏感性指标相关函数。 参数:
返回:处理后的结果值。
范例:
// 提取SH019405在20150630的到期收益率数据
setsysparam(pn_stock(), "SH019405");
setsysparam(pn_date(), 20150630T);
return bdV_YieldToMaturity (0); // 数据提供商:中证
BondConvexity
用途:债券敏感性指标相关函数。 参数:
返回:处理后的结果值。
范例债券SH010107在2018/4/8的凸性
Setsysparam(Pn_Stock(), "SH010107");
Setsysparam(pn_bonddataprovider(), 2); // 数据供应商选择TS计算
Endt := 20180408T;
return BondConvexity(Endt); // 持有到期凸性 返回12.23
BondConvexity1
算法
其中:years:结算日期到到期日(或者估值行权日)的年限
y:到期收益率
BondConvexity2
算法
其中:Ci:第i期现金流;Ti:结算日到第i期付息日付息次数(整数周期+1,非整数周期计算比例)
BondBasisPointValue
用途:债券敏感性指标相关函数。 参数:
返回:处理后的结果值。
范例债券SH010107在指定日2018/4/8持有10000市值的基点价值-持有到期
Setsysparam(pn_Stock(), "SH010107");
Endt := 20180408T;
MV := 10000;
return BondBasisPointValue(Endt, MV); // 返回3.05
BondMacaulayDuration
用途:债券敏感性指标相关函数。 参数:
返回:处理后的结果值。
范例获得债券SH010107在2018/4/4的麦考利久期
Setsysparam(pn_Stock(), "SH010107");
Setsysparam(pn_bonddataprovider(), 2); // 数据供应商选择TS计算
Endt := 20180404T;
return BondMacaulayDuration(Endt); // 麦考利久期,返回3.12
BondMacaulayDuration1
处于最后一次付息的定期付息债
到期一次还本付息的债券
零息券
麦克劳林久期即为交割日距到期日的以年为单位的期限(即:剩余期限),即:
其中:
d 是债券结算日距到期日的实际天数
BondMacaulayDuration2
算法
其中:Ci:债券第i期现金流
Ti:结算日到第i个付息日的付息次数。(完整周期计为1,非完整周期计算比例)
BondModifiedConvexity
- BondConvexity
- BondConvexity1
- BondConvexity2
- BondBasisPointValue
- BondMacaulayDuration
- BondMacaulayDuration1
- BondMacaulayDuration2
- BondModifiedConvexity
- BondModifiedDuration
- 中间函数
- bdV_CleanPrice
- bdV_DirtyPrice
- bdV_YieldToMaturity
- 久期
- 凸性
BondModifiedDuration
用途:债券敏感性指标相关函数。 参数:
返回:处理后的结果值。
算法
非最后付息周期
1 规则付息:
2 不规则付息:
最后付息周期、到期次还本付息或零息:
其中:MDuration:修正久期;Duration:久期;y:到期收益率;f:付息频率范例
债券SH010107在2018/4/8的修正久期
Setsysparam(pn_Stock(), "SH010107");
Setsysparam(pn_bonddataprovider(), 2); // 数据供应商选择TS计算
Endt := 20180408T;
return BondModifiedDuration(Endt, 0); // 返回:3.05
中间函数
####### 内容
- BondMacaulayDuration2_sub
- BondConvexity2_sub
- FinalPayinterestPeriod
####### BondMacaulayDuration2_sub
用途:进行字符串提取或替换处理。 参数:
返回:处理后的结果值。
算法
不处于最后付息周期定期付息债的久期=
范例
// 返回“SH010107”的麦克劳林久期(不处于最后付息周期的定期付息债)
Setsysparam(pn_Stock(), "SH010107");
return BondMacaulayDuration2_sub(107.1642, 4.26, 2, 0.033429, 175, 18, 100, 184);
// 结果:7.6
####### BondConvexity2_sub
用途:进行字符串提取或替换处理。 参数:
返回:处理后的结果值。
算法
不处于最后付息周期的久期=
范例
// 返回“SH010107”的凸性(不处于最后付息周期的定期付息债)
Setsysparam(pn_Stock(), "SH010107");
return BondConvexity2_sub(9.5, 0.09, 1, 0.1, 175, 8, 1, 365);
// 结果:4.37
####### FinalPayinterestPeriod
用途:债券敏感性指标相关函数。 参数:
返回:处理后的结果值。
算法
(1)从债券基本信息表获得付息方式rtype;
(2)如果rtype是周期性付息,从债券.债券派息和利率表中获得付息日大于SettlementDate的记录条数,即结算日至到期日剩余付息次数times,若times小于等于1,则返回1;否则返回0;
(2)如果rtype是到期一次还本付息或零息,返回1范例
// 返回“BK000000”在2012年7月3日是否是最后付息周期的定期付息债或到期一次还本付息债券或零息债券
Setsysparam(pn_Stock(), "BK000000");
return FinalPayinterestPeriod(20120703T);
// 结果:1
久期
####### 内容
- BondMacaulayDuration3
####### BondMacaulayDuration3
- BondMacaulayDuration3
凸性
####### 内容
- BondConvexity3
####### BondConvexity3
- BondConvexity3
基本情况
内容
- IsBankBond
- bd_Maturity
- bd_InterestRateType
- bd_ListDate
- IsCorporationBond
- IsBond
- bd_FaceValue
- IsGovBond
- bd_ActualIssueAmount
- bd_DatedDate
- bd_GoalDate
- bd_ExpireDate
- bd_PayTimes
- bd_CouponType
- bd_CouponRate
- bd_Shares
- IsConvertibleBond
- Lido债券数据补充
- bd_IfInDuration
IsBankBond
用途:判断条件是否成立。 参数:
返回:布尔值。
范例
return IsBankBond('SH010107');
// 返回0,不是银行间债券
bd_Maturity
用途:基本情况相关函数。 参数:无。 返回:处理后的结果值。
算法
函数首先判断当前系统证券是否是债券,如果是债券,从债券.基本信息表中获得该债券的偿还期限(年),否则返回0范例
setsysparam(pn_stock(), 'BK1120018');
return bd_Maturity();
// 结果:10
bd_InterestRateType
用途:基本情况相关函数。 参数:无。 返回:处理后的结果值。
算法
函数首先判断当前系统证券是否是债券,如果是债券,从债券.基本信息表中获得该债券的利率品种,否则返回0范例
setsysparam(pn_stock(), 'BK1120018');
return bd_InterestRateType();
// 结果:固定利率
bd_ListDate
用途:日期时间处理函数。 参数:无。 返回:日期或时间值。
算法
函数通过判断当前系统证券是否是银行间债券,如果是,则从债券.基本信息表中获得上市日,否则返回对应证券上市的第一个交易日范例
// 返回”沪深300”的上市日
SetSysParam(pn_stock(), 'SH000300'); // 设置当前股票
return bd_ListDate();
// 结果:20020104
IsCorporationBond
用途:判断条件是否成立。 参数:
返回:布尔值。
算法
首先通过判断StockID的股票类型是否是债券,如果是,则通过债券.基本信息表中债券种类判断是否是企业债,如果是,则返回1;否则返回0范例
// 判断 97国电债是否是企业债券
return IsCorporationBond('SH129801');
// 结果:1
IsBond
用途:判断条件是否成立。 参数:
返回:布尔值。
算法
函数通过stocktype函数返回的证券类型判断是否是债券,债券的类型值包括7,8,18范例
// 返回” SH110003”是否是债券
return IsBond("SH110003");
// 结果:1
bd_FaceValue
IsGovBond
用途:判断条件是否成立。 参数:
返回:布尔值。
算法
函数首先通过判断StockID的股票类型是否是债券,如果是,则通过债券.基本信息表中债券种类判断是否是国债,如果是,则返回1;否则返回0范例
// 返回” BK000201”是否是国债
return IsGovBond("BK000201");
// 结果:0
bd_ActualIssueAmount
用途:基本情况相关函数。 参数:无。 返回:处理后的结果值。
算法
函数判断当前证券是否是债券,如果是,则实际发行总额=发行额×债券发行量金额单位;否则返回0范例
// 返回”BK000201”的实际发行总额(元)
SetSysParam(pn_stock(), 'BK000201'); // 设置当前证券
return bd_ActualIssueAmount();
// 结果:18000000000
bd_DatedDate
用途:日期时间处理函数。 参数:无。 返回:日期或时间值。
算法
函数判断当前证券是否是债券,如果是,通过债券.基本信息表获得对应的计息日,否则返回0范例
// 返回”BK000201”的计息日
SetSysParam(pn_stock(), 'BK000201'); // 设置当前证券
return bd_DatedDate();
// 结果:20000404
bd_GoalDate
用途:日期时间处理函数。 参数:无。 返回:日期或时间值。
算法
函数通过判断当前证券的股票类型,返回对应的到期日范例
// 返回”BK000201”的到期日
SetSysParam(pn_stock(), 'BK000201'); // 设置当前证券
return bd_GoalDate ();
// 结果:20100404
bd_ExpireDate
用途:日期时间处理函数。 参数:无。 返回:日期或时间值。
算法
返回bd_GoalDate (),即到期日。直接返回债券基本信息表中的到期日。范例
// 返回”BK000201”的摘牌日
SetSysParam(pn_stock(), 'BK000201'); // 设置当前证券
return bd_ExpireDate ();
// 结果:20100404
bd_PayTimes
用途:日期时间处理函数。 参数:无。 返回:日期或时间值。
算法
函数通过当前证券的数据库提供商以及股票类型的判断,返回债券基本信息表中的付息频率。范例
// 返回”BK000201”的付息频率
SetSysParam(pn_stock(), 'BK000201'); // 设置当前证券
return bd_PayTimes();
// 结果:1
bd_CouponType
用途:基本情况相关函数。 参数:无。 返回:处理后的结果值。
算法
函数通过当前股票的数据库提供商以及股票类型的判断,返回债券基本信息表中的息票类型。该字段已废弃。范例
[code]
返回”BK000201”的息票品种
SetSysParam(pn_stock(),'BK000201'); //设置当前证券
return bd_CouponType();
结果:附息
[code]
bd_CouponRate
用途:基本情况相关函数。 参数:无。 返回:处理后的结果值。
算法
函数判断当前证券是否是企业债或国债,如果是,通过债券.基本信息表中获得票面利率(%);否则返回0范例
// 返回”BK000201”的票面利率
SetSysParam(pn_stock(), 'BK000000'); // 设置当前证券
return bd_CouponRate();
// 结果:2.8
bd_Shares
用途:基本情况相关函数。 参数:无。 返回:处理后的结果值。
算法
债券流通股=实际发行总额(元) /面值(元)范例
// 返回”BK000201”的债券流通股
SetSysParam(pn_stock(), 'BK000000'); // 设置当前股票
return bd_Shares ();
// 结果:200000000
IsConvertibleBond
用途:判断条件是否成立。 参数:
返回:布尔值。
算法
首先通过函数stocktype判断是否是债券,如果是,则通过债券.基本信息表中的债券种类判断是否是可转债,如果是,返回1;否则返回0范例
// 返回” SZ125002”是否是可转债
return IsConvertibleBond("SZ125002");
// 结果:1
Lido债券数据补充
####### 内容
- BondExtraDataExist
- bd_PayTimesOfLido
- bd_CouponTypeOfLido
- bd_InterestRateTypeOfLido
- bd_PayTimesData
- bd_InterestRateTypeData
- bd_CouponTypeData
####### BondExtraDataExist
用途:基本情况相关函数。 参数:
返回:处理后的结果值。
范例
// 返回” SH000001”是否在数据表中存在
t := array(('SH000300', '沪深300'),
('SH000001', '上证指数'),
('SZ000001', '平安银行'));
return BondExtraDataExist(t, 'SH000001');
// 结果:1
####### bd_PayTimesOfLido
用途:日期时间处理函数。 参数:
返回:日期或时间值。
算法
从补充的付息频率数据(补充的数据见函数bd_PayTimesData)中获得数据表t;
判断参数BondId的记录是否存在于t中;
如若存在,返回在t中对应的结果,否则返回1范例
// 返回” SZ101917”的付息频率
return bd_PayTimesOfLido('SZ101917');
// 结果:2
####### bd_CouponTypeOfLido
用途:基本情况相关函数。 参数:
返回:处理后的结果值。
算法
判断参数BondId是否是企业债券或国债,若是,则继续下面的步骤,否则返回空值;
从补充的息票品种数据(补充的数据见函数bd_CouponTypeData)中获得数据表t;
判断参数BondId的记录是否存在于t中;
如若存在,返回在t对应的结果,否则返回“附息”范例
// 返回”SZ111017”的息票品种
return bd_CouponTypeOfLido('SZ111017');
// 结果:零息
####### bd_InterestRateTypeOfLido
用途:基本情况相关函数。 参数:
返回:处理后的结果值。
算法
(1)从补充的附息利率品种数据(补充的数据见函数bd_InterestRateTypeData)中获得数据表t;
(2)判断参数BondId的记录是否存在于t中;
(3)如若存在,返回在t对应的结果,否则返回“固定利率”范例
// 返回” SZ101904”的附息利率品种
return bd_InterestRateTypeOfLido("SZ101904");
// 结果:浮动利率
####### bd_PayTimesData
####### bd_InterestRateTypeData
####### bd_CouponTypeData
bd_IfInDuration
用途:基本情况相关函数。 参数:
返回:处理后的结果值。
范例
return bd_IfInDuration("SZ128144", 20230101T); // 1
可转债
内容
- CB_IfCrossInterestPeriodRedemption
- CB_ExpiredRedemptionPriceInterest
- CB_IfCrossAmendDateRedemption
- CB_IfCrossAmendDatePutback
- CB_RevisedTriggerPrice
- CB_issueendt
- CB_SatisfyConditionalRedemption
- CB_IfCrossInterestPeriodPutback
- CB_ConditionalPutbackPrice
- CB_SatisfyConditionalPutback
- CB_StartDayPutback
- CB_ConditionalRedemptionPriceInterest
- CB_ExpiredRedemptionPrice
- CB_AdditionalPutbackPrice
- CB_InterestCompensation
- CB_BalanceRedemptionPrice
- CB_StartDayRedemption
- CB_TriggerPriceRedemption
- CB_ConditionalPutbackPriceInterest
- CB_AdditionalPutbackPriceInterest
- CB_SatisfyRevised
- CB_ConditionalRedemptionPrice
- CB_TriggerPricePutback
- CB_StartDayRevised
- CB_BalanceRedemptionPriceInterest
- CB_SatisfyBalanceRedemption
- CB_StartDayConversion
- 可转债回售结果
- 可转债赎回结果
- cb_delistedbydate
- Cb_getconvertbondidbystockid
- CB_Convertible_Parity
- CB_GetTransactionByDate
- CB_ActualSatisfyRedempeDays
- 可转债引入概率蒙特卡洛估值范例
CB_IfCrossInterestPeriodRedemption
CB_ExpiredRedemptionPriceInterest
用途:可转债相关函数。 参数:无。 返回:处理后的结果值。
算法
判断“到期赎回价格是否包含当期利息”
是:到期赎回价格
否:到期赎回价格加上最后一期利息
0:面值加上最后一期利息
空:
到期赎回利息补偿比例为0:面值加上最后一期利息
到期赎回利息补偿比例不为0:面值加上最后一期利息再加上补偿利息范例
setsysparam(pn_stock(), 'SH113503');
return CB_ExpiredRedemptionPriceInterest();
CB_IfCrossAmendDateRedemption
CB_IfCrossAmendDatePutback
CB_RevisedTriggerPrice
用途:可转债相关函数。 参数:无。 返回:处理后的结果值。
算法
如果指定日在开始下修日和实际到期日之间,则返回转股价乘以转股价向下修正收盘价限制比例除以100,否则,返回0范例
setsysparam(pn_stock(), 'SH113503');
setsysparam(pn_date(), 20190403T);
return CB_RevisedTriggerPrice();
CB_issueendt
算法
取发行截止日作为发行结束之日
CB_SatisfyConditionalRedemption
用途:可转债相关函数。 参数:无。 返回:处理后的结果值。
算法
如果指定日大于可转债的实际到期日,说明 判断日已经超过到期日,债券已到期,无所谓满足不满足有条件赎回收盘价限制条件,返回0;
如果指定日小于开始赎回日,说明还没到赎回时间,不予判断是否满足有条件赎回收盘价限制条件,返回0;
如果指定日在开始赎回日和实际到期日之间且开始赎回日和指定日之间的交易天数小于有条件赎回收盘价满足天数,必然不满足有条件赎回收盘价限制条件,那么返回0;
如果指定日在开始赎回日和实际到期日之间且开始赎回日和指定日之间的交易天数大于有条件赎回收盘价满足天数,那么只需要算出期间可转债对应股票的收盘价和转股价,然后进行判断是否满足有条件赎回收盘价限制条件即可范例
setsysparam(pn_stock(), 'SH113503');
setsysparam(pn_date(), 20190403T);
return CB_SatisfyConditionalRedemption();
CB_IfCrossInterestPeriodPutback
CB_ConditionalPutbackPrice
用途:可转债相关函数。 参数:无。 返回:处理后的结果值。
算法
1.仅考虑指定日在开始回售日和实际到期日之间日期,如果不在,则返回0;
2.判断“有条件回售价格是否包含当期利息”
是:则返回“有条件回售价格”- 当期利息
否:则返回“有条件回售价格”
0:没有采集到数据,返回0
空:没有该条款,返回nil范例
setsysparam(pn_stock(), 'SH113503');
setsysparam(pn_date(), 20190403T);
return CB_ConditionalPutbackPrice ();
CB_SatisfyConditionalPutback
用途:可转债相关函数。 参数:无。 返回:处理后的结果值。
算法
如果指定日大于可转债的实际到期日,说明 判断日已经超过到期日,债券已到期,无所谓满足不满足有条件回售收盘价限制条件,返回0;
如果指定日小于开始回售日,说明还没到回售时间,不予判断是否满足有条件回售收盘价限制条件,返回0;
如果指定日在开始回售日和实际到期日之间且开始回售日和指定日之间的交易天数小于有条件回售收盘价满足天数,必然不满足有条件回售收盘价限制条件,那么返回0;
如果指定日在开始回售日和实际到期日之间且开始回售日和指定日之间的交易天数大于有条件回售收盘价满足天数,那么只需要算出期间可转债对应股票的收盘价和转股价,然后进行判断是否满足有条件回售收盘价限制条件即可范例
setsysparam(pn_stock(), 'SH113503');
setsysparam(pn_date(), 20190403T);
return CB_SatisfyConditionalPutback ();
CB_StartDayPutback
用途:可转债相关函数。 参数:无。 返回:处理后的结果值。
算法
判断“有条件回售期类型”
存续期:计息日
转股期:开始转股日
0:说明没有采集到数据,返回0
空:表示该可转债无有条件回售条款,返回nil
其他:
有条件回售期参照标准为到期日:到期日往后推OffsetMonth(有条件回售期相对参照标准偏移月份)个月份的第一个交易日
有条件回售期参照标准为发行之日:计息日往后推OffsetMonth(有条件回售期相对参照标准偏移月份)个月的第一个交易日
有条件回售期参照标准为发行结束之日:发行结束之日往后推OffsetMonth(有条件回售期相对参照标准偏移月份)个月的第一个交易日,目前不确定发行结束之日是哪个日期,故暂取计息日范例
setsysparam(pn_stock(), 'SH113503');
return CB_StartDayPutback();
CB_ConditionalRedemptionPriceInterest
用途:可转债相关函数。 参数:无。 返回:处理后的结果值。
算法
1.判断指定日是否在开始赎回日和实际到期日之间,如果否返回0,如果是,则转步骤2
2.判断“有条件赎回收盘价限制赎回价格是否包含当期利息”
是:有条件赎回收盘价限制赎回价格
否:有条件赎回收盘价限制赎回价格加上当期利息
0:面值加上当期利息
空:
有条件赎回收盘价限制赎回价格不为0:有条件赎回收盘价限制赎回价格
有条件赎回收盘价限制赎回价格为0:面值加上当期利息 范例
setsysparam(pn_stock(), 'SH113503');
setsysparam(pn_date(), 20190403T);
return CB_ConditionalRedemptionPriceInterest ();
CB_ExpiredRedemptionPrice
用途:可转债相关函数。 参数:无。 返回:处理后的结果值。
算法
调用CB_ExpiredRedemptionPriceInterest()减去最后一期利息范例
setsysparam(pn_stock(), 'SH113503');
return CB_ExpiredRedemptionPrice ();
CB_AdditionalPutbackPrice
用途:可转债相关函数。 参数:无。 返回:处理后的结果值。
算法
1.仅考虑指定日在计息日和实际到期日之间日期,如果不在,则返回0;(由于附加回售的条件,一般都是在可转债的存续期内,所以考虑计息日即可)
2.判断“附加回售价格是否包含当期利息”
是:则返回“附加回售价格”- 当期利息
否:则返回“附加回售价格加上当期利息”
0:没有附加回售条款,返回0范例
setsysparam(pn_stock(), 'SH113503');
setsysparam(pn_date(), 20190403T);
return CB_AdditionalPutbackPrice ();
CB_InterestCompensation
算法
到期赎回补偿利息=可转债持有人持有的到期转债票面金额×到期赎回利息补偿比例×偿还年限-可转债持有人持有的到期转债偿还年限内已支付利息之和
CB_BalanceRedemptionPrice
用途:可转债相关函数。 参数:无。 返回:处理后的结果值。
算法
指定日可转债的有条件赎回余额限制赎回价(不包含当期利息),指定日由系统参数指定。
1.仅考虑指定日在开始赎回日和实际到期日之间日期,如果不在,则返回0;
2.判断“有条件赎回收盘价限制赎回价格是否包含当期利息”
是:则返回“有条件赎回余额限制赎回价格”- 当期利息
否:则返回“有条件赎回余额限制赎回价格”
0:没有采集到数据,返回0
空:没有该条款,返回0范例
setsysparam(pn_stock(), 'SH113503');
setsysparam(pn_date(), 20190403T);
return CB_BalanceRedemptionPrice ();
// 返回结果:100
CB_StartDayRedemption
用途:可转债相关函数。 参数:无。 返回:处理后的结果值。
算法
判断“有条件赎回期类型”
转股期:开始转股日
0:说明没有采集到数据,返回0
其他:
有条件赎回期参照标准为发行之日:计息日往后推OffsetMonth(有条件赎回期相对参照标准偏移月份)个月份的第一个交易日
有条件赎回期参照标准为发行结束之日:发行结束之日往后推OffsetMonth(有条件赎回期相对参照标准偏移月份)个月份的第一个交易日,目前不确定发行结束之日是哪个日期,故暂取计息日范例
setsysparam(pn_stock(), 'SH113503');
return CB_StartDayRedemption();
CB_TriggerPriceRedemption
用途:可转债相关函数。 参数:无。 返回:处理后的结果值。
算法
如果指定日在开始赎回日和实际到期日之间,则返回转股价乘以有条件赎回收盘价限制比例除以100,否则,返回0范例
setsysparam(pn_stock(), 'SH113503');
setsysparam(pn_date(), 20190403T);
return CB_TriggerPriceRedemption ();
CB_ConditionalPutbackPriceInterest
用途:可转债相关函数。 参数:无。 返回:处理后的结果值。
算法
1.判断“有条件回售价格是否包含当期利息”是否为空,如果是,返回nil,否则,转步骤2
2.判断开始回售日,如果大于0,转步骤3,如果等于0,转步骤4,如果为nil,转步骤5
3.判断指定日是否在开始回售日和实际到期日之间,如果否,返回0,如果是,转步骤6
4.返回0
5.返回nil
6.判断“有条件回售价格是否包含当期利息”
是:有条件回售价格
否:有条件回售价格加上当期利息
0:面值加上当期利息范例
setsysparam(pn_stock(), 'SH113503');
setsysparam(pn_date(), 20190403T);
return CB_ConditionalPutbackPriceInterest ();
CB_AdditionalPutbackPriceInterest
用途:可转债相关函数。 参数:无。 返回:处理后的结果值。
算法
1.判断“附加回售价格是否包含当期利息”是否为空,如果是,返回nil,否则转步骤2
2.判断指定日是否在计息日和实际到期日之间,如果否,返回0,否则转步骤3
3.判断“附加回售价格是否包含当期利息”
是:附加回售价格
否:附加回售价格加上当期利息
0:面值加上当期利息范例
setsysparam(pn_stock(), 'SH113503');
setsysparam(pn_date(), 20190403T);
return CB_AdditionalPutbackPriceInterest ();
CB_SatisfyRevised
用途:可转债相关函数。 参数:无。 返回:处理后的结果值。
算法
如果指定日大于实际到期日,说明 判断日已经超过到期日,债券已到期,无所谓满足不满足下修条件,返回0;
如果指定日小于开始下修日,说明还没到下修时间,不予判断是否满足下修条件,返回0;
如果指定日在开始下修日和实际到期日之间且开始下修日和指定日之间的交易天数小于转股价向下修正收盘价满足天数,必然不满足下修条件,那么返回0;
如果指定日在开始下修日和实际到期日之间且开始下修日和指定日之间的交易天数大于转股价向下修正收盘价满足天数,那么只需要算出期间可转债对应股票的收盘价和转股价,然后进行判断是否满足下修条件即可范例
setsysparam(pn_stock(), 'SH113503');
setsysparam(pn_date(), 20190403T);
return CB_SatisfyRevised ();
CB_ConditionalRedemptionPrice
用途:可转债相关函数。 参数:无。 返回:处理后的结果值。
算法 1.仅考虑指定日在开始赎回日和实际到期日之间日期,如果不在,则返回0;
2.判断“有条件赎回收盘价限制赎回价格是否包含当期利息”
是:则返回“有条件赎回收盘价限制赎回价格”- 当期利息
否:则返回“有条件赎回收盘价限制赎回价格”
0:没有采集到数据,返回0
空:数据不确定,返回0范例
setsysparam(pn_stock(), 'SH113503');
setsysparam(pn_date(), 20190403T);
return CB_ConditionalRedemptionPrice ();
CB_TriggerPricePutback
用途:可转债相关函数。 参数:无。 返回:处理后的结果值。
算法
如果指定日在开始回售日和实际到期日之间,则返回转股价乘以有条件回售收盘价限制比例除以100,否则,返回0范例
setsysparam(pn_stock(), 'SH113503');
setsysparam(pn_date(), 20190403T);
return CB_TriggerPricePutback ();
CB_StartDayRevised
用途:可转债相关函数。 参数:无。 返回:处理后的结果值。
算法
判断“转股价向下修正期类型”
存续期:计息日
转股期:开始转股日,
0:说明没有采集到数据,返回0范例
setsysparam(pn_stock(), 'SH113503');
return CB_StartDayRevised ();
CB_BalanceRedemptionPriceInterest
用途:可转债相关函数。 参数:无。 返回:处理后的结果值。
算法
1.判断“有条件赎回余额限制赎回价格是否包含当期利息”是否为空,如果是,返回nil,否则转步骤2
2.判断指定日是否在开始赎回日和实际到期日之间,如果为否的话,返回0,否则转步骤3
3.判断“有条件赎回余额限制赎回价格是否包含当期利息”
是:有条件赎回余额限制赎回价格
否:有条件赎回余额限制赎回价格加上当期利息
0:面值加上当期利息范例
setsysparam(pn_stock(), 'SH113503');
setsysparam(pn_date(), 20190403T);
return CB_BalanceRedemptionPriceInterest ();
// 返回结果:100.18
CB_SatisfyBalanceRedemption
用途:可转债相关函数。 参数:无。 返回:处理后的结果值。
算法
如果指定日大于可转债的实际到期日,说明 判断日已经超过到期日,债券已到期,无所谓满足不满足有条件赎回余额限制条件,返回0;
如果指定日小于开始赎回日,说明还没到赎回时间,不予判断是否满足有条件赎回余额限制条件,返回0;
如果指定日在开始赎回日和实际到期日之间且未转股余额小于有条件赎回余额限制,那么返回1;范例
setsysparam(pn_stock(), 'SH113503');
setsysparam(pn_date(), 20190403T);
return CB_SatisfyBalanceRedemption ();
CB_StartDayConversion
用途:可转债相关函数。 参数:无。 返回:处理后的结果值。
算法
判断“转股开始日参照标准”
发行之日:取计息日,按照“转股开始日相对参照标准偏移月份”进行推移
发行结束之日:目前不确定发行结束之日是哪个日期,故暂取计息日,按照“转股开始日相对参照标准偏移月份” 进行推移
0:说明没有采集到数据,返回0范例
setsysparam(pn_stock(), 'SH113503');
return CB_StartDayConversion();
可转债回售结果
####### 内容
- 中间函数
- 区间
####### 中间函数
######## 内容
- bondcbsbvalueqj
######## bondcbsbvalueqj
####### 区间
######## 内容
- bondcbsbvolumeqj
######## bondcbsbvolumeqj
可转债赎回结果
####### 内容
- 中间函数
- bondcbrvolume
- 区间
####### 中间函数
######## 内容
- bondcbrvalueqj
- bondcbrvalue
######## bondcbrvalueqj
######## bondcbrvalue
####### bondcbrvolume
####### 区间
######## 内容
- bondcbrvolumeqj
######## bondcbrvolumeqj
cb_delistedbydate
Cb_getconvertbondidbystockid
用途:可转债相关函数。 参数:
返回:处理后的结果值。
范例
// 提取SH603901在2021/5/27的转债代码,指定日在市场
return CB_GetConvertBondIDByStockID("SH603901", 20210527T);
// array("SH113559")
CB_Convertible_Parity
用途:可转债相关函数。 参数:无。 返回:处理后的结果值。
范例
Setsysparam(Pn_Stock(), "SZ123002");
Setsysparam(pn_date(), 20230706T);
return CB_Convertible_Parity(); // 8.6996416
CB_GetTransactionByDate
用途:日期时间处理函数。 参数:
返回:日期或时间值。
范例
return CB_GetTransactionByDate(20231201T);
CB_ActualSatisfyRedempeDays
用途:可转债相关函数。 参数:无。 返回:处理后的结果值。
范例
Setsysparam(Pn_Stock(), "SZ123241");
Setsysparam(Pn_date(), 20250124T);
return CB_ActualSatisfyRedempeDays(); // 10
可转债引入概率蒙特卡洛估值范例
####### 内容
- TSFL_CB_MonteCarlo_Ext01
####### TSFL_CB_MonteCarlo_Ext01
用途:可转债相关函数。 参数:
返回:处理后的结果值。
范例
BondID := "SZ123207";
Endt := 20250924T;
return TSFL_CB_MonteCarlo_Ext01(BondID, Endt);
其中,价值分布为
债券派息和利率
内容
- BondLastPeriodInterest
- BondSumofInterest
- BondCashflow
- BondCashflowHistroy
BondLastPeriodInterest
算法
1.获得InfoArray(503)(债券.债券派息和利率)
2.取离当前时间最近的可转债的最后一期利息
BondSumofInterest
算法
1.获得InfoArray(503)(债券.债券派息和利率)
2.取离当前时间最近的可转债的利息之和
BondCashflow
用途:债券派息和利率相关函数。 参数:
返回:处理后的结果值。
范例
债券SH010107在20170731T的现金流
Endt := 20170731T;
Setsysparam(pn_Stock(), ”SH010107”);
return BondCashFlow(Endt);
债券SH010107在20170731T未来不含权现金流
Endt := 20170731T;
Setsysparam(pn_Stock(), ”SH010107”);
return BondCashFlow(Endt, inf);
BondCashflowHistroy
用途:债券派息和利率相关函数。 参数:
返回:处理后的结果值。
范例
stk := "BK1282337";
begt := 20190411T;
endt := 20191231T;
sp_s(pn_stock(), stk);
return BondCashflowHistroy(BegT, EndT, Option);
返回:
债券估值
内容
- bdV_AccruedInterest
- bdV_ModifiedDuration
- bdV_Convexity
bdV_AccruedInterest
用途:债券估值相关函数。 参数:
返回:处理后的结果值。
算法
(1)如果dbtype取值为0或1,返回当前系统证券和时间对应的提供商提供的应计利息,如果没有取到,出现异常,返回0;
(2)如果dbtype取值为2,返回当前系统股票以现金流算法得到的在系统时间的日终应计利息,现金流算法见函数BondAccruedInterest说明范例
// 返回“SH010107”在2018年5月27日,数据供应商为中证的债券估值-应计利息
Setsysparam(pn_Stock(), "SH010107");
SetSysParam(PN_Date(), 20180527T);
return bdV_AccruedInterest(0);
// 结果:1.3422
bdV_ModifiedDuration
用途:债券估值相关函数。 参数:
返回:处理后的结果值。
算法
(1)如果dbtype取值为0或1,返回当前系统证券和时间对应的的提供商提供的修正久期数据,如果没有该券或该日的数据,则返回0;
(2)如果dbtype取值为2,返回天软计算的当前系统债券在当前时间的修正久期,算法见BondModifiedDuration函数说明范例
// 返回“SH010107”在2018年5月27日,数据供应商为中证的债券估值-修正久期
Setsysparam(pn_Stock(), "SH010107");
SetSysParam(PN_Date(), 20180527T);
return bdV_ModifiedDuration(0);
// 结果:2.9245
bdV_Convexity
用途:债券估值相关函数。 参数:
返回:处理后的结果值。
算法
(1)如果dbtype取值为0或1,返回当前系统证券和时间对应的提供商提供的凸性数据,如果没有该券或该日的数据,则返回0;
(2)如果dbtype取值为2,返回天软计算的当前系统债券在当前时间的凸性,算法见BondConvexity函数说明范例
// 返回“SH010107”在2018年5月27日的债券估值-凸性
Setsysparam(pn_Stock(), "SH010107");
SetSysParam(PN_Date(), 20180527T);
return bdV_Convexity(0);
// 结果:5.1931
债券收益率曲线
内容
- BondTermStructureOfYieldToMaturity
- BondTermStructureOfSpotInterestRate_Curve
- BondTermStructureOfSpotInterestRate
- BondTermStructureOfForwardRate
- BondTermStructureOfYieldToMaturity_Curve
- BondTermStructureOfForwardRate_Curve
- BondTermStructureOfYieldToMaturity_EndT
- BondTermStructureOfSpotInterestRate_EndT
- BondTermStructureOfForwardRate_EndT
- BondTermStructure
- 中间函数
BondTermStructureOfYieldToMaturity
用途:债券收益率曲线相关函数。 参数:
返回:处理后的结果值。
范例
// 获取BTS000033(中证指数国债收益率曲线)在2017 - 03 - 01的10年期到期收益率
setsysparam(pn_stock(), 'BTS000033');
return BondTermStructureOfYieldToMaturity(20170301T, 10);
// 返回:3.33
BondTermStructureOfSpotInterestRate_Curve
用途:债券收益率曲线相关函数。 参数:
返回:处理后的结果值。
范例
// 获取BTS000033(中证指数国债收益率曲线)在2017 - 03 - 01到2017 - 3 - 31的10年期即期利率
setsysparam(pn_stock(), 'BTS000033');
return BondTermStructureOfSpotInterestRate_Curve(20170301T, 20170331T, 10);
// 返回:
BondTermStructureOfSpotInterestRate
用途:债券收益率曲线相关函数。 参数:
返回:处理后的结果值。
范例
// 获取BTS000033(中证指数国债收益率曲线)在2017 - 03 - 01的10年期即期利率
setsysparam(pn_stock(), 'BTS000033');
return BondTermStructureOfSpotInterestRate(20170301T, 10);
// 返回:3.36
BondTermStructureOfForwardRate
用途:债券收益率曲线相关函数。 参数:
返回:处理后的结果值。
范例
// 获取BTS000033(中证指数国债收益率曲线)在2017 - 03 - 01的10年期即期利率
setsysparam(pn_stock(), 'BTS000033');
return BondTermStructureOfForwardRate(20170301T, 10);
// 返回:4.37
BondTermStructureOfYieldToMaturity_Curve
用途:债券收益率曲线相关函数。 参数:
返回:处理后的结果值。
范例
// 获取BTS000033(中证指数国债收益率曲线)在2017 - 03 - 01到2017 - 3 - 31的10年期到期收益率
setsysparam(pn_stock(), 'BTS000033');
return BondTermStructureOfYieldToMaturity_Curve(20170301T, 20170331T, 10);
// 返回:
BondTermStructureOfForwardRate_Curve
用途:债券收益率曲线相关函数。 参数:
返回:处理后的结果值。
范例
// 获取BTS000033(中证指数国债收益率曲线)在2017 - 03 - 01到2017 - 3 - 31的10年期远期利率
setsysparam(pn_stock(), 'BTS000033');
return BondTermStructureOfForwardRate_Curve(20170301T, 20170331T, 10);
// 返回:
BondTermStructureOfYieldToMaturity_EndT
用途:债券收益率曲线相关函数。 参数:
返回:处理后的结果值。
范例
// 获取BTS000033(中证指数国债收益率曲线)在2017 - 03 - 01的到期收益率的期限结构
setsysparam(pn_stock(), 'BTS000033');
return BondTermStructureOfYieldToMaturity_EndT(20170301T);
// 返回:
BondTermStructureOfSpotInterestRate_EndT
用途:债券收益率曲线相关函数。 参数:
返回:处理后的结果值。
范例
// 获取BTS000033(中证指数国债收益率曲线)在2017 - 03 - 01的即期利率的期限结构
setsysparam(pn_stock(), 'BTS000033');
return BondTermStructureOfSpotInterestRate_EndT(20170301T);
// 返回:
BondTermStructureOfForwardRate_EndT
用途:债券收益率曲线相关函数。 参数:
返回:处理后的结果值。
范例
// 获取BTS000033(中证指数国债收益率曲线)在2017 - 03 - 01的远期利率的期限结构
setsysparam(pn_stock(), 'BTS000033');
return BondTermStructureOfForwardRate_EndT(20170301T);
// 返回:
BondTermStructure
用途:债券收益率曲线相关函数。 参数:
返回:处理后的结果值。
范例
// 获取BTS000033(中证指数国债收益率曲线)在2017 - 03 - 01的期限结构
setsysparam(pn_stock(), 'BTS000033');
return BondTermStructure(20170301T);
// 返回:
中间函数
####### 内容
- GetBondTermStructureByRemainDuration
- GetBondTermStructure
- GetBondSYLQKByTypeAndYears
####### GetBondTermStructureByRemainDuration
算法
(1)获得包含"即期利率(%)","到期收益率(%)","远期利率(%)"三个值的数组TypeArr,若以Type*-1为行标对应的在TypeArr中的值为真,TypeStr等于以Type*-1为行标对应的在TypeArr中的值,若为假,TypeStr等于"到期收益率(%)";
(2)根据MD函数和Type_的取值获得指定日债券收益率曲线数据T,并按照’期限’字段对其进行正序排序;
(3)获得数组T的长度TL;
(4)若参数RemainDuration小于或等于数组T中’期限’字段的第一个值,返回数组T中TypeStr字段的第一个值;若参数RemainDuration大于等于以TL-1为行标,’期限’为列标在数组T的值,返回以TL-1为行标,TypeStr为列标在数组T中的值;否则返回以所有行、列标为’期限’在数组T中的值为自变量,所有行、列标为TypeStr在数组T中的值为因变量,RemainDuration为插值点,运用分段线性插值所得的结果
####### GetBondTermStructure
算法
根据MD函数获得ID为"债券期限结构"的数组T,若有异常,返回0;
根据Type_的取值从数组T中获得相应的结果,返回1;
####### GetBondSYLQKByTypeAndYears
用途:债券收益率曲线相关函数。 参数:
返回:处理后的结果值。
范例
return GetBondSYLQKByTypeAndYears(20150101T, 20181231T, 10, 'BTS000033');
债券组合
内容
- pf_BasisPointValue
- pf_BondConvexity
- pf_BondModifiedDuration
- pf_BondRemainDuration
- pf_BondYieldToMaturity
pf_BasisPointValue
pf_BondConvexity
pf_BondModifiedDuration
pf_BondRemainDuration
pf_BondYieldToMaturity
可转债转股及余额
内容
- 指定日
- 区间
指定日
####### 内容
- bondcbtransferprice
- bondcbnottransfernum
- bondcbredeemnum
- BondCBMarketSizeEndT
- BondCBTransferNum
- BondCBBackTransferNum
- 中间函数
####### bondcbtransferprice
####### bondcbnottransfernum
####### bondcbredeemnum
####### BondCBMarketSizeEndT
用途:可转债转股及余额相关函数。 参数:
返回:处理后的结果值。
算法市值规模=未转股数量收盘,若在转股日前,取发行数量收盘价。范例
// "SZ123036"在2020-8-14的市值规模
SetSysParam(pn_stock(), "SZ123036");
return BondCBMarketSizeEndT(20200814T); // 结果:1409919438.2
####### BondCBTransferNum
用途:可转债转股及余额相关函数。 参数:
返回:处理后的结果值。
范例
// "SZ123036"在2020-8-14的转股数量
SetSysParam(pn_stock(), "SZ123036");
return BondCBTransferNum(20200814T); // 结果:205
####### BondCBBackTransferNum
用途:可转债转股及余额相关函数。 参数:
返回:处理后的结果值。
范例
// "SZ123036"在2020-8-14的回售数量
SetSysParam(pn_stock(), "SZ123036");
return BondCBBackTransferNum(20200814T); // 结果:0
####### 中间函数
######## 内容
- BondCBTransferValue
######## BondCBTransferValue
范例
SetSysParam(pn_stock(), "SZ123036");
return BondCBTransferValue(20201208T, '转股价');
// 结果:38.97
区间
####### 内容
- BondcbbacktransfernumQJ
- BondcbredeemnumQJ
- BondCBTransferNumQJ
- 中间函数
####### BondcbbacktransfernumQJ
####### BondcbredeemnumQJ
####### BondCBTransferNumQJ
用途:可转债转股及余额相关函数。 参数:
返回:处理后的结果值。
范例
// "SZ123036"在2020-7-14至2020-8-14区间转股数量
SetSysParam(pn_stock(), "SZ123036");
return BondCBTransferNumQJ(20200714T, 20200814T); // 结果:2694
####### 中间函数
######## 内容
- BondCBNumQJ
######## BondCBNumQJ
范例
SetSysParam(pn_stock(), "SZ123036");
return BondCBNumQJ(20201201T, 20201208T, '转股数量');
// 结果:7154449
债券指数估值
内容
- BondIVCloseDuration
- BondIVConvexity
- BondIVDuration
- BondIVMaturityYield
- BondIVQK
- BondIVQK2
- BondIVRemainDuration
BondIVCloseDuration
用途:债券指数估值相关函数。 参数:无。 返回:处理后的结果值。
范例
// "CSIH01006"中证国债在20200924的收盘价久期。
SetSysParam(pn_stock(), "CSIH01006");
SetSysParam(PN_Date(), 20200924T);
return BondIVCloseDuration(); // 结果:0
BondIVConvexity
用途:债券指数估值相关函数。 参数:无。 返回:处理后的结果值。
范例
// "CSIH01006"中证国债在20200924的凸性。
SetSysParam(pn_stock(), "CSIH01006");
SetSysParam(PN_Date(), 20200924T);
return BondIVConvexity(); // 结果:54.3261
BondIVDuration
用途:债券指数估值相关函数。 参数:无。 返回:处理后的结果值。
范例
// "CSIH01006"中证国债在20200924的久期。
SetSysParam(pn_stock(), "CSIH01006");
SetSysParam(PN_Date(), 20200924T);
return BondIVDuration(); // 结果:6.9821
BondIVMaturityYield
用途:债券指数估值相关函数。 参数:无。 返回:处理后的结果值。
范例
// "CSIH01006"中证国债在20200924的到期收益率。
SetSysParam(pn_stock(), "CSIH01006");
SetSysParam(PN_Date(), 20200924T);
return BondIVMaturityYield(); // 结果:3.0545
BondIVQK
用途:债券指数估值相关函数。 参数:
返回:处理后的结果值。
范例
// "CSIH01006"中证国债在20200914至20200924的区间债券估值数据
SetSysParam(pn_stock(), "CSIH01006");
SetSysParam(PN_Date(), 20200924T);
return BondIVQK(20200914T, 20200924T);
BondIVQK2
用途:债券指数估值相关函数。 参数:
返回:处理后的结果值。
范例
// "CSIH01006"中证国债在20200924的5日债券估值数据
SetSysParam(pn_stock(), "CSIH01006");
SetSysParam(PN_Date(), 20200924T);
return BondIVQK2(5);
BondIVRemainDuration
用途:债券指数估值相关函数。 参数:无。 返回:处理后的结果值。
范例
// "CSIH01006"中证国债在20200924的剩余期限。
SetSysParam(pn_stock(), "CSIH01006");
SetSysParam(PN_Date(), 20200924T);
return BondIVRemainDuration(); // 结果:0
中间函数
内容
- bdV_DataProvider
- BondRemainPayNumber
- BondCoupDayBS
- BondDuration
- BondCoupDaysNC
- NsharesOfConvertibleBond
- bondProvider
- NSharesOfCorporationBond
- pn_bonddataprovider
- bdV_GetFactorValue
- bdV_InternalCode
- NSharesOfGovBond
- 常用计算天数
- 其他
- BondDaysbetween
- Pn_BondStandardDate
bdV_DataProvider
BondRemainPayNumber
用途:中间函数相关函数。 参数:
返回:处理后的结果值。
算法
若交易日小于到期日,获得交易日至到期日前一天的相隔天数y,债券剩余的付息次数为y/(365/F)的取整值加1,否则债券剩余的付息次数=0范例
// 返回'BK000002'在2003年4月18日剩余的付息次数
SetSysParam(PN_Stock(), 'BK000002'); // 设置股票代码
GoalDate := IntToDate(base(502026)); // 到期日
EndT := 20030418T; // 交易日
f := base(502021); // 付息频率
return BondRemainPayNumber(GoalDate, EndT, f);
// 结果:8
BondCoupDayBS
用途:中间函数相关函数。 参数:
返回:处理后的结果值。
算法
把EndT转化为整数d,GoalDate转化为整数GoalDate;
若F=1,利用d的年份信息,GoalDate的月份和日信息组成新的日期d1,当d1>d时,当前付息期内截止到交易日的天数=365-d与d1相隔的天数;否则当前付息期内截止到交易日的天数=d与d1相隔的天数+1;
若F≠1,获取d的年份信息y,GoalDate的月份信息m和天信息dof,继续以下步骤;
当m>6时,m10 = m – 6,m20 = m;否则,m10 = m,m20 = m + 6;
利用y,m10,dOf组成日期d1,y,m20,dOf组成日期d2,若d1≤d≤d2,当前付息期内截止到交易日的天数=d与d1之间相隔的天数+1;若d< d1,当前付息期内截止到交易日的天数=365-d与d2相隔的天数;若d>d2,当前付息期内截止到交易日的天数= d2与d之间相隔的天数+1范例
// 返回'BK000002'在2003年3月18日当前付息期内截止到交易日的天数
SetSysParam(PN_Stock(), 'BK000002'); // 设置股票代码
GoalDate := IntToDate(base(502026)); // 到期日
EndT := 20030318T; // 交易日
f := base(502021); // 付息频率
return BondCoupDayBS(GoalDate, EndT, f);
// 结果:334
BondDuration
用途:中间函数相关函数。 参数:
返回:处理后的结果值。
算法
(1)获得y1=到期收益率/年y/付息频率f,c1=息票率/年C/付息频率f;
(2)债券的久期V=(1+y1)/y1-((1+y1)+T*(c1-y1))/(c1*((1+ y1)^T-1)+y1);范例
return BondDuration(0, 0.0799999982118607, 40, 0.100000001490116, 2);
// 结果:19.74
BondCoupDaysNC
用途:中间函数相关函数。 参数:
返回:处理后的结果值。
算法
(1)把EndT转化为整数d,GoalDate转化为整数GoalDate;
(2)若F=1,利用d的年份信息,GoalDate的月份和日信息组成新的日期d1,当d1>d时,交易日距下一次付息日的实际天数= d与d1相隔的天数+1;否则交易日距下一次付息日的实际天数=365-d与d1相隔的天数;
(3)若F≠1,获取d的年份信息y,GoalDate的月份信息m和天信息dof,继续以下步骤;
(4)当m>6时,m10 = m – 6,m20 = m;否则,m10 = m,m20 = m + 6;
(5)利用y,m10,dOf组成日期d1,y,m20,dOf组成日期d2,若d1≤d≤d2,交易日距下一次付息日的实际天数=d与d2之间相隔的天数+1;若d< d1,交易日距下一次付息日的实际天数=d与d1相隔的天数;若d>d2,交易日距下一次付息日的实际天数=365-( d2与d之间相隔的天数+ d1与d2之间相隔的天数)范例
// 返回'BK000002'在2003年3月18日距下一次付息日的实际天数
SetSysParam(PN_Stock(), 'BK000002'); // 设置股票代码
GoalDate := IntToDate(base(502026)); // 到期日
EndT := 20030318T; // 交易日
f := base(502021); // 付息频率
return BondCoupDaysNC(GoalDate, EndT, f);
// 结果:32
NsharesOfConvertibleBond
用途:中间函数相关函数。 参数:
返回:处理后的结果值。
算法
可转债流通股本=实际发行总额(元)/面值(元)范例
// 返回'BK000002'在2003年3月18日的可转债流通股本
SetSysParam(PN_Stock(), 'BK000002'); // 设置股票代码
EndT := 20030318T; // 截止日
return NSharesOfConvertibleBond(91, EndT);
// 结果:280000000
bondProvider
NSharesOfCorporationBond
用途:中间函数相关函数。 参数:
返回:处理后的结果值。
算法
企业债券流通股本=实际发行总额(元)/面值(元)范例
// 返回'BK000000'在2012年3月18日的企业债券流通股本
SetSysParam(PN_Stock(), 'BK000002'); // 设置股票代码
EndT := 20120318T; // 截止日
return NSharesOfCorporationBond (90, EndT);
// 结果:280000000
pn_bonddataprovider
bdV_GetFactorValue
算法
根据参数dbtype的值对当前股票的代码进行一定的变换,运用MD函数选取不同的ID获得所需要的值
bdV_InternalCode
用途:中间函数相关函数。 参数:
返回:处理后的结果值。
算法
若dbtype=0,债券内部代码=id.zz;若dbtype=1,债券内部代码=id.zd;否则债券内部代码=id范例
// 返回SH124063'的债券内部代码
return bdV_InternalCode(0, 'SH124063');
// 结果:SH124063.zz
NSharesOfGovBond
用途:中间函数相关函数。 参数:
返回:处理后的结果值。
算法
国债流通股本=实际发行总额(元)/面值(元)范例
// 返回'BK000000'在2012年3月18日的国债流通股本
SetSysParam(PN_Stock(), 'BK000000'); // 设置股票代码
return NSharesOfGovBond(0, 0);
// 结果:200000000
常用计算天数
####### 内容
- BondBeginDateNewestPayment
- BondDaysBetweenDatedandMaturityDate
- BondDaysBetweenDatedandSettlement
- BondDaysBetweenPreviousCouponandNextCoupon
- BondDaysBetweenPreviousCouponandSettlement
- BondDaysBetweenSettlementandMaturity
- BondDaysBetweenSettlementandNextCoupon
- BondEndDateNewestPayment
- BondNextCouponDate
- BondNumbersBetweenSettlementandMaturity
- BondPreviousCouponDate
- BondYearsBetweenDatedandMaturity
- BondYearsBetweenDatedandSettlement
- BondYearsBetweenSettlementandMaturity
- BondRemainDuration
####### BondBeginDateNewestPayment
####### BondDaysBetweenDatedandMaturityDate
####### BondDaysBetweenDatedandSettlement
####### BondDaysBetweenPreviousCouponandNextCoupon
####### BondDaysBetweenPreviousCouponandSettlement
####### BondDaysBetweenSettlementandMaturity
####### BondDaysBetweenSettlementandNextCoupon
####### BondEndDateNewestPayment
####### BondNextCouponDate
####### BondNumbersBetweenSettlementandMaturity
####### BondPreviousCouponDate
####### BondYearsBetweenDatedandMaturity
####### BondYearsBetweenDatedandSettlement
####### BondYearsBetweenSettlementandMaturity
####### BondRemainDuration
其他
####### 内容
- BondNumbersBetweenSettlementandFutureDay
- BondBeginOftheYear_Calculator
- BondEndOftheYear_Calculator
- BondNextCouponDate_Calculator
- BondNumbersBetween
- BondPreviousCouponDate_Calculator
- BondYearsBetween
- TEncodeDate
- TEncodeDate2
####### BondNumbersBetweenSettlementandFutureDay
####### BondBeginOftheYear_Calculator
####### BondEndOftheYear_Calculator
####### BondNextCouponDate_Calculator
####### BondNumbersBetween
####### BondPreviousCouponDate_Calculator
####### BondYearsBetween
####### TEncodeDate
用途:日期时间处理函数。 参数:
返回:日期或时间值。
算法
根据参数组合成日期,若出现异常情况,返回以参数y、m和1组成的日期或合成日期的当月的最后一天的日期范例
return TEncodeDate(2012, 2, 13);、
// 结果:40952
// 显示为日期时间:2012-02-13
####### TEncodeDate2
用途:日期时间处理函数。 参数:
返回:日期或时间值。
算法
获得参数day的年份和月份信息,根据获得信息与参数d重新组合成新的日期范例
return TEncodeDate2(20120317T, 2);
// 结果:40970
// 显示为日期时间:2012-03-02
BondDaysbetween
- bdV_DataProvider
- BondRemainPayNumber
- BondCoupDayBS
- BondDuration
- BondCoupDaysNC
- NsharesOfConvertibleBond
- bondProvider
- NSharesOfCorporationBond
- pn_bonddataprovider
- bdV_GetFactorValue
- bdV_InternalCode
- NSharesOfGovBond
- 常用计算天数
- 其他
- BondDaysbetween
- Pn_BondStandardDate
Pn_BondStandardDate
用途:日期时间处理函数。 参数:无。 返回:日期或时间值。
范例
return Pn_BondStandardDate();
// 结果:BondStandardDate
标准券折算率
内容
- BondSBCRCoverRatioEndT
- BondSBCRIsFinacingCover
- 中间函数
BondSBCRCoverRatioEndT
用途:标准券折算率相关函数。 参数:
返回:处理后的结果值。
范例
SetSysParam(pn_stock(), "SH120303");
return BondSBCRCoverRatioEndT(20201201T);
// 结果:0.93
BondSBCRIsFinacingCover
用途:标准券折算率相关函数。 参数:
返回:处理后的结果值。
范例
SetSysParam(pn_stock(), "SH120303");
return BondSBCRIsFinacingCover(20201201T);
// 结果:1
中间函数
####### 内容
- BondSBCRCoverRatioValue
####### BondSBCRCoverRatioValue
- BondSBCRCoverRatioValue
基本信息
内容
- BondConvertibleBonds2
- BondInterBankIds2
- BondRatingByEndt
- BondRatingByEndtByInstitution
BondConvertibleBonds2
用途:基本信息相关函数。 参数:无。 返回:处理后的结果值。
范例
// 所有的可转债
return BondConvertibleBonds2();
BondInterBankIds2
用途:基本信息相关函数。 参数:无。 返回:处理后的结果值。
范例
// 所有的银行间债券(包含退市)
return BondInterBankIds2();
BondRatingByEndt
用途:基本信息相关函数。 参数:
返回:处理后的结果值。
范例
// SH110073在20240819的债券评级
setsysparam(pn_stock(), 'SH110073');
return BondRatingByEndt(20240819T);
// 返回:"AAA"
BondRatingByEndtByInstitution
用途:基本信息相关函数。 参数:
返回:处理后的结果值。
范例
// SH110073在20240819联合评级的债券评级
setsysparam(pn_stock(), 'SH110073');
return BondRatingByEndtByInstitution(20240819T, "联合评级");
// 返回:"AAA"
行情单位变更日期
内容
- SZBondTradeUnitconversiondate1
SZBondTradeUnitconversiondate1
- SZBondTradeUnitconversiondate1
债券回购
内容
- GetHgInterestDay
GetHgInterestDay
用途:债券回购相关函数。 参数:
返回:处理后的结果值。
范例
return GetHgInterestDay('SZ131801', 20190429T);