Skip to main content

EWMA 模块说明文档

1. 功能简介

EWMA(指数加权移动平均,Exponentially Weighted Moving Average)模块用于对输入的数值时间序列进行平滑处理。
其特点是:越新的数据权重越高,越旧的数据权重逐步衰减
模块可适配任意时间序列(如价格变化率、波动率变化率等),不限定具体金融变量。


2. 输入与输出

  • 输入

    • 时间序列 {xt}\{x_t\}:任意数值序列,按时间顺序输入
    • 平滑参数h:表示‘half_life’(半衰期),用于后期计算α\alpha
  • 输出

    • 与输入长度一致的平滑序列 {EWMAt}\{\text{EWMA}_t\}

3. 状态管理

EWMA 是一个递推计算,需要保存并更新内部状态:

  • 是否已经完成初始化
  • 当前的 EWMA 值
  • 已经更新过的有效样本数(不含被跳过的 NaN)

4. 计算流程

  1. 接收新样本 xtx_t

    • 若样本缺失:
      • Skip:不更新状态与计数,本次输出沿用上次有效 EWMA;
    • 若尚未初始化:设定首个 EWMA 基值为0(FromZero)。
  2. 确定平滑系数 α\alpha

    • 指定半衰期 h,计算:
      α=1eln(0.5)/h\alpha = 1 - e^{\ln(0.5)/h}
  3. 递推计算

    EWMAt=αxt+(1α)EWMAt1\text{EWMA}_t = \alpha \cdot x_t + (1-\alpha)\cdot \text{EWMA}_{t-1}
  4. 更新状态

    • 保存新的 EWMAt\text{EWMA}_t

5. 特点与边界条件

  • 实时性:单次更新只依赖上一次 EWMA,计算复杂度 O(1)O(1)
  • 可移植性:算法与输入变量类型无关,可对任意数值序列平滑。
  • 数值安全:对极端 α\alpha 做边界约束,避免浮点精度问题。

6. 使用场景

  • 对价格变化率序列进行平滑,减少短期噪声。
  • 对波动率变化率序列进行平滑,作为后续相关因子或阈值计算的输入。
  • 实盘中跨日运行:通过状态快照恢复 EWMA_tn_eff,避免每天开盘的冷启动抖动。