feat(skills): add tsl api reference skill

Bundle the TSL API index and markdown references under the skill, route TSL docs to use it, and update the codegen index generator to maintain the bundled data.
This commit is contained in:
csh
2026-07-07 16:36:15 +08:00
parent 4cd6b9410f
commit e1f7ce052c
267 changed files with 185908 additions and 11996 deletions
@@ -0,0 +1,374 @@
# 债券 / 基本信息
### `bdActualIssueAmount()`
实际发行总额(元),与系统证券pn_stock()有关。
返回:float
### `bdCouponRate()`
票面利率(%/年),与系统证券pn_stock()有关。
返回:float
### `bdCouponType()`
息票品种,与系统股票pn_stock()有关。
返回:string
### `bdCouponTypeOfLido(bond_id)`
息票品种。专用函数,仅个别Lido数据用户适用。
| 参数 | 类型 | 说明 |
| --------- | ------ | ------------------ |
| `bond_id` | string | 证券类型,债券代码 |
返回:string
### `bdDatedDate()`
计息日,与系统证券pn_stock()有关。
返回:datetime
### `bdExpireDate()`
摘牌日,即获取债券的到期日。与系统证券pn_stock()有关。
返回:datetime
### `bdGoalDate()`
到期日,与系统证券pn_stock()有关。
返回:datetime
### `bdIfInDuration(bond_id, end_t)`
判断债券是否在存续期
| 参数 | 类型 | 说明 |
| --------- | -------- | -------------- |
| `bond_id` | string | 证券, 债券代码 |
| `end_t` | datetime | 日期,截止日 |
返回:bool
### `bdInterestRateType()`
附息利率品种,与系统证券pn_stock()有关。
返回:string
### `bdInterestRateTypeData()`
补充的附息利率品种数据。专用函数,仅个别Lido数据用户适用
返回:array
### `bdInterestRateTypeOfLido(bond_id)`
附息利率品种。专用函数,仅个别Lido数据用户适用
| 参数 | 类型 | 说明 |
| --------- | ------ | ---------- |
| `bond_id` | string | 字符串类型 |
返回:string
### `bdListDate()`
上市日,与系统证券pn_stock()有关。
返回:any
### `bdMaturity()`
偿还期限(年),与系统证券pn_stock()有关。
返回:float
### `bdPayTimes()`
付息频率(次/年),与系统证券pn_stock()有关。
返回:any
### `bdPayTimesData()`
补充的付息频率数据。专用函数,仅个别Lido数据用户适用
返回:array
### `bdPayTimesOfLido(bond_id)`
付息频率,专用函数,仅个别Lido数据用户适用。
| 参数 | 类型 | 说明 |
| --------- | ------ | ---------- |
| `bond_id` | string | 字符串类型 |
返回:any
### `bdShares()`
债券流通股,与系统证券pn_stock()有关。
返回:float
### `bondExtraDataExist(t, bond_id)`
判断BondId是否在数据表t中。如果存在,则返回BondId在表t中的行下标;如果不存在,则返回-1。
| 参数 | 类型 | 说明 |
| --------- | ------ | ---------- |
| `t` | array | 数据表类型 |
| `bond_id` | string | 证券类型 |
返回:int
### `bondInterBankIds2()`
所有的银行间债券(包含退市)。
返回:array
### `bondRatingByEndt(endt)`
指定日最新债券评级,与系统参数(证券代码)相关。
| 参数 | 类型 | 说明 |
| ------ | -------- | ------------ |
| `endt` | datetime | 日期。截止日 |
返回:string
#### 示例
```tsl
setsysparam(pn_stock(),'SH110073');
return BondRatingByEndt(20240819T);
```
### `bondRatingByEndtByInstitution(endt, institution)`
指定日指定评级机构的债券评级,与系统参数(证券代码)相关。如果无该评级机构的评级,则返回""。
| 参数 | 类型 | 说明 |
| ------------- | -------- | -------------------- |
| `endt` | datetime | 日期。截止日 |
| `institution` | string | 字符串。评级机构名称 |
返回:string
#### 示例
```tsl
setsysparam(pn_stock(),'SH110073');
return BondRatingByEndtByInstitution(20240819T,"联合评级");
```
### `isBankBond(stock_id)`
是否银行间债券。如果是,返回1,否则返回0 用stocktype(stockid)函数进行判断,type=18表示是银行间债券。
| 参数 | 类型 | 说明 |
| ---------- | ------ | ---------------- |
| `stock_id` | string | 字符串,证券代码 |
返回:bool
### `isConvertibleBond(bond_id)`
判断BondId是否为可转债,与系统证券pn_stock()有关。
| 参数 | 类型 | 说明 |
| --------- | ------ | -------------------- |
| `bond_id` | string | 证券类型,可转债代码 |
返回:bool
### `isCorporationBond(stock_id)`
判断StockID是否是企业债券,与系统证券pn_stock()有关。
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `stock_id` | String | 证券类型,企业债券代码 |
返回:Boolean
#### 示例
```tsl
//判断 97国电债是否是企业债券
return isCorporationBond('SH129801');
//结果:1
```
### `isBond(stock_id)`
判断StockID是否是债券,与系统证券pn_stock()有关。
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `stock_id` | String | 证券类型 |
返回:Boolean
#### 示例
```tsl
//返回” SH110003”是否是债券
return isBond("SH110003");
//结果:1
```
### `isGovBond(stock_id)`
判断StockID是否是国债,与系统证券pn_stock()有关。
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `stock_id` | String | 证券类型,国债代码 |
返回:Boolean
#### 示例
```tsl
//返回” BK000201”是否是国债
return isGovBond("BK000201");
//结果:0
```
### `bondConvertibleBonds2()`
所有的可转债。
返回:Array
#### 示例
```tsl
// 所有的可转债
return bondConvertibleBonds2();
```
### `bondFutureCtdByEndt(end_t, return_option, market_id, dbtype)`
国债期货品种对应的指定日最便宜交割券,与系统证券代码相关。
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `end_t` | Date | 日期,截止日 |
| `return_option` | UserDefine | 用户自定义, 返回结果选项 |
| `market_id` | UserDefine | 用户自定义, 国债市场选项 |
| `dbtype` | UserDefine | 用户自定义, 国债估值数据来源: |
返回:String
#### 示例
```tsl
//获得TF1809在20180913对应的IRR最便宜交割券
setSysParam(pn_Stock(),"TF1809");
endt:=20180819T;
return bondFutureCtdByEndt(endt,0,1,0);
//结果:SH019542
```
### `bondFutureBasicFunc(end_t, return_option, market_id, dbtype)`
国债期货品种对应的指定日基本指标函数,与系统证券代码相关。
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `end_t` | Date | 日期,截止日 |
| `return_option` | UserDefine | 用户自定义, 返回结果选项 |
| `market_id` | UserDefine | 用户自定义, 国债市场选项 |
| `dbtype` | UserDefine | 用户自定义, 国债估值数据来源: |
返回:String
#### 示例
```tsl
//获得TF1809在20180913对应的IRR所有的指标信息数据
setSysParam(pn_Stock(),"TF1809");
endt:=20180819T;
return bondFutureBasicFunc(endt,-1,1,0);
//结果:
```
### `bondFutureBondBasicValue(end_t, bond_id, return_option, market_id, dbtype)`
国债期货品种对应的单个个券指定日指标,与系统证券代码相关。
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `end_t` | Date | 日期,截止日 |
| `bond_id` | string | 字符串,债券代码 |
| `return_option` | UserDefine | 用户自定义, 返回结果选项 |
| `market_id` | UserDefine | 用户自定义, 国债市场选项 |
| `dbtype` | UserDefine | 用户自定义, 国债估值数据来源: |
返回:Real
#### 示例
```tsl
//获得TF1809在20180913对应的基差值
setSysParam(pn_Stock(),"TF1809");
endt:=20180819T;
bond_id:="SH019553";
return bondFutureBondBasicValue(endt,bond_id,0,0);
//结果:0.822400000000002
```
### `bondFutureBasicindicators(end_t, market_id, dbtype, return_option)`
国债期货指定品种代码指定日对应的基本指标数据,与证券代码相关。
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `end_t` | Date | 日期,截止日 |
| `market_id` | UserDefine | 用户自定义, 国债市场选项 |
| `dbtype` | UserDefine | 用户自定义, 国债估值数据来源: |
| `return_option` | UserDefine | 用户自定义, 返回结果选项 |
返回:Array
#### 示例
```tsl
setSysParam(pn_Stock(),"TF1809");
endt:=20180819T;
return bondFutureBasicindicators(endt,1,0);
```
### `bondFutureBasicindicators2(end_t, return_option, market_id, dbtype)`
国债期货指定品种代码指定日对应的基本指标数据,与证券代码相关。
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `end_t` | Date | 日期,截止日 |
| `return_option` | UserDefine | 用户自定义, 返回结果选项 |
| `market_id` | UserDefine | 用户自定义, 国债市场选项 |
| `dbtype` | UserDefine | 用户自定义, 国债估值数据来源: |
返回:array
#### 示例
```tsl
TF1809在20180819日对应的国债指标信息
setSysParam(pn_Stock(),"TF1809");
endt:=20180819T;
return bondFutureBasicindicators2(endt,-1,1,0);
//结果:
```
@@ -0,0 +1,123 @@
# 债券 / 可转债转股及余额
### `bondcbbacktransfernumQj(begt, endt)`
当前债券区间回售数量,单位:股,与系统参数(证券)相关。 如果返回0,说明无相关数据。
| 参数 | 类型 | 说明 |
| ------ | -------- | -------- |
| `begt` | datetime | 开始日期 |
| `endt` | datetime | 截止日期 |
返回:float
### `bondCbMarketSizeEndT(end_t)`
指定可转债指定日市值规模,与系统参数(证券代码)相关。
| 参数 | 类型 | 说明 |
| ------- | -------- | ------------------ |
| `end_t` | datetime | 日期类型,截止日期 |
返回:float
#### 示例
```tsl
SetSysParam(pn_stock(),"SZ123036");
return BondCBMarketSizeEndT(20200814T); //结果:1409919438.2
```
### `bondcbredeemnumQj(begt, endt)`
当前债券区间赎回数量,单位:股,与系统参数(证券)相关。 如果返回0,说明无相关数据。
| 参数 | 类型 | 说明 |
| ------ | -------- | -------- |
| `begt` | datetime | 开始日期 |
| `endt` | datetime | 截止日期 |
返回:float
### `bondCbTransferNum(end_t)`
指定可转债指定日转股数量,与系统参数(证券代码)相关,单位:股。 如果返回nil,说明无相关数据。
| 参数 | 类型 | 说明 |
| ------- | -------- | ------------------ |
| `end_t` | datetime | 日期类型,截止日期 |
返回:float
#### 示例
```tsl
SetSysParam(pn_stock(),"SZ123036");
return BondCBTransferNum(20200814T); //结果:205
```
### `bondCbTransferNumQj(beg_t, end_t)`
指定可转债指定区间转股数量,与系统参数(证券代码)相关,单位:股。 如果返回0,说明无相关数据。
| 参数 | 类型 | 说明 |
| ------- | -------- | ------------------ |
| `beg_t` | datetime | 日期类型,开始日期 |
| `end_t` | datetime | 日期类型,截止日期 |
返回:float
#### 示例
```tsl
SetSysParam(pn_stock(),"SZ123036");
return BondCBTransferNumQJ(20200714T,20200814T); //结果:2694
```
### `bondcbtransferprice(endt)`
指定日转股价,单位:元/股,与系统参数(证券)相关。 如果返回nil,说明无相关数据。
| 参数 | 类型 | 说明 |
| ------ | -------- | -------- |
| `endt` | datetime | 截止日期 |
返回:float
### `bondcbnottransfernum(endt)`
指定日未转股数量,单位:股,与系统参数(证券)相关。
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `endt` | date | 截止日期 |
返回:real
### `bondcbredeemnum(endt)`
当前债券指定日赎回数量,单位:张,与系统参数(证券)相关。
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `endt` | date | 截止日期 |
返回:real
### `bondCbBackTransferNum(end_t)`
指定可转债指定日回售数量,与系统参数(证券代码)相关,单位:张。
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `end_t` | Date | 日期类型,截止日期 |
返回:Real
#### 示例
```tsl
// "SZ123036"在2020-8-14的回售数量
setSysParam(pn_stock(),"SZ123036");
return bondCbBackTransferNum(20200814T); //结果:0
```
@@ -0,0 +1,222 @@
# 债券 / 可转债
### `bondcbrvolume()`
赎回数量,与系统参数(债券代码、日期)有关 注:日期=赎回登记日
返回:int
### `bondcbrvolumeqj(begt, endt)`
区间赎回数量,与系统参数(债券代码)有关
| 参数 | 类型 | 说明 |
| ------ | -------- | -------- |
| `begt` | datetime | 开始日期 |
| `endt` | datetime | 截止日期 |
返回:int
### `cbActualSatisfyRedempeDays()`
可转债实际赎回天数;与系统代码、日期相关。 处理逻辑如下: 可转债已到期或不在赎回期内时,处理为0 转债指定日已公布赎回,且当日在生效日期内,处理为虚拟值1000(董事会决议公告日发布强赎) 转债公布不赎回,在不赎回期限内,处理为0 其它场景下,转债按照max(赎回开始日,最新不赎回截止日+1,当前日期推30-1交易日,最新下修日期+1)~系统当前日期取转债触发赎回天数。
返回:any
### `cbAdditionalPutbackPrice()`
指定日可转债的附加回售价(不包含当期利息) ,指定日由系统参数指定
返回:float
### `cbAdditionalPutbackPriceInterest()`
CB_AdditionalPutbackPriceInterest 相关函数。
返回:float
### `cbBalanceRedemptionPrice()`
有条件赎回余额限制赎回价(不包含当期利息)
返回:float
### `cbBalanceRedemptionPriceInterest()`
指定日可转债的有条件赎回余额限制赎回价(包含当期利息)
返回:float
### `cbConditionalPutbackPrice()`
指定日可转债的条件回售价(不包含当期利息),指定日由系统参数指定
返回:float
### `cbConditionalRedemptionPrice()`
指定日可转债的有条件赎回收盘价限制赎回价(不包含当期利息),指定日由系统参数指定
返回:float
### `cbConditionalRedemptionPriceInterest()`
指定日可转债的有条件赎回收盘价限制赎回价(包含当期利息) ,指定日由系统参数指定
返回:float
### `cbConvertibleParity()`
计算最新日转债的转股平价
返回:float
### `cbDelistedbydate(endt)`
截止日退市转债
| 参数 | 类型 | 说明 |
| ------ | -------- | ----------- |
| `endt` | datetime | date,截止日 |
返回:array
### `cbExpiredRedemptionPrice()`
可转债的到期赎回价(不包含利息)
返回:float
### `cbExpiredRedemptionPriceInterest()`
可转债的到期赎回价(包含利息)。
返回:float
### `cbGetTransactionByDate(end_t)`
获取指定日期市场上可交易可转债代码
| 参数 | 类型 | 说明 |
| ------- | -------- | ----------- |
| `end_t` | datetime | 日期,截止日 |
返回:array
### `cbIfCrossAmendDatePutback()`
暂认为所有可转债下修后赎回满足条件的交易日需重新计算 PS:程序当前返回0。
返回:bool
### `cbIfCrossAmendDateRedemption()`
暂认为所有可转债下修后赎回满足条件的交易日需重新计算, PS:程序当前返回0。
返回:bool
### `cbIfCrossInterestPeriodPutback()`
暂认为所有可转债在每一计息年度首次满足回售时计算交易日考虑计息年度问题 PS:程序当前返回0。
返回:bool
### `cbIfCrossInterestPeriodRedemption()`
暂认为所有可转债在每一计息年度首次满足赎回算交易日不虑计息年度问题 赎回计算日是否可以跨计息年度 1:可以 0:不可以
返回:bool
### `cbIssueendt()`
目前取的发行结束之日是发行截止日,但是发现公告中所指发行结束之日与数据采集发行截止日有差异
返回:datetime
### `cbRevisedTriggerPrice()`
指定日可转债的下修触发价,指定日由系统参数指定
返回:float
### `cbSatisfyBalanceRedemption()`
指定日可转债是否满足有条件赎回余额限制条件
返回:bool
### `cbSatisfyConditionalPutback()`
指定日是否满足有条件回售收盘价限制条件
返回:float|bool
### `cbSatisfyConditionalRedemption()`
指定日可转债是否满足有条件赎回收盘价限制条件,指定日由系统代码、日期指定。
返回:bool
### `cbSatisfyRevised()`
指定日可转债是否满足下修条件
返回:bool
### `cbStartdayconversion()`
可转债的开始转股日:推移获得的开始转股日如果为非交易日,则取其后第一个交易日
返回:datetime
### `cbStartDayPutback()`
这里的开始回售日并不是指可转债满足回售条件的第一个交易日,而是指可以实施回售的第一个交易日。
返回:datetime
### `cbStartDayRedemption()`
这里的开始赎回日并不是指可转债满足赎回条件的第一个交易日,而是指可以实施赎回的第一个交易日。
返回:datetime
### `cbStartDayRevised()`
这里的开始下修日并不是指可转债满足下修条件的第一个交易日,而是指可以实施下修的第一个交易日。
返回:datetime
### `cbTriggerPricePutback()`
指定日可转债的回售触发价
返回:float
### `cbTriggerPriceRedemption()`
指定日可转债的赎回触发价
返回:float
### `tsflCbMonteCarloExt01(bond_id, endt)`
指定日转债引入概率估值方法。
| 参数 | 类型 | 说明 |
| --------- | ------ | ---------------- |
| `bond_id` | string | 字符串,转债代码 |
| `endt` | any | 日期,截止日 |
返回:array
### `bondcbsbvolumeqj(begt, endt)`
区间回售数量,与系统参数(债券代码、日期)有关
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `begt` | TDateTime | 开始日期 |
| `endt` | TDateTime | 截止日期 |
返回:integer
@@ -0,0 +1,46 @@
# 债券 / 债券派息和利率
### `bondCashflow(begt, endt, option)`
债券在指定日或者时间区间对应的现金流数据。 备注: 债券未来现金流中调用时日期需+1,表示提取的未来现金流
| 参数 | 类型 | 说明 |
| -------- | -------- | -------- |
| `begt` | datetime | 起始日期 |
| `endt` | datetime | 截止日期 |
| `option` | int | 是否行权 |
返回:array
#### 示例
```tsl
债券SH010107在20170731T的现金流
Endt:=20170731T;
Setsysparam(pn_Stock(),”SH010107”);
Return BondCashFlow(Endt);
```
### `bondCashflowHistroy(beg_t, end_t, option)`
指定区间的历史现金流
| 参数 | 类型 | 说明 |
| -------- | ---------- | ------------------------ |
| `beg_t` | datetime | 日期,开始日 |
| `end_t` | datetime | 日期,截止日 |
| `option` | UserDefine | 用户自定义,是否考虑行权 |
返回:array
### `bondLastPeriodInterest()`
最后一期利息(公布日相关)
返回:int
### `bondSumofInterest()`
债券到期支付的利息和
返回:float
@@ -0,0 +1,96 @@
# 债券 / 废弃
### `bdCoupDaysNc(end_t)`
交易日到下一付息日之间的天数,与系统股票相关。该函数已废弃
| 参数 | 类型 | 说明 |
| ------- | -------- | ---------------- |
| `end_t` | datetime | 日期类型,交易日 |
返回:any
### `bdDuration(end_t)`
指定日久期,与系统股票相关。该函数已废弃
| 参数 | 类型 | 说明 |
| ------- | -------- | ---------------- |
| `end_t` | datetime | 日期类型,交易日 |
返回:float
### `bdInterest(end_t)`
指定日应计利息(元),与系统股票相关。该函数已废弃
| 参数 | 类型 | 说明 |
| ------- | -------- | ---------------- |
| `end_t` | datetime | 日期类型,交易日 |
返回:float
### `fhzb(beg_t, end_t)`
返回指定股票复合指标(%),该函数和证券代码、周期有关。
| 参数 | 类型 | 说明 |
| ------- | -------- | ---- |
| `beg_t` | datetime | |
| `end_t` | datetime | |
返回:float
### `jszb(beg_t, end_t)`
返回指定股票即时性指标,该函数和证券代码、周期有关。
| 参数 | 类型 | 说明 |
| ------- | -------- | ---- |
| `beg_t` | datetime | |
| `end_t` | datetime | |
返回:float
### `kdzb(beg_t, end_t)`
宽度指标(%),与系统证券pn_stock()有关。该函数已废弃。
| 参数 | 类型 | 说明 |
| ------- | -------- | ------------------ |
| `beg_t` | datetime | 日期类型,开始日期 |
| `end_t` | datetime | 日期类型,截止日期 |
返回:float
### `tdCountEx2(end_t)`
统计当前系统股票在EndT上午9点到下午4点之间交易明细中成交量大于0的记录条数,与系统证券pn_stock()有关。该函数已废弃。
| 参数 | 类型 | 说明 |
| ------- | -------- | -------- |
| `end_t` | datetime | 日期类型 |
返回:int
### `txzb(beg_t, end_t)`
弹性指标(%),与系统证券pn_stock()有关。该函数已废弃。
| 参数 | 类型 | 说明 |
| ------- | -------- | ------------------ |
| `beg_t` | datetime | 日期类型,开始日期 |
| `end_t` | datetime | 日期类型,截止日期 |
返回:float
### `sdZb(beg_t, end_t)`
返回指定股票深度指标,该函数和证券代码、周期有关。
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `beg_t` | | |
| `end_t` | | |
返回:Real
@@ -0,0 +1,18 @@
# 债券
函数数:410
| 叶子 | 文件 | 函数数 |
| --- | --- | ---: |
| 债券 / 基本信息 | [债券 / 基本信息](basic_info.md) | 32 |
| 债券 / 可转债转股及余额 | [债券 / 可转债转股及余额](cb_conversion.md) | 9 |
| 债券 / 可转债 | [债券 / 可转债](convertible_bond.md) | 33 |
| 债券 / 债券派息和利率 | [债券 / 债券派息和利率](coupon_rate.md) | 4 |
| 债券 / 废弃 | [债券 / 废弃](deprecated.md) | 9 |
| 债券 / 债券指数估值 | [债券 / 债券指数估值](index_valuation.md) | 7 |
| 债券 / 中间函数 | [债券 / 中间函数](intermediate.md) | 30 |
| 债券 / 债券 | [债券 / 债券](misc.md) | 233 |
| 债券 / 债券敏感性指标 | [债券 / 债券敏感性指标](sensitivity.md) | 13 |
| 债券 / 标准券折算率 | [债券 / 标准券折算率](standard_bond_ratio.md) | 3 |
| 债券 / 债券收益率 | [债券 / 债券收益率](yield.md) | 26 |
| 债券 / 债券收益率曲线 | [债券 / 债券收益率曲线](yield_curve.md) | 11 |
@@ -0,0 +1,113 @@
# 债券 / 债券指数估值
### `bondIvDuration()`
返回当前债券指数指定日的久期,与系统参数(证券,时间)相关。
返回:float
#### 示例
```tsl
SetSysParam(pn_stock(),"CSIH01006");
SetSysParam(PN_Date(),20200924T);
return BondIVDuration();  //结果:6.9821
```
### `bondIvMaturityYield()`
返回当前债券指数指定日的到期收益率,与系统参数(证券,时间)相关。
返回:float
#### 示例
```tsl
SetSysParam(pn_stock(),"CSIH01006");
SetSysParam(PN_Date(),20200924T);
return BondIVMaturityYield();  //结果:3.0545
```
### `bondIvqk(begt, endt)`
返回当前债券指数的区间债券估值数据,与系统参数(证券,时间)相关。
| 参数 | 类型 | 说明 |
| ------ | -------- | ------------- |
| `begt` | datetime | 日期,开始日期 |
| `endt` | datetime | 日期,截止日期 |
返回:array
#### 示例
```tsl
SetSysParam(pn_stock(),"CSIH01006");
SetSysParam(PN_Date(),20200924T);
return BondIVQK(20200914T,20200924T);
```
### `bondIvCloseDuration()`
返回当前债券指数指定日的收盘价久期,与系统参数(证券,时间)相关。
返回:REAL
#### 示例
```tsl
// "CSIH01006"中证国债在20200924的收盘价久期。
setSysParam(pn_stock(),"CSIH01006");
setSysParam(PN_Date(),20200924T);
return bondIvCloseDuration();//结果:0
```
### `bondIvConvexity()`
返回当前债券指数指定日的凸性,与系统参数(证券,时间)相关。
返回:REAL
#### 示例
```tsl
// "CSIH01006"中证国债在20200924的凸性。
setSysParam(pn_stock(),"CSIH01006");
setSysParam(PN_Date(),20200924T);
return bondIvConvexity();  //结果:54.3261
```
### `bondIvqk2(n)`
返回当前债券指数N日债券估值数据,与系统参数(证券,时间)相关。
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `n` | Integer | 整型,N日 |
返回:Array
#### 示例
```tsl
// "CSIH01006"中证国债在20200924的5日债券估值数据
setSysParam(pn_stock(),"CSIH01006");
setSysParam(PN_Date(),20200924T);
return bondIvqk2(5);
结果:
```
### `bondIvRemainDuration()`
返回当前债券指数在指定日的剩余期限,与系统参数(证券,时间)相关。
返回:REAL
#### 示例
```tsl
// "CSIH01006"中证国债在20200924的剩余期限。
setSysParam(pn_stock(),"CSIH01006");
setSysParam(PN_Date(),20200924T);
return bondIvRemainDuration(); //结果:0
```
@@ -0,0 +1,385 @@
# 债券 / 中间函数
### `bondDaysBetweenPreviousCouponandNextCoupon(settlement_date)`
上一个付息日与下一个付息日之间的天数
| 参数 | 类型 | 说明 |
| ----------------- | -------- | ------ |
| `settlement_date` | datetime | 结算日 |
返回:int
### `bondDaysBetweenPreviousCouponandSettlement(settlement_date)`
计息天数,上一个付息日与结算日之间的天数。
| 参数 | 类型 | 说明 |
| ----------------- | -------- | ------ |
| `settlement_date` | datetime | 结算日 |
返回:int
### `bondEndDateNewestPayment(settlement_date)`
当前计息年度的截止日
| 参数 | 类型 | 说明 |
| ----------------- | -------- | ------ |
| `settlement_date` | datetime | 结算日 |
返回:datetime
### `bondNumbersBetween(beg_t, end_t, frequency)`
结算日至到期日的债券付息次数(中间函数)
| 参数 | 类型 | 说明 |
| ----------- | -------- | -------------- |
| `beg_t` | datetime | 日期,开始日期 |
| `end_t` | datetime | 日期,截止日期 |
| `frequency` | int | 整数,频率 |
返回:int
### `bondNumbersBetweenSettlementandFutureDay(end_t, future_t)`
评估日与未来评估日之间的付息次数
| 参数 | 类型 | 说明 |
| ---------- | -------- | ---------- |
| `end_t` | datetime | 评估日 |
| `future_t` | datetime | 未来评估日 |
返回:int
### `bondPreviousCouponDateCalculator(settlement_date, dated_date, maturity_date)`
上一付息日(中间函数)
| 参数 | 类型 | 说明 |
| ----------------- | -------- | ------ |
| `settlement_date` | datetime | 结算日 |
| `dated_date` | datetime | 起息日 |
| `maturity_date` | datetime | 到期日 |
返回:datetime
### `bondYearsBetween(beg_t, end_t)`
两个日期之间的整年数
| 参数 | 类型 | 说明 |
| ------- | -------- | -------------- |
| `beg_t` | datetime | 日期,开始日期 |
| `end_t` | datetime | 日期,截止日期 |
返回:int
### `bondYearsBetweenDatedandSettlement(settlement_date)`
到期一次还本付息债券起息日至结算日的整年数
| 参数 | 类型 | 说明 |
| ----------------- | -------- | ------ |
| `settlement_date` | datetime | 结算日 |
返回:int
### `tEncodeDate(y, m, d)`
年月日组合成日期
| 参数 | 类型 | 说明 |
| ---- | ---- | -------- |
| `y` | int | 整数,年 |
| `m` | int | 整数,月 |
| `d` | int | 整数,日 |
返回:TDataTime
### `tEncodeDate2(day, d)`
日期与日重组
| 参数 | 类型 | 说明 |
| ----- | --------- | -------------- |
| `day` | TDataTime | 日期类型,日期 |
| `d` | int | 整数,日 |
返回:TDataTime
### `bondRemainPayNumber(goal_date, end_t, f)`
债券剩余的付息次数,与系统股票相关
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `goal_date` | TDataTime | 日期类型,到期日 |
| `end_t` | TDataTime | 日期类型,交易日 |
| `f` | Int | 整数类型,付息频率 |
返回:Integer
#### 示例
```tsl
//返回'BK000002'在2003年4月18日剩余的付息次数
setSysParam(PN_Stock(),'BK000002');  //设置股票代码
goal_date:=intToDate(base(502026));  //到期日
end_t:=20030418T;     //交易日
f:=base(502021);     //付息频率
return bondRemainPayNumber(goal_date,end_t,f);
//结果:8
```
### `bondCoupDayBs(goal_date, end_t, f)`
当前付息期内截止到交易日的天数,与系统股票相关
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `goal_date` | TDataTime | 日期类型,到期日 |
| `end_t` | TDataTime | 日期类型,交易日 |
| `f` | Int | 整数类型,付息频率 |
返回:Integer
#### 示例
```tsl
//返回'BK000002'在2003年3月18日当前付息期内截止到交易日的天数
setSysParam(PN_Stock(),'BK000002');  //设置股票代码
goal_date:=intToDate(base(502026));  //到期日
end_t:=20030318T;     //交易日
f:=base(502021);     //付息频率
return bondCoupDayBs(goal_date,end_t,f);
//结果:334
```
### `bondDuration(bond_type, y, t, c, f)`
债券的久期,与系统股票相关
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `bond_type` | Int | 用户自定义,债券类型,其取值如下: |
| `y` | Real | 实数,到期收益率/年 |
| `t` | Real | 实数,到期支付期 |
| `c` | Real | 实数,息票率/年 |
| `f` | Int | 整数,付息频率 |
返回:Real
#### 示例
```tsl
return bondDuration(0,0.0799999982118607,40,0.100000001490116,2);
//结果:19.74
```
### `bondProvider()`
债券数据来源系统参数
返回:Real
### `bondDaysBetweenDatedandMaturityDate()`
零息债券起息日到到期日的实际天数
返回:Integer
### `bondDaysBetweenDatedandSettlement(settlement_date)`
零息债券起息日到结算日的实际天数
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `settlement_date` | TDateTime | 结算日 |
返回:Integer
### `bondDaysBetweenSettlementandMaturity(settlement_date)`
结算日至到期日的剩余天数
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `settlement_date` | TDateTime | 结算日 |
返回:Integer
### `bondDaysBetweenSettlementandNextCoupon(settlement_date)`
结算日至下一个付息日的计息天数
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `settlement_date` | TDateTime | 结算日 |
返回:Integer
### `bondNextCouponDate(settlement_date)`
结算日对应的下一个付息日
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `settlement_date` | TDateTime | 结算日 |
返回:TDateTime
### `bondNumbersBetweenSettlementandMaturity(settlement_date)`
剩余付息次数,结算日至到期日剩余付息次数。
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `settlement_date` | TDateTime | 结算日 |
返回:Real
### `bondPreviousCouponDate(settlement_date)`
结算日对应的上一个付息日
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `settlement_date` | TDateTime | 结算日 |
返回:TDateTime
### `bondYearsBetweenDatedandMaturity()`
起息日到到期日的整年数
返回:Integer
### `bondYearsBetweenSettlementandMaturity(settlement_date)`
结算日至到期日剩余整年数
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `settlement_date` | TDateTime | 结算日 |
返回:Integer
### `bondRemainDuration(settlement_date)`
结算日至到期日的剩余期限(单位:年)
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `settlement_date` | TDateTime | 结算日 |
返回:Real
### `bondBeginDateNewestPayment(settlement_date)`
当前计息年度的起始日,根据债券的起息日和结算日计算
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `settlement_date` | TDateTime | 结算日 |
返回:TDateTime
### `bondPayMentByEndt(bondarr, endt)`
债券数组在指定日是否有付息以及相应的数据
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `bondarr` | Array | 一维数组,债券数组 |
| `endt` | TDateTime | 日期型时间,截止日 |
返回:TableArray
#### 示例
```tsl
bondarr:=array('SH196237','SZ101516','SH175901');
endt:=intToDate(20230116);
return bondPayMentByEndt(bondarr,endt);
//结果
```
### `getBondMaturityTradeData(endt, tpgp)`
债券到期兑付本金转化为交易数据
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `endt` | TDateTime | 日期型时间,截止日 |
| `tpgp` | TableArray | 数据表类型,昨持仓 |
返回:TableArray
#### 示例
```tsl
end_t:=intToDate(20170613);
tpgp:=array(
("截止日":42734.0,"代码":"BK078020","方向":1.0,"乘数":1.0,"保证金比例(%)":100.0,"保证金比例II(%)":nil,"数量":1330.0,"收盘":103.68,"市值":137899.32,"保证金占用":137899.32,"占净值比例(%)":0.14,"总成本":134984.59,"成本价":101.49,"浮动盈亏":2914.73,"浮盈率(%)":2.16,"证券类别":18.0,"行业名称":0.0),
("截止日":42734.0,"代码":"BK030014","方向":1.0,"乘数":1.0,"保证金比例(%)":100.0,"保证金比例II(%)":nil,"数量":25131.0,"收盘":76.76,"市值":1929151.06,"保证金占用":1929151.06,"占净值比例(%)":1.9,"总成本":1895204.27,"成本价":75.41,"浮动盈亏":33946.78,"浮盈率(%)":1.79,"证券类别":18.0,"行业名称":0.0)
);
return getBondMaturityTradeData(end_t,tpgp);
//结果
```
### `bondDataCheck(end_t)`
债券是否上市,与系统参数(债券代码)相关。
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `end_t` | TDateTime | 截止日期。 |
返回:Integer
#### 示例
```tsl
setSysParam(PN_Stock(),"SH127352");
return bondDataCheck(20180101T);
//结果:1
```
### `bondInterest(face_value, legal_coupon_rate, goal_date, end_t, f)`
债券应计利息。
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `face_value` | Real | 实数。面值。 |
| `legal_coupon_rate` | Real | 实数。票面利率。 |
| `goal_date` | TDateTime | 日期。到期日。 |
| `end_t` | TDateTime | 日期。截止日期。 |
| `f` | Integer | 整数。付息频率。 |
返回:Real
#### 示例
```tsl
return bondInterest(100,0.08,20101101T,20101010T,1);
//结果:7.5178
```
### `bondNegotiableShares(bond_id)`
债券流通股。
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `bond_id` | String | 字符串。债券代码。 |
返回:Real
#### 示例
```tsl
return bondNegotiableShares("SH120102");
```
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,205 @@
# 债券 / 债券敏感性指标
### `bondBasisPointValue(settlement_date, market_value, option)`
指定日期的债券基点价值 久期的另外一个理解:当到期收益率变化100个bps的时候,久期大致等于债券价格的百分比变化。假设:久期=7.2,表示当到期收益率变化100个bps的时候,债券价格大致变化7.2%。 基点价值,是指利率变动一个基点(1bps)债券价格的变动情况。即:指到期收益率每变化一个基点时引起的债券价格的绝对变动额,也就是0.01个百分点(1个bps)时,债券价格的变动值 其中: Duration:债券Macauley久期 MV: 债券市值 要说明的是:此方法是一种近似算法。稍微准确点算法,应该是按照债券久期计算方法: 按照债券全价PV0、票面利率、剩余期限等,计算债券到期收益率y 假设y+0.01%,计算债券全价PV+和债券价格变动 假设y-0.01%,计算债券全价PV-和债券价格变动 一般而言,当y+/-0.01%时,债券的全价变化不大,且。近似可取 按照基点价值的定义
| 参数 | 类型 | 说明 |
| ----------------- | -------- | -------------- |
| `settlement_date` | datetime | 日期,结算日 |
| `market_value` | float | 实数,债券市值 |
| `option` | int | 是否行权 |
返回:float
#### 示例
```tsl
债券SH010107在指定日2018/4/8持有10000市值的基点价值-持有到期
Setsysparam(pn_Stock(),"SH010107");
Endt:=20180408T;
MV:=10000;
Return BondBasisPointValue(Endt,MV); //返回3.05
```
### `bondConvexity(settlement_date, option)`
指定日债券的凸性。在不设置数据供应商的情况下,默认先调用中证数据,没有值时再调用TS算法处理。若直接调用TS算法,设置供应商pn\_ bonddataprovider()为2.
| 参数 | 类型 | 说明 |
| ----------------- | -------- | -------- |
| `settlement_date` | datetime | 结算日期 |
| `option` | int | 是否行权 |
返回:float
#### 示例
```tsl
债券SH010107在2018/4/8的凸性
Setsysparam(Pn_Stock(),"SH010107");
Setsysparam(pn_bonddataprovider(),2);//数据供应商选择TS计算
Endt:=20180408T;
Return BondConvexity(Endt);//持有到期凸性 返回12.23
```
### `bondConvexity1(settlementdate, cashflow, y)`
最后付息周期、到期一次还本付息、零息债券的凸性指标
| 参数 | 类型 | 说明 |
| ---------------- | -------- | -------------- |
| `settlementdate` | datetime | 结算日期 |
| `cashflow` | array | 债券现金流 |
| `y` | float | 债券到期收益率 |
返回:float
### `bondConvexity2(endt, cash_f_low, pv, f, y)`
规则付息且非最后付息周期债券的凸性底层算法函数
| 参数 | 类型 | 说明 |
| ------------ | -------- | ---------- |
| `endt` | datetime | 指定日期 |
| `cash_f_low` | array | 现金流数据 |
| `pv` | float | 现值 |
| `f` | int | 频率 |
| `y` | float | 到期收益率 |
返回:float
### `bondConvexity2Sub(pv, c, f, y, d, n, m, ts)`
凸性(不处于最后付息周期的定期付息债),与系统证券pn_stock()有关。
| 参数 | 类型 | 说明 |
| ---- | ----- | ------------------------------------------------------ |
| `pv` | float | 实数,债券全价 |
| `c` | float | 实数,票面年利息 |
| `f` | any | 整数,年付息频率 |
| `y` | float | 实数,到期收益率 |
| `d` | any | 整数,债券结算日至下一最近付息日之间的实际天数 |
| `n` | any | 整数,结算日至到期兑付日的债券付息次数(剩余付息次数) |
| `m` | float | 实数,债券面值 |
| `ts` | any | 整数,当前付息周期的实际天数 |
返回:float
### `bondConvexity3(settlementdate, cash_flow, pv, y)`
凸性(不处于最后付息周期的定期付息债)
| 参数 | 类型 | 说明 |
| ---------------- | -------- | ---------------- |
| `settlementdate` | datetime | 日期。指定日期 |
| `cash_flow` | array | 数组。债券现金流 |
| `pv` | float | 实数。债券全价 |
| `y` | float | 实数。到期收益率 |
返回:float
### `bondMacaulayDuration1(settlement_date)`
到期一次还本付息、零息或者最后付息周期的麦考利久期
| 参数 | 类型 | 说明 |
| ----------------- | -------- | ------------------------------------------------- |
| `settlement_date` | datetime | 结算日期;CashFLow:债券现金流,字段见现金流返回值 |
返回:float
### `bondModifiedConvexity(settlement_date, option)`
修正凸性,和BondConvexity处理一样,很多函数调用当前这个函数接口,所以保存两个凸性函数。 类似于修正久期计算方法,修正凸性 其中: f: 年付息频率 y : 到期收益率 :凸性
| 参数 | 类型 | 说明 |
| ----------------- | -------- | -------- |
| `settlement_date` | datetime | 结算日 |
| `option` | int | 是否行权 |
返回:float
### `bondModifiedDuration(settlementdate, option)`
指定日债券的修正久期。在不设置数据供应商的情况下,默认先调用中证数据,没有值时再调用TS算法处理。若直接调用TS算法,设置供应商pn\_ bonddataprovider()为2。
| 参数 | 类型 | 说明 |
| ---------------- | -------- | -------- |
| `settlementdate` | datetime | 结算日 |
| `option` | int | 是否行权 |
返回:float
#### 示例
```tsl
债券SH010107在2018/4/8的修正久期
Setsysparam(pn_Stock(),"SH010107");
Setsysparam(pn_bonddataprovider(),2);//数据供应商选择TS计算
Endt:=20180408T;
Return BondModifiedDuration(Endt,0);// 返回:3.05
```
### `bondMacaulayDuration(settlement_date, option)`
债券麦克劳林久期
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `settlement_date` | TdateTime | 指定日 |
| `option` | Int | 是否行权 |
返回:Real
#### 示例
```tsl
获得债券SH010107在2018/4/4的麦考利久期
setSysParam(pn_Stock(),"SH010107");
setSysParam(pn_bonddataprovider(),2);//数据供应商选择TS计算
endt:=20180404T;
return bondMacaulayDuration(endt);//麦考利久期,返回3.12
```
### `bondMacaulayDuration2(settlement_date)`
付息周期规则且非最后周期付息周期的债券的麦考利久期中间函数。
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `settlement_date` | TdateTime | 结算日期 |
返回:Real
### `finalPayinterestPeriod(settlement_date)`
判断当前证券是否是最后付息周期的定期付息债或到期一次还本付息债券或零息债券,与系统证券pn_stock()有关。
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `settlement_date` | TDateTime | 日期类型,结算日 |
返回:Integer
#### 示例
```tsl
//返回“BK000000”在2012年7月3日是否是最后付息周期的定期付息债或到期一次还本付息债券或零息债券
setSysParam(pn_Stock(),"BK000000");
return finalPayinterestPeriod(20120703T);
//结果:1
```
### `bondMacaulayDuration3(settlementdate, cash_flow, pv, y)`
麦克劳林久期(不处于最后付息周期的定期付息债)_不规则现金流
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `settlementdate` | TDateTime | 日期。指定日期 |
| `cash_flow` | Array | 数组。现金流 |
| `pv` | Real | 实数。债券全价 |
| `y` | Real | 实数。到期收益率 |
返回:Real
@@ -0,0 +1,45 @@
# 债券 / 标准券折算率
### `bondSbcrCoverRatioEndT(end_t)`
指定日标准券折算率,与系统参数(证券)相关。如果返回0,说明无相应的开始适用日和结束适用日或当前债券已到期。
| 参数 | 类型 | 说明 |
| ------- | -------- | -------------- |
| `end_t` | datetime | 日期。截止日期 |
返回:float
#### 示例
```tsl
SetSysParam(pn_stock(),"SH120303");
return BondSBCRCoverRatioEndT(20201201T);
```
### `bondSbcrCoverRatioValue(end_t)`
与系统参数(证券)相关。如果返回array(),说明无相关数据。
| 参数 | 类型 | 说明 |
| ------- | -------- | -------------- |
| `end_t` | datetime | 日期。截止日期 |
返回:any
### `bondSbcrIsFinacingCover(end_t)`
指定日是否可融资折算,与系统参数(证券)相关。如果返回0,说明无相应的开始适用日和结束适用日或当前债券已到期。
| 参数 | 类型 | 说明 |
| ------- | -------- | -------------- |
| `end_t` | datetime | 日期。截止日期 |
返回:int
#### 示例
```tsl
SetSysParam(pn_stock(),"SH120303");
return BondSBCRIsFinacingCover(20201201T);
```
@@ -0,0 +1,326 @@
# 债券 / 债券收益率
### `bdAdjustedDuration(end_t, return_value)`
返回指定债券指定日修正久期,该函数和证券代码有关。
| 参数 | 类型 | 说明 |
| -------------- | -------- | ------------------ |
| `end_t` | datetime | 时间区间的截止日期 |
| `return_value` | float | 修正久期 |
返回:float
### `bdCoupDayBs(end_t, return_value)`
返回指定债券当前付息期内截止到交易日的天数,该函数和证券代码有关。
| 参数 | 类型 | 说明 |
| -------------- | -------- | ------------------------------ |
| `end_t` | datetime | 时间区间的截止日期 |
| `return_value` | any | 当前付息期内截止到交易日的天数 |
返回:float
### `bdDuration3(return_value)`
返回指定债券久期,该函数和证券代码有关。
| 参数 | 类型 | 说明 |
| -------------- | ----- | -------- |
| `return_value` | float | 债券久期 |
返回:float
### `bdRemainPayNumber(end_t, return_value)`
返回指定债券指定日剩余付息次数,该函数和证券代码有关。
| 参数 | 类型 | 说明 |
| -------------- | -------- | -------------------- |
| `end_t` | datetime | 时间区间的截止日期。 |
| `return_value` | float | 指定日剩余付息次数 |
返回:float
### `bdRemainYear(end_t, return_value)`
返回指定债券指定日剩余年限(年),该函数和证券代码有关。
| 参数 | 类型 | 说明 |
| -------------- | -------- | ------------------ |
| `end_t` | datetime | 时间区间的截止日期 |
| `return_value` | float | 指定日剩余年限(年) |
返回:float
### `bdYtm3()`
返回指定债券到期收益率(%),该函数和证券代码有关。
返回:float
### `bondAccruedInterest(option, model_method)`
指定日债券的应计利息。在不设置数据供应商的情况下,默认先调用中证数据,没有值时再调用TS算法处理。若直接调用TS算法,设置供应商pn\_ bonddataprovider()为2。 应计利息是指从上次付息日到结算日(购买日)债券所应该支付的应计利息。针对不同的债券,应付利息采取不同的算法: 定期付息应计利息,见模型BondAccruedInterest1说明 到期一次还本付息应计利息,见模型BondAccruedInterest2说明 零息债券应计利息,见模型BondAccruedInterest3说明 此模型为常见债券计算应付利息的总接口
| 参数 | 类型 | 说明 |
| -------------- | -------- | ---------------- |
| `option` | datetime | 函数返回结果类型 |
| `model_method` | int | 算法模型 |
返回:float
#### 示例
```tsl
获得代码SH010107在20171218T的日间应计利息-现金流算法
Setsysparam(pn_Stock(),”SH010107”);
Setsysparam(pn_bonddataprovider(),2);//数据供应商选择TS计算
Endt:=20171218T;
Return BondInterest(Endt,0);
```
### `bondAccruedInterest1(par, coupon, f, t, ts)`
银行间债券周期性付息的应计利息中间函数。
| 参数 | 类型 | 说明 |
| -------- | ----- | -------------------------------------------------------------------------------------------------------------------- |
| `par` | float | 实数,剩余本金 |
| `coupon` | float | 本期票面利率(%) |
| `f` | int | 年付息频率 |
| `t` | int | 计息日到结算日的实际天数(含2月29) |
| `ts` | any | 当前周期的实际天数(算头不算尾,周期不是完整周期时表示的是虚拟的下个付息日(计息日为基准)与上个付息日的天数 含2月29) |
返回:float
### `bondAccruedInterest2(par, coupon, k, ty)`
银行间债券到期一次还本付息的应计利息
| 参数 | 类型 | 说明 |
| -------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `par` | float | 面值 |
| `coupon` | float | 票面利率(%),本期利率(%) |
| `k` | int | 计息日到结算日的整年数(按实际天数处理,计息日为基准);:上一理论付息日(计息日为基准按照周期性付息频率为1处理的上个付息日)到结算日的实际天数(含2月29) |
| `ty` | int | 本期年度计息天数(以计息日为基准的年度天数含2月29 |
返回:float
### `bondAccruedInterest3(par, pd)`
零息债券的应计利息中间函数
| 参数 | 类型 | 说明 |
| ----- | ----- | ---------------------------------------------------------------------------------------- |
| `par` | float | 实数,面值 |
| `pd` | float | 实数,债券发行价;T1:整数,起息日至到期兑付日的实际天数;:整数,起息日至结算日的实际天数 |
返回:float
### `bondAccruedInterest4(settlement_date)`
固定利率债券的应计利息
| 参数 | 类型 | 说明 |
| ----------------- | -------- | ------ |
| `settlement_date` | datetime | 结算日 |
返回:float
### `bondAccruedInterest5(par, coupon, t)`
交易所债券-周期性付息或者到期一次还本付息的应计利息
| 参数 | 类型 | 说明 |
| -------- | ----- | ----------------- |
| `par` | float | 实数。剩余本金 |
| `coupon` | float | 实数。本期利率(%) |
| `t` | int | 整数。已计息天数 |
返回:float
### `bondCouponExt(settlement_date)`
债券-结算日票面利率,与系统股票pn_stock()有关
| 参数 | 类型 | 说明 |
| ----------------- | -------- | ---------------- |
| `settlement_date` | datetime | 日期类型,结算日 |
返回:float
#### 示例
```tsl
Setsysparam(pn_Stock(),"BK000000");
return BondCouponExt(20120703T);
```
### `bondDaysNewestPayment(settlement_date, option)`
当前计息年度的实际天数,与系统参数(证券代码)相关。
| 参数 | 类型 | 说明 |
| ----------------- | -------- | --------------------------- |
| `settlement_date` | datetime | 日期。结算日 |
| `option` | int | 用户自定义。方法,取值如下: |
返回:int
#### 示例
```tsl
Setsysparam(pn_Stock(),"BK010004");
return BondDaysNewestPayment(20120703T,1);
```
### `bondDirtyPrice(settlement_date)`
债券全价 全价交易是指债券价格中把应计利息包含在债券报价中的债券交易。应计利息是指从上次付息日到结算日(购买日)债券所应该支付的应计利息。 目前在常见数据提供商提供的债券数据中(沪深交易所债券2002年后,银行间债券2001年7月后),都是以净价披露的。 即:债券全价=债券净价+应付利息 在净价交易制度下,交易系统直接实行净价报价,同时显示债券成交价格和应计利息额,并以两项之和为债券买卖价格;结算系统直接实行净价结算,以债券成交价格与应计利息额之和为债券结算交割价格。也就是说,在债券现券买卖中,债券的报价采用净价,而实际买卖价格和结算交割价格为全价
| 参数 | 类型 | 说明 |
| ----------------- | -------- | ------ |
| `settlement_date` | datetime | 结算日 |
返回:float
### `bondYieldToMaturity(settlement_date)`
指定日的到期收益率(%)。在不设置数据供应商的情况下,默认先调用中证数据,没有值时再调用TS算法处理。若直接调用TS算法,设置供应商pn\_ bonddataprovider()为2。 针对不同的债券,不同的代偿期,到期收益率采取不同的算法: 到期收益率(最后付息周期的定期付息债、待偿期在一年及以内的到期一次还本付息债券和零息债券),见函数BondYieldToMaturity1说明 到期收益率(待偿期在一年以上的到期一次还本付息债券和零息债券),见函数BondYieldToMaturity2说明 到期收益率(不处于最后付息周期的定期付息债),见函数BondYieldToMaturity3说明 此模型为常见债券计算到期收益率的总接口
| 参数 | 类型 | 说明 |
| ----------------- | -------- | ----------------------- |
| `settlement_date` | datetime | 结算日;Option:是否行权 |
返回:float
#### 示例
```tsl
债券SH010107在20171228日收盘买入持有到到期的收益率
Endt:=20171228T;
Setsysparam(pn_Stock(),"SH010107");
Setsysparam(pn_bonddataprovider(),2);//数据供应商选择TS计算
Return BondYieldToMaturity(Endt);
```
### `bondYieldToMaturity1(pv, fv, d, ty)`
最后付息周期的定期付息债、待偿期在一年及以内的到期一次还本付息债券和零息债券的到期收益率 其中: y: 到期收益率; FV:到期兑付日债券本息和 PV:债券全价 D:债券结算日至到期兑付日的实际天数 TY:当前计息年度的实际天数,算头不算尾
| 参数 | 类型 | 说明 |
| ---- | ----- | ------------------------------------------------------- |
| `pv` | float | 实数,债券全价 |
| `fv` | float | 实数,债券到期兑付现金流(本息和) |
| `d` | int | 整数,结算日到到期日的实际天数。(含2月29) |
| `ty` | int | 整数,本期计息年度实际天数(计息起始日为基准,含2月29) |
返回:float
### `bondYieldToMaturity2(pv, fv, d)`
待偿期在一年以上的到期一次还本付息债券和零息债券的到期收益率 :债券全价 :到期兑付日债券本息和 : 到期收益率 :结算日至下一最近理论付息日的实际天数 :结算日至到期兑付日的整年数 TY :当前计息年度的实际天数,算头不算尾
| 参数 | 类型 | 说明 |
| ---- | ----- | --------------------------------------------------------------------------------------------------------------- |
| `pv` | float | 实数,债券全价 |
| `fv` | float | 实数,到期兑付日债券本息和 |
| `d` | int | 整数,结算日至下一最近理论付息日的实际天数;TY:整数,当前计息年度的实际天数;m:整数,结算日至到期兑付日的整年数 |
返回:float
### `bondYieldToMaturity3(pv)`
规则付息且非最后付息周期债券的到期收益率中间函数。付息次数处理—完整周期采用+1,非完整周期计算比例。(非完整周期主要是首个周期以及最后付息周期)。
| 参数 | 类型 | 说明 |
| ---- | ----- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `pv` | float | 实数,债券全价;CashFlow:数组,未来现金流数据,字段见现金流返回值。;f:整数,频率;d:整数,债券结算日至下一付息日之间的实际天数(含2月29);TS :整数,当前付息周期的实际天数(计息日为基准,含2月29) |
返回:float
### `bondYieldTomaturity4(settlementdate, cash_flow, pv)`
债券付息不规则的到期收益率。
| 参数 | 类型 | 说明 |
| ---------------- | -------- | ---------------- |
| `settlementdate` | datetime | 日期。指定日期 |
| `cash_flow` | array | 数组。债券现金流 |
| `pv` | float | 实数。现价 |
返回:float
### `bondYieldToMaturityIi(amortised_cost, settlement_date, option)`
到期收益率(%)-摊余成本法,与系统股票pn_stock()有关
| 参数 | 类型 | 说明 |
| ----------------- | -------- | --------------------- |
| `amortised_cost` | float | 实数,摊余成本 |
| `settlement_date` | datetime | 日期类型,结算日 |
| `option` | any | 用户自定义,取值如下: |
返回:float
### `isBondPayRegular(settlement_date, option)`
指定日付息是否规则。
| 参数 | 类型 | 说明 |
| ----------------- | -------- | ------------------------------- |
| `settlement_date` | datetime | 日期。指定日期 |
| `option` | int | 用户自定义。是否行权,取值如下: |
返回:int
### `isBondPayRugularByCash(cash_flow, period)`
现金流数据是否规则付息。
| 参数 | 类型 | 说明 |
| ----------- | ----- | ---------------- |
| `cash_flow` | array | 数组。债券现金流 |
| `period` | int | 整数。频率 |
返回:int
### `midBondYieldToMaturity(settlementdate, cash_f_low, pv, f)`
到期收益率(%)--中间函数。
| 参数 | 类型 | 说明 |
| ---------------- | -------- | -------------------------- |
| `settlementdate` | datetime | 日期。截止日期 |
| `cash_f_low` | array | 数组。债券指定日未来现金流 |
| `pv` | float | 实数。债券价格 |
| `f` | any | 整数。付息频率 |
返回:float
### `bondCleanPrice(settlement_date)`
债券净价
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `settlement_date` | TDateTime | 结算日 |
返回:Real
### `bondFutureValue()`
到期兑付日债券本息和,与系统股票pn_stock()有关
返回:Real
#### 示例
```tsl
//返回’ BK000002’的到期兑付日债券本息和
setSysParam(PN_Stock(),'BK000002');
return bondFutureValue();
//结果:102.8
```
@@ -0,0 +1,168 @@
# 债券 / 债券收益率曲线
### `bondTermStructure(end_t)`
指定日债券收益率曲线数据,与系统参数(证券代码)相关。
| 参数 | 类型 | 说明 |
| ------- | -------- | ------------- |
| `end_t` | datetime | 日期,截止日期 |
返回:array
#### 示例
```tsl
获取BTS000033(中证指数国债收益率曲线)在2017-03-01的期限结构
setsysparam(pn_stock(),'BTS000033');
return BondTermStructure(20170301T);
```
### `bondTermStructureOfForwardRate(end_t, remain_duration)`
指定日指定期限的远期利率,与系统参数(证券代码)相关。
| 参数 | 类型 | 说明 |
| ----------------- | -------- | ----------------- |
| `end_t` | datetime | 日期,截止日期 |
| `remain_duration` | float | 实数,剩余期限(年) |
返回:float
#### 示例
```tsl
获取BTS000033(中证指数国债收益率曲线)在2017-03-01的10年期即期利率
setsysparam(pn_stock(),'BTS000033');
return BondTermStructureOfForwardRate(20170301T,10);
```
### `bondTermStructureOfForwardRateCurve(beg_t, end_t, remain_duration)`
指定剩余期限的远期利率曲线,与系统参数(证券代码)相关。
| 参数 | 类型 | 说明 |
| ----------------- | -------- | ----------------- |
| `beg_t` | datetime | 日期,开始日期 |
| `end_t` | datetime | 日期,截止日期 |
| `remain_duration` | float | 实数,剩余期限(年) |
返回:float
### `bondTermStructureOfForwardRateEndT(end_t)`
指定日的远期利率的期限结构,与系统参数(证券代码)相关。
| 参数 | 类型 | 说明 |
| ------- | -------- | ------------- |
| `end_t` | datetime | 日期,截止日期 |
返回:float
### `bondTermStructureOfSpotInterestRateEndT(end_t)`
指定日的即期利率的期限结构,与系统参数(证券代码)相关。
| 参数 | 类型 | 说明 |
| ------- | -------- | ------------- |
| `end_t` | datetime | 日期,截止日期 |
返回:float
### `bondTermStructureOfYieldToMaturity(end_t, remain_duration)`
指定日指定期限的到期收益率,与系统参数(证券代码)相关。
| 参数 | 类型 | 说明 |
| ----------------- | -------- | ----------------- |
| `end_t` | datetime | 日期,截止日期 |
| `remain_duration` | float | 实数,剩余期限(年) |
返回:float
#### 示例
```tsl
获取BTS000033(中证指数国债收益率曲线)在2017-03-01的10年期到期收益率
setsysparam(pn_stock(),'BTS000033');
return BondTermStructureOfYieldToMaturity(20170301T,10);
```
### `bondTermStructureOfYieldToMaturityEndT(end_t)`
指定日的到期收益率的期限结构,与系统参数(证券代码)相关。
| 参数 | 类型 | 说明 |
| ------- | -------- | ------------- |
| `end_t` | datetime | 日期,截止日期 |
返回:float
### `getBondSylqkByTypeAndYears(begt, endt, ayear, p_bond_id)`
区间债券对应年期的到期收益率。
| 参数 | 类型 | 说明 |
| ----------- | -------- | -------------------- |
| `begt` | datetime | 日期。起始日期 |
| `endt` | datetime | 日期。截止日期 |
| `ayear` | float | 实数。年限 |
| `p_bond_id` | string | 字符串。债券种类代码 |
返回:array
### `getBondTermStructure(_type, t, kyear_up, kyear_down, days)`
指定日债券收益率曲线数据,与系统股票相关。
| 参数 | 类型 | 说明 |
| ------------ | ----- | ---------------------------------------------------------------------------- |
| `_type` | int | 用户自定义,收益率曲线类型,其取值如下: |
| `t` | array | 数据表类型,返回参数,债券收益率数据 |
| `kyear_up` | float | 可选参数,指定期限上界 |
| `kyear_down` | array | 可选参数,指定期限下界 |
| `days` | float | 一维日期数组,可选参数,当指定时,则支持取多日数据,否则取当前时间日期的数据 |
返回:bool
#### 示例
```tsl
setsysparam(pn_stock(),"BTS000033");
setsysparam(pn_date(), 20200916T);//当前时间,指定日
r:= GetBondTermStructure(1,t);
if r then return t;
else return "提取失败";
return t;
```
### `getBondTermStructureByRemainDuration(_type, remain_duration)`
指定日指定剩余期限债券收益率数据,与系统股票相关。
| 参数 | 类型 | 说明 |
| ----------------- | ----- | --------------------------------------- |
| `_type` | int | 用户自定义,收益率曲线类型,其取值如下: |
| `remain_duration` | float | 实数,剩余期限(年) |
返回:float
### `bondTermStructureOfSpotInterestRate(end_t, remain_duration)`
指定日指定期限的即期利率,与系统参数(证券代码)相关。
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `end_t` | TDateTime | 日期,截止日期 |
| `remain_duration` | Real | 实数,剩余期限(年) |
返回:real
#### 示例
```tsl
获取BTS000033(中证指数国债收益率曲线)在2017-03-01的10年期即期利率
setSysParam(pn_stock(),'BTS000033');
return bondTermStructureOfSpotInterestRate(20170301T,10);
//返回:3.36
```