You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用arch包EGARCH(1,1)预测日度波动率出现内存错误如何解决

问题原因与解决方案

内存溢出原因

  • arch包forecast方法默认会为拟合样本内的每一个时间点都生成长度等于horizon的预测结果,而你只需要拟合结束节点(2015-01-04)的未来预测,多余的历史预测占用了大量内存
  • simulation方法默认使用1000条模拟路径,长预测周期下生成的三维数组占用内存过高,且EGARCH模型有解析预测解,无需使用模拟方法

修改后的代码

只需要替换原预测部分的代码即可:

# 计算目标区间长度
horizon = len(df.loc['01-04-2015' : ])
# 仅保留最后一个拟合时间点的预测结果,使用解析方法完成预测,reindex=False大幅降低内存占用
forecast_result = fitted_EGARCH.forecast(horizon=horizon, reindex=False)
# 提取条件方差开平方得到波动率,绑定目标区间日期生成所需Series
target_date_index = df.loc['01-04-2015':].index
volatility_FORECASTED = pd.Series(np.sqrt(forecast_result.variance.iloc[-1].values), index=target_date_index)

可选调整说明

如果必须使用模拟方法做预测,可通过降低模拟次数减少内存占用,示例如下:

# 模拟次数从默认1000降到200,内存占用直接降到原来的1/5
forecast_result = fitted_EGARCH.forecast(horizon=horizon, method='simulation', simulations=200, reindex=False)

最终输出的volatility_FORECASTED就是符合要求的pandas.Series类型结果,索引为2015-01-04到2018-12-06的日期,值为对应日期的日度波动率。如果需要年化波动率,可将结果乘以np.sqrt(252)即可。

内容的提问来源于stack exchange,提问作者Shayan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 03:45:05