# 金融 / 组合评价 / 风险、回报

## `pf_avgGain(t, f_name)`

声明：function

返回组合-平均收益(%)，计算收益率序列的平均值

<!-- tags: 金融 组合评价 、 风险回报 返回 获取 -->

| 参数     | 类型   | 说明                                              |
| -------- | ------ | ------------------------------------------------- |
| `t`      | array  | 组合收益率序列                                    |
| `f_name` | string | t数组中，代表收益率序列的字段名（涨幅、收益率等） |

返回：float

### 示例

范例01：此处以申万采掘行业指数收益率序列作为用户组合的收益率序列

```tsl
// 此处以申万采掘行业指数收益率序列作为用户组合的收益率序列
BegT := inttodate(20110101);
EndT := inttodate(20110630);
setsysparam(pn_stock(), 'SW801020');
setsysparam(pn_date(), EndT);
n := tradedays(begt, endt);
t := nday(n, '日期', sp_time(), '涨幅(%)', StockZf3());
return pf_AvgGain(t, '涨幅(%)');
// 输出：0.0088
```

## `pf_avgGainOfDown(t, f_name)`

声明：function

返回组合-下跌平均收益(%)，收益率序列中下跌收益的平均值

<!-- tags: 金融 组合评价 、 风险回报 返回 获取 -->

| 参数     | 类型   | 说明                                              |
| -------- | ------ | ------------------------------------------------- |
| `t`      | array  | 组合收益率序列                                    |
| `f_name` | string | t数组中，代表收益率序列的字段名（涨幅、收益率等） |

返回：float

### 示例

范例01：此处以申万采掘行业指数收益率序列作为用户组合的收益率序列

```tsl
// 此处以申万采掘行业指数收益率序列作为用户组合的收益率序列
BegT := inttodate(20110101);
EndT := inttodate(20110630);
setsysparam(pn_stock(), 'SW801020');
setsysparam(pn_date(), EndT);
n := tradedays(begt, endt);
t := nday(n, '日期', sp_time(), '涨幅(%)', StockZf3());
return pf_AvgGainOfDown(t, '涨幅(%)');
// 输出：-1.39
```

## `pf_avgGainOfUp(t, f_name)`

声明：function

返回组合-上涨平均收益(%)，收益率序列中上涨序列的平均收益

<!-- tags: 金融 组合评价 、 风险回报 返回 获取 -->

| 参数     | 类型   | 说明                                              |
| -------- | ------ | ------------------------------------------------- |
| `t`      | array  | 组合收益率序列                                    |
| `f_name` | string | t数组中，代表收益率序列的字段名（涨幅、收益率等） |

返回：float

### 示例

范例01：此处以申万采掘行业指数收益率序列作为用户组合的收益率序列

```tsl
// 此处以申万采掘行业指数收益率序列作为用户组合的收益率序列
BegT := inttodate(20110101);
EndT := inttodate(20110630);
setsysparam(pn_stock(), 'SW801020');
setsysparam(pn_date(), EndT);
n := tradedays(begt, endt);
t := nday(n, '日期', sp_time(), '涨幅(%)', StockZf3());
return pf_AvgGainOfUp(t, '涨幅(%)');
// 输出：1.43
```

## `pf_cumulativeReturn(t, f_name)`

声明：function

返回组合-累计收益率(%)

<!-- tags: 金融 组合评价 、 风险回报 返回 获取 -->

| 参数     | 类型   | 说明                                              |
| -------- | ------ | ------------------------------------------------- |
| `t`      | array  | 组合收益率序列                                    |
| `f_name` | string | t数组中，代表收益率序列的字段名（涨幅、收益率等） |

返回：float

### 示例

范例01：此处以申万采掘行业指数收益率序列作为用户组合的收益率序列

```tsl
// 此处以申万采掘行业指数收益率序列作为用户组合的收益率序列
BegT := inttodate(20110101);
EndT := inttodate(20110630);
setsysparam(pn_stock(), 'SW801020');
setsysparam(pn_date(), EndT);
n := tradedays(begt, endt);
t := nday(n, '日期', sp_time(), '涨幅(%)', StockZf3());
return pf_CumulativeReturn(t, '涨幅(%)');
// 输出：-1.0874
```

## `pf_percentofDown(t, f_name)`

声明：function

返回组合-下跌占比(%)，对于收益率序列，计算其下跌个数占所有数据的比例

<!-- tags: 金融 组合评价 、 风险回报 返回 获取 -->

| 参数     | 类型   | 说明                                              |
| -------- | ------ | ------------------------------------------------- |
| `t`      | array  | 组合收益率序列                                    |
| `f_name` | string | t数组中，代表收益率序列的字段名（涨幅、收益率等） |

返回：float

### 示例

范例01：此处以申万采掘行业指数收益率序列作为用户组合的收益率序列

```tsl
// 此处以申万采掘行业指数收益率序列作为用户组合的收益率序列
BegT := inttodate(20110101);
EndT := inttodate(20110630);
setsysparam(pn_stock(), 'SW801020');
setsysparam(pn_date(), EndT);
n := tradedays(begt, endt);
t := nday(n, '日期', sp_time(), '涨幅(%)', StockZf3());
return pf_PercentofDown(t, '涨幅(%)');
// 输出：50.42
```

## `pf_percentofUp(t, f_name)`

声明：function

返回组合-上涨占比(%)，计算收益率序列中上涨个数占所有数据的比例

<!-- tags: 金融 组合评价 、 风险回报 返回 获取 -->

| 参数     | 类型   | 说明                                              |
| -------- | ------ | ------------------------------------------------- |
| `t`      | array  | 组合收益率序列                                    |
| `f_name` | string | t数组中，代表收益率序列的字段名（涨幅、收益率等） |

返回：float

### 示例

范例01：此处以申万采掘行业指数收益率序列作为用户组合的收益率序列

```tsl
// 此处以申万采掘行业指数收益率序列作为用户组合的收益率序列
BegT := inttodate(20110101);
EndT := inttodate(20110630);
setsysparam(pn_stock(), 'SW801020');
setsysparam(pn_date(), EndT);
n := tradedays(begt, endt);
t := nday(n, '日期', sp_time(), '涨幅(%)', StockZf3());
return pf_PercentofUp(t, '涨幅(%)');
// 输出：49.58
```

## `pf_semiDeviation(t, f_name)`

声明：function

返回组合-下方标准差(%)，计算小于0的收益率序列的标准差，用类SQL的stdevof关键字计算。同函数pf_StdOfDown（下跌标准差）算法一样

<!-- tags: 金融 组合评价 、 风险回报 返回 获取 SQL -->

| 参数     | 类型   | 说明                                              |
| -------- | ------ | ------------------------------------------------- |
| `t`      | array  | 组合收益率序列                                    |
| `f_name` | string | t数组中，代表收益率序列的字段名（涨幅、收益率等） |

返回：float

### 示例

范例01：此处以申万采掘行业指数收益率序列作为用户组合的收益率序列

```tsl
// 此处以申万采掘行业指数收益率序列作为用户组合的收益率序列
BegT := inttodate(20110101);
EndT := inttodate(20110630);
setsysparam(pn_stock(), 'SW801020');
setsysparam(pn_date(), EndT);
n := tradedays(begt, endt);
t := nday(n, '日期', sp_time(), '涨幅(%)', StockZf3());
return pf_SemiDeviation(t, '涨幅(%)');
// 输出：1.2283
```

## `pf_sharpRatio(t, f_name, rf)`

声明：function

返回组合-夏普比率

<!-- tags: 金融 组合评价 、 风险回报 返回 获取 -->

| 参数     | 类型   | 说明                                              |
| -------- | ------ | ------------------------------------------------- |
| `t`      | array  | 组合收益率序列                                    |
| `f_name` | string | t数组中，代表收益率序列的字段名（涨幅、收益率等） |
| `rf`     | float  | 无风险收益率                                      |

返回：float

### 示例

范例01：此处以申万采掘行业指数收益率序列作为用户组合的收益率序列

```tsl
// 此处以申万采掘行业指数收益率序列作为用户组合的收益率序列
BegT := inttodate(20110101);
EndT := inttodate(20110630);
Rf := 0.0025;
setsysparam(pn_stock(), 'SW801020');
setsysparam(pn_date(), EndT);
n := tradedays(begt, endt);
t := nday(n, '日期', sp_time(), '涨幅(%)', StockZf3());
return pf_SharpRatio(t, '涨幅(%)', Rf);
// 输出：0.0033
```

## `pf_sortinoRatio(t, f_name, rf)`

声明：function

返回组合-索丁诺比率

<!-- tags: 金融 组合评价 、 风险回报 排序 sort 返回 获取 -->

| 参数     | 类型   | 说明                                              |
| -------- | ------ | ------------------------------------------------- |
| `t`      | array  | 组合收益率序列                                    |
| `f_name` | string | t数组中，代表收益率序列的字段名（涨幅、收益率等） |
| `rf`     | float  | 无风险收益率                                      |

返回：float

### 示例

范例01：此处以申万采掘行业指数收益率序列作为用户组合的收益率序列

```tsl
// 此处以申万采掘行业指数收益率序列作为用户组合的收益率序列
BegT := inttodate(20110101);
EndT := inttodate(20110630);
Rf := 0.0025;
setsysparam(pn_stock(), 'SW801020');
setsysparam(pn_date(), EndT);
n := tradedays(begt, endt);
t := nday(n, '日期', sp_time(), '涨幅(%)', StockZf3());
return pf_SortinoRatio(t, '涨幅(%)', Rf);
// 输出：0.0051
```

## `pf_standardDeviation(t, f_name)`

声明：function

返回组合-标准差(%)，计算组合收益率序列的标准差（样本标准差）。用类SQL的stdevof关键字计算

<!-- tags: 金融 组合评价 、 风险回报 返回 获取 SQL -->

| 参数     | 类型   | 说明                                              |
| -------- | ------ | ------------------------------------------------- |
| `t`      | array  | 组合收益率序列                                    |
| `f_name` | string | t数组中，代表收益率序列的字段名（涨幅、收益率等） |

返回：float

### 示例

范例01：此处以申万采掘行业指数收益率序列作为用户组合的收益率序列

```tsl
// 此处以申万采掘行业指数收益率序列作为用户组合的收益率序列
BegT := inttodate(20110101);
EndT := inttodate(20110630);
setsysparam(pn_stock(), 'SW801020');
setsysparam(pn_date(), EndT);
n := tradedays(begt, endt);
t := nday(n, '日期', sp_time(), '涨幅(%)', StockZf3());
return pf_StandardDeviation(t, '涨幅(%)');
// 输出：1.9090
```

## `pf_stdOfDown(t, f_name)`

声明：function

返回组合-下跌标准差(%)，计算小于0的收益率序列的标准差，用类SQL的stdevof关键字计算。同函数pf_SemiDeviation（下方标准差）算法一样

<!-- tags: 金融 组合评价 、 风险回报 返回 获取 SQL -->

| 参数     | 类型   | 说明                                              |
| -------- | ------ | ------------------------------------------------- |
| `t`      | array  | 组合收益率序列                                    |
| `f_name` | string | t数组中，代表收益率序列的字段名（涨幅、收益率等） |

返回：float

### 示例

范例01：此处以申万采掘行业指数收益率序列作为用户组合的收益率序列

```tsl
// 此处以申万采掘行业指数收益率序列作为用户组合的收益率序列
BegT := inttodate(20110101);
EndT := inttodate(20110630);
setsysparam(pn_stock(), 'SW801020');
setsysparam(pn_date(), EndT);
n := tradedays(begt, endt);
t := nday(n, '日期', sp_time(), '涨幅(%)', StockZf3());
return pf_StdOfDown(t, '涨幅(%)');
// 输出：1.2283
```

## `pf_stdOfUp(t, f_name)`

声明：function

返回组合-上涨标准差(%)，计算大于或等于0的收益率序列的标准差，用类SQL的stdevof关键字计算

<!-- tags: 金融 组合评价 、 风险回报 返回 获取 SQL -->

| 参数     | 类型   | 说明                                              |
| -------- | ------ | ------------------------------------------------- |
| `t`      | array  | 组合收益率序列                                    |
| `f_name` | string | t数组中，代表收益率序列的字段名（涨幅、收益率等） |

返回：float

### 示例

范例01：此处以申万采掘行业指数收益率序列作为用户组合的收益率序列

```tsl
// 此处以申万采掘行业指数收益率序列作为用户组合的收益率序列
BegT := inttodate(20110101);
EndT := inttodate(20110630);
setsysparam(pn_stock(), 'SW801020');
setsysparam(pn_date(), EndT);
n := tradedays(begt, endt);
t := nday(n, '日期', sp_time(), '涨幅(%)', StockZf3());
return pf_StdOfUp(t, '涨幅(%)');
// 输出：1.3406
```
