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

67 KiB
Raw Blame History

债券

内容
  • 债券收益率
  • 债券敏感性指标
  • 基本情况
  • 可转债
  • 债券派息和利率
  • 债券估值
  • 债券收益率曲线
  • 债券组合
  • 可转债转股及余额
  • 债券指数估值
  • 中间函数
  • 标准券折算率
  • 基本信息
  • 行情单位变更日期
  • 债券回购
债券收益率
内容
  • 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

用途:债券收益率相关函数。 参数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

求持有到期的到期收益率

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转化为整数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范例

// 返回'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);范例

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之间相隔的天数)范例

// 返回'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);