playbook/docs/tsl/syntax_book/function/financial/bond.md

3026 lines
67 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#### 债券
##### 内容
- 债券收益率
- 债券敏感性指标
- 基本情况
- 可转债
- 债券派息和利率
- 债券估值
- 债券收益率曲线
- 债券组合
- 可转债转股及余额
- 债券指数估值
- 中间函数
- 标准券折算率
- 基本信息
- 行情单位变更日期
- 债券回购
##### 债券收益率
###### 内容
- 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的修正久期
```tsl
SetSysParam(pn_stock(), 'SH010107');
EndT := inttodate(20110913);
return bd_AdjustedDuration(EndT); // 8.689358
```
###### bd_RemainYear
用途:债券收益率相关函数。
参数arg1按示例顺序传入
返回:处理后的结果值。
范例
取得SH010107(21国债⑺)在20110913的剩余年限(年)
```tsl
SetSysParam(pn_stock(), 'SH010107');
EndT := inttodate(20110913);
return bd_RemainYear(EndT); // 9.890411
```
###### bd_RemainPayNumber
用途:债券收益率相关函数。
参数arg1按示例顺序传入
返回:处理后的结果值。
范例
取得SH010107(21国债⑺)在20110913的剩余付息次数
```tsl
SetSysParam(pn_stock(), 'SH010107');
EndT := inttodate(20110913);
return bd_RemainPayNumber(EndT); // 20
```
###### bd_PayPrice
用途:债券收益率相关函数。
参数arg1按示例顺序传入
返回:处理后的结果值。
范例
取得SH010107(21国债⑺)在20110913的结算价(元)
```tsl
SetSysParam(pn_stock(), 'SH010107');
EndT := inttodate(20110913);
return bd_PayPrice(EndT); // 103.26
```
###### bd_YTM
用途:债券收益率相关函数。
参数arg1按示例顺序传入
返回:处理后的结果值。
范例
取得SH010107(21国债⑺)在20110913的到期收益率(%)
```tsl
SetSysParam(pn_stock(), 'SH010107');
EndT := inttodate(20110913);
return bd_YTM(EndT); // 3.919539
```
###### bd_Interest3
用途:债券收益率相关函数。
参数:无。
返回:处理后的结果值。
范例
取得SH010107(21国债⑺)的应计利息(元)
```tsl
SetSysParam(pn_stock(), 'SH010107');
return bd_Interest3(); // 0.27427
```
###### bd_AdjustedDuration3
用途:债券收益率相关函数。
参数:无。
返回:处理后的结果值。
范例
取得SH010107(21国债⑺)的修正久期
```tsl
SetSysParam(pn_stock(), 'SH010107');
return bd_AdjustedDuration3(); // 8.683337
```
###### bd_Duration3
用途:债券收益率相关函数。
参数:无。
返回:处理后的结果值。
范例
```tsl
// 取得SH010107(21国债⑺)的久期
SetSysParam(pn_stock(), 'SH010107');
return bd_Duration3(); // 9.023284
```
###### bd_YTM3
用途:债券收益率相关函数。
参数:无。
返回:处理后的结果值。
范例
取得SH010107(21国债⑺)的到期收益率(%)
```tsl
SetSysParam(pn_stock(), 'SH010107');
return bd_YTM3(); // 3.914935
```
###### bd_CoupDayBS
用途:债券收益率相关函数。
参数arg1按示例顺序传入
返回:处理后的结果值。
取得SH010107(21国债⑺)在20110913的当前付息期内截止到交易日的天数
```tsl
SetSysParam(pn_stock(), 'SH010107');
EndT := inttodate(20110913);
return bd_CoupDayBS(EndT); // 45
```
###### BondAccruedInterest
范例
获得代码SH010107在20171218T的日间应计利息-现金流算法
```tsl
Setsysparam(pn_Stock(), ”SH010107”);
Setsysparam(pn_bonddataprovider(), 2); // 数据供应商选择TS计算
Endt := 20171218T;
return BondInterest(Endt, 0);
```
获得代码SH010107在20171218T的日终应计利息-现金流算法
```tsl
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日收盘买入持有到到期的收益率
```tsl
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
用途:债券收益率相关函数。
参数arg1arg2arg3arg4arg5按示例顺序传入
返回:处理后的结果值。
算法
其中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 |
求持有到期的到期收益率
```tsl
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
若是待偿期在一年以上的到期一次还本付息债券和零息债券,到期收益率(%)-摊余成本法=待偿期在一年以上的到期一次还本付息债券和零息债券的到期收益率;
若是待偿期在一年及以内的到期一次还本付息债券,零息债和最后一个付息周期的附息债,到期收益率(%)-摊余成本法=最后付息周期的定期付息债、待偿期在一年及以内的到期一次还本付息债券和零息债券的到期收益率范例
```tsl
// 返回“BK010004”在2012年7月3日的到期收益率
Setsysparam(pn_Stock(), "BK010004");
return BondYieldToMaturity_II(100.8268, 20120703T, 0);
// 结果4.55
```
债券SH010107在20171228日以102.35买入持有到到期的收益率
```tsl
Endt := 20171228T;
price := 102.35;
Setsysparam(pn_Stock(), "SH010107");return BondYieldToMaturity_II(Endt, price);
```
债券SH010107在20171228日收盘买入持有到含权处理后的收益率
```tsl
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/偿还年限)
若债券的利率品种为递进利率,结算日票面利率为现金流表中的本期利率(%)范例
```tsl
// 返回“BK010004”在2012年7月3日的票面利率
Setsysparam(pn_Stock(), "BK000000");
return BondCouponExt(20120703T);
// 结果2.42
```
####### BondFutureValue
用途:债券收益率相关函数。
参数:无。
返回:处理后的结果值。
算法
根据债券.债券派息和利率表中的信息获取本期付息和本期付本金,到期兑付日债券本息和=本期付息+本期付本金范例
```tsl
// 返回’ BK000002的到期兑付日债券本息和
SetSysParam(PN_Stock(), 'BK000002');
return BondFutureValue();
// 结果102.8
```
####### BondAccruedInterest5
- BondCouponExt
- BondFutureValue
- BondAccruedInterest5
- MID_BondAccruedInterest
####### MID_BondAccruedInterest
- BondCouponExt
- BondFutureValue
- BondAccruedInterest5
- MID_BondAccruedInterest
###### 常用计算天数
####### 内容
- BondDaysNewestPayment
####### BondDaysNewestPayment
用途:债券收益率相关函数。
参数:
返回:处理后的结果值。
范例
```tsl
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
用途:债券敏感性指标相关函数。
参数:
返回:处理后的结果值。
范例:
```tsl
// 提取SH019405在20150630的债券净价数据
setsysparam(pn_stock(), "SH019405");
setsysparam(pn_date(), 20150630T);
return bdV_CleanPrice (0); // 数据提供商:中证
```
###### bdV_DirtyPrice
用途:债券敏感性指标相关函数。
参数:
返回:处理后的结果值。
范例:
```tsl
// 提取SH019405在20150630的债券全价数据
setsysparam(pn_stock(), "SH019405");
setsysparam(pn_date(), 20150630T);
return bdV_DirtyPrice (0); // 数据提供商:中证
```
###### bdV_YieldToMaturity
用途:债券敏感性指标相关函数。
参数:
返回:处理后的结果值。
范例:
```tsl
// 提取SH019405在20150630的到期收益率数据
setsysparam(pn_stock(), "SH019405");
setsysparam(pn_date(), 20150630T);
return bdV_YieldToMaturity (0); // 数据提供商:中证
```
###### BondConvexity
用途:债券敏感性指标相关函数。
参数:
返回:处理后的结果值。
范例债券SH010107在2018/4/8的凸性
```tsl
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市值的基点价值-持有到期
```tsl
Setsysparam(pn_Stock(), "SH010107");
Endt := 20180408T;
MV := 10000;
return BondBasisPointValue(Endt, MV); // 返回3.05
```
###### BondMacaulayDuration
用途:债券敏感性指标相关函数。
参数:
返回:处理后的结果值。
范例获得债券SH010107在2018/4/4的麦考利久期
```tsl
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的修正久期
```tsl
Setsysparam(pn_Stock(), "SH010107");
Setsysparam(pn_bonddataprovider(), 2); // 数据供应商选择TS计算
Endt := 20180408T;
return BondModifiedDuration(Endt, 0); // 返回3.05
```
###### 中间函数
####### 内容
- BondMacaulayDuration2_sub
- BondConvexity2_sub
- FinalPayinterestPeriod
####### BondMacaulayDuration2_sub
用途:进行字符串提取或替换处理。
参数:
返回:处理后的结果值。
算法
不处于最后付息周期定期付息债的久期=
范例
```tsl
// 返回“SH010107”的麦克劳林久期不处于最后付息周期的定期付息债
Setsysparam(pn_Stock(), "SH010107");
return BondMacaulayDuration2_sub(107.1642, 4.26, 2, 0.033429, 175, 18, 100, 184);
// 结果7.6
```
####### BondConvexity2_sub
用途:进行字符串提取或替换处理。
参数:
返回:处理后的结果值。
算法
不处于最后付息周期的久期=
范例
```tsl
// 返回“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范例
```tsl
// 返回“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
用途:判断条件是否成立。
参数:
返回:布尔值。
范例
```tsl
return IsBankBond('SH010107');
// 返回0不是银行间债券
```
###### bd_Maturity
用途:基本情况相关函数。
参数:无。
返回:处理后的结果值。
算法
函数首先判断当前系统证券是否是债券,如果是债券,从债券.基本信息表中获得该债券的偿还期限(年)否则返回0范例
```tsl
setsysparam(pn_stock(), 'BK1120018');
return bd_Maturity();
// 结果10
```
###### bd_InterestRateType
用途:基本情况相关函数。
参数:无。
返回:处理后的结果值。
算法
函数首先判断当前系统证券是否是债券,如果是债券,从债券.基本信息表中获得该债券的利率品种否则返回0范例
```tsl
setsysparam(pn_stock(), 'BK1120018');
return bd_InterestRateType();
// 结果:固定利率
```
###### bd_ListDate
用途:日期时间处理函数。
参数:无。
返回:日期或时间值。
算法
函数通过判断当前系统证券是否是银行间债券,如果是,则从债券.基本信息表中获得上市日,否则返回对应证券上市的第一个交易日范例
```tsl
// 返回”沪深300”的上市日
SetSysParam(pn_stock(), 'SH000300'); // 设置当前股票
return bd_ListDate();
// 结果20020104
```
###### IsCorporationBond
用途:判断条件是否成立。
参数:
返回:布尔值。
算法
首先通过判断StockID的股票类型是否是债券如果是则通过债券.基本信息表中债券种类判断是否是企业债如果是则返回1否则返回0范例
```tsl
// 判断 97国电债是否是企业债券
return IsCorporationBond('SH129801');
// 结果1
```
###### IsBond
用途:判断条件是否成立。
参数:
返回:布尔值。
算法
函数通过stocktype函数返回的证券类型判断是否是债券债券的类型值包括7,8,18范例
```tsl
// 返回” SH110003”是否是债券
return IsBond("SH110003");
// 结果1
```
###### bd_FaceValue
###### IsGovBond
用途:判断条件是否成立。
参数:
返回:布尔值。
算法
函数首先通过判断StockID的股票类型是否是债券如果是则通过债券.基本信息表中债券种类判断是否是国债如果是则返回1否则返回0范例
```tsl
// 返回” BK000201”是否是国债
return IsGovBond("BK000201");
// 结果0
```
###### bd_ActualIssueAmount
用途:基本情况相关函数。
参数:无。
返回:处理后的结果值。
算法
函数判断当前证券是否是债券,如果是,则实际发行总额=发行额×债券发行量金额单位否则返回0范例
```tsl
// 返回”BK000201”的实际发行总额(元)
SetSysParam(pn_stock(), 'BK000201'); // 设置当前证券
return bd_ActualIssueAmount();
// 结果18000000000
```
###### bd_DatedDate
用途:日期时间处理函数。
参数:无。
返回:日期或时间值。
算法
函数判断当前证券是否是债券,如果是,通过债券.基本信息表获得对应的计息日否则返回0范例
```tsl
// 返回”BK000201”的计息日
SetSysParam(pn_stock(), 'BK000201'); // 设置当前证券
return bd_DatedDate();
// 结果20000404
```
###### bd_GoalDate
用途:日期时间处理函数。
参数:无。
返回:日期或时间值。
算法
函数通过判断当前证券的股票类型,返回对应的到期日范例
```tsl
// 返回”BK000201”的到期日
SetSysParam(pn_stock(), 'BK000201'); // 设置当前证券
return bd_GoalDate ();
// 结果20100404
```
###### bd_ExpireDate
用途:日期时间处理函数。
参数:无。
返回:日期或时间值。
算法
返回bd_GoalDate (),即到期日。直接返回债券基本信息表中的到期日。范例
```tsl
// 返回”BK000201”的摘牌日
SetSysParam(pn_stock(), 'BK000201'); // 设置当前证券
return bd_ExpireDate ();
// 结果20100404
```
###### bd_PayTimes
用途:日期时间处理函数。
参数:无。
返回:日期或时间值。
算法
函数通过当前证券的数据库提供商以及股票类型的判断,返回债券基本信息表中的付息频率。范例
```tsl
// 返回”BK000201”的付息频率
SetSysParam(pn_stock(), 'BK000201'); // 设置当前证券
return bd_PayTimes();
// 结果1
```
###### bd_CouponType
用途:基本情况相关函数。
参数:无。
返回:处理后的结果值。
算法
函数通过当前股票的数据库提供商以及股票类型的判断,返回债券基本信息表中的息票类型。该字段已废弃。范例
[code]
返回”BK000201”的息票品种
SetSysParam(pn_stock(),'BK000201'); //设置当前证券
return bd_CouponType();
结果:附息
[code]
###### bd_CouponRate
用途:基本情况相关函数。
参数:无。
返回:处理后的结果值。
算法
函数判断当前证券是否是企业债或国债,如果是,通过债券.基本信息表中获得票面利率(%)否则返回0范例
```tsl
// 返回”BK000201”的票面利率
SetSysParam(pn_stock(), 'BK000000'); // 设置当前证券
return bd_CouponRate();
// 结果2.8
```
###### bd_Shares
用途:基本情况相关函数。
参数:无。
返回:处理后的结果值。
算法
债券流通股=实际发行总额(元) /面值(元)范例
```tsl
// 返回”BK000201”的债券流通股
SetSysParam(pn_stock(), 'BK000000'); // 设置当前股票
return bd_Shares ();
// 结果200000000
```
###### IsConvertibleBond
用途:判断条件是否成立。
参数:
返回:布尔值。
算法
首先通过函数stocktype判断是否是债券如果是则通过债券.基本信息表中的债券种类判断是否是可转债如果是返回1否则返回0范例
```tsl
// 返回” SZ125002”是否是可转债
return IsConvertibleBond("SZ125002");
// 结果1
```
###### Lido债券数据补充
####### 内容
- BondExtraDataExist
- bd_PayTimesOfLido
- bd_CouponTypeOfLido
- bd_InterestRateTypeOfLido
- bd_PayTimesData
- bd_InterestRateTypeData
- bd_CouponTypeData
####### BondExtraDataExist
用途:基本情况相关函数。
参数:
返回:处理后的结果值。
范例
```tsl
// 返回” SH000001”是否在数据表中存在
t := array(('SH000300', '沪深300'),
('SH000001', '上证指数'),
('SZ000001', '平安银行'));
return BondExtraDataExist(t, 'SH000001');
// 结果1
```
####### bd_PayTimesOfLido
用途:日期时间处理函数。
参数:
返回:日期或时间值。
算法
从补充的付息频率数据补充的数据见函数bd_PayTimesData中获得数据表t
判断参数BondId的记录是否存在于t中
如若存在返回在t中对应的结果否则返回1范例
```tsl
// 返回” SZ101917”的付息频率
return bd_PayTimesOfLido('SZ101917');
// 结果2
```
####### bd_CouponTypeOfLido
用途:基本情况相关函数。
参数:
返回:处理后的结果值。
算法
判断参数BondId是否是企业债券或国债若是则继续下面的步骤否则返回空值
从补充的息票品种数据补充的数据见函数bd_CouponTypeData中获得数据表t
判断参数BondId的记录是否存在于t中
如若存在返回在t对应的结果否则返回“附息”范例
```tsl
// 返回”SZ111017”的息票品种
return bd_CouponTypeOfLido('SZ111017');
// 结果:零息
```
####### bd_InterestRateTypeOfLido
用途:基本情况相关函数。
参数:
返回:处理后的结果值。
算法
(1)从补充的附息利率品种数据补充的数据见函数bd_InterestRateTypeData中获得数据表t
(2)判断参数BondId的记录是否存在于t中
(3)如若存在返回在t对应的结果否则返回“固定利率”范例
```tsl
// 返回” SZ101904”的附息利率品种
return bd_InterestRateTypeOfLido("SZ101904");
// 结果:浮动利率
```
####### bd_PayTimesData
####### bd_InterestRateTypeData
####### bd_CouponTypeData
###### bd_IfInDuration
用途:基本情况相关函数。
参数:
返回:处理后的结果值。
范例
```tsl
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面值加上最后一期利息再加上补偿利息范例
```tsl
setsysparam(pn_stock(), 'SH113503');
return CB_ExpiredRedemptionPriceInterest();
```
###### CB_IfCrossAmendDateRedemption
###### CB_IfCrossAmendDatePutback
###### CB_RevisedTriggerPrice
用途:可转债相关函数。
参数:无。
返回:处理后的结果值。
算法
如果指定日在开始下修日和实际到期日之间则返回转股价乘以转股价向下修正收盘价限制比例除以100否则返回0范例
```tsl
setsysparam(pn_stock(), 'SH113503');
setsysparam(pn_date(), 20190403T);
return CB_RevisedTriggerPrice();
```
###### CB_issueendt
算法
取发行截止日作为发行结束之日
###### CB_SatisfyConditionalRedemption
用途:可转债相关函数。
参数:无。
返回:处理后的结果值。
算法
如果指定日大于可转债的实际到期日,说明 判断日已经超过到期日债券已到期无所谓满足不满足有条件赎回收盘价限制条件返回0
如果指定日小于开始赎回日说明还没到赎回时间不予判断是否满足有条件赎回收盘价限制条件返回0
如果指定日在开始赎回日和实际到期日之间且开始赎回日和指定日之间的交易天数小于有条件赎回收盘价满足天数必然不满足有条件赎回收盘价限制条件那么返回0
如果指定日在开始赎回日和实际到期日之间且开始赎回日和指定日之间的交易天数大于有条件赎回收盘价满足天数,那么只需要算出期间可转债对应股票的收盘价和转股价,然后进行判断是否满足有条件赎回收盘价限制条件即可范例
```tsl
setsysparam(pn_stock(), 'SH113503');
setsysparam(pn_date(), 20190403T);
return CB_SatisfyConditionalRedemption();
```
###### CB_IfCrossInterestPeriodPutback
###### CB_ConditionalPutbackPrice
用途:可转债相关函数。
参数:无。
返回:处理后的结果值。
算法
1.仅考虑指定日在开始回售日和实际到期日之间日期如果不在则返回0
2.判断“有条件回售价格是否包含当期利息”
是:则返回“有条件回售价格”- 当期利息
否:则返回“有条件回售价格”
0没有采集到数据返回0
没有该条款返回nil范例
```tsl
setsysparam(pn_stock(), 'SH113503');
setsysparam(pn_date(), 20190403T);
return CB_ConditionalPutbackPrice ();
```
###### CB_SatisfyConditionalPutback
用途:可转债相关函数。
参数:无。
返回:处理后的结果值。
算法
如果指定日大于可转债的实际到期日,说明 判断日已经超过到期日债券已到期无所谓满足不满足有条件回售收盘价限制条件返回0
如果指定日小于开始回售日说明还没到回售时间不予判断是否满足有条件回售收盘价限制条件返回0
如果指定日在开始回售日和实际到期日之间且开始回售日和指定日之间的交易天数小于有条件回售收盘价满足天数必然不满足有条件回售收盘价限制条件那么返回0
如果指定日在开始回售日和实际到期日之间且开始回售日和指定日之间的交易天数大于有条件回售收盘价满足天数,那么只需要算出期间可转债对应股票的收盘价和转股价,然后进行判断是否满足有条件回售收盘价限制条件即可范例
```tsl
setsysparam(pn_stock(), 'SH113503');
setsysparam(pn_date(), 20190403T);
return CB_SatisfyConditionalPutback ();
```
###### CB_StartDayPutback
用途:可转债相关函数。
参数:无。
返回:处理后的结果值。
算法
判断“有条件回售期类型”
存续期:计息日
转股期:开始转股日
0说明没有采集到数据返回0
表示该可转债无有条件回售条款返回nil
其他:
有条件回售期参照标准为到期日到期日往后推OffsetMonth(有条件回售期相对参照标准偏移月份)个月份的第一个交易日
有条件回售期参照标准为发行之日计息日往后推OffsetMonth(有条件回售期相对参照标准偏移月份)个月的第一个交易日
有条件回售期参照标准为发行结束之日发行结束之日往后推OffsetMonth(有条件回售期相对参照标准偏移月份)个月的第一个交易日,目前不确定发行结束之日是哪个日期,故暂取计息日范例
```tsl
setsysparam(pn_stock(), 'SH113503');
return CB_StartDayPutback();
```
###### CB_ConditionalRedemptionPriceInterest
用途:可转债相关函数。
参数:无。
返回:处理后的结果值。
算法
1.判断指定日是否在开始赎回日和实际到期日之间如果否返回0如果是则转步骤2
2.判断“有条件赎回收盘价限制赎回价格是否包含当期利息”
是:有条件赎回收盘价限制赎回价格
否:有条件赎回收盘价限制赎回价格加上当期利息
0面值加上当期利息
空:
有条件赎回收盘价限制赎回价格不为0有条件赎回收盘价限制赎回价格
有条件赎回收盘价限制赎回价格为0面值加上当期利息 范例
```tsl
setsysparam(pn_stock(), 'SH113503');
setsysparam(pn_date(), 20190403T);
return CB_ConditionalRedemptionPriceInterest ();
```
###### CB_ExpiredRedemptionPrice
用途:可转债相关函数。
参数:无。
返回:处理后的结果值。
算法
调用CB_ExpiredRedemptionPriceInterest()减去最后一期利息范例
```tsl
setsysparam(pn_stock(), 'SH113503');
return CB_ExpiredRedemptionPrice ();
```
###### CB_AdditionalPutbackPrice
用途:可转债相关函数。
参数:无。
返回:处理后的结果值。
算法
1.仅考虑指定日在计息日和实际到期日之间日期如果不在则返回0由于附加回售的条件一般都是在可转债的存续期内所以考虑计息日即可
2.判断“附加回售价格是否包含当期利息”
是:则返回“附加回售价格”- 当期利息
否:则返回“附加回售价格加上当期利息”
0没有附加回售条款返回0范例
```tsl
setsysparam(pn_stock(), 'SH113503');
setsysparam(pn_date(), 20190403T);
return CB_AdditionalPutbackPrice ();
```
###### CB_InterestCompensation
算法
到期赎回补偿利息=可转债持有人持有的到期转债票面金额×到期赎回利息补偿比例×偿还年限-可转债持有人持有的到期转债偿还年限内已支付利息之和
###### CB_BalanceRedemptionPrice
用途:可转债相关函数。
参数:无。
返回:处理后的结果值。
算法
指定日可转债的有条件赎回余额限制赎回价(不包含当期利息),指定日由系统参数指定。
1.仅考虑指定日在开始赎回日和实际到期日之间日期如果不在则返回0
2.判断“有条件赎回收盘价限制赎回价格是否包含当期利息”
是:则返回“有条件赎回余额限制赎回价格”- 当期利息
否:则返回“有条件赎回余额限制赎回价格”
0没有采集到数据返回0
没有该条款返回0范例
```tsl
setsysparam(pn_stock(), 'SH113503');
setsysparam(pn_date(), 20190403T);
return CB_BalanceRedemptionPrice ();
// 返回结果100
```
###### CB_StartDayRedemption
用途:可转债相关函数。
参数:无。
返回:处理后的结果值。
算法
判断“有条件赎回期类型”
转股期:开始转股日
0说明没有采集到数据返回0
其他:
有条件赎回期参照标准为发行之日计息日往后推OffsetMonth(有条件赎回期相对参照标准偏移月份)个月份的第一个交易日
有条件赎回期参照标准为发行结束之日发行结束之日往后推OffsetMonth(有条件赎回期相对参照标准偏移月份)个月份的第一个交易日,目前不确定发行结束之日是哪个日期,故暂取计息日范例
```tsl
setsysparam(pn_stock(), 'SH113503');
return CB_StartDayRedemption();
```
###### CB_TriggerPriceRedemption
用途:可转债相关函数。
参数:无。
返回:处理后的结果值。
算法
如果指定日在开始赎回日和实际到期日之间则返回转股价乘以有条件赎回收盘价限制比例除以100否则返回0范例
```tsl
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面值加上当期利息范例
```tsl
setsysparam(pn_stock(), 'SH113503');
setsysparam(pn_date(), 20190403T);
return CB_ConditionalPutbackPriceInterest ();
```
###### CB_AdditionalPutbackPriceInterest
用途:可转债相关函数。
参数:无。
返回:处理后的结果值。
算法
1.判断“附加回售价格是否包含当期利息”是否为空如果是返回nil,否则转步骤2
2.判断指定日是否在计息日和实际到期日之间如果否返回0否则转步骤3
3.判断“附加回售价格是否包含当期利息”
是:附加回售价格
否:附加回售价格加上当期利息
0面值加上当期利息范例
```tsl
setsysparam(pn_stock(), 'SH113503');
setsysparam(pn_date(), 20190403T);
return CB_AdditionalPutbackPriceInterest ();
```
###### CB_SatisfyRevised
用途:可转债相关函数。
参数:无。
返回:处理后的结果值。
算法
如果指定日大于实际到期日,说明 判断日已经超过到期日债券已到期无所谓满足不满足下修条件返回0
如果指定日小于开始下修日说明还没到下修时间不予判断是否满足下修条件返回0
如果指定日在开始下修日和实际到期日之间且开始下修日和指定日之间的交易天数小于转股价向下修正收盘价满足天数必然不满足下修条件那么返回0
如果指定日在开始下修日和实际到期日之间且开始下修日和指定日之间的交易天数大于转股价向下修正收盘价满足天数,那么只需要算出期间可转债对应股票的收盘价和转股价,然后进行判断是否满足下修条件即可范例
```tsl
setsysparam(pn_stock(), 'SH113503');
setsysparam(pn_date(), 20190403T);
return CB_SatisfyRevised ();
```
###### CB_ConditionalRedemptionPrice
用途:可转债相关函数。
参数:无。
返回:处理后的结果值。
算法 1.仅考虑指定日在开始赎回日和实际到期日之间日期如果不在则返回0
2.判断“有条件赎回收盘价限制赎回价格是否包含当期利息”
是:则返回“有条件赎回收盘价限制赎回价格”- 当期利息
否:则返回“有条件赎回收盘价限制赎回价格”
0没有采集到数据返回0
数据不确定返回0范例
```tsl
setsysparam(pn_stock(), 'SH113503');
setsysparam(pn_date(), 20190403T);
return CB_ConditionalRedemptionPrice ();
```
###### CB_TriggerPricePutback
用途:可转债相关函数。
参数:无。
返回:处理后的结果值。
算法
如果指定日在开始回售日和实际到期日之间则返回转股价乘以有条件回售收盘价限制比例除以100否则返回0范例
```tsl
setsysparam(pn_stock(), 'SH113503');
setsysparam(pn_date(), 20190403T);
return CB_TriggerPricePutback ();
```
###### CB_StartDayRevised
用途:可转债相关函数。
参数:无。
返回:处理后的结果值。
算法
判断“转股价向下修正期类型”
存续期:计息日
转股期:开始转股日,
0说明没有采集到数据返回0范例
```tsl
setsysparam(pn_stock(), 'SH113503');
return CB_StartDayRevised ();
```
###### CB_BalanceRedemptionPriceInterest
用途:可转债相关函数。
参数:无。
返回:处理后的结果值。
算法
1.判断“有条件赎回余额限制赎回价格是否包含当期利息”是否为空如果是返回nil,否则转步骤2
2.判断指定日是否在开始赎回日和实际到期日之间如果为否的话返回0否则转步骤3
3.判断“有条件赎回余额限制赎回价格是否包含当期利息”
是:有条件赎回余额限制赎回价格
否:有条件赎回余额限制赎回价格加上当期利息
0面值加上当期利息范例
```tsl
setsysparam(pn_stock(), 'SH113503');
setsysparam(pn_date(), 20190403T);
return CB_BalanceRedemptionPriceInterest ();
// 返回结果100.18
```
###### CB_SatisfyBalanceRedemption
用途:可转债相关函数。
参数:无。
返回:处理后的结果值。
算法
如果指定日大于可转债的实际到期日,说明 判断日已经超过到期日债券已到期无所谓满足不满足有条件赎回余额限制条件返回0
如果指定日小于开始赎回日说明还没到赎回时间不予判断是否满足有条件赎回余额限制条件返回0
如果指定日在开始赎回日和实际到期日之间且未转股余额小于有条件赎回余额限制那么返回1范例
```tsl
setsysparam(pn_stock(), 'SH113503');
setsysparam(pn_date(), 20190403T);
return CB_SatisfyBalanceRedemption ();
```
###### CB_StartDayConversion
用途:可转债相关函数。
参数:无。
返回:处理后的结果值。
算法
判断“转股开始日参照标准”
发行之日:取计息日,按照“转股开始日相对参照标准偏移月份”进行推移
发行结束之日:目前不确定发行结束之日是哪个日期,故暂取计息日,按照“转股开始日相对参照标准偏移月份” 进行推移
0说明没有采集到数据返回0范例
```tsl
setsysparam(pn_stock(), 'SH113503');
return CB_StartDayConversion();
```
###### 可转债回售结果
####### 内容
- 中间函数
- 区间
####### 中间函数
######## 内容
- bondcbsbvalueqj
######## bondcbsbvalueqj
####### 区间
######## 内容
- bondcbsbvolumeqj
######## bondcbsbvolumeqj
###### 可转债赎回结果
####### 内容
- 中间函数
- bondcbrvolume
- 区间
####### 中间函数
######## 内容
- bondcbrvalueqj
- bondcbrvalue
######## bondcbrvalueqj
######## bondcbrvalue
####### bondcbrvolume
####### 区间
######## 内容
- bondcbrvolumeqj
######## bondcbrvolumeqj
###### cb_delistedbydate
###### Cb_getconvertbondidbystockid
用途:可转债相关函数。
参数:
返回:处理后的结果值。
范例
```tsl
// 提取SH603901在2021/5/27的转债代码指定日在市场
return CB_GetConvertBondIDByStockID("SH603901", 20210527T);
// array("SH113559")
```
###### CB_Convertible_Parity
用途:可转债相关函数。
参数:无。
返回:处理后的结果值。
范例
```tsl
Setsysparam(Pn_Stock(), "SZ123002");
Setsysparam(pn_date(), 20230706T);
return CB_Convertible_Parity(); // 8.6996416
```
###### CB_GetTransactionByDate
用途:日期时间处理函数。
参数:
返回:日期或时间值。
范例
```tsl
return CB_GetTransactionByDate(20231201T);
```
###### CB_ActualSatisfyRedempeDays
用途:可转债相关函数。
参数:无。
返回:处理后的结果值。
范例
```tsl
Setsysparam(Pn_Stock(), "SZ123241");
Setsysparam(Pn_date(), 20250124T);
return CB_ActualSatisfyRedempeDays(); // 10
```
###### 可转债引入概率蒙特卡洛估值范例
####### 内容
- TSFL_CB_MonteCarlo_Ext01
####### TSFL_CB_MonteCarlo_Ext01
用途:可转债相关函数。
参数:
返回:处理后的结果值。
范例
```tsl
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的现金流
```tsl
Endt := 20170731T;
Setsysparam(pn_Stock(), ”SH010107”);
return BondCashFlow(Endt);
```
债券SH010107在20170731T未来不含权现金流
```tsl
Endt := 20170731T;
Setsysparam(pn_Stock(), ”SH010107”);
return BondCashFlow(Endt, inf);
```
###### BondCashflowHistroy
用途:债券派息和利率相关函数。
参数:
返回:处理后的结果值。
范例
```tsl
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说明范例
```tsl
// 返回“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函数说明范例
```tsl
// 返回“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函数说明范例
```tsl
// 返回“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
用途:债券收益率曲线相关函数。
参数:
返回:处理后的结果值。
范例
```tsl
// 获取BTS000033中证指数国债收益率曲线在2017 - 03 - 01的10年期到期收益率
setsysparam(pn_stock(), 'BTS000033');
return BondTermStructureOfYieldToMaturity(20170301T, 10);
// 返回3.33
```
###### BondTermStructureOfSpotInterestRate_Curve
用途:债券收益率曲线相关函数。
参数:
返回:处理后的结果值。
范例
```tsl
// 获取BTS000033中证指数国债收益率曲线在2017 - 03 - 01到2017 - 3 - 31的10年期即期利率
setsysparam(pn_stock(), 'BTS000033');
return BondTermStructureOfSpotInterestRate_Curve(20170301T, 20170331T, 10);
// 返回:
```
###### BondTermStructureOfSpotInterestRate
用途:债券收益率曲线相关函数。
参数:
返回:处理后的结果值。
范例
```tsl
// 获取BTS000033中证指数国债收益率曲线在2017 - 03 - 01的10年期即期利率
setsysparam(pn_stock(), 'BTS000033');
return BondTermStructureOfSpotInterestRate(20170301T, 10);
// 返回3.36
```
###### BondTermStructureOfForwardRate
用途:债券收益率曲线相关函数。
参数:
返回:处理后的结果值。
范例
```tsl
// 获取BTS000033中证指数国债收益率曲线在2017 - 03 - 01的10年期即期利率
setsysparam(pn_stock(), 'BTS000033');
return BondTermStructureOfForwardRate(20170301T, 10);
// 返回4.37
```
###### BondTermStructureOfYieldToMaturity_Curve
用途:债券收益率曲线相关函数。
参数:
返回:处理后的结果值。
范例
```tsl
// 获取BTS000033中证指数国债收益率曲线在2017 - 03 - 01到2017 - 3 - 31的10年期到期收益率
setsysparam(pn_stock(), 'BTS000033');
return BondTermStructureOfYieldToMaturity_Curve(20170301T, 20170331T, 10);
// 返回:
```
###### BondTermStructureOfForwardRate_Curve
用途:债券收益率曲线相关函数。
参数:
返回:处理后的结果值。
范例
```tsl
// 获取BTS000033中证指数国债收益率曲线在2017 - 03 - 01到2017 - 3 - 31的10年期远期利率
setsysparam(pn_stock(), 'BTS000033');
return BondTermStructureOfForwardRate_Curve(20170301T, 20170331T, 10);
// 返回:
```
###### BondTermStructureOfYieldToMaturity_EndT
用途:债券收益率曲线相关函数。
参数:
返回:处理后的结果值。
范例
```tsl
// 获取BTS000033中证指数国债收益率曲线在2017 - 03 - 01的到期收益率的期限结构
setsysparam(pn_stock(), 'BTS000033');
return BondTermStructureOfYieldToMaturity_EndT(20170301T);
// 返回:
```
###### BondTermStructureOfSpotInterestRate_EndT
用途:债券收益率曲线相关函数。
参数:
返回:处理后的结果值。
范例
```tsl
// 获取BTS000033中证指数国债收益率曲线在2017 - 03 - 01的即期利率的期限结构
setsysparam(pn_stock(), 'BTS000033');
return BondTermStructureOfSpotInterestRate_EndT(20170301T);
// 返回:
```
###### BondTermStructureOfForwardRate_EndT
用途:债券收益率曲线相关函数。
参数:
返回:处理后的结果值。
范例
```tsl
// 获取BTS000033中证指数国债收益率曲线在2017 - 03 - 01的远期利率的期限结构
setsysparam(pn_stock(), 'BTS000033');
return BondTermStructureOfForwardRate_EndT(20170301T);
// 返回:
```
###### BondTermStructure
用途:债券收益率曲线相关函数。
参数:
返回:处理后的结果值。
范例
```tsl
// 获取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
用途:债券收益率曲线相关函数。
参数:
返回:处理后的结果值。
范例
```tsl
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
用途:可转债转股及余额相关函数。
参数:
返回:处理后的结果值。
算法市值规模=未转股数量*收盘,若在转股日前,取发行数量*收盘价。范例
```tsl
// "SZ123036"在2020-8-14的市值规模
SetSysParam(pn_stock(), "SZ123036");
return BondCBMarketSizeEndT(20200814T); // 结果1409919438.2
```
####### BondCBTransferNum
用途:可转债转股及余额相关函数。
参数:
返回:处理后的结果值。
范例
```tsl
// "SZ123036"在2020-8-14的转股数量
SetSysParam(pn_stock(), "SZ123036");
return BondCBTransferNum(20200814T); // 结果205
```
####### BondCBBackTransferNum
用途:可转债转股及余额相关函数。
参数:
返回:处理后的结果值。
范例
```tsl
// "SZ123036"在2020-8-14的回售数量
SetSysParam(pn_stock(), "SZ123036");
return BondCBBackTransferNum(20200814T); // 结果0
```
####### 中间函数
######## 内容
- BondCBTransferValue
######## BondCBTransferValue
范例
```tsl
SetSysParam(pn_stock(), "SZ123036");
return BondCBTransferValue(20201208T, '转股价');
// 结果38.97
```
###### 区间
####### 内容
- BondcbbacktransfernumQJ
- BondcbredeemnumQJ
- BondCBTransferNumQJ
- 中间函数
####### BondcbbacktransfernumQJ
####### BondcbredeemnumQJ
####### BondCBTransferNumQJ
用途:可转债转股及余额相关函数。
参数:
返回:处理后的结果值。
范例
```tsl
// "SZ123036"在2020-7-14至2020-8-14区间转股数量
SetSysParam(pn_stock(), "SZ123036");
return BondCBTransferNumQJ(20200714T, 20200814T); // 结果2694
```
####### 中间函数
######## 内容
- BondCBNumQJ
######## BondCBNumQJ
范例
```tsl
SetSysParam(pn_stock(), "SZ123036");
return BondCBNumQJ(20201201T, 20201208T, '转股数量');
// 结果7154449
```
##### 债券指数估值
###### 内容
- BondIVCloseDuration
- BondIVConvexity
- BondIVDuration
- BondIVMaturityYield
- BondIVQK
- BondIVQK2
- BondIVRemainDuration
###### BondIVCloseDuration
用途:债券指数估值相关函数。
参数:无。
返回:处理后的结果值。
范例
```tsl
// "CSIH01006"中证国债在20200924的收盘价久期。
SetSysParam(pn_stock(), "CSIH01006");
SetSysParam(PN_Date(), 20200924T);
return BondIVCloseDuration(); // 结果0
```
###### BondIVConvexity
用途:债券指数估值相关函数。
参数:无。
返回:处理后的结果值。
范例
```tsl
// "CSIH01006"中证国债在20200924的凸性。
SetSysParam(pn_stock(), "CSIH01006");
SetSysParam(PN_Date(), 20200924T);
return BondIVConvexity(); // 结果54.3261
```
###### BondIVDuration
用途:债券指数估值相关函数。
参数:无。
返回:处理后的结果值。
范例
```tsl
// "CSIH01006"中证国债在20200924的久期。
SetSysParam(pn_stock(), "CSIH01006");
SetSysParam(PN_Date(), 20200924T);
return BondIVDuration(); // 结果6.9821
```
###### BondIVMaturityYield
用途:债券指数估值相关函数。
参数:无。
返回:处理后的结果值。
范例
```tsl
// "CSIH01006"中证国债在20200924的到期收益率。
SetSysParam(pn_stock(), "CSIH01006");
SetSysParam(PN_Date(), 20200924T);
return BondIVMaturityYield(); // 结果3.0545
```
###### BondIVQK
用途:债券指数估值相关函数。
参数:
返回:处理后的结果值。
范例
```tsl
// "CSIH01006"中证国债在20200914至20200924的区间债券估值数据
SetSysParam(pn_stock(), "CSIH01006");
SetSysParam(PN_Date(), 20200924T);
return BondIVQK(20200914T, 20200924T);
```
###### BondIVQK2
用途:债券指数估值相关函数。
参数:
返回:处理后的结果值。
范例
```tsl
// "CSIH01006"中证国债在20200924的5日债券估值数据
SetSysParam(pn_stock(), "CSIH01006");
SetSysParam(PN_Date(), 20200924T);
return BondIVQK2(5);
```
###### BondIVRemainDuration
用途:债券指数估值相关函数。
参数:无。
返回:处理后的结果值。
范例
```tsl
// "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范例
```tsl
// 返回'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转化为整数dGoalDate转化为整数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 6m20 = m否则m10 = mm20 = m + 6
利用y,m10,dOf组成日期d1y,m20,dOf组成日期d2若d1≤d≤d2当前付息期内截止到交易日的天数=d与d1之间相隔的天数+1若d<
d1,当前付息期内截止到交易日的天数=365-d与d2相隔的天数若d>d2当前付息期内截止到交易日的天数=
d2与d之间相隔的天数+1范例
```tsl
// 返回'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/付息频率fc1=息票率/年C/付息频率f;
(2)债券的久期V=(1+y1)/y1-((1+y1)+T*(c1-y1))/(c1*((1+ y1)^T-1)+y1);范例
```tsl
return BondDuration(0, 0.0799999982118607, 40, 0.100000001490116, 2);
// 结果19.74
```
###### BondCoupDaysNC
用途:中间函数相关函数。
参数:
返回:处理后的结果值。
算法
(1)把EndT转化为整数dGoalDate转化为整数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 6m20 = m否则m10 = mm20 = m + 6
(5)利用y,m10,dOf组成日期d1y,m20,dOf组成日期d2若d1≤d≤d2交易日距下一次付息日的实际天数=d与d2之间相隔的天数+1若d<
d1,交易日距下一次付息日的实际天数=d与d1相隔的天数若d>d2交易日距下一次付息日的实际天数=365-(
d2与d之间相隔的天数+ d1与d2之间相隔的天数)范例
```tsl
// 返回'BK000002'在2003年3月18日距下一次付息日的实际天数
SetSysParam(PN_Stock(), 'BK000002'); // 设置股票代码
GoalDate := IntToDate(base(502026)); // 到期日
EndT := 20030318T; // 交易日
f := base(502021); // 付息频率
return BondCoupDaysNC(GoalDate, EndT, f);
// 结果32
```
###### NsharesOfConvertibleBond
用途:中间函数相关函数。
参数:
返回:处理后的结果值。
算法
可转债流通股本=实际发行总额(元)/面值(元)范例
```tsl
// 返回'BK000002'在2003年3月18日的可转债流通股本
SetSysParam(PN_Stock(), 'BK000002'); // 设置股票代码
EndT := 20030318T; // 截止日
return NSharesOfConvertibleBond(91, EndT);
// 结果280000000
```
###### bondProvider
###### NSharesOfCorporationBond
用途:中间函数相关函数。
参数:
返回:处理后的结果值。
算法
企业债券流通股本=实际发行总额(元)/面值(元)范例
```tsl
// 返回'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范例
```tsl
// 返回SH124063'的债券内部代码
return bdV_InternalCode(0, 'SH124063');
// 结果SH124063.zz
```
###### NSharesOfGovBond
用途:中间函数相关函数。
参数:
返回:处理后的结果值。
算法
国债流通股本=实际发行总额(元)/面值(元)范例
```tsl
// 返回'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组成的日期或合成日期的当月的最后一天的日期范例
```tsl
return TEncodeDate(2012, 2, 13);、
// 结果40952
// 显示为日期时间2012-02-13
```
####### TEncodeDate2
用途:日期时间处理函数。
参数:
返回:日期或时间值。
算法
获得参数day的年份和月份信息根据获得信息与参数d重新组合成新的日期范例
```tsl
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
用途:日期时间处理函数。
参数:无。
返回:日期或时间值。
范例
```tsl
return Pn_BondStandardDate();
// 结果BondStandardDate
```
##### 标准券折算率
###### 内容
- BondSBCRCoverRatioEndT
- BondSBCRIsFinacingCover
- 中间函数
###### BondSBCRCoverRatioEndT
用途:标准券折算率相关函数。
参数:
返回:处理后的结果值。
范例
```tsl
SetSysParam(pn_stock(), "SH120303");
return BondSBCRCoverRatioEndT(20201201T);
// 结果0.93
```
###### BondSBCRIsFinacingCover
用途:标准券折算率相关函数。
参数:
返回:处理后的结果值。
范例
```tsl
SetSysParam(pn_stock(), "SH120303");
return BondSBCRIsFinacingCover(20201201T);
// 结果1
```
###### 中间函数
####### 内容
- BondSBCRCoverRatioValue
####### BondSBCRCoverRatioValue
- BondSBCRCoverRatioValue
##### 基本信息
###### 内容
- BondConvertibleBonds2
- BondInterBankIds2
- BondRatingByEndt
- BondRatingByEndtByInstitution
###### BondConvertibleBonds2
用途:基本信息相关函数。
参数:无。
返回:处理后的结果值。
范例
```tsl
// 所有的可转债
return BondConvertibleBonds2();
```
###### BondInterBankIds2
用途:基本信息相关函数。
参数:无。
返回:处理后的结果值。
范例
```tsl
// 所有的银行间债券(包含退市)
return BondInterBankIds2();
```
###### BondRatingByEndt
用途:基本信息相关函数。
参数:
返回:处理后的结果值。
范例
```tsl
// SH110073在20240819的债券评级
setsysparam(pn_stock(), 'SH110073');
return BondRatingByEndt(20240819T);
// 返回:"AAA"
```
###### BondRatingByEndtByInstitution
用途:基本信息相关函数。
参数:
返回:处理后的结果值。
范例
```tsl
// SH110073在20240819联合评级的债券评级
setsysparam(pn_stock(), 'SH110073');
return BondRatingByEndtByInstitution(20240819T, "联合评级");
// 返回:"AAA"
```
##### 行情单位变更日期
###### 内容
- SZBondTradeUnitconversiondate1
###### SZBondTradeUnitconversiondate1
- SZBondTradeUnitconversiondate1
##### 债券回购
###### 内容
- GetHgInterestDay
###### GetHgInterestDay
用途:债券回购相关函数。
参数:
返回:处理后的结果值。
范例
```tsl
return GetHgInterestDay('SZ131801', 20190429T);
```