# 金融 / 组合评价 / 相对回报

## `pf_alpha(t_1, f_name_1, t_2, f_name_2)`

声明：function

返回组合-Alpha(%)

<!-- tags: 金融 组合评价 相对回报 返回 获取 -->

| 参数       | 类型   | 说明                                               |
| ---------- | ------ | -------------------------------------------------- |
| `t_1`      | array  | 组合收益率序列                                     |
| `f_name_1` | string | t1数组中，代表收益率序列的字段名（涨幅、收益率等） |
| `t_2`      | array  | 基准收益率序列                                     |
| `f_name_2` | string | t2数组中，代表收益率序列的字段名（涨幅、收益率等） |

返回：float

### 示例

范例01：此处以浦发银行收益率序列作为用户组合的收益率序列，基准为上证指数

```tsl
// 此处以浦发银行收益率序列作为用户组合的收益率序列，基准为上证指数
stockid := 'SH600000';
IndexId := 'SH000001';
BegT := inttodate(20110101);
EndT := inttodate(20110630);
setsysparam(pn_date(), EndT);
n := tradedays(begt, endt);
t := nday(n, '日期', sp_time(), '涨幅1', spec(StockZf3(), stockid), '涨幅2', spec(StockZf3(), IndexId));
return pf_Alpha(t, '涨幅1', t, '涨幅2');
// 输出：0.0566
```

## `pf_beta(t_1, f_name_1, t_2, f_name_2)`

声明：function

返回组合-Beta

<!-- tags: 金融 组合评价 相对回报 返回 获取 -->

| 参数       | 类型   | 说明                                               |
| ---------- | ------ | -------------------------------------------------- |
| `t_1`      | array  | 组合收益率序列                                     |
| `f_name_1` | string | t1数组中，代表收益率序列的字段名（涨幅、收益率等） |
| `t_2`      | array  | 基准收益率序列                                     |
| `f_name_2` | string | t2数组中，代表收益率序列的字段名（涨幅、收益率等） |

返回：float

### 示例

范例01：此处以浦发银行收益率序列作为用户组合的收益率序列，基准为上证指数

```tsl
// 此处以浦发银行收益率序列作为用户组合的收益率序列，基准为上证指数
stockid := 'SH600000';
IndexId := 'SH000001';
BegT := inttodate(20110101);
EndT := inttodate(20110630);
setsysparam(pn_date(), EndT);
n := tradedays(begt, endt);
t := nday(n, '日期', sp_time(), '涨幅1', spec(StockZf3(), stockid), '涨幅2', spec(StockZf3(), IndexId));
return pf_Beta(t, '涨幅1', t, '涨幅2');
// 输出：0.97
```

## `pf_corr(t_1, f_name_1, t_2, f_name_2)`

声明：function

返回组合的相关系数 根据提供的组合t1中列fName1和组合t2中列fName2，计算两列数据的相关系数

<!-- tags: 金融 组合评价 相对回报 返回 获取 -->

| 参数       | 类型   | 说明                       |
| ---------- | ------ | -------------------------- |
| `t_1`      | array  | 二维数组，组合收益率数组； |
| `f_name_1` | string | 字符串，组合收益率列名；   |
| `t_2`      | array  | 二维数组，基准收益率数组   |
| `f_name_2` | string | 字符串，基准收益率列名     |

返回：float

### 示例

范例01：返回:0.99

```tsl
s1 := `array('涨幅%':(1.42, -0.23, -1.94, 3.52));
s2 := `array('基准':(1.61, 0.12, -2.31, 4.13));
return pf_Corr(s1, '涨幅%', s2, '基准');
// 输出：0.99
```

## `pf_excessReturn(t_1, f_name_1, t_2, f_name_2)`

声明：function

返回组合-超额收益率

<!-- tags: 金融 组合评价 相对回报 返回 获取 -->

| 参数       | 类型   | 说明                                               |
| ---------- | ------ | -------------------------------------------------- |
| `t_1`      | array  | 组合收益率序列                                     |
| `f_name_1` | string | t1数组中，代表收益率序列的字段名（涨幅、收益率等） |
| `t_2`      | array  | 基准收益率序列                                     |
| `f_name_2` | string | t2数组中，代表收益率序列的字段名（涨幅、收益率等） |

返回：float

### 示例

范例01：此处以浦发银行收益率序列作为用户组合的收益率序列，基准为上证指数

```tsl
// 此处以浦发银行收益率序列作为用户组合的收益率序列，基准为上证指数
stockid := 'SH600000';
IndexId := 'SH000001';
BegT := inttodate(20110101);
EndT := inttodate(20110630);
setsysparam(pn_date(), EndT);
n := tradedays(begt, endt);
t := nday(n, '日期', sp_time(),
    '涨幅1', spec(StockZf3(), stockid),
    '涨幅2', spec(StockZf3(), IndexId));
return pf_ExcessReturn(t, '涨幅1', t, '涨幅2');
// 输出：6.13
```

## `pf_informationRatio(t_1, f_name_1, t_2, f_name_2)`

声明：function

返回组合-信息比率

<!-- tags: 金融 组合评价 相对回报 返回 获取 -->

| 参数       | 类型   | 说明                                               |
| ---------- | ------ | -------------------------------------------------- |
| `t_1`      | array  | 组合收益率序列                                     |
| `f_name_1` | string | t1数组中，代表收益率序列的字段名（涨幅、收益率等） |
| `t_2`      | array  | 基准收益率序列                                     |
| `f_name_2` | string | t2数组中，代表收益率序列的字段名（涨幅、收益率等） |

返回：float

### 示例

范例01：此处以浦发银行收益率序列作为用户组合的收益率序列，基准为上证指数

```tsl
// 此处以浦发银行收益率序列作为用户组合的收益率序列，基准为上证指数
stockid := 'SH600000';
IndexId := 'SH000001';
BegT := inttodate(20110101);
EndT := inttodate(20110630);
setsysparam(pn_date(), EndT);
n := tradedays(begt, endt);
t := nday(n, '日期', sp_time(), '涨幅1', spec(StockZf3(), stockid), '涨幅2', spec(StockZf3(), IndexId));
return pf_InformationRatio(t, '涨幅1', t, '涨幅2');
// 输出：0.05
```

## `pf_jensen(t_1, f_name_1, t_2, f_name_2, rf)`

声明：function

返回组合-詹森

<!-- tags: 金融 组合评价 相对回报 返回 获取 -->

| 参数       | 类型   | 说明                                               |
| ---------- | ------ | -------------------------------------------------- |
| `t_1`      | array  | 组合收益率序列                                     |
| `f_name_1` | string | t1数组中，代表收益率序列的字段名（涨幅、收益率等） |
| `t_2`      | array  | 基准收益率序列                                     |
| `f_name_2` | string | t2数组中，代表收益率序列的字段名（涨幅、收益率等） |
| `rf`       | float  | 无风险收益率                                       |

返回：float

### 示例

范例01：此处以浦发银行收益率序列作为用户组合的收益率序列，基准为上证指数

```tsl
// 此处以浦发银行收益率序列作为用户组合的收益率序列，基准为上证指数
stockid := 'SH600000';
IndexId := 'SH000001';
Rf := 0.025;
BegT := inttodate(20110101);
EndT := inttodate(20110630);
setsysparam(pn_date(), EndT);
n := tradedays(begt, endt);
t := nday(n, '日期', sp_time(), '涨幅1', spec(StockZf3(), stockid), '涨幅2', spec(StockZf3(), IndexId));
return pf_Jensen(t, '涨幅1', t, '涨幅2', Rf);
// 输出：0.0560
```

## `pf_r2(t_1, f_name_1, t_2, f_name_2)`

声明：function

返回组合-R2

<!-- tags: 金融 组合评价 相对回报 返回 获取 R2 -->

| 参数       | 类型   | 说明                                               |
| ---------- | ------ | -------------------------------------------------- |
| `t_1`      | array  | 组合收益率序列                                     |
| `f_name_1` | string | t1数组中，代表收益率序列的字段名（涨幅、收益率等） |
| `t_2`      | array  | 基准收益率序列                                     |
| `f_name_2` | string | t2数组中，代表收益率序列的字段名（涨幅、收益率等） |

返回：float

### 示例

范例01：此处以浦发银行收益率序列作为用户组合的收益率序列，基准为上证指数

```tsl
// 此处以浦发银行收益率序列作为用户组合的收益率序列，基准为上证指数
stockid := 'SH600000';
IndexId := 'SH000001';
BegT := inttodate(20110101);
EndT := inttodate(20110630);
setsysparam(pn_date(), EndT);
n := tradedays(begt, endt);
t := nday(n, '日期', sp_time(), '涨幅1', spec(StockZf3(), stockid), '涨幅2', spec(StockZf3(), IndexId));
return pf_R2(t, '涨幅1', t, '涨幅2');
// 输出：0.46
```

## `pf_trackingError(t_1, f_name_1, t_2, f_name_2)`

声明：function

返回组合-跟踪误差

<!-- tags: 金融 组合评价 相对回报 返回 获取 -->

| 参数       | 类型   | 说明                                               |
| ---------- | ------ | -------------------------------------------------- |
| `t_1`      | array  | 组合收益率序列                                     |
| `f_name_1` | string | t1数组中，代表收益率序列的字段名（涨幅、收益率等） |
| `t_2`      | array  | 基准收益率序列                                     |
| `f_name_2` | string | t2数组中，代表收益率序列的字段名（涨幅、收益率等） |

返回：float

### 示例

范例01：此处以浦发银行收益率序列作为用户组合的收益率序列，基准为上证指数

```tsl
// 此处以浦发银行收益率序列作为用户组合的收益率序列，基准为上证指数
stockid := 'SH600000';
IndexId := 'SH000001';
BegT := inttodate(20110101);
EndT := inttodate(20110630);
setsysparam(pn_date(), EndT);
n := tradedays(begt, endt);
t := nday(n, '日期', sp_time(), '涨幅1', spec(StockZf3(), stockid), '涨幅2', spec(StockZf3(), IndexId));
return pf_TrackingError(t, '涨幅1', t, '涨幅2');
// 输出：1.13
```

## `pf_treynorRatio(t_1, f_name_1, t_2, f_name_2, rf)`

声明：function

返回组合-特雷诺

<!-- tags: 金融 组合评价 相对回报 返回 获取 -->

| 参数       | 类型   | 说明                                               |
| ---------- | ------ | -------------------------------------------------- |
| `t_1`      | array  | 组合收益率序列                                     |
| `f_name_1` | string | t1数组中，代表收益率序列的字段名（涨幅、收益率等） |
| `t_2`      | array  | 基准收益率序列                                     |
| `f_name_2` | string | t2数组中，代表收益率序列的字段名（涨幅、收益率等） |
| `rf`       | float  | 无风险收益率                                       |

返回：float

### 示例

范例01：此处以浦发银行收益率序列作为用户组合的收益率序列，基准为上证指数

```tsl
// 此处以浦发银行收益率序列作为用户组合的收益率序列，基准为上证指数
stockid := 'SH600000';
IndexId := 'SH000001';
Rf := 0.025;
BegT := inttodate(20110101);
EndT := inttodate(20110630);
setsysparam(pn_date(), EndT);
n := tradedays(begt, endt);
t := nday(n, '日期', sp_time(), '涨幅1', spec(StockZf3(), stockid), '涨幅2', spec(StockZf3(), IndexId));
return pf_TreynorRatio(t, '涨幅1', t, '涨幅2', Rf);
// 输出：0.0243
```
