# 数据仓库 / N期

## `accOfNReport(exp, report_id, n, report_type, if_stand, return_type)`

N期加速度算子

| 参数          | 类型     | 说明                                                                                                     |
| ------------- | -------- | -------------------------------------------------------------------------------------------------------- |
| `exp`         | expr     | 表达式类型，计算相关财务指标，一般与报告期相关，如TTM归属母公司净利润:@Last12MData(DefaultRepID(),46078) |
| `report_id`   | datetime | 报告期                                                                                                   |
| `n`           | int      | 整数，最近N期                                                                                            |
| `report_type` | int      | 报告期类型                                                                                               |
| `if_stand`    | bool     | 布尔类型，回归数据是否标准化                                                                             |
| `return_type` | int      | 整型，返回类型                                                                                           |

返回：float

### 示例

```tsl
setsysparam(pn_stock(),"SH600519");?
return ACCOfNReport(@Last12MData(DefaultRepID(),46078),20201231,8,1);
```

## `accOfNReport2(exp, report_id, n)`

N季加速度，与ACCOfNReport的区别在于仅支持季度数据计算，与系统证券相关

| 参数        | 类型     | 说明                                                                                                        |
| ----------- | -------- | ----------------------------------------------------------------------------------------------------------- |
| `exp`       | expr     | 表达式类型，计算相关财务指标，一般与报告期相关，；如TTM归属母公司净利润为@Last12MData(DefaultRepID(),46078) |
| `report_id` | datetime | 报告期                                                                                                      |
| `n`         | int      | 整数，最近N季                                                                                               |

返回：float

### 示例

```tsl
setsysparam(pn_stock(),"SH600000");
Exp:=@reportofall(9900002,GetSysParam('DefaultRepID'));
ReportID:=20211231;
N:=8;
return RobustACCOfNReport2(Exp,ReportID,N);   //-0.2568
```

## `avgOfNReport(exp, report_id, n, report_type)`

当前时间ReportID向前推N年，返回从ReportID-N到ReportID时间报告期Exp指标平均值，与系统参数(股票)相关。

| 参数          | 类型 | 说明                             |
| ------------- | ---- | -------------------------------- |
| `exp`         | Expr | 函数表达式                       |
| `report_id`   | int  | 报告期                           |
| `n`           | int  | 整数，期数                       |
| `report_type` | int  | 整数，0：年度，1：季度，默认年度 |

返回：float

## `avgOfNReport2(exp, report_id, n)`

N个季度报告期数据的平均值，与系统证券相关

| 参数        | 类型     | 说明                                                                                                        |
| ----------- | -------- | ----------------------------------------------------------------------------------------------------------- |
| `exp`       | expr     | 表达式类型，计算相关财务指标，一般与报告期相关，；如TTM归属母公司净利润为@Last12MData(DefaultRepID(),46078) |
| `report_id` | datetime | 报告期                                                                                                      |
| `n`         | int      | 整数，最近N季                                                                                               |

返回：float

### 示例

```tsl
setsysparam(pn_stock(),"SH600000");
Exp:=@reportofall(46002,GetSysParam('DefaultRepID'));
ReportID:=20211231;
N:=8;
return AvgOfNReport2(Exp,ReportID,N);   //122912375000
```

## `continuedMatchOfNReport(exp, report_id, n)`

当前时间ReportID向前推N年，若从ReportID-N到ReportID时间均存在报告Exp则返回1，否则返回0，与系统参数(股票)相关。

| 参数        | 类型 | 说明           |
| ----------- | ---- | -------------- |
| `exp`       | Expr | 布尔公式表达式 |
| `report_id` | int  | 报告期         |
| `n`         | int  | 整数           |

返回：bool

### 示例

```tsl
判断2014到2015这两年平安银行年报是否全部存在
SetSysParam(pn_stock(),'SZ000001');
return ContinuedMatchOfNReport(@reportofall(46002,GetSysParam('DefaultRepID')),20151231,2);
```

## `eaaOfNReport(exp, report_id, last_report_type)`

N期加速度EAA

| 参数               | 类型     | 说明                                                                                                     |
| ------------------ | -------- | -------------------------------------------------------------------------------------------------------- |
| `exp`              | expr     | 表达式类型，计算相关财务指标，一般与报告期相关，如TTM归属母公司净利润:@Last12MData(DefaultRepID(),46078) |
| `report_id`        | datetime | 报告期                                                                                                   |
| `last_report_type` | int      | 整数，上期报告期类型                                                                                     |

返回：float

### 示例

```tsl
setsysparam(pn_stock(),"SH600519");
Exp:=@LastQuarterData(DefaultRepID(),46078);
ReportID:=20211231;
LastReportType:=0;
t:=EAAOfNReport(Exp,ReportID,LastReportType);
return t;   //-0.016
```

## `eavOfNReport(exp, report_id, n, report_type, last_report_type)`

N期加速度EAV

| 参数               | 类型     | 说明                                                                                                     |
| ------------------ | -------- | -------------------------------------------------------------------------------------------------------- |
| `exp`              | expr     | 表达式类型，计算相关财务指标，一般与报告期相关，如TTM归属母公司净利润:@Last12MData(DefaultRepID(),46078) |
| `report_id`        | datetime | 报告期                                                                                                   |
| `n`                | int      | 整数，最近N期                                                                                            |
| `report_type`      | int      | 报告期类型                                                                                               |
| `last_report_type` | int      | 整数，上期报告期类型                                                                                     |

返回：float

### 示例

```tsl
setsysparam(pn_stock(),"SH600519");
Exp:=@LastQuarterData(DefaultRepID(),46078);
ReportID:=20200930;
N:=8;
ReportType:=1; //0：年度，1：季度
LastReportType:=0;
t:=EAVOfNReport(Exp,ReportID,N,ReportType,LastReportType);
return t;    //-0.45
```

## `growthOfNReport(exp, report_id, n, return_type)`

当前时间ReportID向前推N年，返回从ReportID-N与ReportID表达式Exp指标的增长比例，其中returntype决定增长模式，与系统参数(股票)相关。

| 参数          | 类型 | 说明                 |
| ------------- | ---- | -------------------- |
| `exp`         | Expr | 函数表达式           |
| `report_id`   | int  | 报告期               |
| `n`           | int  | 整数                 |
| `return_type` | int  | 用户自定义，返回类型 |

返回：float

### 示例

```tsl
返回平安银行2014年与2015年报营业收入增长比例
SetSysParam(pn_stock(),'SZ000001');
return GrowthOfNReport(@reportofall(46002,GetSysParam('DefaultRepID')),20151231,1,1);
```

## `highestOfNReport(exp, report_id, n, report_type)`

表达式N期最高

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

返回：float

### 示例

```tsl
SetSysParam(pn_stock(),"SH600585");
return HighestOfNReport(@ReportOfAll(46080,DefaultRepID()),20221231,5,0);
```

## `highGrowthOfNReport(exp, report_id, n, report_type, range)`

N期高速增长拐点：最近N期中，第N期数据上升且大于前N-1期极差的range倍 max=max(前N-1期数据） min=min(前N-1期数据） 第N期&gt;上期+range\*(max-min)

| 参数          | 类型     | 说明                                                                                                     |
| ------------- | -------- | -------------------------------------------------------------------------------------------------------- |
| `exp`         | expr     | 表达式类型，计算相关财务指标，一般与报告期相关，如TTM归属母公司净利润:@Last12MData(DefaultRepID(),46078) |
| `report_id`   | datetime | 报告期                                                                                                   |
| `n`           | int      | 整数，最近N期                                                                                            |
| `report_type` | int      | 报告期类型                                                                                               |
| `range`       | float    | 实数，前N-1期极差的Range倍，用于衡量高速增长的幅度，默认取3                                              |

返回：bool

### 示例

```tsl
setsysparam(pn_stock(),"SZ002340");
Exp:=@LastQuarterData(GetSysParam('DefaultRepID'),9900604);
ReportID:=20210331;
N:=5;
ReportType:=1; //0：年度，1：季度
Range:=3;
t:=HighGrowthOfNReport(Exp,ReportID,N,ReportType,Range);
return t;     //1
```

## `lowestOfNReport(exp, report_id, n, report_type)`

表达式N期最低

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

返回：float

### 示例

```tsl
SetSysParam(pn_stock(),"SH600585");
return lowestOfNReport(@ReportOfAll(46080,DefaultRepID()),20221231,5,0);
```

## `occuredOfNReport(exp, report_id, n)`

当前时间ReportID向前推N年，返回从ReportID-N到ReportID时间发生报告Exp的次数，与系统参数(股票)相关。

| 参数        | 类型 | 说明           |
| ----------- | ---- | -------------- |
| `exp`       | Expr | 布尔公式表达式 |
| `report_id` | int  | 报告期         |
| `n`         | int  | 整数           |

返回：int

### 示例

```tsl
返回平安银行截止到2015年12月31日的所有年报数量
SetSysParam(pn_stock(),'SZ000001');
returnOccuredOfNReport(@reportofall(46002,GetSysParam('DefaultRepID')),20151231,100);
```

## `occuredRepIdOfNReport(exp, report_id, n)`

当前时间ReportID向前推N年，若从ReportID-N到ReportID时间存在报告Exp则返回报告期，与系统参数(股票)相关。

| 参数        | 类型   | 说明           |
| ----------- | ------ | -------------- |
| `exp`       | any    | 布尔公式表达式 |
| `report_id` | string | 报告期         |
| `n`         | any    | 整数，期数     |

返回：any

## `refReportValue(exp, report_id, n)`

当前时间ReportID向前推N年，返回ReportID-N时间点表达式 Exp指标值，与系统参数(股票)相关。

| 参数        | 类型 | 说明       |
| ----------- | ---- | ---------- |
| `exp`       | Expr | 函数表达式 |
| `report_id` | int  | 报告期     |
| `n`         | int  | 整数       |

返回：float

### 示例

```tsl
返回平安银行2015年年报营业收入额
SetSysParam(pn_stock(),'SZ000001');
return RefReportValue(@reportofall(46002,GetSysParam('DefaultRepID')),20161231,1);
```

## `robustAccOfNReport(exp, report_id, n, report_type, last_report_type)`

N期稳健加速度

| 参数               | 类型     | 说明                                                                                                                                       |
| ------------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| `exp`              | expr     | 表达式类型，计算相关财务指标，一般与报告期相关，通常以增长率来表示增速。；如TTM净利润增长率(%)表达式为@Last12MData(DefaultRepID(),9900604) |
| `report_id`        | datetime | 报告期                                                                                                                                     |
| `n`                | int      | 整数，最近N期                                                                                                                              |
| `report_type`      | int      | 报告期类型                                                                                                                                 |
| `last_report_type` | int      | 整数，上期报告期类型，默认与ReportType取值相同（兼容历史）                                                                                 |

返回：float

### 示例

```tsl
setsysparam(pn_stock(),"SH600519");
return RobustACCOfNReport(@Last12MData(DefaultRepID(),9900604),20201231,8,0); // -0.0878801178157446
```

## `robustAccOfNReport2(exp, report_id, n)`

N季稳健加速度，与RobustACCOfNReport的区别在于仅支持季度数据计算，与系统证券相关

| 参数        | 类型     | 说明                                                                                                        |
| ----------- | -------- | ----------------------------------------------------------------------------------------------------------- |
| `exp`       | expr     | 表达式类型，计算相关财务指标，一般与报告期相关，；如TTM归属母公司净利润为@Last12MData(DefaultRepID(),46078) |
| `report_id` | datetime | 报告期                                                                                                      |
| `n`         | int      | 整数，最近N季                                                                                               |

返回：float

### 示例

```tsl
setsysparam(pn_stock(),"SH600000");
Exp:=@reportofall(9900002,GetSysParam('DefaultRepID'));
ReportID:=20211231;
N:=8;
return RobustACCOfNReport2(Exp,ReportID,N);   //-0.2568
```

## `robustGrowthOfNReport2(exp, report_id, n)`

N季稳健增速，与RobustGrowthOfNReport的区别在于仅支持季度数据计算，与系统证券相关

| 参数        | 类型     | 说明                                                                                                        |
| ----------- | -------- | ----------------------------------------------------------------------------------------------------------- |
| `exp`       | expr     | 表达式类型，计算相关财务指标，一般与报告期相关，；如TTM归属母公司净利润为@Last12MData(DefaultRepID(),46078) |
| `report_id` | datetime | 报告期                                                                                                      |
| `n`         | int      | 整数，最近N季                                                                                               |

返回：float

### 示例

```tsl
setsysparam(pn_stock(),"SH600000");
Exp:=@reportofall(9900002,GetSysParam('DefaultRepID'));
ReportID:=20211231;
N:=8;
return RobustGrowthOfNReport2(Exp,ReportID,N); //-0.3269
```

## `secondOrderGrowthOfNReport(exp, report_id, n, report_type)`

N期二阶增长拐点：最近N期中，前N-1期逐渐下降，第N期数据上升 l 参数： Exp：表达式类型，计算相关财务指标，一般与报告期相关，如TTM归属母公司净利润：@Last12MData(DefaultRepID(),46078) ReportID：报告期 N：整数，最近N期 ReportType：报告期类型 取值 含义 备注 0 年度标准（默认） 假设ReportID:=20200930，N=2，对应最近N个报告期为20190930、20200930 1 季度标准 假设ReportID:=20200930，N=2，对应最近N个报告期为20200630、20200930

| 参数          | 类型     | 说明 |
| ------------- | -------- | ---- |
| `exp`         | expr     |      |
| `report_id`   | datetime |      |
| `n`           | int      |      |
| `report_type` | int      |      |

返回：bool

### 示例

```tsl
setsysparam(pn_stock(),"SZ000636");
Exp:=@LastQuarterData(GetSysParam('DefaultRepID'),9900604);
ReportID:=20200331;
N:=5;
ReportType:=1; //0：年度，1：季度
t:=SecondOrderGrowthOfNReport(Exp,ReportID,N,ReportType);
return t;    //1
```

## `standGrowthOfNReport(exp, report_id, n, report_type)`

N期标准化增长率

| 参数          | 类型     | 说明                                                                                                     |
| ------------- | -------- | -------------------------------------------------------------------------------------------------------- |
| `exp`         | expr     | 表达式类型，计算相关财务指标，一般与报告期相关，如TTM归属母公司净利润:@Last12MData(DefaultRepID(),46078) |
| `report_id`   | datetime | 报告期                                                                                                   |
| `n`           | int      | 整数，最近N期                                                                                            |
| `report_type` | int      | 报告期类型                                                                                               |

返回：float

### 示例

```tsl
setsysparam(pn_stock(),"SH600519");
Exp:=@LastQuarterData(GetSysParam('DefaultRepID'),46078);
ReportID:=20211231;
N:=8;
ReportType:=1; //0：年度，1：季度
t:=StandGrowthOfNReport(Exp,ReportID,N,ReportType);
return t;   //1.265
```

## `stdOfNReport2(exp, report_id, n)`

N个季度报告期数据的标准差，与系统证券相关

| 参数        | 类型     | 说明                                                                                                        |
| ----------- | -------- | ----------------------------------------------------------------------------------------------------------- |
| `exp`       | expr     | 表达式类型，计算相关财务指标，一般与报告期相关，；如TTM归属母公司净利润为@Last12MData(DefaultRepID(),46078) |
| `report_id` | datetime | 报告期                                                                                                      |
| `n`         | int      | 整数，最近N季                                                                                               |

返回：float

### 示例

```tsl
setsysparam(pn_stock(),"SH600000");
Exp:=@reportofall(46002,GetSysParam('DefaultRepID'));
ReportID:=20211231;
N:=8;
return StdOfNReport2(Exp,ReportID,N);  //56286669451.8528
```

## `sumOfNReport(exp, report_id, n)`

当前时间ReportID向前推N年，返回从ReportID-N到ReportID时间报告期Exp指标和，与系统参数(股票)相关。

| 参数        | 类型 | 说明       |
| ----------- | ---- | ---------- |
| `exp`       | Expr | 函数表达式 |
| `report_id` | int  | 报告期     |
| `n`         | int  | 整数，期数 |

返回：float

### 示例

```tsl
计算平安银行2015年报与2014年报营业收入的和
SetSysParam(pn_stock(),'SZ000001');
return SumOfNReport(@reportofall(46002,GetSysParam('DefaultRepID')),20151231,2);
```

## `sumOfNReport2(exp, report_id, n)`

N个季度报告期数据之和，与系统证券相关

| 参数        | 类型     | 说明                                                                                                      |
| ----------- | -------- | --------------------------------------------------------------------------------------------------------- |
| `exp`       | expr     | 表达式类型，计算相关财务指标，一般与报告期相关，；如TTM归属母公司净利润@Last12MData(DefaultRepID(),46078) |
| `report_id` | datetime | 报告期                                                                                                    |
| `n`         | int      | 整数，最近N季                                                                                             |

返回：float

### 示例

```tsl
setsysparam(pn_stock(),"SH600000");
Exp:=@reportofall(46002,GetSysParam('DefaultRepID'));
ReportID:=20211231;
N:=8;
return SumOfNReport2(Exp,ReportID,N);  //983299000000
```

## `turnPositiveOfNReport(exp, report_id, n, report_type)`

N期转正拐点：最近N期中，前N-1期数据小于0，第N期数据大于0

| 参数          | 类型     | 说明                                                                                                     |
| ------------- | -------- | -------------------------------------------------------------------------------------------------------- |
| `exp`         | expr     | 表达式类型，计算相关财务指标，一般与报告期相关，如TTM归属母公司净利润:@Last12MData(DefaultRepID(),46078) |
| `report_id`   | datetime | 报告期                                                                                                   |
| `n`           | int      | 整数，最近N期                                                                                            |
| `report_type` | int      | 报告期类型                                                                                               |

返回：bool

### 示例

```tsl
setsysparam(pn_stock(),"SH600110");
Exp:=@LastQuarterData(GetSysParam('DefaultRepID'),42017);  //季度扣非净利润
ReportID:=20210331;
N:=5;
ReportType:=1; //0：年度，1：季度
t:=TurnPositiveOfNReport(Exp,ReportID,N,ReportType);
return t;   //1
```

## `robustGrowthOfNReport(exp, report_id, n, report_type)`

过去N期稳健增速，与系统证券相关

| 参数          | 类型        | 说明                                                                    |
| ------------- | ----------- | ----------------------------------------------------------------------- |
| `exp`         | TExpression | 表达式类型，计算相关财务指标，一般与报告期相关，通常以增长率来表示增速. |
| `report_id`   | RDate       | 报告期                                                                  |
| `n`           | Int         | 整数，最近N期                                                           |
| `report_type` | Int         | 报告期类型                                                              |

返回：Real

### 示例

```tsl
setSysParam(pn_stock(),"SH600519");
return robustGrowthOfNReport(@last12MData(defaultRepId(),9900604),
20201231,8,0); // 0.916987656203954
```
