8.4 量化金融应用
傅里叶分析在量化金融中的应用远不止于理论——从去除市场微观结构噪音到高频交易策略,它是一套完整的时间序列分析工具箱。
金融时间序列的频谱分析
收益率的频谱特性
金融收益率序列通常包含多个频率分量的叠加:
| 频率范围 | 典型周期 | 对应金融现象 |
|---|---|---|
| 极低频 | 3-10 年 | 经济周期、牛熊转换 |
| 低频 | 1 年 | 季节性效应(如年末效应、财报季) |
| 中频 | 1-3 个月 | 财报周期、再平衡效应 |
| 高频 | 1 天-1 周 | 周内效应(周一/周五模式) |
| 极高频 | 毫秒-秒级 | 市场微观结构、做市商报价 |
市场微观结构噪音去除
问题描述
高频价格数据中包含大量微观结构噪音——买卖价差、价格离散化、订单流不平衡等——这些噪音会污染信号,导致:
- 相关系数低估(Epps 效应——当用不同频率采样的数据计算两只股票的相关系数时,采样频率越高(如逐笔 vs 每分钟),估计出的相关系数反而越低。这是因为不同步的交易时间导致高频数据丢失了同时变动的信息)
- 已实现波动率高估
- 因子信号被噪音掩盖
傅里叶去噪方法
使用低通滤波保留主要趋势成分,去除高频噪音:
python
import numpy as np
def fourier_denoise(signal, cutoff_ratio=0.1):
"""
用 FFT 低通滤波去噪
参数:
signal: 原始信号
cutoff_ratio: 保留的频率比例(0~1)
"""
N = len(signal)
fft_vals = np.fft.fft(signal)
# 只保留前 cutoff_ratio 的低频成分
cutoff = int(N * cutoff_ratio)
fft_filtered = np.zeros_like(fft_vals)
fft_filtered[:cutoff] = fft_vals[:cutoff]
fft_filtered[-cutoff+1:] = fft_vals[-cutoff+1:]
# 逆变换
denoised = np.fft.ifft(fft_filtered).real
return denoisedMalliavin-Mancino 方法
Malliavin 和 Mancino (2002) 提出了用傅里叶变换估计已实现协方差的方法——通过对价格增量做傅里叶变换并乘积,可以得到同步且稳健的波动率和协方差估计,避免了 Epps 效应(不同频率采样导致的相关系数低估)。
传统方法需要同步采样,但不同股票的交易频率不同,导致相关系数被低估。傅里叶方法通过对整个频域积分,自然避免了时间对齐问题。
HFT 策略中的应用
在高频交易策略中,交易者通过傅里叶分析分解订单簿的更新速率,识别微观结构中的周期性模式:
| 应用 | 描述 |
|---|---|
| 订单流模式识别 | 检测每隔特定毫秒出现的大宗交易信号 |
| 价差周期分析 | 识别买卖价差的日内周期模式 |
| 成交量剖面 | 分析交易量的日内 U 型/倒 J 型模式 |
时频分析:短时傅里叶变换(STFT)
金融时间序列通常是非平稳的,简单 FFT 无法捕捉时变频谱。STFT 在滑动时间窗口内做 FFT:
其中 是窗函数。窗函数的作用:直接截取一段信号会在两端产生突变(边界不连续),在频域中引入虚假高频成分(称为"频谱泄露")。窗函数在两端平滑衰减到零,消除边界突变,从而减少频谱泄露。常见的窗函数有汉宁窗(Hanning window,形状为 )和海明窗等。STFT 的平方模 称为频谱图(spectrogram),可以直观地观察频率成分随时间的变化。
Quant Link:综合案例
案例 1:波动率周期识别
对 VIX 指数进行频谱分析,可以识别出波动率的周期模式:
- 收集 VIX 日度数据(5 年)
- 做 FFT 并绘制功率谱
- 识别显著峰值对应的周期
- 根据识别出的周期设计波动率择时策略
案例 2:因子数据的频谱滤波
多因子模型中,每个因子的收益率可以分解为:
其中低频部分 代表因子的长期趋势,高频部分 代表短期噪音。使用傅里叶滤波分离两者后,低频部分通常有更好的预测能力。
小结
| 应用 | 方法 | 效果 |
|---|---|---|
| 噪音去除 | 低通滤波(FFT 截断) | 去除微观结构噪音 |
| 周期识别 | 功率谱峰值检测 | 发现隐藏的日历效应 |
| 协方差估计 | Malliavin-Mancino 傅里叶方法 | 避免 Epps 效应 |
| 时频分析 | STFT / 频谱图 | 捕捉时变频谱特性 |
| \n> 下一步:回到本章概述 |