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

57 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

范例

//取得SH010107(21国债⑺)在20110913的修正久期

SetSysParam(pn_stock(),'SH010107');

EndT:=inttodate(20110913);

return bd_AdjustedDuration(EndT);//8.689358
bd_RemainYear

范例

//取得SH010107(21国债⑺)在20110913的剩余年限(年)

SetSysParam(pn_stock(),'SH010107');

EndT:=inttodate(20110913);

return bd_RemainYear(EndT);//9.890411
bd_RemainPayNumber

范例

//取得SH010107(21国债⑺)在20110913的剩余付息次数

SetSysParam(pn_stock(),'SH010107');

EndT:=inttodate(20110913);

return bd_RemainPayNumber(EndT);//20
bd_PayPrice

范例

//取得SH010107(21国债⑺)在20110913的结算价(元)

SetSysParam(pn_stock(),'SH010107');

EndT:=inttodate(20110913);

return bd_PayPrice(EndT);//103.26
bd_YTM

范例

//取得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

//取得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

范例债券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

算法

其中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

到期收益率

####### 内容

  • 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);

ReturnbdV_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);

结果: