4. 小波变换基础:小波变换与傅里叶变换的区别,连续小波变换与离散小波变换,小波去噪在金融信号中的应用
各位同学,咱们今天聊小波变换。说实话,这玩意儿刚接触时我也觉得头大——又是尺度又是平移的,比傅里叶变换复杂不少。但做量化这些年,我越来越觉得它是个宝贝。尤其在处理金融信号这种非平稳数据时,小波的优势就体现出来了。
4.1 小波变换与傅里叶变换的区别
先说说傅里叶变换。它干的事很简单:把一段信号拆成不同频率的正弦波叠加。你想想看,就像用筛子把沙子按粗细分开。但问题来了——它只能告诉你信号里有哪些频率,却说不清这些频率在什么时间出现。
举个例子。一段音乐,前半段是钢琴,后半段是小提琴。傅里叶变换能告诉你整段音乐里有钢琴的频率也有小提琴的频率,但分不清哪个在前哪个在后。这就是它的短板:时间分辨率丢失。
小波变换就不一样了。它用的小波基函数,既有频率信息,又有时间定位能力。说白了,它像一把可调焦的放大镜——想看全局时拉远,想看细节时拉近。
核心区别一句话总结:
- 傅里叶变换:全局频率分析,适合平稳信号
- 小波变换:时频局部化分析,适合非平稳信号
我在项目中遇到过这样的情况:用傅里叶分析某只股票的日收益率序列,频谱图上一堆杂波,根本看不出什么规律。换成小波变换后,不同时间尺度上的波动模式一目了然——短期的噪声、中期的趋势、长期的周期,分得清清楚楚。
个人经验:金融数据十有八九是非平稳的。均值在变,方差也在变。这时候硬上傅里叶,结果往往不靠谱。小波变换才是更自然的选择。
4.2 连续小波变换与离散小波变换
小波变换分两种:连续的和离散的。名字听着像,但用法天差地别。
4.2.1 连续小波变换(CWT)
连续小波变换,说白了就是把小波基函数连续地平移、缩放,然后跟信号做内积。结果是一个二维的时频谱图——横轴是时间,纵轴是尺度(对应频率),颜色深浅代表能量大小。
它的优点是分辨率高,细节丰富。但缺点也很明显:计算量大,数据冗余多。你想想看,连续变化意味着无穷多种可能,实际计算时只能采样,但采样点一多,速度就慢下来了。
我建议:做探索性分析时用CWT。比如你想看看某段行情有没有特殊的时频模式,先跑一遍CWT,观察一下能量分布,心里有个数。但别指望用它做实时交易——太慢了。
4.2.2 离散小波变换(DWT)
离散小波变换就实用多了。它只取尺度和平移的离散值,通常是2的幂次。这样计算效率高,而且可以完美重构原始信号。
DWT的核心是多分辨率分析。它把信号一层层分解:
- 第一层:得到高频细节(D1)和低频近似(A1)
- 第二层:对A1继续分解,得到D2和A2
- 以此类推...
每一层的高频部分对应不同时间尺度上的波动。层数越深,时间尺度越大,频率越低。
实际应用中的选择:
- 需要快速计算、实时处理 → 用DWT
- 需要精细的时频分析、研究性质 → 用CWT
- 做去噪、压缩、特征提取 → 用DWT
我记得有一次做高频数据的波动率估计。原始数据每秒一条,一天下来几十万条。用CWT跑一次要等好几分钟,换成DWT后,几秒钟就出结果了。嗯,这里要注意:DWT的分解层数不是越多越好。层数太多,低频部分被过度平滑,反而丢失信息。
4.3 小波去噪在金融信号中的应用
金融信号里噪声特别多。微观结构噪声、报价跳动、流动性波动...这些噪声会掩盖真正的交易信号。小波去噪就是干这个的——把噪声滤掉,留下有用的信息。
小波去噪的基本思路很简单:
- 对信号做DWT分解,得到各层小波系数
- 对高频系数做阈值处理(小于阈值的置零,大于阈值的保留或收缩)
- 用处理后的系数重构信号
关键在第二步——阈值怎么选?
| 阈值方法 | 特点 | 适用场景 |
|---|---|---|
| 硬阈值 | 小于阈值的置零,大于的不变 | 信号突变明显,噪声水平已知 |
| 软阈值 | 小于阈值的置零,大于的减去阈值 | 信号平滑,噪声水平不确定 |
| 自适应阈值 | 根据噪声水平动态调整 | 噪声非平稳,需要实时调整 |
我曾经犯过一个错误:用硬阈值处理股指期货的 tick 数据,结果重构出来的信号出现了很多毛刺。后来换成软阈值,效果就好多了。为什么?因为金融信号本身就有一定的平滑性,硬阈值太"硬",破坏了这种平滑。
避坑指南:我曾经以为去噪越干净越好,把阈值设得很高。结果重构出来的信号平滑得像条直线,连趋势转折点都丢了。记住:去噪的目的是保留有用信号,不是把信号抹平。阈值的选择需要根据实际数据反复调试。
下面是一个简单的小波去噪流程示意图:
在实际的量化策略中,我常用小波去噪做这几件事:
- 价格序列平滑:去掉微观结构噪声,得到更干净的价格走势
- 波动率估计:用去噪后的收益率序列算波动率,比原始数据更稳定
- 趋势识别:保留低频成分,去掉高频噪声,趋势线更清晰
- 异常检测:重构误差大的时间点,往往是异常事件发生的位置
一个小技巧:做去噪时,别只用一个固定的小波基函数。多试几个——Daubechies、Symlet、Coiflet,看看哪个对你的数据效果最好。我个人的习惯是先用db4或db6,效果不满意再换。
最后说一句:小波变换不是万能药。它擅长处理非平稳信号,但如果你面对的是平稳信号,傅里叶变换可能更简单高效。工具没有好坏,关键看用在什么地方。
公众号:蓝海资料掘金营,微信deep3321