我有一个有关使用GARCH模型进行预测的问题。很抱歉,但是我是第一次使用ARCH软件包,因此不确定是我的错还是该软件包的限制。
我想使用GARCH模型来模拟未来的现货市场价格。我使用了以下代码:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from arch import arch_model
spotmarket = pd.read_csv("./data/external/Spotmarket_dhp.csv", delimiter=",", parse_dates=[0], index_col=[0])
print(spotmarket.head())
r = spotmarket['price'].pct_change().dropna() * 100
print(r)
plt.plot(r)
Q1 = r.quantile(.25)
Q3 = r.quantile(.75)
q1 = Q1-2*(Q3-Q1)
q3 = Q3+2*(Q3-Q1)
a = r[r.between(q1, q3)]
print(a)
plt.plot(a)
model = arch_model(a, vol='Garch', p=1, o=0, q=1, dist='Normal')
results = model.fit()
print(results.summary())
forecasts = results.forecast(horizon=1000, method='simulation', simulations=1)
sims = forecasts.simulations
我的数据在一列中大约有43000行。我已经消除了异常值。
我必须预测将近175 000个值,通常这应该是可能的...我现在有两个问题。无法将模拟设置为1,因为如果执行此操作,则会收到消息ValueError: could not broadcast input array from shape (41372) into shape (41372,1)
。另一个问题是视野。当我尝试使用超过1000的地平线时,收到错误消息MemoryError
。有人可以帮我或有什么想法吗?