Skip to content

卷积与移动均线

金融量化使用数据和绘图分析运行投资,其中卷积和移动均线是应用带有深足底精英的分析工具。本文将分三部分:卷积与移动均线;Numpy 中的 np.convolve 函数; Python 中实现类似简单和指数移动均线。


一、卷积和移动均线概述

1. 卷积概念

卷积是一种计算过程,用于分析上一时间段的过去对当前趋势的影响。在金融量化中,应用卷积可以实现展示日期序列里添加浮动平均。

2. 移动均线类型

  1. 简单移动均线 (Simple Moving Average, SMA)
  2. 描述:对固定窗口内的数值取平均,用于平滑数据波动。
  3. 应用:适合观察短期趋势,过滤噪声。
  4. 指数移动均线 (Exponential Moving Average, EMA)
  5. 描述:赋予较新的数据更高的权重,其权重随时间以指数方式递减。
  6. 应用:适合捕捉价格的长期趋势变化。

3. 移动均线与卷积的关系

移动均线是卷积在时间序列数据中的具体应用,通过使用不同的权重函数(均匀权重或指数权重),可以生成简单或指数移动均线。


二、np.convolve 的介绍与使用

1. np.convolve 概述

np.convolve 是 Numpy 提供的一个函数,用于计算两个序列的卷积。

np.convolve(a, v, mode='full')
  • a:输入的第一个序列(通常为数据序列)。

  • v:输入的第二个序列(通常为权重序列)。

  • mode: 卷积的模式,常见选项包括:

  • full:完整卷积结果。
  • valid:仅保留有效部分(无填充)。
  • same:输出与输入序列长度相同。

2. 使用示例

以下是一个简单移动均线的例子:

import numpy as np
import matplotlib.pyplot as plt

# 模拟数据
data = np.random.normal(loc=0, scale=1, size=100).cumsum() + 100  # 有涨有跌的累计数据
weights = np.ones(5) / 5  # 窗口为5的等权重

# 卷积运算
sma = np.convolve(data, weights, mode='valid')

# 可视化
plt.plot(data, label='Original Data', marker='o', markersize=3, linewidth=1)
plt.plot(range(len(sma)), sma, label='SMA (Numpy)', marker='x', linewidth=1.5)
plt.legend()
plt.title('Numpy Simple Moving Average')
plt.show()


三、简单移动均线和指数移动均线的 Python 实现

1. 简单移动均线 (SMA)

使用 Numpy 或 Pandas 都可以实现 SMA。以下是基于 Pandas 的实现:

import pandas as pd
import matplotlib.pyplot as plt

# 模拟数据
data = np.random.normal(loc=0, scale=1, size=100).cumsum() + 100  # 有涨有跌的累计数据
df = pd.DataFrame(data, columns=['Price'])

# 计算 SMA
df['SMA'] = df['Price'].rolling(window=5).mean()

# 可视化
df.plot(marker='o', markersize=3, linewidth=1)
plt.title('Simple Moving Average (Pandas)')
plt.ylabel('Price')
plt.show()

2. 指数移动均线 (EMA)

以下是基于 Pandas 的 EMA 实现:

# 计算 EMA
df['EMA'] = df['Price'].ewm(span=5, adjust=False).mean()

# 可视化
df.plot(marker='o', markersize=3, linewidth=1)
plt.title('Exponential Moving Average (Pandas)')
plt.ylabel('Price')
plt.show()


四、总结

  • 卷积是金融量化中的核心工具,可用于分析过去对当前趋势的影响。
  • 移动均线是卷积在时间序列数据中的典型应用,主要分为简单移动均线和指数移动均线。
  • Python 提供了强大的工具(如 Numpy 和 Pandas)来高效地实现和可视化移动均线。

通过合理使用这些工具,我们可以更清晰地观察市场趋势并做出科学决策。

欢迎关注我的微信公众号。