从"股价预测"到"因果卷积":一篇让金融小白也能彻底理解的文章
最后更新: 2026-03-23
Table of Content
从"股价预测"到"因果卷积":一篇让金融小白也能彻底理解的文章¶
前言:为什么你应该关心因果卷积?¶
想象一个场景:
2024年某天,你看到一只股票连续上涨了5天。你会不会觉得"明天还会涨"?
大多数人的直觉是会。但作为一个严谨的金融数学学习者,你会问:
- 这个"连续上涨"意味着什么?
- 如何用数学语言精确描述这个现象?
- 如果我想让计算机自动学习"什么时候该追涨,什么时候该止损",该怎么建模?
今天要介绍的因果卷积,正是解决这类问题的核心技术之一。它不仅是深度学习中的基础构件,更是时间序列分析的有力工具。
读完这篇文章,你将理解: 1. 因果卷积是什么——用金融视角 2. 为什么是"加权求和"——从数学原理到直觉 3. 它和金融中的哪些概念异曲同工——RSI、MACD、移动平均 4. TCN如何革新时间序列预测——与传统方法的对比
第一部分:一个让你终身难忘的比喻¶
1.1 炒股的三个境界¶
境界一:看山是山
"这只股票涨了5天,明天应该还会涨吧?"
这是散户的思维——简单的趋势外推。
境界二:看山不是山
"虽然涨了5天,但最近3天涨幅在缩小,动量在衰减..."
这是技术分析师的思维——开始关注变化的模式,而不只是结果。
境界三:看山还是山
"让我用一个统一的框架,把短期动量、中期趋势、长期均值全部量化出来,然后让模型自己学习什么时候用什么信号。"
这是量化分析师的思维——因果卷积正是实现这个目标的工具。
1.2 因果卷积的通俗定义¶
一句话总结:
因果卷积,就是用"加权求和"的方式,把过去一段时间的数据,整合成一个有意义的数值。
我们把它拆开来看:
| 关键词 | 金融含义 |
|---|---|
| "过去一段时间" | 回顾窗口,比如最近5天、最近20天 |
| "加权求和" | 给不同天的数据不同的重要性 |
| "有意义的数值" | 一个综合得分,可以用来做决策 |
类比:基金经理的综合评分
想象一个基金经理的年终评分: 最终得分 = 0.30×年化收益率 + 0.25×夏普比率 + 0.20×最大回撤 + 0.15×规模 + 0.10×流动性 = 0.30×15% + 0.25×1.8 + 0.20×(-8%) + 0.15×50亿 + 0.10×80% = 4.5 + 0.45 - 1.6 + 7.5 + 8% = 10.85分(满分大概15分左右) 这个公式本质上就是一个卷积:
- 输入 = [收益率, 夏普比率, 回撤, 规模, 流动性]
- 卷积核 = [0.30, 0.25, 0.20, 0.15, 0.10](权重)
- 输出 = 10.85分(综合评分)
因果卷积就是:把这个思想应用到"时间序列"上。
第二部分:从移动平均讲起¶
2.1 你每天都在用的技术指标¶
打开任何炒股软件,都会看到这些指标: ┌─────────────────────────────────────────┐ │ MA5 = 5日简单移动平均 = (P1+P2+P3+P4+P5)/5 │ │ MA10 = 10日简单移动平均 │ │ MA20 = 20日简单移动平均 │ │ EMA12 = 12日指数移动平均 │ └─────────────────────────────────────────┘ MA5 的计算(以股价为例): 日期: Day1 Day2 Day3 Day4 Day5 Day6 Day7 股价: 100 102 101 105 107 106 108
Day5 的 MA5 = (100 + 102 + 101 + 105 + 107) / 5 = 103.0 Day6 的 MA5 = (102 + 101 + 105 + 107 + 106) / 5 = 104.2 Day7 的 MA5 = (101 + 105 + 107 + 106 + 108) / 5 = 105.4 你发现了吗?这其实就是一种"加权求和"!
只不过权重是均等的:[1/5, 1/5, 1/5, 1/5, 1/5]
2.2 加权移动平均(EMA)¶
EMA 的核心思想:越近的数据越重要 EMA_t = α × Price_t + (1-α) × EMA_{t-1}
展开后等价于: EMA_t = α×P[t] + α(1-α)×P[t-1] + α(1-α)²×P[t-2] + α(1-α)³×P[t-3] + ...
权重分别是: P[t] 的权重 = α P[t-1] 的权重 = α(1-α) P[t-2] 的权重 = α(1-α)² P[t-3] 的权重 = α(1-α)³ ... 以 α=0.3 为例: P[t] 的权重 = 0.3 P[t-1] 的权重 = 0.3 × 0.7 = 0.21 P[t-2] 的权重 = 0.3 × 0.7² = 0.147 P[t-3] 的权重 = 0.3 × 0.7³ = 0.103 P[t-4] 的权重 = 0.3 × 0.7⁴ = 0.072 ... ↓ 所有权重之和 = 0.3 + 0.21 + 0.147 + 0.103 + 0.072 + ... ≈ 1.0 这就是"指数衰减"的加权求和!
2.3 MACD:多个卷积的组合¶
MACD 是华尔街最流行的技术指标之一: MACD Line = EMA(12) - EMA(26) Signal Line = EMA(9) of MACD Line Histogram = MACD Line - Signal Line 从卷积的角度看: MACD = [12日权重] × [价格] - [26日权重] × [价格] = 卷积(价格, 权重_12) - 卷积(价格, 权重_26) MACD 本质上就是:两个不同窗口的加权求和之差!
第三部分:因果卷积的数学原理¶
3.1 形式化定义¶
对于一个长度为 \(T\) 的时间序列 \(\{x_1, x_2, \ldots, x_T\}\),因果卷积定义为:
其中:
- \(h_t\) 是时刻 \(t\) 的输出
- \(f[k]\) 是卷积核在位置 \(k\) 的权重(需要学习)
- \(K\) 是卷积核大小(回顾窗口长度)
关键约束:因果性
即:输出只用当前和过去的信息,不使用未来数据。
3.2 图解因果卷积¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
3.3 膨胀因果卷积:增大感受野¶
问题: 如果只用 \(K=3\) 的卷积核,感受野只有3。
解决: 引入膨胀(dilation)机制。
膨胀卷积的定义:
其中 \(d\) 是膨胀率。
dilation=2 的效果:
1 2 3 4 5 | |
TCN 的多层膨胀结构:
1 2 3 4 | |
感受野公式:
其中 \(L\) 是层数。
第四部分:金融数学视角的深入分析¶
4.1 与时间序列分析的对比¶
| 概念 | 传统时间序列 | 因果卷积 |
|---|---|---|
| 核心模型 | ARIMA | TCN |
| 权重来源 | 自相关函数 | 可学习 |
| 非线性处理 | 需要手动指定 | 自动学习 |
| 长期依赖 | 困难(需差分) | 膨胀卷积轻松捕获 |
| 计算效率 | O(n) 递推 | O(n log n) 并行 |
4.2 从随机过程角度理解¶
设 \(\{X_t\}\) 是一个随机过程(股价序列),因果卷积的输出 \(\{H_t\}\) 定义为:
前提条件: \(\{f[k]\}\) 绝对可和,即 \(\sum_{k=0}^{\infty} |f[k]| < \infty\)
这意味着什么?
- 输出是输入的线性泛函
- 类比于线性滤波器
- 在信号处理中,这就是一个线性时不变系统(LTI)
4.3 与卡尔曼滤波的联系¶
卡尔曼滤波的状态更新:
因果卷积的形式:
联系: 两者都是线性组合过去信息的方式,只是:
- 卡尔曼滤波:递归形式,权重由状态空间模型决定
- 因果卷积:显式加权和,权重由神经网络学习得到
4.4 金融应用:波动率建模¶
GARCH(1,1) 模型:
TCN 膨胀卷积:
对比: GARCH 是固定结构的加权(递归),TCN 是可学习结构的加权(灵活)。
第五部分:为什么是加权求和?(理论保证)¶
5.1 万能逼近定理¶
定理(Universal Approximation):
任何一个连续函数 \(g(x)\),都可以由有限个加权求和 + 非线性激活来近似。
用数学语言:
翻译成人话:
无论真实的股票涨跌关系多复杂,只要有足够多的"加权求和+非线性"组合,就能完美逼近它。
5.2 线性假设的合理性¶
金融学中大量模型基于线性假设:
- CAPM: \(R_i = \alpha + \beta R_m + \epsilon\)
- APT: \(R_i = \sum_{k} \beta_{ik} F_k + \epsilon_i\)
- 线性因子模型
因果卷积继承了线性可解释性,同时通过多层结构获得非线性表达能力。
5.3 计算效率¶
| 操作 | 时间复杂度 |
|---|---|
| RNN(BPTT) | \(O(T \cdot D^2)\) |
| TCN(并行卷积) | \(O(T \cdot K \cdot C \cdot \log T)\) |
对于长序列,TCN 比 RNN 快几个数量级。
第六部分:实战代码演示¶
6.1 用 PyTorch 实现因果卷积¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | |
6.2 完整 TCN 残差块¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | |
6.3 股价预测示例¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | |
第七部分:因果卷积 vs 其他方法¶
7.1 全面对比¶
| 特性 | 简单移动平均 | ARIMA | LSTM | TCN |
|---|---|---|---|---|
| 捕捉趋势 | ✅ | ✅ | ✅ | ✅ |
| 捕捉周期 | ❌ | ✅ | ✅ | ✅ |
| 长期依赖 | ❌ | ⚠️ | ⚠️ | ✅ |
| 计算速度 | 快 | 中 | 慢 | 快 |
| 可并行 | ✅ | ❌ | ❌ | ✅ |
| 非线性建模 | ❌ | ❌ | ✅ | ✅ |
| 端到端学习 | ❌ | ❌ | ✅ | ✅ |
7.2 为什么 TCN 在时间序列上表现好?¶
1 2 3 4 5 6 7 8 9 10 | |
2. 稳定的梯度
RNN 的梯度随时间指数衰减,TCN 的梯度路径长度仅为 \(O(\log T)\)。
3. 灵活的感受野
通过调整层数和膨胀率,可以精确控制模型关注的时间尺度。
第八部分:学术前沿与展望¶
8.1 相关研究论文¶
| 年份 | 论文 | 主要贡献 |
|---|---|---|
| 2016 | WaveNet | 首次将膨胀因果卷积用于音频生成 |
| 2018 | TCN (Bai et al.) | 系统性评估 TCN 在序列建模的能力 |
| 2020 | Temporal Fusion Transformer | TCN + Attention 用于多元时间序列 |
| 2022 | Informer | 长序列时间序列预测 |
8.2 开放问题¶
- 理论理解:为什么 TCN 在某些任务上不如 Transformer?
- 最优架构:如何自动搜索最佳的 TCN 超参数?
- 可解释性:如何解释卷积核学到的特征?
8.3 推荐阅读¶
- Bai et al., "An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence Modeling" (2018)
- Oord et al., "WaveNet: A Generative Model for Raw Audio" (2016)
- Vaswani et al., "Attention Is All You Need" (2017) — 对比学习
结语:回到最初的问题¶
文章开头问:
一只股票连续上涨5天,明天还会涨吗?
现在你可以用因果卷积的方式回答: 1. 定义特征:用加权求和提取过去5天的价格模式
- 短期动量:近期权重更高
- 波动特征:检测是否有异常
-
构建模型:用 TCN 捕捉不同时间尺度的依赖
-
Layer 1 (d=1): 日内模式
- Layer 2 (d=2): 2-3天趋势
- Layer 3 (d=4): 周级别模式
- Layer 4 (d=8): 月级别周期
- 预测输出:P(明天上涨 | 历史模式)
- 决策:根据概率 + 风险偏好做交易决策