所有的 ARCH模型开始时需要确定一个均值模型。
class arch.univariate.
ZeroMean
(y=None, hold_back=None, volatility=None, distribution=None)[source]
0条件均值模型估计和模拟:
Parameters: |
|
---|
举例:
>>> import numpy as np
>>> from arch.univariate import ZeroMean
>>> y = np.random.randn(100)
>>> zm = ZeroMean(y)
>>> res = zm.fit()
注意:
该零均值模型描述如下:
fit
(update_freq=1, disp='final', starting_values=None, cov_type='robust', show_warning=True, first_obs=None, last_obs=None, tol=None, options=None, backcast=None)
该模型应该具有 观察值个数*1 的残差值(sigma)的向量。
Parameters: |
|
---|---|
Returns: | results – 包含模型结果的对象。 |
Return type: | ARCHModelResult |
注意:
如果SciPy的优化器表明最优化困难时将会给出警示。参数使用SLSQP进行最优化。
fix
(params, first_obs=None, last_obs=None)
允许使用 ARCHModelFixedResult结果来构建固定参数模型。
Parameters: |
|
---|---|
Returns: | results – 模型结果对象 |
Return type: | ARCHModelFixedResult |
注意:
并不会针对具体模型的约束检查参数。
forecast
(params, horizon=1, start=None, align='origin', method='analytic', simulations=1000, rng=None)
利用估计模型进行预测。
Parameters: |
|
---|---|
Returns: | forecasts – t * h 的data frame 格式预测结果。该预测参数由align控制. |
Return type: | ARCHModelForecast |
举例:
>>> import pandas as pd
>>> from arch import arch_model
>>> am = arch_model(None,mean='HAR',lags=[1,5,22],vol='Constant')
>>> sim_data = am.simulate([0.1,0.4,0.3,0.2,1.0], 250)
>>> sim_data.index = pd.date_range('2000-01-01',periods=250)
>>> am = arch_model(sim_data['data'],mean='HAR',lags=[1,5,22], vol='Constant')
>>> res = am.fit()
>>> fig = res.hedgehog_plot()
注意:
最基本的1步式预测将会返回与原始数据同样大小的向量,其中第t个值表示t时刻对t+1时刻的预测。当预测步数大于1且使用默认值时,预测结果在位置 [t, h] 表示t时刻 h+1 步的预测结果。
如果模型包含外生变量(model.x 为空), 则仅有1步式预测可用。预测步数大于1时将会产生警示信息,届时除第一列外,其他列用nan填充。
如果选择 ‘origin’,预测结果[t,h] 包括预测值y[:t] 表示h+1步预测(表示趋近但不包括t)。例如,y[100,2] 包括3步预测,使用前100个数据点,对应于结果集 y[100 + 2]. 如果选择‘target’,则同样的结果位于 [102, 2],以便与使用的观察值对齐,但仍位于同一列中。
resids
(params, y=None, regressors=None)[source]
计算模型残差
Parameters: |
|
---|---|
Returns: | resids – 模型残差 |
Return type: | ndarray |
simulate
(params, nobs, burn=500, initial_value=None, x=None, initial_value_vol=None)[source]
基于零均值模型的模拟
Parameters: |
|
---|---|
Returns: | simulated_data – 包含模拟值,波动率,条件误差和条件波动率的DataFrame列数据。 |
Return type: | DataFrame |
举例:
非均值和常数波动率的基本模拟:
>>> from arch.univariate import ZeroMean
>>> zm = ZeroMean()
>>> sim_data = zm.simulate([1.0], 1000)
非发散波动率过程的模拟:
>>> from arch.univariate import GARCH
>>> zm.volatility = GARCH(p=1, o=1, q=1)
>>> sim_data = zm.simulate([0.05, 0.1, 0.1, 0.8], 300)
classarch.univariate.
ConstantMean
(y=None, hold_back=None, volatility=None, distribution=None)[source]
常数均值模型的估计和模拟.
Parameters: |
|
---|
举例:
>>> import numpy as np
>>> from arch.univariate import ConstantMean
>>> y = np.random.randn(100)
>>> cm = ConstantMean(y)
>>> res = cm.fit()
注意:
该常数均值过程如下:
fit
(update_freq=1, disp='final', starting_values=None, cov_type='robust', show_warning=True, first_obs=None, last_obs=None, tol=None, options=None, backcast=None)
使用nobs*1的方差向量矩阵拟合模型。
Parameters: |
|
---|---|
Returns: | results – 包含模型结果的对象。 |
Return type: | ARCHModelResult |
注意:
如果SciPy优化器在查找最优值困难时,则会抛出收敛警示。
参数使用SLSQP进行最优化.
forecast
(params, horizon=1, start=None, align='origin', method='analytic', simulations=1000, rng=None)
基于估计模型进行预测。
Parameters: |
|
---|---|
Returns: | forecasts – t * h大小的 data frame预测结果。该预测方法由align决定。 |
Return type: | ARCHModelForecast |
举例:
>>> import pandas as pd
>>> from arch import arch_model
>>> am = arch_model(None,mean='HAR',lags=[1,5,22],vol='Constant')
>>> sim_data = am.simulate([0.1,0.4,0.3,0.2,1.0], 250)
>>> sim_data.index = pd.date_range('2000-01-01',periods=250)
>>> am = arch_model(sim_data['data'],mean='HAR',lags=[1,5,22], vol='Constant')
>>> res = am.fit()
>>> fig = res.hedgehog_plot()
注意:
最基本的1步预测返回一个与原始数据同样大小的向量,其中第t个值为t时刻对t+1时刻的预测。当预测步数大于1时且使用默认方法时,在预测集位置[t, h] 表示t时刻,h+1步预测。
如果模型包含外生变量 (model.x为非空), 则仅有1步式预测可用。预测步数大于1时,将会给出警示信息,且除第一列外其他列用nan填充。
‘origin’方法的预测集位置[t,h]包含预测结果集 y[:t] 对应于预测步数h+1(也就是说,接近但不包含).例如,y[100,2] 包含基于前100个数据点的3步式预测结果,对应于结果集 y[100 + 2]. ‘target’则同样的结果对应于 [102, 2],以便与观察值一致,但位于同一列。
resids
(params, y=None, regressors=None)[source]
计算模型残差。
Parameters: |
|
---|---|
Returns: | resids –模型残差 |
Return type: | ndarray |
simulate
(params, nobs, burn=500, initial_value=None, x=None, initial_value_vol=None)[source]
基于常数均值模型的模拟数据。
Parameters: |
|
---|---|
Returns: | simulated_data – DataFrame数据列,包括模拟值,波动率,条件波动率以及误差。 |
Return type: | DataFrame |
举例:
带有常数均值和波动率过程的基本数据模拟。
>>> import numpy as np
>>> from arch.univariate import ConstantMean, GARCH
>>> cm = ConstantMean()
>>> cm.volatility = GARCH()
>>> cm_params = np.array([1])
>>> garch_params = np.array([0.01, 0.07, 0.92])
>>> params = np.concatenate((cm_params, garch_params))
>>> sim_data = cm.simulate(params, 1000)
classarch.univariate.
ARX
(y=None, x=None, lags=None, constant=True, hold_back=None, volatility=None, distribution=None)[source]
带有可选外生变量的自回归模型估计和模拟。
Parameters: |
|
---|
举例:
>>> import numpy as np
>>> from arch.univariate import ARX
>>> y = np.random.randn(100)
>>> arx = ARX(y, lags=[1, 5, 22])
>>> res = arx.fit()
估计自回归模型 GARCH(1,1)误差:
>>> from arch.univariate import GARCH
>>> arx.volatility = GARCH()
>>> res = arx.fit(update_freq=0, disp=’off’)
注意
该AR-X 模型表述如下:
fit
(update_freq=1, disp='final', starting_values=None, cov_type='robust', show_warning=True, first_obs=None, last_obs=None, tol=None, options=None, backcast=None)
使用 nobs * 1的方差向量(sigma2)拟合模型。
Parameters: |
|
---|---|
Returns: | results – 模型结果对象。 |
Return type: | ARCHModelResult |
注意:
如果SciPy的优化器表明最优化困难时将会给出警示。参数使用SLSQP进行最优化。
fix
(params, first_obs=None, last_obs=None)
允许使用固定参数ARCHModelFixedResult.
Parameters: |
|
---|---|
Returns: | results – 模型结果对象。 |
Return type: | ARCHModelFixedResult |
注意:
参数并不针对具体模型约束进行检查。
forecast
(params, horizon=1, start=None, align='origin', method='analytic', simulations=1000, rng=None)
构建基于估计模型的预测。
Parameters: |
|
---|---|
Returns: | forecasts – t * h大小的 data frame预测集。该预测参数由align控制。 |
Return type: | ARCHModelForecast |
举例:
>>> import pandas as pd
>>> from arch import arch_model
>>> am = arch_model(None,mean='HAR',lags=[1,5,22],vol='Constant')
>>> sim_data = am.simulate([0.1,0.4,0.3,0.2,1.0], 250)
>>> sim_data.index = pd.date_range('2000-01-01',periods=250)
>>> am = arch_model(sim_data['data'],mean='HAR',lags=[1,5,22], vol='Constant')
>>> res = am.fit()
>>> fig = res.hedgehog_plot()
注意:
最基本的1步预测会返回与原始数据同样大小的向量,其中第 t个值则为t时刻对t+1时刻的预测。当预测步数大于1时且使用默认align值,预测集位置 [t, h] 则为t时刻 h+1步预测结果。
如果模型包含外生变量 (model.x 非空), 则仅有1步预测方法可用。若预测步数大于1则会产生警示信息,全部列除第一列外其他用nan填充。
如果使用‘origin’方法,预测结果[t,h]包含预测集 y[:t] 对应于h+1步预测(即接近但不包括t).例如,y[100,2]包含使用前100个数据点的3步预测,对应于预测结果y[100 + 2]. 如为‘target’方法,则同样的预测位于位置 [102, 2], 以便与观察值一致,但仍位于同一列。
resids
(params, y=None, regressors=None)
计算模型残差
Parameters: |
|
---|---|
Returns: | resids – 模型残差 |
Return type: | ndarray |
simulate
(params, nobs, burn=500, initial_value=None, x=None, initial_value_vol=None)
模拟线性回归, AR 或 HAR模型。
Parameters: |
|
---|---|
Returns: | simulated_data – DataFrame数据列,包括模拟值,波动率,条件波动率以及误差。 |
Return type: | DataFrame |
举例:
>>> import numpy as np
>>> from arch.univariate import HARX, GARCH
>>> harx = HARX(lags=[1, 5, 22])
>>> harx.volatility = GARCH()
>>> harx_params = np.array([1, 0.2, 0.3, 0.4])
>>> garch_params = np.array([0.01, 0.07, 0.92])
>>> params = np.concatenate((harx_params, garch_params))
>>> sim_data = harx.simulate(params, 1000)
外生变量的模型模拟计算系数时需要nobs加burn个数据点。
>>> nobs = 100
>>> burn = 200
>>> x = np.random.randn(nobs + burn, 2)
>>> x_params = np.array([1.0, 2.0])
>>> params = np.concatenate((harx_params, x_params, garch_params))
>>> sim_data = harx.simulate(params, nobs=nobs, burn=burn, x=x)
classarch.univariate.
HARX
(y=None, x=None, lags=None, constant=True, use_rotated=False, hold_back=None, volatility=None, distribution=None)[source]
异方差自回归(HAR), 且带有可选外生系数,估计模型以及模拟。
Parameters: |
|
---|
举例:
>>> import numpy as np
>>> from arch.univariate import HARX
>>> y = np.random.randn(100)
>>> harx = HARX(y, lags=[1, 5, 22])
>>> res = harx.fit()
>>> from pandas import Series, date_range
>>> index = date_range('2000-01-01', freq='M', periods=y.shape[0])
>>> y = Series(y, name='y', index=index)
>>> har = HARX(y, lags=[1, 6], hold_back=10)
注意:
HAR-X模型描述如下:
fit
(update_freq=1, disp='final', starting_values=None, cov_type='robust', show_warning=True, first_obs=None, last_obs=None, tol=None, options=None, backcast=None)
使用nobs*1大小的方差向量(sigma2)来拟合模型。
Parameters: |
|
---|---|
Returns: | results – 模型结果对象 |
Return type: | ARCHModelResult |
注意:
如果SciPy优化器无法获得最优值,则抛出收敛警示信息。参数使用SLSQP进行优化。
fix
(params, first_obs=None, last_obs=None)
使用固定参数构建 ARCHModelFixedResult.
Parameters: |
|
---|---|
Returns: | results – 包含模型结果的对象。 |
Return type: | ARCHModelFixedResult |
注意:
参数并不对具体模型的约束条件进行检查。
forecast
(params, horizon=1, start=None, align='origin', method='analytic', simulations=1000, rng=None)[source]
利用估计模型进行预测。
Parameters: |
|
---|---|
Returns: | forecasts – t * h 大小的data frame预测集,该预测结果由align控制。 |
Return type: | ARCHModelForecast |
举例:
>>> import pandas as pd
>>> from arch import arch_model
>>> am = arch_model(None,mean='HAR',lags=[1,5,22],vol='Constant')
>>> sim_data = am.simulate([0.1,0.4,0.3,0.2,1.0], 250)
>>> sim_data.index = pd.date_range('2000-01-01',periods=250)
>>> am = arch_model(sim_data['data'],mean='HAR',lags=[1,5,22], vol='Constant')
>>> res = am.fit()
>>> fig = res.hedgehog_plot()
注意:
最基本的1步预测将返回与原始数据同样大小的向量,第t个值则为时刻t对t+1时刻的预测。当预测步数大于1时且使用默认预测方法时,在预测集位置 [t, h]为在时刻t,h+1 步的预测结果。
如果模型包含外生变量 (model.x非空),那么仅有1步预测可用。当预测步数大于1时,将会产生警示信息,所有列除第一列外,由nan填充。
如果采用 ‘origin’方法,预测集[t,h] 包含预测结果y[:t] (即接近但不包括)对应于t+1步.例如,y[100,2] 包括对前100个数据点的3步预测,对应于结果 y[100 + 2]. 如果方法为 ‘target’, 那么同样的预测结果位于 [102, 2], 因而与观察值一致,但位于同一列。
resids
(params, y=None, regressors=None)[source]
计算模型残差
Parameters: |
|
---|---|
Returns: | resids – 模型残差 |
Return type: | ndarray |
simulate
(params, nobs, burn=500, initial_value=None, x=None, initial_value_vol=None)[source]
基于线性回归, AR 或 HAR模型模拟数据
Parameters: |
|
---|---|
Returns: | simulated_data –包含模拟值,波动率,条件波动率及误差的 DataFrame数据列。 |
Return type: | DataFrame |
举例:
>>> import numpy as np
>>> from arch.univariate import HARX, GARCH
>>> harx = HARX(lags=[1, 5, 22])
>>> harx.volatility = GARCH()
>>> harx_params = np.array([1, 0.2, 0.3, 0.4])
>>> garch_params = np.array([0.01, 0.07, 0.92])
>>> params = np.concatenate((harx_params, garch_params))
>>> sim_data = harx.simulate(params, 1000)
模拟具有外生变量的模型时,需要 nobs + burn个数据点。
>>> nobs = 100
>>> burn = 200
>>> x = np.random.randn(nobs + burn, 2)
>>> x_params = np.array([1.0, 2.0])
>>> params = np.concatenate((harx_params, x_params, garch_params))
>>> sim_data = harx.simulate(params, nobs=nobs, burn=burn, x=x)
classarch.univariate.
LS
(y=None, x=None, constant=True, hold_back=None)[source]
最小平方法估计模型和模拟。
Parameters: |
|
---|
举例:
>>> import numpy as np
>>> from arch.univariate import LS
>>> y = np.random.randn(100)
>>> x = np.random.randn(100,2)
>>> ls = LS(y, x)
>>> res = ls.fit()
注意:
最小平方模型表述如下:
fit
(update_freq=1, disp='final', starting_values=None, cov_type='robust', show_warning=True, first_obs=None, last_obs=None, tol=None, options=None, backcast=None)
使用nobs*1大小的方差向量拟合模型。
Parameters: |
|
---|---|
Returns: | results – 包含模型结果的对象 |
Return type: | ARCHModelResult |
注意:
如果SciPy的优化器无法找到最优值,则抛出收敛警示信息。参数采用SLSQP最优化。
fix
(params, first_obs=None, last_obs=None)
利用固定参数构建 ARCHModelFixedResult。
Parameters: |
|
---|---|
Returns: | results –包含模型结果的对象。 |
Return type: | ARCHModelFixedResult |
注意:
参数并不针对具体模型的约束条件进行检查。
resids
(params, y=None, regressors=None)
计算模拟残差
Parameters: |
|
---|---|
Returns: | resids – 模型残差 |
Return type: | ndarray |
simulate
(params, nobs, burn=500, initial_value=None, x=None, initial_value_vol=None)
模拟数据来自线性回归,AR或HAR模型。
Parameters: |
|
---|---|
Returns: | simulated_data – 包含模拟值,波动率及条件波动率和误差的DataFrame数据列格式。 |
Return type: | DataFrame |
举例:
>>> import numpy as np
>>> from arch.univariate import HARX, GARCH
>>> harx = HARX(lags=[1, 5, 22])
>>> harx.volatility = GARCH()
>>> harx_params = np.array([1, 0.2, 0.3, 0.4])
>>> garch_params = np.array([0.01, 0.07, 0.92])
>>> params = np.concatenate((harx_params, garch_params))
>>> sim_data = harx.simulate(params, 1000)
模拟具有外生变量的模型时,拟合回归系数需要观察值加上burn数据点。
>>> nobs = 100
>>> burn = 200
>>> x = np.random.randn(nobs + burn, 2)
>>> x_params = np.array([1.0, 2.0])
>>> params = np.concatenate((harx_params, x_params, garch_params))
>>> sim_data = harx.simulate(params, nobs=nobs, burn=burn, x=x)
所有的均值模型必须继承自类:class:ARCHModel ,该类提供所有public方法。如果可行,则有两个可选的private方法。
class arch.univariate.base.
ARCHModel
(y=None, volatility=None, distribution=None, hold_back=None)[source]
ARCH过程关于均值模型的抽象基类,表明了条件均值过程。
所有的public方法如果被子类覆盖会抛出未执行错误NotImplementedError。私有方法抛出未执行错误NotImplementedError如果可行则可选。