# 金融 / 债券 / 债券敏感性指标

## `bdV_cleanPrice(db_type)`

声明：function

返回系统参数指定债券和日期的净价

<!-- tags: 金融 债券 债券敏感性 净价 估值 数据供应商 clean price valuation -->

| 参数      | 类型    | 说明                 |
| --------- | ------- | -------------------- |
| `db_type` | integer | 数据供应商，取值见下 |

db_type 取值

- `0` — 中证
- `1` — 中债登
- `2` — 天软计算

返回：real

### 示例

范例01：查询中证提供的债券净价

```tsl
setSysParam(pn_stock(), "SH019405");
setSysParam(pn_date(), 20150630T);
return bdV_cleanPrice(0);
// 输出：106.2934
```

## `bdV_dirtyPrice(db_type)`

声明：function

返回系统参数指定债券和日期的全价

<!-- tags: 金融 债券 债券敏感性 全价 估值 数据供应商 dirty price valuation -->

| 参数      | 类型    | 说明                 |
| --------- | ------- | -------------------- |
| `db_type` | integer | 数据供应商，取值见下 |

db_type 取值

- `0` — 中证
- `1` — 中债登
- `2` — 天软计算

返回：real

### 示例

范例01：查询中证提供的债券全价

```tsl
setSysParam(pn_stock(), "SH019405");
setSysParam(pn_date(), 20150630T);
return bdV_dirtyPrice(0);
// 输出：107.4801
```

## `bdV_yieldToMaturity(db_type)`

声明：function

返回系统参数指定债券和日期的到期收益率

<!-- tags: 金融 债券 债券敏感性 到期收益率 估值 数据供应商 yield to maturity ytm -->

| 参数      | 类型    | 说明                 |
| --------- | ------- | -------------------- |
| `db_type` | integer | 数据供应商，取值见下 |

db_type 取值

- `0` — 中证
- `1` — 中债登
- `2` — 天软计算

返回：real

### 示例

范例01：查询中证提供的债券到期收益率

```tsl
setSysParam(pn_stock(), "SH019405");
setSysParam(pn_date(), 20150630T);
return bdV_yieldToMaturity(0);
// 输出：3.61
```

## `bondBasisPointValue(settlement_date, market_value, option)`

声明：function

返回指定日期的债券基点价值 久期的另外一个理解：当到期收益率变化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%时，债券的全价变化不大，且。近似可取 按照基点价值的定义

<!-- tags: 金融 债券 债券敏感性指标 返回 获取 MV PV0 PV -->

| 参数              | 类型     | 说明           |
| ----------------- | -------- | -------------- |
| `settlement_date` | datetime | 日期，结算日   |
| `market_value`    | float    | 实数，债券市值 |
| `option`          | int      | 是否行权       |

返回：float

### 示例

范例01：调用函数

```tsl
// 债券SH010107在指定日2018/4/8持有10000市值的基点价值-持有到期
Setsysparam(pn_Stock(), "SH010107");
Endt := 20180408T;
MV := 10000;
Return BondBasisPointValue(Endt, MV);
// 输出：3.05
```

## `bondConvexity(settlement_date[, option])`

声明：function

返回指定日债券的凸性。在不设置数据供应商的情况下，默认先调用中证数据，没有值时再调用TS算法处理。若直接调用TS算法，设置供应商pn\_ bonddataprovider()为2

<!-- tags: 金融 债券 债券敏感性指标 返回 获取 TS -->

| 参数              | 类型     | 说明                               |
| ----------------- | -------- | ---------------------------------- |
| `settlement_date` | datetime | 结算日期                           |
| `option`          | int      | 可选。是否行权，默认 0（持有到期） |

返回：float

### 示例

范例01：调用函数

```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)`

声明：function

返回最后付息周期、到期一次还本付息、零息债券的凸性指标

<!-- tags: 金融 债券 债券敏感性指标 返回 获取 -->

| 参数             | 类型     | 说明           |
| ---------------- | -------- | -------------- |
| `settlementdate` | datetime | 结算日期       |
| `cashflow`       | array    | 债券现金流     |
| `y`              | float    | 债券到期收益率 |

返回：float

## `bondConvexity2(endt, cash_f_low, pv, f, y)`

声明：function

返回规则付息且非最后付息周期债券的凸性底层算法函数

<!-- tags: 金融 债券 债券敏感性指标 返回 获取 -->

| 参数         | 类型     | 说明       |
| ------------ | -------- | ---------- |
| `endt`       | datetime | 指定日期   |
| `cash_f_low` | array    | 现金流数据 |
| `pv`         | float    | 现值       |
| `f`          | int      | 频率       |
| `y`          | float    | 到期收益率 |

返回：float

## `bondMacaulayDuration(settlement_date, option)`

声明：function

返回债券麦克劳林久期

<!-- tags: 金融 债券 债券敏感性指标 返回 获取 -->

| 参数              | 类型       | 说明     |
| ----------------- | ---------- | -------- |
| `settlement_date` | tdate_time | 指定日   |
| `option`          | int        | 是否行权 |

返回：real

### 示例

范例01：调用函数

```tsl
// 获得债券SH010107在2018/4/4的麦考利久期
setSysParam(pn_Stock(), "SH010107");
setSysParam(pn_bonddataprovider(), 2); // 数据供应商选择TS计算
endt := 20180404T;
return bondMacaulayDuration(endt); // 麦考利久期，返回3.12
```

## `bondModifiedConvexity(settlement_date, option)`

声明：function

返回修正凸性，和BondConvexity处理一样，很多函数调用当前这个函数接口，所以保存两个凸性函数。 类似于修正久期计算方法，修正凸性 其中： f： 年付息频率 y ： 到期收益率 ：凸性

<!-- tags: 金融 债券 债券敏感性指标 返回 获取 -->

| 参数              | 类型     | 说明     |
| ----------------- | -------- | -------- |
| `settlement_date` | datetime | 结算日   |
| `option`          | int      | 是否行权 |

返回：float

## `bondModifiedDuration(settlementdate[, option])`

声明：function

返回指定日债券的修正久期。在不设置数据供应商的情况下，默认先调用中证数据，没有值时再调用TS算法处理。若直接调用TS算法，设置供应商pn\_ bonddataprovider()为2

<!-- tags: 金融 债券 债券敏感性指标 返回 获取 TS -->

| 参数             | 类型     | 说明                               |
| ---------------- | -------- | ---------------------------------- |
| `settlementdate` | datetime | 结算日                             |
| `option`         | int      | 可选。是否行权，默认 0（持有到期） |

返回：float

### 示例

范例01：调用函数

```tsl
// 债券SH010107在2018/4/8的修正久期
Setsysparam(pn_Stock(), "SH010107");
Setsysparam(pn_bonddataprovider(), 2); // 数据供应商选择TS计算
Endt := 20180408T;
Return BondModifiedDuration(Endt, 0);
// 输出：3.05
```
