# 金融 / 组合评价 / 风险分析 / 流动性风险

## `pf_amivest(endt, n)`

声明：function

返回Amivest流动性比率，与系统参数(股票)相关

<!-- tags: 金融 组合评价 风险分析 流动性风险 返回 获取 -->

| 参数   | 类型          | 说明 |
| ------ | ------------- | ---- |
| `endt` | tdate_t_i_m_e | 日期 |
| `n`    | integer       | 整数 |

返回：float

### 示例

范例01：返回：183495108.82

```tsl
SetSysParam(pn_stock(), 'sz000001');
return pf_Amivest(20121231T, 18);
// 输出：183495108.82
```

## `pf_giniCoeff(pfdata, method)`

声明：function

返回组合基尼指数。(x,y)形成的曲线为洛伦茨曲线，洛伦茨曲线与y＝x直线之间的区域，定义为基尼区域，基尼区域的面积\*2，即基尼系数

<!-- tags: 金融 组合评价 风险分析 流动性风险 返回 获取 -->

| 参数     | 类型    | 说明       |
| -------- | ------- | ---------- |
| `pfdata` | array   | 数据表类型 |
| `method` | integer | 用户自定义 |

返回：float

### 示例

范例01：返回:-0.04

```tsl
s := array();
s[0:1]['代码'] := array('SH600000', 'SH600028');
s[0:1]['市值'] := array(6000000, 4000000);
s[0:1]['行业代码'] := array('SW101190', 'SW108030');
s[0:1]['占净值比例(%)'] := array(60, 40);
return pf_giniCoeff(s, 1);
// 输出：-0.04
```

## `pf_giniCoefficient(pf_data, c)`

声明：function

返回基尼系数。(x,y)形成的曲线为洛伦茨曲线，洛伦茨曲线与y＝x直线之间的区域，定义为基尼区域，基尼区域的面积\*2，即基尼系数

<!-- tags: 金融 组合评价 风险分析 流动性风险 返回 获取 -->

| 参数      | 类型    | 说明                                            |
| --------- | ------- | ----------------------------------------------- |
| `pf_data` | array   | 数据表类型，组合持仓数据，必须包含“比例(%)”字段 |
| `c`       | integer | 返回值，二维数组，图形数据                      |

返回：float

### 示例

范例01：返回:0.01

```tsl
s := array();
s[0:1]['代码'] := array('SH600000', 'SH600028');
s[0:1]['行业代码'] := array('SW101190', 'SW108030');
s[0:1]['比例(%)'] := array(40, 60);
return pf_giniCoefficient(s, 0);
// 输出：0.1
```

## `pf_groupConcentrationRatio(pf_data, n, net_value, group_by, t)`

声明：function

返回分类汇总集中度，pfData中按Groupby字段分类汇总后按市值字段排名，返回前N项的市值所占总市值的比例

<!-- tags: 金融 组合评价 风险分析 流动性风险 返回 获取 -->

| 参数        | 类型    | 说明                     |
| ----------- | ------- | ------------------------ |
| `pf_data`   | array   | 数据表类型，组合持仓数据 |
| `n`         | integer | 整数，数据个数           |
| `net_value` | float   | 实数,资产净值或股票市值  |
| `group_by`  | string  | 字符串，汇总字段         |
| `t`         | integer | 分类汇总详情             |

返回：float

### 示例

范例01：返回:100

```tsl
s := array();
s[0:1]['代码'] := array('SH600000', 'SH600028');
s[0:1]['市值'] := array(6000000, 4000000);
s[0:1]['行业名称'] := array('测试01', '测试02');
s[0:1]['比例(%)'] := array(60, 40);
return pf_groupConcentrationRatio(s, 3, 40000000, '行业名称', 0);
// 输出：100.0
```

## `pf_groupHoldRatio(pf_data, net_value, group_by)`

声明：function

返回单一分类持仓比例,pfData每一分类的总市值占Netvalue的比例

<!-- tags: 金融 组合评价 风险分析 流动性风险 返回 获取 -->

| 参数        | 类型   | 说明                     |
| ----------- | ------ | ------------------------ |
| `pf_data`   | array  | 数据表类型，组合持仓数据 |
| `net_value` | float  | 实数,资产净值或股票市值  |
| `group_by`  | string | 字符串，汇总字段         |

返回：float

### 示例

范例01：调用 pf_GroupHoldRatio

```tsl
s := array();
s[0:1]['代码'] := array('SH600000', 'SH600028');
s[0:1]['市值'] := array(6000000, 4000000);
s[0:1]['行业名称'] := array('测试01', '测试02');
s[0:1]['比例(%)'] := array(60, 40);
ret := pf_groupHoldRatio(s, 40000000, '行业名称');
return length(ret);
// 输出：2
```

## `pf_illiq(endt)`

声明：function

返回非流动性指标，与系统参数(股票)相关

<!-- tags: 金融 组合评价 风险分析 流动性风险 返回 获取 -->

| 参数   | 类型          | 说明 |
| ------ | ------------- | ---- |
| `endt` | tdate_t_i_m_e | 日期 |

返回：float

### 示例

范例01：返回：-0.0038

```tsl
SetSysParam(pn_stock(), 'sz000001');
return pf_ILLIQ(20180820T);
// 输出：-0.0038
```

## `pf_martin(endt, n)`

声明：function

返回Martin流动性比率，与系统参数(股票、复权)相关

<!-- tags: 金融 组合评价 风险分析 流动性风险 返回 获取 -->

| 参数   | 类型          | 说明             |
| ------ | ------------- | ---------------- |
| `endt` | tdate_t_i_m_e | 日期，截止日期   |
| `n`    | integer       | 整数，交易日长度 |

返回：float

### 示例

范例01：返回：0.03

```tsl
SetSysParam(pn_stock(), 'sz000001');
return pf_Martin(20180801T, 18);
// 输出：0.03
```

## `pf_securityConcentrationRatio(pf_data, top_n, net_value, t)`

声明：function

返回持股集中度(重仓券集中度)，返回前topN个证券所占比例的累加和

<!-- tags: 金融 组合评价 风险分析 流动性风险 返回 获取 -->

| 参数        | 类型    | 说明                     |
| ----------- | ------- | ------------------------ |
| `pf_data`   | array   | 数据表类型，组合持仓数据 |
| `top_n`     | integer | 整数                     |
| `net_value` | float   | 实数，资产净值或股票市值 |
| `t`         | array   | 数据表类型，详情         |

返回：float

### 示例

范例01：返回:100

```tsl
s := array();
s[0:1]['代码'] := array('SH600000', 'SH600028');
s[0:1]['市值'] := array(6000000, 4000000);
s[0:1]['行业代码'] := array('SW101190', 'SW108030');
s[0:1]['比例(%)'] := array(60, 40);
return pf_securityConcentrationRatio(s, 2, 9900, 0);
// 输出：100.0
```

## `pf_turnoverRate(trade_data, nv_data, method_type, turnover_data)`

声明：function

返回组合区间平均日换手率 1）通过交易数据统计每天成交数据中的成交金额； 2）通过净值数据计算每天的平均资产净值（t日平均资产净值=(t日资产净值+t-1日资产净值)/1）； 3）t日换手率=t日成交金额/t日平均资产净值

<!-- tags: 金融 组合评价 风险分析 流动性风险 返回 获取 -->

| 参数            | 类型    | 说明                                                                                                                                                                 |
| --------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `trade_data`    | array   | 二维数组，按日期排列的买卖等交易数据。；输入格式为:；（1）代码Varchar；（2）截止日DateTime；（3）成交金额Numeric；（4）动作编号Int（0:开仓（买入）；1:平仓（卖出）） |
| `nv_data`       | array   | 二维数组，按日期排列的净值数据。；输入格式为:；（1）截止日DateTime；（2）资产净值Numeric                                                                             |
| `method_type`   | integer | 换手率计算方法；=0，T-1日&T日市值平均法（主要是计算组合换手率）；=1，T日市值+T日卖出法（主要是计算分类资产换手率）                                                   |
| `turnover_data` | array   | 二维数组，按日期排列的每日换手率；输出格式为:；（1）截止日DateTime；（2）换手率(%)Numeric                                                                            |

返回：bool

## `stockAmplitudePerAmount(begt, endt)`

声明：function

返回单位波动成交金额，与系统参数(股票)相关

<!-- tags: 金融 组合评价 风险分析 流动性风险 返回 获取 -->

| 参数   | 类型          | 说明 |
| ------ | ------------- | ---- |
| `begt` | tdate_t_i_m_e | 日期 |
| `endt` | tdate_t_i_m_e | 日期 |

返回：real

### 示例

范例01：调用函数

```tsl
setSysParam(PN_Stock(), 'SZ000001');
return stockAmplitudePerAmount(20180801T, 20180803T);
// 输出：0.34
```

## `stockAmplitudePerVolumn(begt, endt)`

声明：function

返回单位波动成交量，与系统参数(股票)相关

<!-- tags: 金融 组合评价 风险分析 流动性风险 返回 获取 -->

| 参数   | 类型          | 说明 |
| ------ | ------------- | ---- |
| `begt` | tdate_t_i_m_e | 日期 |
| `endt` | tdate_t_i_m_e | 日期 |

返回：real

### 示例

范例01：调用函数

```tsl
setSysParam(pn_stock(), 'sz000001');
return stockAmplitudePerVolumn(20180801T, 20180831T);
// 输出：0.009
```

## `stockCashFlowInFuture(end_t, future_t, n, max_realized_percent, market_vol)`

声明：function

返回证券现金流分析，考虑了股票、基金、债券

<!-- tags: 金融 组合评价 风险分析 流动性风险 返回 获取 -->

| 参数                   | 类型          | 说明               |
| ---------------------- | ------------- | ------------------ |
| `end_t`                | tdate_t_i_m_e | 日期，评估日       |
| `future_t`             | tdate_t_i_m_e | 日期，未来评估日   |
| `n`                    | integer       | 整数，变现参考天数 |
| `max_realized_percent` | real          | 实数,变现比例      |
| `market_vol`           | real          | 实数，证券数量     |

返回：real

### 示例

范例01：调用函数

```tsl
setSysParam(PN_Stock(), 'SZ000001');
return stockCashFlowInFuture(20170801T, 20180803T, 5, 10, 1);
// 输出：11.18
```

## `stockLiquidityCost(beg_t, end_t, method_type, dm_type, percent)`

声明：function

返回证券冲击成本，与系统参数(股票，周期)相关

<!-- tags: 金融 组合评价 风险分析 流动性风险 返回 获取 -->

| 参数          | 类型          | 说明                                      |
| ------------- | ------------- | ----------------------------------------- |
| `beg_t`       | tdate_t_i_m_e | 日期，开始日期                            |
| `end_t`       | tdate_t_i_m_e | 日期，截至日期                            |
| `method_type` | integer       | 用户自定义，区间冲击成本计算方法          |
| `dm_type`     | integer       | 用户自定义，冲击成本标准                  |
| `percent`     | real          | 实数，冲击成本占市场冲击成本的最大比例(%) |

返回：real

### 示例

范例01：调用函数

```tsl
setSysParam(pn_stock(), 'sz000001');
return stockLiquidityCost(20180801T, 20180831T, 0, 2.25, 31);
// 输出：0.009
```

## `stockRealizedDays(market_vol, end_t, ref_days, max_realized_percent)`

声明：function

返回证券变现天数。（项目专用函数）

<!-- tags: 金融 组合评价 风险分析 流动性风险 返回 获取 -->

| 参数                   | 类型    | 说明                                    |
| ---------------------- | ------- | --------------------------------------- |
| `market_vol`           | integer | 整数，证券数量                          |
| `end_t`                | t_date  | 日期，截止日                            |
| `ref_days`             | integer | 整数，参考变现天数                      |
| `max_realized_percent` | real    | 实数，可变现数量占成交数量的最大比例(%) |

返回：实数。
