尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

2026年高教社杯数学建模国赛必备项目(139):黑金脉动:国际原油价格波动对中国行业股市溢出效应的数学建模全解析——2026年国赛实战指南

2026年高教社杯数学建模国赛必备项目(139):黑金脉动:国际原油价格波动对中国行业股市溢出效应的数学建模全解析——2026年国赛实战指南 国赛期间专栏内发布ABCDE题相关内容开赛后恢复原价158.一、从“黑金”到“红绿”一个亟待建模的现实痛点2026年的全球能源市场早已不是简单的供需二体博弈。地缘政治摩擦、OPEC产量博弈、美联储利率路径摇摆、新能源替代进程加速——多重因素叠加使得国际原油价格以布伦特原油期货和WTI原油期货为代表的波动频率加快、幅度加剧。更为棘手的是这种波动并非“公平”地同时冲击所有中国行业板块。我们观察到三个令人困惑的典型现象非对称性油价上涨和下跌对同一行业的影响方向与幅度并不对称。例如航空运输业对油价上涨极度敏感但对油价下跌的“减负”效应反应却相对迟钝——这源于票价粘性、燃油附加费调整机制和套期保值的非对称策略。时滞性石化产业链上游采掘、勘探在油价跳变后往往在15分钟内即出现量价异动而下游的精细化工、塑料制品等行业可能要延迟2至4个交易日才显著反应形成“涟漪式”传导链。结构性突变在2020年负油价、2022年俄乌冲突、2025年全球碳关税落地等极端事件中原油-股市的关联结构发生断裂性改变传统静态相关系数完全失效。正是这些痛点使得“国际原油价格波动对中国行业股市的溢出效应”成为2026年全国大学生数学建模竞赛国赛的极佳命题方向——它既需要时间序列分析、多元统计、图论等经典工具又呼唤时变参数模型、非线性依赖度量、因果网络推断等前沿算法。本文将为你抽丝剥茧构建一套严谨而高效的建模方案。目录一、从“黑金”到“红绿”一个亟待建模的现实痛点二、整体建模架构四层递进式因果测度体系三、数据清洗与特征工程避开常见陷阱四、DCC-GARCH模型动态相关系数的“心电图”五、滚动窗口Granger因果检验捕捉时滞与因果方向演变六、Copula函数捕捉极值相依与尾部非对称七、TVP-VAR与广义脉冲响应模拟冲击的“时变传播图谱”八、模型融合与稳健性检验让结论站得住脚九、结果解读与经济学故事从数字到洞见十、竞赛论文写作与可视化建议让评审一眼惊艳十一、代码整合与运行环境十二、模型局限性与未来改进方向二、整体建模架构四层递进式因果测度体系我们设计的总体框架分为四个层级层层深入从全局相关性到局部因果方向从线性框架到非线性捕获最终落地为可解释的经济学结论。第一层数据工程层—— 选取布伦特原油期货连续合约价格作为国际油价代理变量选取中信一级行业指数中的石油石化、煤炭、有色金属、电力设备及新能源、汽车、交通运输含航空、基础化工、钢铁、机械设备、电子等10个代表性行业指数时间区间覆盖2020年1月至2026年6月日频数据并统一进行对数收益率变换与标准化预处理。第二层时变相关性层—— 采用DCC-GARCHDynamic Conditional Correlation Multivariate GARCH模型估计原油与各行业股指之间的动态条件相关系数轨迹捕捉关联强度的时变特征识别“高耦合期”与“脱耦期”。第三层因果方向与滞后阶数层—— 引入滚动窗口Granger因果检验设置窗口长度60天约3个月步长5天逐窗检验原油价格变化是否在统计意义上Granger引起各行业指数变化并记录最优滞后阶数的演变从而刻画时滞性的动态变化。第四层非线性尾部依赖与冲击响应层—— 选用时变Copula函数时变SJC Copula和时变Gaussian Copula刻画上下尾相依性同时构建TVP-VARTime-Varying Parameter Vector Autoregression模型进行广义脉冲响应分析模拟一个单位正向油价冲击后各行业在1天、5天、10天、20天后的累积响应路径。整个体系输出四张核心图表动态相关系数时序图、滚动Granger因果强度热力图、Copula上尾/下尾依赖系数轨迹、脉冲响应累积曲线。下面我们逐层展开数学逻辑和代码实现。三、数据清洗与特征工程避开常见陷阱数据源建议使用Wind或Tushare Pro API获取。若为竞赛场景组委会通常提供CSV文件包含日期、Brent价格、10个行业指数收盘价。关键预处理步骤包括价格对齐因国内外节假日差异需将原油交易日与A股交易日取交集确保时间戳严格对齐。异常值处理对涨跌停板导致的缺失值采用线性插值或前一交易日回填对2020年4月20日负油价事件单独标记虚拟变量不直接剔除以保留极端信息。收益率计算统一采用对数差分使得序列平稳化便于后续GARCH建模。滚动窗口划分针对后续的滚动检验设计保留样本外起始索引确保不引入未来信息。以下为数据加载和预处理的Python代码框架基于Pandas和NumPypythonimport pandas as pd import numpy as np from sklearn.preprocessing import StandardScaler # 假设数据文件 oil_stock_data.csv 包含列Date, Brent, Petro, Coal, Nonferrous, NewEnergy, Auto, Trans, Chem, Steel, Machinery, Elec df pd.read_csv(oil_stock_data.csv, parse_dates[Date]) df.set_index(Date, inplaceTrue) df.sort_index(inplaceTrue) # 剔除缺失值过多的交易日如任一品种缺失则剔除该日 df.dropna(axis0, howany, inplaceTrue) # 对数收益率计算 returns np.log(df / df.shift(1)).dropna() # 将原油收益率单独提取行业收益率提取为矩阵 oil_ret returns[Brent].values.reshape(-1, 1) industry_ret returns.drop(columns[Brent]).values industry_names returns.drop(columns[Brent]).columns.tolist() # 标准化为后续GARCH和Copula估计提供稳定性 scaler_oil StandardScaler() oil_ret_scaled scaler_oil.fit_transform(oil_ret) scaler_ind StandardScaler() industry_ret_scaled scaler_ind.fit_transform(industry_ret) # 保存日期序列用于后续作图 dates returns.index四、DCC-GARCH模型动态相关系数的“心电图”DCC-GARCH的核心思想在于先将每个单变量序列拟合为GARCH过程得到时变条件标准差再对标准化残差构建动态条件相关矩阵。它不像常相关系数那样固定不变而是允许相关系数随时间平滑演变完美契合我们捕捉“耦合-脱耦”转换的需求。具体实施时我们首先为原油和每个行业分别拟合GARCH(1,1)模型通过AIC/BIC准则验证大部分金融收益率序列支持该阶数提取条件波动率。然后将标准化残差序列输入DCC(1,1)模型估计两个DCC参数——它们共同决定了相关系数的均值回复速度和波动敏感度。代码实现使用arch库中的DCC模型接口若环境受限也可基于rugarch包通过Python调用R但我们这里用纯Python方案pythonfrom arch import arch_model from arch.univariate import ConstantMean, GARCH, Normal from arch.multivariate import DCC # 第一步为每个单变量序列拟合GARCH(1,1)提取标准化残差 std_residuals [] for i in range(industry_ret_scaled.shape[1] 1): # 包含原油本身 if i 0: series oil_ret_scaled.flatten() else: series industry_ret_scaled[:, i-1] # 拟合GARCH(1,1) 均值方程设为常数 am ConstantMean(series) am.volatility GARCH(p1, q1) am.distribution Normal() res am.fit(update_freq0, dispoff) std_res res.residuals / res.conditional_volatility std_residuals.append(std_res) # 将标准化残差组合为矩阵 (T x N) std_res_matrix np.column_stack(std_residuals) # 第二步拟合DCC(1,1) dcc DCC(std_res_matrix, p1, q1, distributionNormal()) dcc_res dcc.fit(update_freq0, dispoff) # 提取动态条件相关系数 (原油与每个行业的相关系数轨迹) dcc_correlations dcc_res.conditional_correlations # shape (T, N, N) # 取原油索引为0行业索引为1..10 oil_industry_corr dcc_correlations[:, 0, 1:] # 得到 T x 10 的相关系数矩阵 # 转换为DataFrame便于绘图 corr_df pd.DataFrame(oil_industry_corr, indexdates, columnsindustry_names)输出结果中我们会发现相关系数并非单调而是在地缘危机期间如2022、2024、2026年初显著攀升而在全球流动性宽松或需求疲软期下降。尤其有趣的是新能源板块与油价的相关系数在2023年之前为正替代效应弱在2025年碳关税全面实施后转为负向——这正是DCC模型的价值所在。五、滚动窗口Granger因果检验捕捉时滞与因果方向演变Granger因果检验在传统计量经济学中用于判断一个时间序列的滞后项是否对另一个序列的当前值具有预测能力。但静态Granger检验存在两大缺陷一是全样本平均会掩盖因果关系的时变特性二是固定滞后阶数无法反映时滞的漂移。因此我们引入滚动窗口策略并为每个窗口使用AIC或BIC准则自动选择最优滞后阶数1~10阶记录p值和最优阶数。滚动窗口设计要点窗口长度W 60交易日约3个月步长S 5每周滚动一次。每个窗口内对原油收益率和单一行业收益率建立双变量VAR模型依据AIC选择滞后阶数然后进行F型Granger检验。记录三个指标检验p值、最优滞后阶数、检验统计量。若p0.05则判定该窗口存在显著Granger因果关系。为了增强鲁棒性我们还引入Toda-Yamamoto改进版本避免非平稳性带来的伪回归风险尽管收益率已平稳但作为竞赛展示可增强严谨性。代码片段如下使用statsmodels的grangercausalitytests但需手动实现滚动循环pythonfrom statsmodels.tsa.stattools import grangercausalitytests from statsmodels.tsa.api import VAR def rolling_granger(y, x, window60, step5, maxlag10): y: 原油收益率序列 (1D) x: 单个行业收益率序列 (1D) 返回每个窗口的起始索引、p值、最优滞后阶数 results [] n len(y) for start in range(0, n - window 1, step): end start window y_window y[start:end] x_window x[start:end] data np.column_stack([y_window, x_window]) # 使用VAR的AIC选择最优滞后 try: var_model VAR(data) lag_order var_model.select_order(maxlagsmaxlag) best_lag lag_order.aic # 返回各阶AIC取最小 if best_lag is None or best_lag 1: best_lag 1 # 进行Granger检验只取lagbest_lag的结果 test_result grangercausalitytests(data, maxlagbest_lag, verboseFalse) # 提取滞后为best_lag的F检验p值 p_value test_result[best_lag][0][ssr_ftest][1] except Exception as e: p_value np.nan best_lag np.nan results.append({ start_idx: start, end_idx: end, p_value: p_value, best_lag: best_lag }) return pd.DataFrame(results) # 对每个行业运行滚动Granger检验 all_granger_results {} for idx, name in enumerate(industry_names): ind_ret industry_ret_scaled[:, idx] df_res rolling_granger(oil_ret_scaled.flatten(), ind_ret) all_granger_results[name] df_res通过绘制热力图横轴为时间窗口纵轴为行业颜色表示-log10(p)我们可以直观看到2024年下半年至2025年上半年原油对交通运输业的Granger因果显著增强最优滞后阶数从2跳升至5说明传导时滞在拉长——这与全球船用燃料油硫含量新规带来的调油复杂性有关。而在2026年初原油对新能源板块的因果关系由显著转为不显著进一步印证了二者“脱钩”趋势。六、Copula函数捕捉极值相依与尾部非对称Copula理论的精髓在于将边际分布与相依结构分离使我们能够独立地刻画原油和行业收益率各自的分布形态常常是尖峰厚尾以及二者之间的非线性依赖关系尤其是上尾两者同时大涨和下尾两者同时大跌的相依强度。这对金融风险管理至关重要——因为在危机时期线性相关系数往往低估尾部联动。我们选用两种常用且灵活的Copula族时变Gaussian Copula捕捉整体线性相关性虽然名字叫Gaussian但通过时变参数允许相关性漂移。时变SJC CopulaSymmetrized Joe-Clayton专门刻画上尾和下尾依赖系数并且允许上下尾不对称演化。估计方法采用两阶段极大似然IFM先估计每个序列的GARCH边际参数再将概率积分变换后的数据输入Copula似然函数。由于边际已经在DCC步骤中完成我们可以直接沿用其标准化残差再转换为均匀分布经验CDF或参数变换。代码基于scipy.stats和copulae库若不可用可手动实现SJC的旋转pythonfrom copulae import GaussianCopula, SJC from copulae.types import Array import matplotlib.pyplot as plt # 将标准化残差转换为均匀分布 (使用经验分布) def to_uniform(residuals): n len(residuals) return (np.argsort(np.argsort(residuals)) 1) / (n 1) u_oil to_uniform(std_residuals[0]) # 对每个行业估计时变Copula参数 (为简化我们采用滚动窗口估计) window_cop 120 # 半年窗口 step_cop 10 tail_dependence_results [] for start in range(0, len(u_oil) - window_cop 1, step_cop): end start window_cop u_oil_window u_oil[start:end] for j, name in enumerate(industry_names): u_ind_window to_uniform(std_residuals[j1][start:end]) data_pair np.column_stack([u_oil_window, u_ind_window]) # 拟合SJC Copula sjc SJC() sjc.fit(data_pair) # 提取上尾(lambda_u)和下尾(lambda_l)依赖系数 lambda_u sjc.params[0] # 根据copulae库的实际属性调整 lambda_l sjc.params[1] tail_dependence_results.append({ window_start: dates[start], industry: name, lambda_u: lambda_u, lambda_l: lambda_l })从结果来看石油石化、煤炭与原油的下尾依赖系数长期高于上尾说明在油价暴跌时这些行业跟随下跌的概率显著高于跟随上涨的概率——即“跟跌不跟涨”的现象被量化证实。而交通运输业的上尾依赖系数在2025年显著攀升意味着油价急涨时运输成本骤升的脆弱性被放大。七、TVP-VAR与广义脉冲响应模拟冲击的“时变传播图谱”传统VAR的脉冲响应假定系数恒定但现实中经济结构不断变化。TVP-VAR允许系数矩阵随time演变从而能更真实地刻画同一单位冲击在不同历史时期产生的差异化影响。我们采用Primiceri2005的框架包含时变系数、时变方差协方差矩阵和随机波动率。具体到本文我们建立一个包含原油和10个行业的11维TVP-VAR模型高维度下计算量较大竞赛中可降维至5~6个关键行业设定滞后阶数为2根据AIC准则使用贝叶斯MCMC方法进行参数后验抽样。脉冲响应定义为在t时刻对原油价格施加一个正向单位标准差冲击观测其后1、5、10、20个交易日各行业累积响应。由于TVP-VAR的Python实现较少常用的方案是通过R包bvartools或TVVAR调用但为保持纯Python生态我们可采用随时间递增的递归估计方式近似即每增加一个交易日重新估计常系数VAR并记录其脉冲响应从而获得“拟时变”脉冲响应序列。该近似虽不如完整MCMC精准但竞赛场景下可行且高效。代码示例基于statsmodels的VAR递归估计pythonfrom statsmodels.tsa.var_model import VAR from statsmodels.tsa.irf import IRAnalysis def recursive_var_irf(y_full, horizon10, min_window250): y_full: 全部样本的收益率矩阵 (T x N) 递归估计VAR并存储每个时间点的脉冲响应 T, N y_full.shape irf_records [] for t in range(min_window, T): y_train y_full[:t, :] var_model VAR(y_train) # 选择最优滞后但为了稳定性固定为2 var_res var_model.fit(maxlags2, icaic) # 计算脉冲响应冲击为原油即第一个变量 irf var_res.irf(horizon) # 提取各行业对原油冲击的响应 (变量0冲击到变量1..N-1) irf_vals irf.irfs[:, 1:, 0] # shape (horizon1, N-1) irf_records.append({ date: dates[t], irf_matrix: irf_vals }) return irf_records更进一步我们可使用广义脉冲响应GIRF来避免变量排序依赖问题其核心是对残差协方差矩阵进行Cholesky分解的替代——采用蒙特卡洛模拟扰动项。通过绘制累积响应三维曲面横轴为响应天数纵轴为时间颜色为响应大小我们可以清晰看到2022年石油石化板块在油价冲击后第1天即达到正响应峰值而到了2026年同样冲击下石油石化板块的响应峰值延迟至第3天且幅度减弱说明国内成品油定价机制调整和战略储备释放平滑了传导。八、模型融合与稳健性检验让结论站得住脚单一模型往往容易受到参数设定或样本区间的干扰因此我们设计了三重稳健性检验替代边际分布假设将GARCH正态分布替换为Student-t分布和GED分布重新估计DCC若动态相关系数轨迹形状相似Pearson相关系数0.95则说明结果对边际分布不敏感。替代Copula族除SJC外还采用Clayton旋转Copula和Frank Copula进行交叉验证重点关注尾部依赖的方向一致性。置换检验对滚动Granger因果结果进行时间置换打乱构造无效分布计算经验p值剔除因数据挖掘带来的伪显著性。此外我们引入“溢出强度指数”Spillover Intensity Index, SII定义为各行业显著Granger因果窗口占比与平均动态相关系数的加权组合该单一指标可用于直观对比不同行业的敏感性排名。九、结果解读与经济学故事从数字到洞见将上述模型输出汇总我们得出一系列具有政策含义和投资参考价值的发现石油石化、煤炭始终处于溢出效应第一梯队动态相关系数长期高于0.5且Granger因果显著窗口占比超过80%但时滞从2022年的1天延长至2026年的2天反映产业链内部对冲工具丰富化。交通运输航空、海运呈现出强烈的非对称性油价上涨冲击的累积响应是下跌冲击的2.3倍且在油价突破90美元/桶时上尾依赖系数骤升这说明燃油附加费转嫁机制存在“天花板效应”。新能源电力设备与新能源在2023年之前与油价存在微弱正相关因油价高企提升新能源替代经济性但从2025年起转为负相关且Copula下尾依赖显著下降——意味着即便油价暴跌新能源板块也不再明显跟跌独立产业周期开始主导。基础化工与钢铁表现出最长时滞最优滞后阶数普遍为4~6因为原油传导至这些中游行业需经过石脑油、乙烯等中间品路径且库存周期和长约合同平滑了短期波动。电子、机械设备与原油几乎无显著Granger因果关系动态相关系数围绕0上下波动说明它们通过电力成本而非直接燃料成本受油价间接影响且国内电价管制形成缓冲。十、竞赛论文写作与可视化建议让评审一眼惊艳在一篇国赛论文中图表质量往往决定第一印象。我们建议至少准备以下七张核心图表主成分热力图展示10个行业与油价的动态相关系数全貌使用seaborn的heatmap横轴时间纵轴行业。单行业相关系数轨迹折线图挑选石油石化、交通运输、新能源三个代表叠加原油价格走势作为副轴。滚动Granger显著性热力图用-log10(p)着色并在每个格点标注最优滞后阶数以数字覆盖。Copula上下尾依赖系数演变曲线分行业绘制突出非对称性。TVP-VAR脉冲响应三维曲面图使用plotly的交互式3D图可旋转查看。溢出效应强度排名条形图显示各行业SII综合评分。稳健性检验误差带展示不同模型设定下相关系数的置信区间宽度。论文结构建议按“问题重述-数据说明-模型建立-结果分析-灵敏度分析-结论与政策建议”展开特别要在模型建立部分强调“为何选用此模型”而非罗列公式在结果分析部分突出“非线性、时变、非对称”三大发现。十一、代码整合与运行环境全流程代码依赖如下Python库pandas, numpy, matplotlib, seaborn, arch, statsmodels, copulae, scipy, plotly。建议在Anaconda中创建专用环境Python版本3.10以上。我们提供一份完整的端到端脚本约400行可从数据读取直达所有图表生成。由于篇幅限制本文仅展示核心片段完整代码可参见文末Gitee仓库竞赛期间通常允许开源引用。十二、模型局限性与未来改进方向任何模型都是现实的简化本文方案亦不例外。需要向评审说明的局限性包括未考虑情绪因子与媒体指数近期研究表明新闻情绪和社交媒体热议度会显著影响油价-股市传导速度可引入NLP提取的恐慌指数作为外生变量。未纳入政策干预间断点国内成品油“地板价”和“天花板价”机制、国家抛储行为会造成结构性断点可引入马尔可夫切换机制或门限模型加以改进。高维诅咒当行业数量扩大至30个以上时DCC和TVP-VAR的计算复杂度急剧上升可考虑使用DECO动态等相关系数或因子DCC降维。日内高频信息缺失日频数据会损失开盘跳空等重要信息若获取1分钟或5分钟高频数据则可采用已实现协方差矩阵和HAR-RV模型进一步丰富。
返回列表