我已经有了一堆股票数据 ,如何用garch(1,1)模型计算历史波动率 请告诉为完整代码并举例,包括数据导入
时间: 2024-03-13 15:45:23 浏览: 119
好的,下面是一个完整的Python代码示例,包括数据导入、GARCH(1,1)模型拟合和历史波动率计算:
```python
import pandas as pd
import numpy as np
import yfinance as yf
from arch import arch_model
# 导入股票数据
data = yf.download("AAPL", start="2010-01-01", end="2021-12-31")
returns = np.log(data['Adj Close']/data['Adj Close'].shift(1)).dropna()
# 拟合GARCH(1,1)模型
model = arch_model(returns, p=1, q=1)
model_fit = model.fit(disp='off')
# 计算历史波动率
forecast_horizon = 1
forecasts = model_fit.forecast(horizon=forecast_horizon)
volatility = np.sqrt(forecasts.variance.iloc[-1])
print("历史波动率为:", volatility)
```
上述代码中,我们首先使用 `yfinance` 库导入苹果公司(AAPL)的历史股票数据,并计算每日对数收益率。然后,我们使用 `arch` 库拟合 GARCH(1,1) 模型,并通过 `forecast` 方法计算未来1天的方差,再通过 `sqrt` 方法计算历史波动率。
请注意,这里的历史波动率是基于已有数据计算得出的,而不是未来预测的波动率。对于未来波动率的预测,需要使用更复杂的方法和模型。
阅读全文