基于 SARIMA-GARCH-TCN-Attention-XGBoost 的混合时间序列预测模型研究
基于 SARIMA-GARCH-TCN-Attention-XGBoost 的混合时间序列预测模型研究
摘要
针对金融及类金融时间序列中普遍存在的趋势性、季节性、波动聚集、非线性依赖与多源特征交互问题,本文基于项目 SARIMA_GARCH_TCN_Attention_XGBoost 的真实代码、配置文件、样本数据和实验输出,构建一种融合统计计量模型、深度学习模型与机器学习集成模型的混合预测框架。该框架首先利用 SARIMA 模型刻画目标序列的线性自相关与季节项结构,并生成预测值和残差;其次采用 GARCH 模型提取 SARIMA 残差中的条件异方差与波动聚集特征;再次通过 TCN-Attention 模型学习长时序依赖、局部动态模式与关键时间步权重;最后利用 XGBoost 对原始 OHLCV 特征、外生特征、技术指标、SARIMA 输出、GARCH 条件波动率、TCN-Attention 预测值及深度嵌入进行非线性集成,形成最终预测。实验基于项目内置日频 OHLCV 样本,按时间顺序划分训练集、验证集和测试集。结果表明,完整混合模型在测试集上取得 MAE=0.4991、RMSE=0.9671、MAPE=0.7138%、R2=0.8977R^2=0.8977R2=0.8977,相较 SARIMA 与 TCN-Attention 具有明显误差优势。消融实验显示,GARCH 条件波动率特征对完整融合框架具有一定边际贡献,但在当前样本规模下,简化 XGBoost 变体的 RMSE 略优于完整模型,说明复杂混合模型仍需结合样本规模、特征冗余和超参数优化进行稳健检验。本文研究为具有趋势、波动和非线性结构的时间序列预测提供了可复现的组合建模范式。
关键词:时间序列预测;SARIMA;GARCH;TCN;注意力机制;XGBoost;混合模型
1 引言
时间序列预测是金融资产定价、能源负荷调度、交通流量管理和宏观经济监测等领域的基础问题。与一般横截面回归不同,时间序列数据具有严格的时间顺序,且常同时呈现趋势变动、周期波动、短期冲击、波动聚集与非线性耦合等复杂特征。传统统计模型能够提供较强的结构解释能力,但通常依赖线性或弱非线性假设;深度学习模型能够学习复杂时序依赖,但在样本量有限或特征噪声较强时可能出现过拟合;机器学习集成模型具有较强的非线性拟合能力,但若缺少时间序列结构特征输入,其预测结果的经济含义和误差来源不易解释。
为兼顾可解释性、非线性表达能力和预测精度,本文围绕项目中已经实现的 SARIMA-GARCH-TCN-Attention-XGBoost 混合预测流程展开研究。该流程以 SARIMA 提取线性趋势和季节结构,以 GARCH 描述残差波动聚集,以 TCN-Attention 学习深层时序表征,以 XGBoost 完成多源特征融合和残差修正。与单一模型相比,该框架具有如下创新点:第一,将线性趋势建模与非线性残差学习相结合;第二,使用 SARIMA 捕捉季节性和线性自相关结构;第三,使用 GARCH 描述残差波动聚集与异方差特征;第四,使用 TCN 提取长时序依赖和局部时序模式;第五,使用 Attention 强化关键时间步权重分配;第六,使用 XGBoost 对深度模型残差或融合特征进行二次集成修正;第七,构建统计模型、深度学习模型与机器学习模型的多层融合预测框架,并通过对比实验和消融实验验证其有效性。
图1 总体研究技术路线图

图1给出了本文研究的总体技术路线。论文写作过程以项目真实实现为依据,既描述混合模型理论逻辑,也结合 outputs/results 中已有指标开展实证分析。
2 相关理论基础
2.1 时间序列预测问题定义
设时间序列观测值为 {yt}t=1T\{y_t\}_{t=1}^{T}{yt}t=1T,其中 ttt 为时间索引。一般地,目标序列可表示为系统性部分与随机扰动项之和:
yt=f(t)+εt y_t = f(t) + \varepsilon_t yt=f(t)+εt
其中,f(t)f(t)f(t) 表示趋势、季节项、外生变量和可解释特征共同形成的确定性或弱随机结构,εt\varepsilon_tεt 表示模型未能解释的随机扰动。对于金融类序列,εt\varepsilon_tεt 常具有尖峰厚尾、波动聚集和条件异方差等特征,因此仅采用均值方程建模往往不足。
在深度学习和机器学习建模中,不同变量量纲差异可能影响参数优化。项目中 TCN-Attention 与 XGBoost 特征均采用训练集拟合的标准化变换:
xt′=xt−μσ x_t' = \frac{x_t - \mu}{\sigma} xt′=σxt−μ
其中,μ\muμ 和 σ\sigmaσ 分别为训练集中变量 xtx_txt 的均值与标准差,xt′x_t'xt′ 为标准化后的特征。仅使用训练集统计量进行标准化,有助于避免验证集和测试集信息泄露。
表1 符号说明表
| 符号 | 含义 |
|---|---|
| yty_tyt | 第 ttt 期目标变量 |
| xtx_txt | 第 ttt 期输入特征 |
| BBB | 滞后算子 |
| d,Dd,Dd,D | 非季节差分阶数与季节差分阶数 |
| p,qp,qp,q | 非季节 ARMA 阶数或 GARCH 阶数 |
| P,QP,QP,Q | SARIMA 季节项阶数 |
| sss | 季节周期 |
| ete_tet | SARIMA 预测残差 |
| σt2\sigma_t^2σt2 | GARCH 条件方差 |
| y^t\hat{y}_ty^t | 模型预测值 |
| KKK | TCN 卷积核大小 |
| dld_ldl | 第 lll 层膨胀系数 |
| hhh | 多头注意力头数 |
2.2 SARIMA 模型
SARIMA 模型在 ARIMA 的基础上引入季节自回归、季节差分和季节移动平均结构,适合描述具有周期性和线性自相关特征的序列。差分算子定义为:
∇dyt=(1−B)dyt \nabla^d y_t = (1-B)^d y_t ∇dyt=(1−B)dyt
其中,BBB 为滞后算子,满足 Byt=yt−1By_t=y_{t-1}Byt=yt−1;ddd 为非季节差分阶数。SARIMA 的一般形式为:
ΦP(Bs)ϕp(B)(1−B)d(1−Bs)Dyt=ΘQ(Bs)θq(B)εt \Phi_P(B^s)\phi_p(B)(1-B)^d(1-B^s)^Dy_t=\Theta_Q(B^s)\theta_q(B)\varepsilon_t ΦP(Bs)ϕp(B)(1−B)d(1−Bs)Dyt=ΘQ(Bs)θq(B)εt
其中,ϕp(B)\phi_p(B)ϕp(B) 与 θq(B)\theta_q(B)θq(B) 分别为非季节自回归和移动平均多项式,ΦP(Bs)\Phi_P(B^s)ΦP(Bs) 与 ΘQ(Bs)\Theta_Q(B^s)ΘQ(Bs) 分别为季节自回归和季节移动平均多项式,sss 为季节周期。项目配置中 SARIMA 阶数为 order=[1,1,1],季节阶数为 seasonal_order=[1,1,1,12]。
SARIMA 预测残差定义为:
et=yt−y^tSARIMA e_t = y_t - \hat{y}_t^{SARIMA} et=yt−y^tSARIMA
其中,y^tSARIMA\hat{y}_t^{SARIMA}y^tSARIMA 为 SARIMA 对目标变量的拟合或预测值。该残差既可用于诊断线性模型未解释部分,也可作为后续 GARCH 波动建模的输入。
2.3 GARCH 模型
GARCH 模型用于刻画残差序列的条件异方差特征。其基本形式为:
et=σtzt e_t = \sigma_t z_t et=σtzt
σt2=ω+∑i=1qαiet−i2+∑j=1pβjσt−j2 \sigma_t^2 = \omega + \sum_{i=1}^{q}\alpha_i e_{t-i}^2 + \sum_{j=1}^{p}\beta_j\sigma_{t-j}^2 σt2=ω+i=1∑qαiet−i2+j=1∑pβjσt−j2
其中,ztz_tzt 为标准化扰动项,ω\omegaω 为常数项,αi\alpha_iαi 表示历史冲击对当前波动的影响,βj\beta_jβj 表示历史条件方差的持续性。项目采用 GARCH(1,1),默认以 sarima_residual 作为建模对象。GARCH 波动率修正项可记为:
v^t=σ^t2 \hat{v}_t = \hat{\sigma}_t^2 v^t=σ^t2
需要指出的是,当前项目实现中 GARCH 输出主要作为 garch_volatility 特征进入 XGBoost 融合层,而不是直接与 SARIMA 预测值线性相加。因此,主结果表中 SARIMA-GARCH 与 SARIMA 的预测指标相同,这一现象来自代码实现逻辑,并非结果缺失。
2.4 TCN 模型
Temporal Convolutional Network 通过因果卷积和膨胀卷积建模时序依赖。第 lll 层 TCN 的因果卷积可表示为:
ht(l)=∑k=0K−1wk(l)xt−dlk(l−1) h_t^{(l)} = \sum_{k=0}^{K-1} w_k^{(l)} x_{t-d_l k}^{(l-1)} ht(l)=k=0∑K−1wk(l)xt−dlk(l−1)
其中,KKK 为卷积核大小,dld_ldl 为膨胀系数,wk(l)w_k^{(l)}wk(l) 为卷积核参数。因果卷积只使用当前及历史时点信息,避免未来信息泄露。为缓解深层网络退化,项目中的 TCN 模块采用残差连接:
ot=F(xt)+xt o_t = F(x_t) + x_t ot=F(xt)+xt
其中,F(⋅)F(\cdot)F(⋅) 表示卷积、激活函数与 Dropout 等非线性变换。当输入通道与输出通道不一致时,代码通过 1×11\times11×1 卷积实现维度匹配。
2.5 Attention 机制
Attention 机制通过动态权重分配识别历史窗口中的关键时间步。给定输入矩阵 XXX,查询、键和值向量定义为:
Q=XWQ,K=XWK,V=XWV Q = XW_Q,\quad K = XW_K,\quad V = XW_V Q=XWQ,K=XWK,V=XWV
缩放点积注意力为:
Attention(Q,K,V)=softmax(QKTdk)V Attention(Q,K,V)=softmax\left(\frac{QK^T}{\sqrt{d_k}}\right)V Attention(Q,K,V)=softmax(dkQKT)V
多头注意力将多个子空间中的注意力结果拼接后映射:
MultiHead(Q,K,V)=Concat(head1,…,headh)WO MultiHead(Q,K,V)=Concat(head_1,\dots,head_h)W_O MultiHead(Q,K,V)=Concat(head1,…,headh)WO
其中,headihead_iheadi 为第 iii 个注意力头。项目配置采用 attention_type=self_attention 和 num_heads=4,通过 PyTorch MultiheadAttention 实现自注意力加权。
2.6 XGBoost 模型
XGBoost 是基于梯度提升树的集成学习模型,通过逐轮添加回归树拟合损失函数下降方向。第 mmm 轮目标函数为:
L(m)=∑i=1nl(yi,y^i(m−1)+fm(xi))+Ω(fm) \mathcal{L}^{(m)} = \sum_{i=1}^{n} l(y_i,\hat{y}_i^{(m-1)} + f_m(x_i)) + \Omega(f_m) L(m)=i=1∑nl(yi,y^i(m−1)+fm(xi))+Ω(fm)
其中,fm(xi)f_m(x_i)fm(xi) 表示第 mmm 棵树的输出,Ω(fm)\Omega(f_m)Ω(fm) 为复杂度惩罚项:
Ω(f)=γT+12λ∑j=1Twj2 \Omega(f)=\gamma T + \frac{1}{2}\lambda\sum_{j=1}^{T}w_j^2 Ω(f)=γT+21λj=1∑Twj2
其中,TTT 为叶节点数量,wjw_jwj 为第 jjj 个叶节点权重。项目中 XGBoost 采用 reg:squarederror 目标函数,默认树数量为 500,最大深度为 5,学习率为 0.03。
3 混合预测模型构建
3.1 总体模型框架
本文混合模型将统计计量层、深度特征层和机器学习集成层连接起来。其显式加权形式可表示为:
y^t=λ1y^tSARIMA+λ2y^tGARCH+λ3y^tTCN−Attention+λ4y^tXGBoost \hat{y}_t=\lambda_1\hat{y}_t^{SARIMA}+\lambda_2\hat{y}_t^{GARCH}+\lambda_3\hat{y}_t^{TCN-Attention}+\lambda_4\hat{y}_t^{XGBoost} y^t=λ1y^tSARIMA+λ2y^tGARCH+λ3y^tTCN−Attention+λ4y^tXGBoost
但根据项目真实代码,最终预测更接近残差修正与非线性特征融合形式:
y^t=y^tSARIMA+r^tGARCH+r^tTCN−Attention+r^tXGBoost \hat{y}_t=\hat{y}_t^{SARIMA}+\hat{r}_t^{GARCH}+\hat{r}_t^{TCN-Attention}+\hat{r}_t^{XGBoost} y^t=y^tSARIMA+r^tGARCH+r^tTCN−Attention+r^tXGBoost
进一步可写为:
y^t=FXGB(Xt,y^tSARIMA,et,σ^t,y^tTCN−Attention,HtTCN) \hat{y}_t = F_{XGB}\left( X_t,\hat{y}_t^{SARIMA},e_t,\hat{\sigma}_t, \hat{y}_t^{TCN-Attention},H_t^{TCN} \right) y^t=FXGB(Xt,y^tSARIMA,et,σ^t,y^tTCN−Attention,HtTCN)
其中,XtX_tXt 为原始特征、技术指标和人工构造特征,HtTCNH_t^{TCN}HtTCN 为 TCN-Attention 输出的上下文嵌入向量。
图2 SARIMA-GARCH-TCN-Attention-XGBoost 总体模型结构图

图2表明,本文模型并非简单串联,而是将不同模块输出统一转化为可学习特征,由 XGBoost 完成最终非线性融合。
表2 数据集变量说明表
| 变量 | 类型 | 项目来源 | 说明 |
|---|---|---|---|
| date | 时间变量 | data/input.csv |
日频时间索引 |
| target | 连续变量 | data/input.csv |
预测目标,与 close 相同 |
| open | 连续变量 | data/input.csv |
开盘价类特征 |
| high | 连续变量 | data/input.csv |
最高价类特征 |
| low | 连续变量 | data/input.csv |
最低价类特征 |
| close | 连续变量 | data/input.csv |
收盘价类特征 |
| volume | 连续变量 | data/input.csv |
成交量类特征 |
| macro_feature | 连续变量 | data/input.csv |
外生宏观类特征 |
| target_lag_* | 构造变量 | utils/feature_engineering.py |
目标变量滞后项 |
| rolling_* | 构造变量 | utils/feature_engineering.py |
滚动均值、标准差和极值 |
| MA、EMA、MACD、RSI | 构造变量 | utils/feature_engineering.py |
技术指标 |
| sarima_pred | 模型变量 | experiments/run_full_pipeline.py |
SARIMA 拟合及预测值 |
| sarima_residual | 模型变量 | experiments/run_full_pipeline.py |
SARIMA 残差 |
| garch_volatility | 模型变量 | experiments/run_full_pipeline.py |
GARCH 条件波动率 |
| tcn_attention_pred | 模型变量 | models/tcn_attention.py |
TCN-Attention 预测值 |
| tcn_emb_* | 模型变量 | models/tcn_attention.py |
TCN-Attention 深度嵌入 |
3.2 数据预处理
项目默认读取 data/input.csv。数据加载阶段首先识别 date 与 target 字段,随后对日期进行解析、排序和去重,对数值列进行前向与后向填充,并使用 IQR 方法裁剪异常值。特征工程阶段构造目标滞后项、滚动统计量、收益率、对数收益率、日期特征以及 OHLCV 技术指标。由于滚动窗口和技术指标需要历史观测,原始 260 条样本经特征工程后保留 240 条有效样本。
图3 数据预处理流程图
图3展示了项目真实数据处理流程。该流程中的滞后和滚动特征均基于历史观测构造,符合时间序列预测的因果约束。
3.3 SARIMA 线性趋势提取
SARIMA 模块位于 models/sarima_model.py,通过 statsmodels.tsa.statespace.SARIMAX 实现。模型在训练集目标序列上拟合,并对验证集和测试集进行预测。输出字段包括 sarima_pred 与 sarima_residual。若模型拟合失败,代码以朴素预测作为兜底,保证实验流程稳定。
图4 SARIMA-GARCH 建模流程图

图4说明 SARIMA 提供线性趋势提取和残差构造功能,是后续 GARCH 与集成层的重要输入来源。
3.4 GARCH 波动特征建模
GARCH 模块位于 models/garch_model.py。项目默认使用 SARIMA 残差作为输入,配置为 GARCH(1,1),均值项为 Constant,波动项为 GARCH,误差分布为 normal。模型输出 garch_volatility,并在最终 XGBoost 融合中作为风险波动特征使用。当 GARCH 拟合失败时,程序以滚动标准差作为替代波动率输出。
3.5 TCN-Attention 非线性特征学习
TCN-Attention 模块位于 models/tcn_attention.py。模型输入为除 date 和 target 外的数值特征,采用长度为 30 的滑动窗口。TCN 隐藏通道为 [32,64,64],卷积核大小为 3,Dropout 为 0.2。Attention 层使用 4 头自注意力,输出预测值、注意力权重和 64 维上下文嵌入。
图5 TCN-Attention 特征提取流程图

图5显示 TCN-Attention 既产生直接预测值,也产生深度嵌入特征。后者被拼接进 XGBoost 特征集合,用于增强非线性表达能力。
3.6 XGBoost 残差修正
XGBoost 集成模块位于 models/xgboost_ensemble.py。该模块将原始数值特征、技术指标、SARIMA 输出、GARCH 条件波动率、TCN-Attention 预测和嵌入进行拼接,并训练 XGBRegressor 输出 xgboost_final_pred。项目日志显示,最终 XGBoost 使用 104 个特征。
图6 XGBoost 残差集成预测流程图

图6表明,XGBoost 在本文框架中承担残差修正和非线性特征融合功能。
3.7 模型训练与预测流程
完整流程由 experiments/run_full_pipeline.py 实现。训练过程中使用时间顺序划分,避免随机打乱造成未来信息泄露。TCN-Attention 采用均方误差损失函数:
LMSE=1n∑i=1n(yi−y^i)2 \mathcal{L}_{MSE} = \frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y}_i)^2 LMSE=n1i=1∑n(yi−y^i)2
图7 模型训练与预测流程图
图7概括了项目的端到端训练与预测流程。本文直接读取已有输出结果进行分析,没有重新训练大型模型,也没有编造实验数值。
4 实验设计
4.1 实验环境
项目基于 Python 实现,主要依赖包括 numpy、pandas、matplotlib、scikit-learn、statsmodels、arch、xgboost、torch、pyyaml、tqdm、optuna 和 seaborn。根据 outputs/logs/full_pipeline.log,完整流程在 CPU 上完成 TCN-Attention 训练,并成功生成预测结果、评价指标、消融实验结果和模型检查点。
4.2 数据集说明
原始数据文件为 data/input.csv,包含 260 条日频样本,日期范围为 2020-01-01 至 2020-09-16。经特征工程删除初始空值后,有效样本为 240 条,日期范围为 2020-01-21 至 2020-09-16。有效样本中目标变量最小值为 47.7892,最大值为 73.7052,均值为 59.6364。样本按时间顺序划分为训练集 168 条、验证集 36 条和测试集 36 条。
4.3 参数设置
表3 模型参数设置表
| 模块 | 参数 | 当前取值 |
|---|---|---|
| 数据划分 | train_ratio | 0.70 |
| 数据划分 | val_ratio | 0.15 |
| 数据划分 | test_ratio | 0.15 |
| 异常值处理 | outlier_method | IQR |
| SARIMA | order | (1,1,1) |
| SARIMA | seasonal_order | (1,1,1,12) |
| SARIMA | maxiter | 200 |
| GARCH | p, q | 1, 1 |
| GARCH | mean, vol, dist | Constant, GARCH, normal |
| TCN-Attention | sequence_length | 30 |
| TCN-Attention | hidden_channels | [32,64,64] |
| TCN-Attention | kernel_size | 3 |
| TCN-Attention | dropout | 0.2 |
| TCN-Attention | num_heads | 4 |
| TCN-Attention | epochs | 100 |
| TCN-Attention | early_stopping_patience | 15 |
| XGBoost | n_estimators | 500 |
| XGBoost | learning_rate | 0.03 |
| XGBoost | max_depth | 5 |
| XGBoost | subsample | 0.8 |
| XGBoost | colsample_bytree | 0.8 |
4.4 对比模型
表4 对比模型说明表
| 模型 | 项目实现方式 | 对比目的 |
|---|---|---|
| SARIMA | models/sarima_model.py |
检验线性季节统计模型基线 |
| SARIMA-GARCH | SARIMA 输出与 GARCH 波动特征分析 | 检验波动特征的辅助作用 |
| TCN | 当前代码中与 TCN-Attention 使用同一预测输出 | 检验深度时序模型表现 |
| TCN-Attention | TCN 编码后接自注意力层 | 检验注意力加权预测能力 |
| XGBoost | 主流程最终集成输出,消融中另有简化变体 | 检验树模型非线性融合能力 |
| SARIMA-GARCH-TCN-Attention-XGBoost | 全特征融合模型 | 检验混合框架整体预测效果 |
4.5 评价指标
本文采用 MAE、RMSE、MAPE、R2R^2R2 等指标评价模型。MAE 定义为:
MAE=1n∑i=1n∣yi−y^i∣ MAE = \frac{1}{n}\sum_{i=1}^{n}|y_i-\hat{y}_i| MAE=n1i=1∑n∣yi−y^i∣
RMSE 定义为:
RMSE=1n∑i=1n(yi−y^i)2 RMSE = \sqrt{\frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y}_i)^2} RMSE=n1i=1∑n(yi−y^i)2
MAPE 定义为:
MAPE=100%n∑i=1n∣yi−y^iyi∣ MAPE = \frac{100\%}{n}\sum_{i=1}^{n}\left|\frac{y_i-\hat{y}_i}{y_i}\right| MAPE=n100%i=1∑n yiyi−y^i
R2R^2R2 定义为:
R2=1−∑i=1n(yi−y^i)2∑i=1n(yi−yˉ)2 R^2 = 1 - \frac{\sum_{i=1}^{n}(y_i-\hat{y}_i)^2}{\sum_{i=1}^{n}(y_i-\bar{y})^2} R2=1−∑i=1n(yi−yˉ)2∑i=1n(yi−y^i)2
表5 评价指标说明表
| 指标 | 含义 | 判断标准 |
|---|---|---|
| MAE | 平均绝对误差 | 越小越好 |
| MSE | 均方误差 | 越小越好 |
| RMSE | 均方根误差 | 越小越好 |
| MAPE | 平均绝对百分比误差 | 越小越好 |
| SMAPE | 对称平均绝对百分比误差 | 越小越好 |
| R2R^2R2 | 拟合优度 | 越大越好 |
| Directional Accuracy | 相邻变化方向判断准确率 | 越大越好 |
5 实验结果与分析
5.1 预测结果对比












表6 实验结果对比表
| 模型 | MAE | RMSE | MAPE(%) | R2R^2R2 | Directional Accuracy |
|---|---|---|---|---|---|
| SARIMA | 2.5477 | 3.0873 | 3.8881 | -0.0421 | 0.5143 |
| SARIMA-GARCH | 2.5477 | 3.0873 | 3.8881 | -0.0421 | 0.5143 |
| TCN | 1.5835 | 1.9326 | 2.3818 | 0.5916 | 0.6000 |
| TCN-Attention | 1.5835 | 1.9326 | 2.3818 | 0.5916 | 0.6000 |
| XGBoost | 0.4991 | 0.9671 | 0.7138 | 0.8977 | 0.9143 |
| SARIMA-GARCH-TCN-Attention-XGBoost | 0.4991 | 0.9671 | 0.7138 | 0.8977 | 0.9143 |
表6结果来自 outputs/results/metrics.csv。完整混合模型相较 SARIMA 的 RMSE 降低约 68.68%,相较 TCN-Attention 的 RMSE 降低约 49.96%;MAE 相较 SARIMA 降低约 80.41%,相较 TCN-Attention 降低约 68.48%。这表明单一线性统计模型难以充分拟合该样本后段的非线性波动,而深度时序特征和树模型融合显著改善预测精度。
5.2 误差指标分析
SARIMA 的 R2R^2R2 为 -0.0421,说明其测试集解释能力不足;TCN-Attention 的 R2R^2R2 提升至 0.5916,反映深度模型能够捕捉部分非线性结构;完整混合模型的 R2R^2R2 达到 0.8977,显示多源特征集成对于测试集目标波动具有较强解释能力。方向准确率方面,完整模型达到 0.9143,明显高于 SARIMA 的 0.5143 和 TCN-Attention 的 0.6000。
图8 误差分解与性能评价流程图
图8说明本文从平均误差、大误差敏感性、相对误差和方向预测能力四个角度评价模型,而非仅罗列单一指标。
5.3 消融实验
消融实验由 experiments/ablation_study.py 实现。该脚本在同一数据划分下构造不同特征剔除方案,并重新训练 XGBoost 变体,以识别 SARIMA、GARCH、TCN-Attention 等模块对最终预测的边际影响。
图9 消融实验设计流程图
表7 消融实验表
| 模型 | MAE | RMSE | MAPE(%) | R2R^2R2 | Directional Accuracy |
|---|---|---|---|---|---|
| SARIMA | 2.5477 | 3.0873 | 3.8881 | -0.0421 | 0.5143 |
| SARIMA-GARCH | 2.5477 | 3.0873 | 3.8881 | -0.0421 | 0.5143 |
| TCN | 1.5835 | 1.9326 | 2.3818 | 0.5916 | 0.6000 |
| TCN-Attention | 1.5835 | 1.9326 | 2.3818 | 0.5916 | 0.6000 |
| XGBoost | 0.4937 | 0.9661 | 0.7057 | 0.8980 | 0.9143 |
| SARIMA-TCN-Attention-XGBoost | 0.4994 | 0.9726 | 0.7146 | 0.8966 | 0.9429 |
| SARIMA-GARCH-TCN-Attention-XGBoost | 0.4991 | 0.9671 | 0.7138 | 0.8977 | 0.9143 |
表7显示,完整模型相较移除 GARCH 的 SARIMA-TCN-Attention-XGBoost 变体,RMSE 降低 0.0055,说明 GARCH 条件波动率特征具有一定增益。然而,消融脚本中的简化 XGBoost 变体 RMSE 为 0.9661,略低于完整模型的 0.9671,表明在当前样本量和特征结构下,原始价格类特征已经具有较强解释能力,额外统计和深度特征可能带来轻微冗余。
5.4 稳健性分析
项目通过固定随机种子、时间顺序划分、训练集标准化和模块兜底机制增强实验稳健性。outputs/logs/full_pipeline.log 显示完整流程两次运行均成功完成,样本划分保持为训练集 168 条、验证集 36 条、测试集 36 条。
表8 稳健性分析表
| 稳健性维度 | 项目实现 | 当前结论 | 后续建议 |
|---|---|---|---|
| 时间顺序划分 | 按 70%、15%、15% 切分 | 降低未来信息泄露风险 | 增加滚动窗口回测 |
| 随机性控制 | seed=42 |
结果具备可复现基础 | 多随机种子重复实验 |
| 异常值处理 | IQR 裁剪 | 降低极端值干扰 | 比较不裁剪与 z-score 方案 |
| 标准化策略 | 仅用训练集拟合 scaler | 减少标准化泄露 | 扩展尺度敏感性分析 |
| 模型兜底 | SARIMA、GARCH 失败时使用替代输出 | 提高流程稳定性 | 正式投稿时补充收敛诊断 |
| 消融检验 | 移除 GARCH 和高层特征 | 识别模块边际贡献 | 扩展多数据集检验 |
图10 稳健性分析流程图
图10展示了本文稳健性分析的主要依据。由于当前项目仅包含一个样本文件,正式投稿前仍需补充更多数据集和滚动回测。
5.5 模型复杂度分析
表9 模型复杂度对比表
| 模型 | 主要复杂度来源 | 当前项目规模 | 复杂度特征 |
|---|---|---|---|
| SARIMA | 差分阶数、季节阶数、迭代次数 | (1,1,1)(1,1,1,12) | 可解释性强,非线性能力弱 |
| GARCH | 条件方差阶数与分布假设 | GARCH(1,1) | 适合波动聚集建模 |
| TCN | 窗口长度、通道数、卷积核 | 30 窗口、3 层通道 | 能并行学习长依赖 |
| Attention | 注意力头数、隐藏维度 | 4 头自注意力 | 强化关键时间步但增加参数 |
| XGBoost | 树数量、深度、特征维度 | 500 棵树、104 特征 | 非线性融合能力强 |
| 完整混合模型 | 多阶段训练与特征拼接 | 统计层、深度层、集成层 | 精度较高但调参成本较大 |
项目保存的 XGBoost 特征重要性表明,close、high、open 和 low 四个 OHLC 特征累计重要性约为 0.9706,TCN 嵌入特征累计重要性约为 0.0264,garch_volatility 的重要性约为 0.0010。这说明当前样本中价格状态变量仍是主导预测信息,深度嵌入和波动特征主要提供辅助增益。
5.6 结果讨论
图11 模型预测结果分析逻辑图
图11说明,完整混合模型相较 SARIMA 和 TCN-Attention 有明显优势,但未在当前消融实验中显著超过简化 XGBoost 变体。因此,本文结论强调混合框架的有效性和可解释性,同时保留对小样本复杂模型的审慎判断。
表10 模型优缺点分析表
| 模型 | 优点 | 局限 |
|---|---|---|
| SARIMA | 可解释性强,适合线性和季节结构 | 对非线性和结构突变敏感 |
| GARCH | 能刻画波动聚集和条件异方差 | 主要解释波动而非均值预测 |
| TCN | 并行训练效率较高,可学习长依赖 | 小样本下可能过拟合 |
| Attention | 能突出关键时间步 | 参数增加,解释需结合权重分析 |
| XGBoost | 非线性融合能力强,对特征交互敏感 | 对时序结构依赖人工特征输入 |
| 完整混合模型 | 统计、深度与集成模型互补 | 模型链条长,调参和解释成本较高 |
6 结论与展望
本文基于 SARIMA_GARCH_TCN_Attention_XGBoost 项目的真实代码和实验结果,构建并分析了 SARIMA-GARCH-TCN-Attention-XGBoost 混合时间序列预测模型。研究表明,SARIMA 能够提供线性趋势和季节结构刻画,GARCH 能够提取残差条件波动信息,TCN-Attention 能够学习非线性时序依赖,XGBoost 能够在多源特征空间中完成非线性融合。测试集结果显示,完整混合模型达到 MAE=0.4991、RMSE=0.9671、MAPE=0.7138%、R2=0.8977R^2=0.8977R2=0.8977,相较 SARIMA 与 TCN-Attention 显著降低预测误差。
与此同时,消融实验也表明,在当前 240 条有效样本和现有参数设定下,完整混合模型相较简化 XGBoost 变体并未取得显著优势,说明复杂模型可能受到样本规模、特征冗余和超参数设置影响。未来研究可从五个方向展开:第一,扩展更长时间跨度和更多市场或业务场景数据;第二,引入滚动窗口回测和多随机种子实验;第三,对 SARIMA 阶数、GARCH 分布假设、TCN 通道结构和 XGBoost 参数进行系统优化;第四,结合 SHAP 值、注意力权重和残差诊断提升解释能力;第五,引入 Diebold-Mariano 检验等统计显著性检验,提高模型比较的严谨性。
如需要源码,请联系作者,在评论区下留言,制作不易,请各位看官老爷点个赞和收藏
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐




所有评论(0)