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

Python中ARCH模型拟合报错:Buffer dtype mismatch, expected 'double' but got 'float'

解决ARCH模型fit方法的Buffer dtype mismatch报错

这个报错的核心原因是输入数据的 dtype 为 float32,而ARCH库底层要求使用 float64(即double类型)。yfinance下载的股指数据默认可能是float32,计算出的对数收益率继承了该类型,导致拟合时出现类型不匹配。

修改方案

显式将对数收益率数据转换为float64类型后再传入arch_model:

import yfinance as yf
from arch import arch_model
import numpy as np

SPX = yf.download('^GSPC', start='2005-01-01', interval='1d')
SPX['log_returns'] = np.log(SPX['Adj Close']) - np.log(SPX['Adj Close'].shift(1))
# 转换数据类型为float64,解决类型不匹配问题
processed_returns = (SPX['log_returns'][1:] * 100).astype('float64')
arch_mSPX = arch_model(processed_returns, mean='Zero', vol='GARCH')
arch_mSPX = arch_mSPX.fit()

也可以将转换步骤直接合并到模型初始化中:

arch_mSPX = arch_model((SPX['log_returns'][1:] * 100).astype('float64'), mean='Zero', vol='GARCH')

转换后数据类型符合ARCH库的要求,即可正常完成GARCH模型拟合,之后就能对比自研代码与第三方库的计算结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 07:54:57