# 金融 / 组合评价 / 常用函数

## `pf_calmarRatio(t, fname, day_num)`

声明：function

从一个组合的收益率序列，计算其Calmar比率

<!-- tags: 金融 组合评价 常用函数 计算 求解 -->

| 参数      | 类型    | 说明                       |
| --------- | ------- | -------------------------- |
| `t`       | array   | 数据表类型，组合收益率序列 |
| `fname`   | string  | 字符串，收益率字段名称     |
| `day_num` | integer | 整数，年化用天数           |

返回：float

### 示例

范例01：返回:0.20

```tsl
SetSysParam(PN_Stock(), 'SZ000001');
SetSysParam(PN_Date(), 20180801T);
SetSysParam(PN_Cycle(), cy_day());
arr1 := Nday(1000, '截止日', sp_time(), '涨幅(%)', StockZf3());
return pf_CalmarRatio(arr1, '涨幅(%)', 250);
// 输出：0.20
```

## `pf_getDayNnmOfYear()`

声明：function

根据设置的周期，返回该周期的年化天数

<!-- tags: 金融 组合评价 常用函数 -->

返回：integer

### 示例

范例01：返回：52

```tsl
SetSysParam(PN_Cycle(), cy_week());
return pf_getDayNnmOfYear();
// 输出：52
```

## `pf_minRecoveryPeriod(t_p, fname_1)`

声明：function

返回净值突破前值最长时间

<!-- tags: 金融 组合评价 常用函数 返回 获取 -->

| 参数      | 类型   | 说明               |
| --------- | ------ | ------------------ |
| `t_p`     | array  | 数据表类型，收益率 |
| `fname_1` | string | 字符串，字段名称   |

返回：integer

### 示例

范例01：返回：896

```tsl
SetSysParam(PN_Stock(), 'SZ000001');
SetSysParam(PN_Date(), 20180801T);
SetSysParam(PN_Cycle(), cy_day());
arr := Nday(1000, '截止日', sp_time(), '涨幅(%)', StockZf3());
return pf_MinRecoveryPeriod(arr, '涨幅(%)');
// 输出：896
```

## `pf_omega(t, fname, mean_r)`

声明：function

计算Omega比率

<!-- tags: 金融 组合评价 常用函数 计算 求解 -->

| 参数     | 类型   | 说明                       |
| -------- | ------ | -------------------------- |
| `t`      | array  | 数据表类型，组合收益率序列 |
| `fname`  | string | 字符串，收益率字段名称     |
| `mean_r` | float  | 实数，临界收益率(%)        |

返回：float

### 示例

范例01：返回:0.53

```tsl
SetSysParam(PN_Stock(), 'SZ000001');
SetSysParam(PN_Date(), 20180801T);
SetSysParam(PN_Cycle(), cy_day());
arr1 := Nday(1000, '截止日', sp_time(), '涨幅(%)', StockZf3());
return pf_Omega(arr1, '涨幅(%)', 0.5);
// 输出：0.53
```

## `pf_var(t_1, fname_1, year_num)`

声明：function

返回风险值

<!-- tags: 金融 组合评价 常用函数 返回 获取 -->

| 参数       | 类型    | 说明           |
| ---------- | ------- | -------------- |
| `t_1`      | array   | 数据表类型     |
| `fname_1`  | string  | 字符串，列名   |
| `year_num` | integer | 整数，年化天数 |

返回：float

### 示例

范例01：返回:-66.76

```tsl
SetSysParam(PN_Stock(), 'SZ000001');
SetSysParam(PN_Date(), 20180801T);
SetSysParam(PN_Cycle(), cy_day());
arr1 := Nday(250, '截止日', sp_time(), '涨幅(%)', StockZf3());
return Pf_Var(arr1, '涨幅(%)', 250);
// 输出：-66.76
```

## `pf_winRatio(tp, f_name_1, tb, f_name_2)`

声明：function

返回胜率。计算tp表字段fName1在时间区间大于tb表字段fName2的比例

<!-- tags: 金融 组合评价 常用函数 返回 获取 -->

| 参数       | 类型   | 说明                 |
| ---------- | ------ | -------------------- |
| `tp`       | array  | 二维数据表           |
| `f_name_1` | string | 字符串，tp表中的列名 |
| `tb`       | array  | 二维数据表           |
| `f_name_2` | string | 字符串，tb表中的列名 |

返回：float

### 示例

范例01：返回:59.5

```tsl
SetSysParam(PN_Stock(), 'SZ000001');
SetSysParam(PN_Date(), 20180801T);
SetSysParam(PN_Cycle(), cy_day());
arr1 := Nday(1000, '截止日', sp_time(), '涨幅(%)', StockZf3());
arr2 := Nday(1000, '截止日', spec(sp_time(), 'SZ000002'), '涨幅(%)', spec(StockZf3(), 'SZ000002'));
return pf_WinRatio(arr1, '涨幅(%)', arr2, '涨幅(%)');
// 输出：59.5
```
