EWMA 模块说明文档
1. 功能简介
EWMA(指数加权移动平均,Exponentially Weighted Moving Average)模块用于对输入的数值时间序列进行平滑处理。
其特点是:越新的数据权重越高,越旧的数据权重逐步衰减。
模块可适配任意时间序列(如价格变化率、波动率变化率等),不限定具体金融变量。
2. 输入与输出
-
输入
- 时间序列 :任意数值序列,按时间顺序输入
- 平滑参数
h:表示‘half_life’(半衰期),用于后期计算
-
输出
- 与输入长度一致的平滑序列
3. 状态管理
EWMA 是一个递推计算,需要保存并更新内部状态:
- 是否已经完成初始化
- 当前的 EWMA 值
- 已经更新过的有效样本数(不含被跳过的 NaN)
4. 计算流程
-
接收新样本
- 若样本缺失:
- Skip:不更新状态与计数,本次输出沿用上次有效 EWMA;
- 若尚未初始化:设定首个 EWMA 基值为0(FromZero)。
- 若样本缺失:
-
确定平滑系数
- 指定半衰期
h,计算:
- 指定半衰期
-
递推计算
-
更新状态
- 保存新的 ;
5. 特点与边界条件
- 实时性:单次更新只依赖上一次 EWMA,计算复杂度 。
- 可移植性:算法与输入变量类型无关,可对任意数值序列平滑。
- 数值安全:对极端 做边界约束,避免浮点精度问题。
6. 使用场景
- 对价格变化率序列进行平滑,减少短期噪声。
- 对波动率变化率序列进行平滑,作为后续相关因子或阈值计算的输入。
- 实盘中跨日运行:通过状态快照恢复
EWMA_t与n_eff,避免每天开盘的冷启动抖动。