# 数据仓库 / 向导函数 / 当日

## `indNeutralize(exp, by_group, cache_str)`

声明：function

中性化操作，分组去均值化。将数据指标Exp按照ByGroup分类，对每个类别按照Exp=Exp–mean(Exp)进行中性化处理，处理之后Exp的均值为0。注：因分类标准不明确，此函数暂时不进行分类，即按整个市场，只对Exp进行中性化处理

<!-- tags: 数据仓库 向导函数 当日 -->

| 参数        | 类型   | 说明                  |
| ----------- | ------ | --------------------- |
| `exp`       | string | 字符串。统计表达式    |
| `by_group`  | int    | 用户自定义。取值如下: |
| `cache_str` | string | 字符串。缓存串        |

返回：float|void

### 示例

范例01：调用函数

```tsl
SetSysParam(pn_stock(), "SH600519");
SetSysParam(Pn_date(), 20231010T);
setsysparam(pn_StockArr(), getbkbydate("SH000300", 20231010T));
return IndNeutralize(@open(), 0, "");
```

## `indNeutralize2(exp, by_group, cache_str)`

声明：function

中性化操作，分组去均值化。将数据指标Exp按照ByGroup分类，对每个类别按照Exp=Exp–mean(Exp)进行中性化处理，处理之后Exp的均值为0。注：因分类标准不明确，此函数暂时不进行分类，即按整个市场，只对Exp进行中性化处理

<!-- tags: 数据仓库 向导函数 当日 -->

| 参数        | 类型    | 说明                  |
| ----------- | ------- | --------------------- |
| `exp`       | string  | 字符串。统计表达式    |
| `by_group`  | integer | 用户自定义。取值如下: |
| `cache_str` | string  | 字符串。缓存串        |

返回：float

### 示例

范例01：结果：1735.87966666667

```tsl
SetSysParam(pn_stock(), "SH600519");
SetSysParam(Pn_date(), 20231010T);
setsysparam(pn_StockArr(), getbkbydate("SH000300", 20231010T));
return IndNeutralize2(@open(), 0, "");
// 输出：1735.87966666667
```

## `indNeutralize4(exp, by_group, cache_str, fill_nan)`

声明：function

表达式当日中性化,与系统参数证券代码，时间，pn_StockArr()相关

<!-- tags: 数据仓库 向导函数 当日 -->

| 参数        | 类型   | 说明                 |
| ----------- | ------ | -------------------- |
| `exp`       | string | 字符串,函数表达式    |
| `by_group`  | int    | 整数,分类标准        |
| `cache_str` | string | 字符串,缓存串        |
| `fill_nan`  | int    | 整数,非交易日NAN替代 |

返回：float

### 示例

范例01：调用函数

```tsl
endt := 20231010T;
SetSysParam(pn_stock(), "SH600519");
SetSysParam(Pn_date(), 20231010T);
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return IndNeutralize4(@close(), 0, "", 1);
```

## `indNeutralizeOftheReport(exp, report_id, by_group, cache_str)`

声明：function

表达式当期中性化

<!-- tags: 数据仓库 向导函数 当日 -->

| 参数        | 类型   | 说明              |
| ----------- | ------ | ----------------- |
| `exp`       | string | 字符串,函数表达式 |
| `report_id` | int    | 整数,报告期       |
| `by_group`  | int    | 整数,分类标准     |
| `cache_str` | string | 字符串,缓存串     |

返回：float

### 示例

范例01：调用函数

```tsl
endt := 20221231T;
SetSysParam(pn_stock(), "SH600519");
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return IndNeutralizeOftheReport(@ReportOfAll(46002, DefaultRepID()), 20221231, 0);
```

## `percentRankOftheDay(exp, cache_str)`

声明：function

当日分位排名。与PercentRankOftheDay2最大的区别，停牌成分设为Nan

<!-- tags: 数据仓库 向导函数 当日 -->

| 参数        | 类型   | 说明               |
| ----------- | ------ | ------------------ |
| `exp`       | string | 字符串。统计表达式 |
| `cache_str` | string | 字符串。缓存串     |

返回：float|void

### 示例

范例01：结果：0.4615

```tsl
sp_s(PN_Stock(), 'SH600000');
endt := 20190701T;
sp_s(PN_Date(), endt);
sp_s(PN_Rate(), 1);
sp_s(PN_RateDay(), endt);
sp_s(pn_StockArr(), GetBKByDate('SH000300', endt));
Exp := @close();
return PercentRankOftheDay(exp);
// 输出：0.4615
```

## `percentRankOftheDay2(exp, cache_str)`

声明：function

当日分位排名。股票横截面数据排名，x表示一组股票的截面数据，按向量x的元素大小升序排序，序号从0开始，如\[0,1,...,n\]，然后输出排名所占总位数的百分比，即将排名归一到\[0,1\]区间。注意：Nan值不参与排名，输出Nan

<!-- tags: 数据仓库 向导函数 当日 排序 sort -->

| 参数        | 类型   | 说明               |
| ----------- | ------ | ------------------ |
| `exp`       | string | 字符串。统计表达式 |
| `cache_str` | string | 字符串。缓存串     |

返回：float

### 示例

范例01：结果：0.4615

```tsl
sp_s(PN_Stock(), 'SH600000');
endt := 20190701T;
sp_s(PN_Date(), endt);
sp_s(PN_Rate(), 1);
sp_s(PN_RateDay(), endt);
sp_s(pn_StockArr(), GetBKByDate('SH000300', endt));
Exp := @close();
return PercentRankOftheDay2(exp);
// 输出：0.4615
```

## `percentRankOftheDay3(exp, cache_str, fill_nan)`

声明：function

表达式当日分位排名,个股在pn_StockArr()成分股中的表达式值的分位排名，与系统参数证券代码，时间，pn_StockArr()相关

<!-- tags: 数据仓库 向导函数 当日 -->

| 参数        | 类型   | 说明                 |
| ----------- | ------ | -------------------- |
| `exp`       | string | 字符串,函数表达式    |
| `cache_str` | string | 字符串,缓存串        |
| `fill_nan`  | int    | 整数,非交易日NAN替代 |

返回：float

### 示例

范例01：调用函数

```tsl
endt := 20231010T;
SetSysParam(pn_stock(), "SH600519");
SetSysParam(Pn_date(), 20231010T);
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return PercentRankOftheDay3(@close(), "", 1);
```

## `percentRankOftheReport(exp, report_id, cache_str)`

声明：function

表达式当期分位排名,个股在pn_StockArr()成分股中的表达式值的排名，与系统参数证券代码，时间，pn_StockArr()相关

<!-- tags: 数据仓库 向导函数 当日 -->

| 参数        | 类型   | 说明              |
| ----------- | ------ | ----------------- |
| `exp`       | string | 字符串,函数表达式 |
| `report_id` | int    | 整数,报告期       |
| `cache_str` | string | 字符串,缓存串     |

返回：float

### 示例

范例01：调用函数

```tsl
endt := 20221231T;
SetSysParam(pn_stock(), "SH600519");
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return PercentRankOftheReport(@ReportOfAll(46002, DefaultRepID()), 20221231);
```

## `rankOftheDay(exp, sort_order, cache_str)`

声明：function

当日横比排名。注意：pn_StockArr当日无交易的成分设置为Nan；EXp计算为NAN值时，不参与排名，排名为NAN

<!-- tags: 数据仓库 向导函数 当日 排序 sort NAN -->

| 参数         | 类型   | 说明                      |
| ------------ | ------ | ------------------------- |
| `exp`        | string | 字符串。统计表达式        |
| `sort_order` | int    | 整数。排位方式，取值如下: |
| `cache_str`  | string | 字符串。缓存串            |

返回：int

### 示例

范例01：结果：161

```tsl
sp_s(PN_Stock(), 'SH600000');
endt := 20190701T;
sp_s(PN_Date(), endt);
sp_s(PN_Rate(), 1);
sp_s(PN_RateDay(), endt);
sp_s(pn_StockArr(), GetBKByDate('SH000300', endt));
Exp := @close();
return RankOftheDay(exp, 0);
// 输出：161
```

## `rankOftheDay2(exp, sort_order, cache_str)`

声明：function

当日最新值横比排名。与RankOftheDay的区别在于：RankOftheDay2不会将pn_StockArr当日的停牌成分设置为Nan。注意：EXp计算为NAN值时，不参与排名，排名为NAN

<!-- tags: 数据仓库 向导函数 当日 排序 sort NAN -->

| 参数         | 类型   | 说明                      |
| ------------ | ------ | ------------------------- |
| `exp`        | string | 字符串。统计表达式        |
| `sort_order` | int    | 整数。排位方式，取值如下: |
| `cache_str`  | string | 字符串。缓存串            |

返回：int

### 示例

范例01：结果：161

```tsl
sp_s(PN_Stock(), 'SH600000');
endt := 20190701T;
sp_s(PN_Date(), endt);
sp_s(PN_Rate(), 1);
sp_s(PN_RateDay(), endt);
sp_s(pn_StockArr(), GetBKByDate('SH000300', endt));
Exp := @close();
return RankOftheDay2(exp, 0);
// 输出：161
```

## `rankOftheDay3(exp, sort_order, cache_str, fill_nan)`

声明：function

表达式当日排名,个股在pn_StockArr()成分股中的表达式值的排名，与系统参数证券代码，时间，pn_StockArr()相关

<!-- tags: 数据仓库 向导函数 当日 排序 sort -->

| 参数         | 类型   | 说明                 |
| ------------ | ------ | -------------------- |
| `exp`        | string | 字符串,函数表达式    |
| `sort_order` | int    | 整数,排位方式        |
| `cache_str`  | string | 字符串,缓存串        |
| `fill_nan`   | int    | 整数,非交易日NAN替代 |

返回：float

### 示例

范例01：调用函数

```tsl
endt := 20231010T;
SetSysParam(pn_stock(), "SH600519");
SetSysParam(Pn_date(), 20231010T);
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return RankOftheDay3(@close(), 0, "", 1);
```

## `rankOftheReport(exp, report_id, sort_order, cache_str)`

声明：function

表达式当期排名,个股在pn_StockArr()成分股中的表达式值的排名，与系统参数证券代码，时间，pn_StockArr()相关

<!-- tags: 数据仓库 向导函数 当日 排序 sort -->

| 参数         | 类型   | 说明              |
| ------------ | ------ | ----------------- |
| `exp`        | string | 字符串,函数表达式 |
| `report_id`  | int    | 整数,报告期       |
| `sort_order` | int    | 整数,排位方式     |
| `cache_str`  | string | 字符串,缓存串     |

返回：float

### 示例

范例01：调用函数

```tsl
endt := 20221231T;
SetSysParam(pn_stock(), "SH600519");
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return RankOftheReport(@ReportOfAll(46002, DefaultRepID()), 20221231, 0);
```

## `scaleOfSeries(exp, a, cache_str)`

声明：function

标准化（无交易成分设为NAN）。将x中的非NAN值进行标准化，使x的绝对值的和为a，默认a=1。注意：NAN值依然输出NAN

<!-- tags: 数据仓库 向导函数 当日 NAN -->

| 参数        | 类型   | 说明               |
| ----------- | ------ | ------------------ |
| `exp`       | string | 字符串。统计表达式 |
| `a`         | float  | 实数。标准化数值   |
| `cache_str` | string | 字符串。缓存串     |

返回：float|void

### 示例

范例01：调用函数

```tsl
endt := 20231010T;
SetSysParam(pn_stock(), "SH600519");
SetSysParam(Pn_date(), 20231010T);
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return ScaleOfSeries(@close(), 1, "");
```

## `scaleOfSeries2(exp, a, cache_str)`

声明：function

标准化。将x中的非NAN值进行标准化，使x的绝对值的和为a，默认a=1。注意：NAN值依然输出NAN

<!-- tags: 数据仓库 向导函数 当日 NAN -->

| 参数        | 类型   | 说明               |
| ----------- | ------ | ------------------ |
| `exp`       | string | 字符串。统计表达式 |
| `a`         | float  | 实数。标准化数值   |
| `cache_str` | string | 字符串。缓存串     |

返回：float

### 示例

范例01：调用函数

```tsl
endt := 20231010T;
SetSysParam(pn_stock(), "SH600519");
SetSysParam(Pn_date(), 20231010T);
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return ScaleOfSeries2(@close(), 1, "");
```

## `scaleOfSeries3(exp, a, cache_str, fill_nan)`

声明：function

表达式当日标准化,与系统参数证券代码，时间，pn_StockArr()相关

<!-- tags: 数据仓库 向导函数 当日 -->

| 参数        | 类型   | 说明                 |
| ----------- | ------ | -------------------- |
| `exp`       | string | 字符串,函数表达式    |
| `a`         | int    | 整数,标准化数值      |
| `cache_str` | string | 字符串,缓存串        |
| `fill_nan`  | int    | 整数,非交易日NAN替代 |

返回：float

### 示例

范例01：调用函数

```tsl
endt := 20231010T;
SetSysParam(pn_stock(), "SH600519");
SetSysParam(Pn_date(), 20231010T);
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return ScaleOfSeries3(@close(), 1, "", 1);
```

## `scaleOfSeriesOftheReport(exp, report_id, a, cache_str)`

声明：function

表达式当期标准化

<!-- tags: 数据仓库 向导函数 当日 -->

| 参数        | 类型   | 说明              |
| ----------- | ------ | ----------------- |
| `exp`       | string | 字符串,函数表达式 |
| `report_id` | int    | 整数,报告期       |
| `a`         | int    | 整数,标准化数值   |
| `cache_str` | string | 字符串,缓存串     |

返回：float

### 示例

范例01：调用函数

```tsl
endt := 20221231T;
SetSysParam(pn_stock(), "SH600519");
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return ScaleOfSeriesOftheReport(@ReportOfAll(46002, DefaultRepID()), 20221231, 1);
```
