股票指标:指数移动平均(EXPMA)解析

EXPMA指标说明

EXPMA为因移动平均线被视为落后指标的缺失而发展出来的,为解决一旦价格已脱离均线差值扩大,而平均线未能立即反应,EXPMA可以减少类似缺点。
EXPMA译为指数平均线,修正移动平均线较股价落后的缺点,本指标随股价波动反应快速,用法与移动平均线相同。
在这里插入图片描述

指数加权平均EWA

指数加权平均(Exponentially Weighted Average, EWA),是一种统计学方法,用于平滑时间序列数据。它通过给予最近的数据点更高的权重,并逐渐减少较早数据点的权重,来计算平均值。这种方法在处理和分析时间序列数据时特别有用,因为它能够更好地反映最新的趋势。

EXPMA,全称为指数移动平均(Exponential Moving Average),实际上与EWA(指数加权平均)指的是同一个概念。在不同的上下文中,可能会使用不同的术语,但它们描述的是同一种方法。

EWA 的核心思想

  • 平滑数据:通过计算一系列观测值的加权平均来减少短期波动的影响,从而更容易识别出长期趋势。
  • 权重分配:对较新的数据给予较高的权重,而对较旧的数据给予逐渐减少的权重。这种权重的分配是指数级下降的,因此得名“指数”移动平均或加权平均。

EWA计算公式

假设有一个时间序列数据 x t x_t xt,其中 t t t表示时间步长。指数加权平均 v t v_t vt 在时间 t t t的值可以按照如下递归公式计算:
v t = β v t − 1 + ( 1 − β ) x t v_t = \beta v_{t-1} + (1-\beta)x_t vt=βvt1+(1β)xt
这里:

  • v t v_t vt是时间 t t t的指数加权平均值。

  • x t x_t xt是时间 t t t的观测值。

  • β \beta β 是一个介于0和1之间的参数,表示衰减率。它的值决定了历史数据被赋予的权重大小。较小的 β \beta β 值意味着对过去观察结果赋予较低的权重,使得模型更关注近期的数据;较大的 β \beta β 值则会使得模型考虑更多的历史数据。

EWA计算示例

通过一个具体的例子来说明指数加权平均(EWA)是如何计算的。

假设我们有一个时间序列数据集,表示某商品连续5天的价格,分别为:

  • x 1 = 10 x_1 = 10 x1=10
  • x 2 = 12 x_2 = 12 x2=12
  • x 3 = 11 x_3 = 11 x3=11
  • x 4 = 13 x_4 = 13 x4=13
  • x 5 = 14 x_5 = 14 x5=14

我们选择衰减率 β = 0.9 \beta = 0.9 β=0.9 来计算指数加权平均值。

首先,初始化 v 1 = x 1 = 10 v_1 = x_1 = 10 v1=x1=10

然后,我们可以依次计算每一天的指数加权平均值:

  • 对于 t = 2 t=2 t=2
    v 2 = 0.9 × 10 + ( 1 − 0.9 ) × 12 = 9 + 1.2 = 10.2 v_2 = 0.9 \times 10 + (1-0.9) \times 12 = 9 + 1.2 = 10.2 v2=0.9×10+(10.9)×12=9+1.2=10.2

  • 对于 t = 3 t=3 t=3 v 3 = 0.9 × 10.2 + ( 1 − 0.9 ) × 11 = 9.18 + 1.1 = 10.28 v_3 = 0.9 \times 10.2 + (1-0.9) \times 11 = 9.18 + 1.1 = 10.28 v3=0.9×10.2+(10.9)×11=9.18+1.1=10.28

  • 对于 t = 4 t=4 t=4
    v 4 = 0.9 × 10.28 + ( 1 − 0.9 ) × 13 = 9.252 + 1.3 = 10.552 v_4 = 0.9 \times 10.28 + (1-0.9) \times 13 = 9.252 + 1.3 = 10.552 v4=0.9×10.28+(10.9)×13=9.252+1.3=10.552

  • 对于 t = 5 t=5 t=5
    v 5 = 0.9 × 10.552 + ( 1 − 0.9 ) × 14 = 9.4968 + 1.4 = 10.8968 v_5 = 0.9 \times 10.552 + (1-0.9) \times 14 = 9.4968 + 1.4 = 10.8968 v5=0.9×10.552+(10.9)×14=9.4968+1.4=10.8968

因此,经过计算后,第5天的指数加权平均价格为约 10.9。这表明尽管最近一天的价格是 14,但因为指数加权平均考虑了过去几天的数据,并且给予了最近的数据更高的权重,所以最终的平均值比单纯取最近一天的价格要低。

关键点:有效窗口大小⭐

有效窗口大小 ≈ 1 1 − β 有效窗口大小 ≈ \frac{1}{1 - \beta} 有效窗口大小1β1

这是一个非常重要的概念,它帮助我们理解指数加权平均(EWA)中参数 β \beta β 的实际含义。


什么是“有效窗口大小”?

在传统的简单移动平均(Simple Moving Average, SMA)中,比如取最近 10 天的平均值,我们明确地使用了过去 10 个数据点,每个数据点权重相同。这就是一个固定窗口大小为 10 的平均。

但在指数加权平均中,理论上来说,所有历史数据都会对当前的平均值产生影响,只不过越早的数据权重越小。因此,我们会说:

“虽然所有的历史数据都有影响,但大部分影响集中在最近的几个时间点。”

这个“集中在最近的时间范围”就被称为有效窗口大小


如何计算有效窗口大小?

我们通过下面这个公式来估算指数加权平均的有效窗口大小:

有效窗口大小 ≈ 1 1 − β \text{有效窗口大小} \approx \frac{1}{1 - \beta} 有效窗口大小1β1

示例:

β 值 =0.9 有效窗口大小 ≈ 1 1 − 0.9 = 10 \text{有效窗口大小} \approx\frac{1}{1 - 0.9} = 10 有效窗口大小10.91=10
β 值 =0.98 有效窗口大小 ≈ 1 1 − 0.98 = 50 \text{有效窗口大小} \approx\frac{1}{1 - 0.98} = 50 有效窗口大小10.981=50
β 值 =0.5 有效窗口大小 ≈ 1 1 − 0.5 = 2 \text{有效窗口大小} \approx\frac{1}{1 - 0.5} = 2 有效窗口大小10.51=2

这说明:

  • β = 0.9 \beta = 0.9 β=0.9 时,大约前 10个时间步的数据对当前的 EWA 值有显著影响。
  • β = 0.98 \beta = 0.98 β=0.98 时,大约前 50个时间步的数据仍有影响,表示更“平滑”,但对变化反应慢;
  • β = 0.5 \beta = 0.5 β=0.5 时,只关注最近 2个时间步,波动性更大,响应更快。

更直观的理解

我们可以把 β \beta β 理解为:“保留多少上一时刻的信息”。

假设现在有一个新的观测值 x t x_t xt,那么更新后的 EWA 是:

v t = β v t − 1 + ( 1 − β ) x t v_t = \beta v_{t-1} + (1 - \beta)x_t vt=βvt1+(1β)xt

也就是说:

  • β \beta β 越大 → 越依赖之前的值 v t − 1 v_{t-1} vt1,相当于看更多历史数据;
  • β \beta β 越小 → 更倾向于相信最新的数据 x t x_t xt,相当于只看最近很少几个数据点。

所以:

设置 β = 0.9 \beta = 0.9 β=0.9 就相当于你在做一个“近似10天的加权移动平均”。


总结

概念含义
β \beta β决定旧数据保留的比例
1 − β 1 - \beta 1β新数据所占权重
有效窗口大小近似等于 1 1 − β \frac{1}{1 - \beta} 1β1,表示大约有多少个历史数据对当前 EWA 有显著影响
实际意义帮助我们选择合适的 β \beta β 来模拟特定长度的移动平均,便于调参和理解模型行为

股票市场实际意义⭐

  1. 趋势跟随:EXPMA可以帮助识别出股票价格的趋势方向。当短期EXPMA位于长期EXPMA之上时,通常被视为上升趋势;反之,若短期EXPMA位于长期EXPMA之下,则可能是下降趋势。
  2. 买卖信号
    • 买入信号:当短期EXPMA向上穿越长期EXPMA时,这通常被认为是一个买入信号,表明股票可能会进入一个上升趋势。
    • 卖出信号:相反地,如果短期EXPMA向下穿越长期EXPMA,这可能预示着股价即将下跌,是一个卖出信号。
  3. 支撑和阻力:在多头市场中,短期EXPMA可以作为股价的动态支撑线;而在空头市场中,它可以作为股价的动态阻力线。
  4. 波动性判断:通过观察EXPMA曲线的变化速率,可以对市场的波动性进行一定程度的评估。快速变化的EXPMA曲线可能意味着较高的市场波动性。
    跌,是一个卖出信号。
  5. 支撑和阻力:在多头市场中,短期EXPMA可以作为股价的动态支撑线;而在空头市场中,它可以作为股价的动态阻力线。
  6. 波动性判断:通过观察EXPMA曲线的变化速率,可以对市场的波动性进行一定程度的评估。快速变化的EXPMA曲线可能意味着较高的市场波动性。

计算中兴通讯5日EXPMA

使用akshare获取中兴通讯的股票数据,然后计算5日EXPMA,并用matplotlib绘图。

import akshare as ak
import pandas as pd
import matplotlib.pyplot as plt

# 获取股票数据(调整股票代码和日期)
stock_code = "000063"  # 正确的股票代码格式
start_date = "20230430"  # 调整为一年前的日期

stock_data = ak.stock_zh_a_hist(symbol=stock_code, start_date=start_date)

# 检查数据是否获取成功
if stock_data.empty:
    raise ValueError("未获取到数据,请检查股票代码或日期参数。")

# 数据预处理
stock_data['日期'] = pd.to_datetime(stock_data['日期'])
stock_data = stock_data.sort_values(by='日期', ascending=True)

# 计算5日EMA
stock_data['expma_5'] = stock_data['收盘'].ewm(span=5).mean()

# 数据可视化
plt.figure(figsize=(16, 8))
plt.plot(stock_data['日期'], stock_data['收盘'], label='收盘价', color='blue')
plt.plot(stock_data['日期'], stock_data['expma_5'], label='5日指数移动平均线', color='red')
plt.title('中兴通讯(000063) 股价与5日EMA (2023-2024)')
plt.xlabel('日期')
plt.ylabel('股价(元)')
plt.legend()
plt.grid(True)
plt.show()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值