# 金融 / 专题函数 / 基础算法 / 基础算法02：常见加权统计量及其实现 / 双序列移动

## `ewmCorrel(a, b, y, alphatype, adjust, iflast)`

声明：function

返回指数加权移动相关系数

<!-- tags: 金融 专题函数 基础算法 02： 基础算法常见加权统计量 双序列移动 返回 获取 统计 概率 statistics -->

| 参数        | 类型    | 说明                                                                                                     |
| ----------- | ------- | -------------------------------------------------------------------------------------------------------- |
| `a`         | array   | 样本a待计算的一维数字数组                                                                                |
| `b`         | array   | 样本b待计算的一维数字数组                                                                                |
| `y`         | real    | 衰减因子，与alphatype共同决定实际的衰减因子alpha，见平滑系数的确定                                       |
| `alphatype` | integer | 用户自定义，默认为0                                                                                      |
| `adjust`    | bool    | 是否调整，True、实际权重计算，False、根据无穷序列假设下的递推式计算，默认为False，见指数加权的两种递推式 |
| `iflast`    | bool    | 是否只返回最后一个数，默认为False                                                                        |

返回：array

### 示例

范例01：调用函数

```tsl
sp_s(Pn_stock(), 'SH000300');
sp_s(pn_date(), 20190415T);
a := nDay3(50, stockZf3());
b := nDay3(50, spec(stockZf3(), 'SH000001'));
return a|b|ewmCorrel(a, b, 10, 1);
```

## `ewmIntercept(y, x, a, alphatype, adjust, iflast)`

声明：function

计算指数加权移动回归截距，即 `y` 的加权均值减去斜率与 `x` 加权均值的乘积

<!-- tags: 金融 加权统计 指数加权 移动回归 截距 EWM -->

| 参数        | 类型    | 说明                                                                |
| ----------- | ------- | ------------------------------------------------------------------- |
| `y`         | array   | 因变量的一维数值数组                                                |
| `x`         | array   | 自变量的一维数值数组                                                |
| `a`         | real    | 与 `alphatype` 共同决定平滑系数的衰减参数                           |
| `alphatype` | integer | 衰减参数类型，`0` alpha、`1` span、`2` center of mass、`3` halflife |
| `adjust`    | bool    | 可选。是否按实际权重调整，默认 `false`                              |
| `iflast`    | bool    | 可选。是否只返回最后一个值，默认 `false`                            |

返回：array

### 示例

范例01：计算指数加权移动回归截距

```tsl
y := array(2.0, 4.0, 6.0, 8.0);
x := array(1.0, 2.0, 3.0, 4.0);
return ewmIntercept(y, x, 2.0, 1, false, false);
```

## `ewmResidual(y, x, a, alphatype, adjust, iflast)`

声明：function

计算指数加权移动回归残差，即 `y - (截距 + 斜率 * x)`

<!-- tags: 金融 加权统计 指数加权 移动回归 残差 EWM -->

| 参数        | 类型    | 说明                                                                |
| ----------- | ------- | ------------------------------------------------------------------- |
| `y`         | array   | 因变量的一维数值数组                                                |
| `x`         | array   | 自变量的一维数值数组                                                |
| `a`         | real    | 与 `alphatype` 共同决定平滑系数的衰减参数                           |
| `alphatype` | integer | 衰减参数类型，`0` alpha、`1` span、`2` center of mass、`3` halflife |
| `adjust`    | bool    | 可选。是否按实际权重调整，默认 `false`                              |
| `iflast`    | bool    | 可选。是否只返回最后一个值，默认 `false`                            |

返回：array

### 示例

范例01：计算指数加权移动回归残差

```tsl
y := array(2.0, 4.0, 6.0, 8.0);
x := array(1.0, 2.0, 3.0, 4.0);
return ewmResidual(y, x, 2.0, 1, false, false);
```

## `ewmSlope(y, x, a, alphatype, adjust, iflast)`

声明：function

计算指数加权移动回归斜率，即 `y` 与 `x` 的加权协方差除以 `x` 的加权方差

<!-- tags: 金融 加权统计 指数加权 移动回归 斜率 EWM -->

| 参数        | 类型    | 说明                                                                |
| ----------- | ------- | ------------------------------------------------------------------- |
| `y`         | array   | 因变量的一维数值数组                                                |
| `x`         | array   | 自变量的一维数值数组                                                |
| `a`         | real    | 与 `alphatype` 共同决定平滑系数的衰减参数                           |
| `alphatype` | integer | 衰减参数类型，`0` alpha、`1` span、`2` center of mass、`3` halflife |
| `adjust`    | bool    | 可选。是否按实际权重调整，默认 `false`                              |
| `iflast`    | bool    | 可选。是否只返回最后一个值，默认 `false`                            |

返回：array

### 示例

范例01：计算指数加权移动回归斜率

```tsl
y := array(2.0, 4.0, 6.0, 8.0);
x := array(1.0, 2.0, 3.0, 4.0);
return ewmSlope(y, x, 2.0, 1, false, false);
```
