利用估计参数 EGARCH(1, 1) 模型对指数 收益率进行模拟 并将模拟序列收益率序列和原始收益率序列画在同一幅图上。代码
时间: 2024-02-28 09:56:37 浏览: 81
沪深300指数日收益率时间序列特征分析
下面是利用EGARCH(1,1)模型对指数收益率进行模拟并将模拟序列收益率序列和原始收益率序列画在同一幅图上的代码:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from arch import arch_model
# 读取数据
data = pd.read_excel('RESSET_IDXDRET_上证.xls')
data.columns = ['code', 'name', 'date', 'r']
r = data.loc[:, ['r']].values.flatten()
# EGARCH(1, 1)模型拟合
egarch = arch_model(r, vol='EGARCH', p=1, o=0, q=1, dist='normal')
egarch_fit = egarch.fit(disp='off')
# 模拟序列
sim_r = egarch_fit.forecast(horizon=len(r), reindex=False).variance.values[-1, :] ** 0.5 * np.random.normal(size=len(r))
# 画图
fig, ax = plt.subplots(figsize=(10, 5))
ax.plot(r, label='Original returns')
ax.plot(sim_r, label='Simulated returns')
ax.legend()
plt.show()
```
在这个代码中,首先读取了数据,然后使用arch包中的arch_model函数定义了一个EGARCH(1,1)模型,并将原始收益率序列r传递给该模型进行拟合。拟合得到的模型参数通过forecast函数进行模拟,得到了一组与原始收益率序列相同长度的模拟序列sim_r。最后,使用matplotlib库中的plot函数将原始收益率序列和模拟序列画在同一幅图上,并使用legend函数添加图例。
阅读全文