Module 06: Machine Learning in Finance
金融时间序列、LSTM/Transformer、因子模型、回测框架与过拟合陷阱
上一模块思考题参考
Q: 机器学习模型是否有可能通过学习大量合约代码和已知漏洞,发现静态规则遗漏的新型漏洞? 可能但有限。ML 模型(如图神经网络分析控制流图)已经能检测部分已知漏洞的变体,准确率在某些类别上超过规则引擎。但局限明显:训练数据中没有的全新攻击模式难以覆盖,且模型无法理解合约的业务语义——一个在代码层面”正常”但在业务逻辑上有漏洞的合约,ML 很难识别。
Q: 能否通过分析历史攻击交易的特征,训练模型实时检测正在发生的攻击? 已有团队在做(如 Forta Network)。通过监控 mempool 和链上交易的异常模式(大额闪电贷、异常合约调用序列、突发流动性变化)可以触发警报。最大挑战是延迟——攻击往往在一个区块内完成,检测到时可能已经晚了。实际价值更多在于事后分析和预防同类攻击。
Q: NLP 模型能否帮助审计员更快地理解合约意图、标注可疑代码段? 可以作为辅助工具。LLM 能总结合约功能、标注常见反模式、生成代码注释,帮审计员快速建立对合约的整体理解。但关键判断仍依赖人类——合约的业务意图、权限设计是否合理、经济模型是否有漏洞,这些需要领域知识和推理能力。ML 缩短审计时间,但不替代审计员。
开篇:机器学习与金融的交汇
金融行业是机器学习最早也最深入的应用领域之一。从高频交易的微秒级决策,到信用风险评估的违约概率预测,再到反洗钱系统的异常行为检测——ML 渗透到了金融的几乎每个环节。
对区块链和金融科技从业者来说,理解这些方法的价值在于:DeFi 协议本质上是金融系统,链上数据分析需要时间序列建模能力,智能合约的风控需要异常检测。传统金融 ML 的方法论直接适用于 Web3 场景。
本模块覆盖:金融时间序列特性、传统与深度学习预测模型、量化策略基础、NLP 情绪分析,以及区块链特有的 ML 应用。
金融时间序列基础
金融数据与典型 ML 数据集有本质区别。几个核心特性:
非平稳性(Non-stationarity):股票价格序列的统计特性(均值、方差)随时间变化。一个在 2020 年有效的模型到 2023 年可能完全失效。用 ADF(Augmented Dickey-Fuller)检验判断序列是否平稳——p 值小于 0.05 通常拒绝”存在单位根”的零假设,即认为序列平稳。实际操作中常对价格取对数收益率(log returns)来获得近似平稳的序列。
自相关(Autocorrelation):收益率本身的自相关通常很弱(有效市场假说的体现),但收益率的平方或绝对值却表现出显著的自相关——这就是波动率聚集。
波动率聚集(Volatility Clustering):大波动倾向于跟着大波动,小波动跟着小波动。2008 年金融危机期间的高波动持续了数月。这个特性直接催生了 GARCH 族模型。
低信噪比:金融市场的信号极弱。学术研究中 Sharpe ratio 超过 2 的策略已经非常优秀,但从 ML 角度看,这意味着噪声远大于信号。过拟合是金融 ML 最大的敌人。
传统模型
ARIMA
ARIMA(AutoRegressive Integrated Moving Average)是时间序列预测的经典起点。三个参数 (p, d, q):
- p:自回归阶数,用过去 p 个值预测当前值
- d:差分次数,消除非平稳性(价格序列通常 d=1)
- q:移动平均阶数,用过去 q 个预测误差修正
用 yfinance 获取数据并拟合 ARIMA 的基本流程:
import yfinance as yf
from statsmodels.tsa.arima.model import ARIMA
from statsmodels.tsa.stattools import adfuller
# 获取数据
data = yf.download("AAPL", start="2022-01-01", end="2024-01-01")
close = data["Close"].dropna()
# ADF 检验
result = adfuller(close)
print(f"ADF Statistic: {result[0]:.4f}, p-value: {result[1]:.4f}")
# 对数收益率
log_returns = close.pct_change().dropna()
# 拟合 ARIMA(5,0,2) — 收益率序列通常不需要差分
model = ARIMA(log_returns, order=(5, 0, 2))
fitted = model.fit()
print(fitted.summary())
# 预测未来 5 天
forecast = fitted.forecast(steps=5)
print(forecast)
ARIMA 适合建立 baseline,但它假设线性关系,无法捕捉复杂的非线性模式。
GARCH
GARCH(Generalized Autoregressive Conditional Heteroscedasticity)专门建模波动率。GARCH(1,1) 是最常用的变体——用前一期的残差平方和前一期的条件方差来预测当前波动率。
核心用途:期权定价(波动率是期权价值的关键输入)、风险管理(VaR 计算)、仓位管理(高波动时减仓)。
深度学习方法
LSTM / GRU
LSTM(Long Short-Term Memory)通过门控机制解决了普通 RNN 的梯度消失问题,能捕捉较长时间窗口的依赖关系。GRU 是简化版本,参数更少,训练更快,效果通常相当。
在金融序列预测中,LSTM 的典型输入是过去 N 天的多维特征(价格、成交量、技术指标),输出是未来收益率或方向。
Transformer
Transformer 的自注意力机制天然适合处理序列数据,且支持并行计算。金融领域的变体包括 Temporal Fusion Transformer(TFT)和 Informer,后者专门针对长序列预测优化了注意力机制的计算复杂度。
模型对比
| 维度 | ARIMA | LSTM | Transformer |
|---|---|---|---|
| 复杂度 | 低 | 中 | 高 |
| 数据需求 | 少(百级样本可用) | 多(千级以上) | 很多(万级以上) |
| 可解释性 | 高(参数有统计含义) | 低(黑盒) | 低(黑盒) |
| 非线性捕捉 | 无 | 强 | 强 |
| 多变量支持 | 弱 | 原生支持 | 原生支持 |
| 训练成本 | 秒级 | 分钟级 | 小时级 |
| 过拟合风险 | 低 | 高 | 很高 |
实际应用中的经验:更复杂的模型不一定表现更好。金融数据的低信噪比意味着简单模型的泛化能力可能反而更强。先用 ARIMA 建立 baseline,再看深度学习能否显著超越。
因子模型与量化策略
因子投资
因子(factor)是驱动资产收益的系统性特征。经典因子:
- 动量(Momentum):过去 12 个月涨幅大的股票未来倾向继续涨(Jegadeesh & Titman, 1993)
- 价值(Value):低市盈率、低市净率的股票长期跑赢(Fama-French 三因子模型)
- 质量(Quality):高 ROE、低负债率、稳定盈利的公司有超额收益
- 低波动(Low Volatility):低波动股票的风险调整后收益反而更高
Alpha 与 Beta
Beta 是市场风险敞口——大盘涨 1%,Beta 为 1.2 的股票平均涨 1.2%。Alpha 是扣除 Beta 之后的超额收益,是量化策略追求的目标。
回测与过拟合
回测(backtesting)用历史数据验证策略。但这里有严重的陷阱:
- 前视偏差(Look-ahead bias):使用了回测时点尚不可知的信息
- 幸存者偏差(Survivorship bias):只用现存股票回测,忽略了已退市的
- 过拟合:在历史数据上调参调到完美,但策略本质上在拟合噪声。López de Prado 提出 deflated Sharpe ratio 来校正多次回测带来的统计偏差
经验法则:如果一个策略需要 20 个以上的参数才能盈利,大概率是过拟合。
NLP 与情绪分析
金融文本蕴含市场情绪信号。新闻标题、财报电话会议记录、社交媒体帖子——这些非结构化数据可以转化为交易信号。
FinBERT
FinBERT 是 BERT 在金融文本上的微调版本,能将文本分类为 positive / negative / neutral。相比通用情感分析模型,它理解金融语境——“the stock dropped” 是 negative,但 “interest rates dropped” 对某些资产可能是 positive。
情绪信号的使用方式:
- 作为多因子模型中的一个因子
- 新闻情绪的突变作为事件驱动策略的触发器
- 社交媒体情绪的极端值作为反向指标(散户极度乐观时往往是顶部)
注意事项:情绪信号的衰减很快,通常在消息发布后几小时内就被市场消化。高频使用要求低延迟的 NLP pipeline。
区块链特有的 ML 应用
区块链的链上数据是公开、可追溯、结构化的,天然适合 ML 分析。
链上数据分析:钱包行为聚类(识别巨鲸地址)、资金流向追踪、地址标签推断。链上数据的优势是完全透明,不存在传统金融中的信息不对称。
异常检测与反欺诈:识别 rug pull 模式(流动性突然撤出)、闪电贷攻击特征、Wash trading 检测。常用方法包括 Isolation Forest、Autoencoder 重建误差、图神经网络(GNN)分析交易图谱。
DeFi 收益预测:预测流动性池的 APY 变化、借贷协议的利率走势。特征包括 TVL 变化率、交易量、代币价格波动率等。
MEV 预测:Maximal Extractable Value(最大可提取价值)是区块链特有的概念。预测 mempool 中的套利机会、清算事件,ML 模型可以帮助搜索者(searcher)优化出价策略。这个领域竞争极其激烈,延迟以毫秒计。
推荐资源
| 资源 | 类型 | 说明 |
|---|---|---|
| Andrew Ng - Machine Learning Specialization | 课程 | ML 基础,Coursera 免费旁听 |
| Advances in Financial Machine Learning (López de Prado) | 书 | 金融 ML 的圣经,覆盖回测陷阱、特征工程、元标签 |
| QuantConnect | 平台 | 免费量化回测平台,支持 Python/C#,有丰富的数据集 |
| yfinance | Python 库 | 免费获取雅虎财经数据,简单易用 |
| Kaggle Financial Datasets | 数据集 | Jane Street、Two Sigma 等公司提供的竞赛数据 |
| Machine Learning for Asset Managers (López de Prado) | 书 | 较短,聚焦投资组合构建中的 ML 方法 |
| Hugging Face FinBERT | 模型 | 预训练金融情感分析模型,可直接调用 |
思考题
- 链上数据完全公开透明,传统金融中的信息不对称在 DeFi 中是否还存在?如果所有人都能获取相同数据,Alpha 从何而来?
- 金融 ML 模型的过拟合问题在链上数据分析中是否更严重?链上数据的特殊性质(24/7 交易、高波动、协议升级导致的结构性变化)对模型设计提出了什么独特要求?
- 随着 AI Agent 能自主执行链上交易,DeFi 市场的参与者结构会如何变化?当大多数交易由 AI 发起时,市场效率和 MEV 格局会怎样演进?
下一步
这是预习指南的最后一个模块。六个模块覆盖了从密码学、智能合约到金融 ML 的完整知识链条。
建议的收尾动作:
- 回到课程总览页,确认每个模块的核心概念都理解到位
- 完成各模块中的练习题和代码实践
- 对薄弱环节重点复习——课程开始后这些基础知识会被默认已掌握
金融 ML 是一个实践性极强的领域。理论理解只是起点,真正的学习发生在处理真实数据、踩过拟合的坑、经历策略在实盘中失效的过程中。