1.6 均值模型

所有的 ARCH模型开始时需要确定一个均值模型。

1.6.1非均值

class arch.univariate.ZeroMean(y=Nonehold_back=Nonevolatility=Nonedistribution=None)[source]

0条件均值模型估计和模拟:

Parameters:
  • y ({ndarraySeries}) – 包含因变量的多维观察值向量
  • hold_back (int) – 估计参数时需要排除的观察值起始位置。这个在同一样本比较不同的滞后阶长度时使用。
  • volatility (VolatilityProcessoptional) – 模型使用的波动性过程。
  • distribution (Distributionoptional) – 模型误差分布。

举例:

>>> import numpy as np
>>> from arch.univariate import ZeroMean
>>> y = np.random.randn(100)
>>> zm = ZeroMean(y)
>>> res = zm.fit()

注意:

该零均值模型描述如下:

fit(update_freq=1disp='final'starting_values=Nonecov_type='robust'show_warning=Truefirst_obs=Nonelast_obs=Nonetol=Noneoptions=Nonebackcast=None)

该模型应该具有 观察值个数*1 的残差值(sigma)的向量。

Parameters:
  • update_freq (intoptional) – 迭代频率. 每次迭代都产生结果,设置为0即禁用迭代。
  • disp (str) – final打印最优结果,或者off不作显示。
  • starting_values (ndarrayoptional) – 使用的起始值数组。如果为空,起始值由模型参数确定。
  • cov_type (stroptional) – 协方差系数的估计方法。选项支持robust,这并不假定信息矩阵平衡性成立,而classic则假定成立。在 ARCH 文献中,‘robust’对应于Bollerslev-Wooldridge协方差估计值。
  • show_warning (booloptional) – 波尔型,则表示是否显示收敛警示。
  • first_obs ({intstrdatetimeTimestamp}) – 估计模型时使用的第一个观察值。last_obs ({intstrdatetimeTimestamp}) – 估计模型时使用的最后一个观察值。
  • tol (floatoptional) – 允许结束。
  • options (dictoptional) – 传递给 scipy.optimize.minimize的参数. 有效输入包括‘ftol’, ‘eps’, ‘disp’,  ‘maxiter’.
  • backcast (floatoptional) – 回测使用的值。如果模型假定非线性递归运算,则应该为初始方差。
Returns:

results – 包含模型结果的对象。

Return type:

ARCHModelResult

注意:

如果SciPy的优化器表明最优化困难时将会给出警示。参数使用SLSQP进行最优化。

fix(paramsfirst_obs=Nonelast_obs=None)

允许使用 ARCHModelFixedResult结果来构建固定参数模型。

Parameters:
  • params ({ndarraySeries}) – 使用给定参数来产生结果,包括均值模型,波动率模型以及分布的参数都应该正确提供。
  • first_obs ({intstrdatetimeTimestamp}) – 使用固定模型时的第一个观察值。
  • last_obs ({intstrdatetimeTimestamp}) – 使用固定模型时的最后一个值。
Returns:

results – 模型结果对象

Return type:

ARCHModelFixedResult

注意:

并不会针对具体模型的约束检查参数。

forecast(paramshorizon=1start=Nonealign='origin'method='analytic'simulations=1000rng=None)

利用估计模型进行预测。

Parameters:
  • params ({ndarraySeries}optional) – 使用的替代参数。如果为空,则使用估计所得参数,且应该与拟合模型所得参数的大小一致。
  • horizon (intoptional) – 预测步数。
  • start ({intdatetimeTimestampstr}optional) –整型,日期型或字符串型,表明预测使用的第一个观察值。日期型仅仅适用于pandas输入,且具有日期型索引。字符串必须可以转换为日期型,比如 ‘1945-01-01’.
  • align (stroptional) –‘origin’ 或 ‘target’. 设定为 ‘origin’时,第 t行的预测值包括 t+1, t+2, …, t+h预测结果.设定为‘target’, 第t行包括一步式预测结果,如1对应于t-1,2对应于t-2,h对应于t-h. 一旦h步预测确定,则‘target’ 简化了预测误差的计算。
  • method ({'analytic''simulation''bootstrap'}) – 预测使用的方法,默认为解析法(analytic).该方法选择仅影响预测结果的方差。并非所有波动率模型支持所有方法。应该指出,波动率模型不支持平方项线性关系的,在步数大于1时则不支持解析方法,比如EGARCH,TARCH。
  • simulations (int) – 使用simulation或bootstrap时计算的次数。
  • rng (callableoptional) – 模拟预测时使用的自主随机数生成器,须使用rng(size)语法来表明2维数组(模拟次数,步数)。
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(paramsy=Noneregressors=None)[source]

计算模型残差

Parameters:
  • params (ndarray) – 模型参数
  • y (ndarrayoptional) – 计算模型残差时的替代值。
  • regressors (ndarrayoptional) – 计算模型残差值时的替代回归系数值。
Returns:

resids – 模型残差

Return type:

ndarray

simulate(paramsnobsburn=500initial_value=Nonex=Noneinitial_value_vol=None)[source]

基于零均值模型的模拟

Parameters:
  • params ({ndarrayDataFrame}) – 模拟模型时使用的参数。参数顺序为 [volatility distribution].没有均值参数。
  • nobs (int) – 模拟的时间序列长度。
  • burn (intoptional) – 模型初始化使用值的个数,且在原始数据中排除.
  • initial_value (None) – 未用值。
  • x (None) – 未用值.
  • initial_value_vol ({ndarrayfloat}optional) – 初始化波动率过程的数组或标量。
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)

1.6.2 常数均值

classarch.univariate.ConstantMean(y=Nonehold_back=Nonevolatility=Nonedistribution=None)[source]

常数均值模型的估计和模拟.

Parameters:
  • y ({ndarraySeries}) – 包含因变量的观察值多维向量
  • hold_back (int) – 估计模型时需要排除的样本起始位置的观察值数,该参数在对同一样本使用不同的滞后阶数进行模型比较时使用。
  • volatility (VolatilityProcessoptional) – 模型波动率过程
  • distribution (Distributionoptional) – 模型误差分布

举例:

>>> import numpy as np
>>> from arch.univariate import ConstantMean
>>> y = np.random.randn(100)
>>> cm = ConstantMean(y)
>>> res = cm.fit()

注意:

该常数均值过程如下:

fit(update_freq=1disp='final'starting_values=Nonecov_type='robust'show_warning=Truefirst_obs=Nonelast_obs=Nonetol=Noneoptions=Nonebackcast=None)

使用nobs*1的方差向量矩阵拟合模型。

Parameters:
  • update_freq (intoptional) – 迭代更新频率,每个迭代频率都有对应结果。设置为0则禁用迭代。
  • disp (str) –  ‘final’表示最优结果,而 ‘off’表示无显示。
  • starting_values (ndarrayoptional) – 使用的起始观察值数组。如果为空,起始值由模型参数指定。
  • cov_type (stroptional) – 参数协方差的估计方法。 ‘robust’并不假定信息矩阵具有平衡性而'classic'则反之。在ARCH 文献中,‘robust’对应于Bollerslev-Wooldridge协方差估计参数。
  • show_warning (booloptional) – 标明是否显示收敛警示。
  • first_obs ({intstrdatetimeTimestamp}) –估计模型的第一个观察值。
  • last_obs ({intstrdatetimeTimestamp}) – 估计模型使用的最后一个观察值。
  • tol (floatoptional) – 允许终止。
  • options (dictoptional) – 传递给 scipy.optimize.minimize的参数. 支持参数为‘ftol’, ‘eps’, ‘disp’ 和 ‘maxiter’.
  • backcast (floatoptional) – 回测使用的值。 Should be measure σ20 since model-specific non-linear transformations are applied to value before computing the variance recusions.
Returns:

results – 包含模型结果的对象。

Return type:

ARCHModelResult

注意:

如果SciPy优化器在查找最优值困难时,则会抛出收敛警示。

参数使用SLSQP进行最优化.

forecast(paramshorizon=1start=Nonealign='origin'method='analytic'simulations=1000rng=None)

基于估计模型进行预测。

Parameters:
  • params ({ndarraySeries}optional) – 使用的替代参数。如果为空,则使用拟合参数。该参数数组大小应该与拟合模型所得参数一致。
  • horizon (intoptional) – 预测步数
  • start ({intdatetimeTimestampstr}optional) – 整型,日期型或字符串型用来预测的第一个观察值。日期型数据仅限于具有日期索引的pandas数据。字符串应可转化为日期型,比如 ‘1945-01-01’.
  • align (stroptional) – ‘origin’或 ‘target’. ‘origin’表示第t行的预测结果包含t+1, t+2, …, t+h.  ‘target’,则第1行对应于t-1的一步预测,第2步对应于t-2, …,第h步对应于t-h. 由于选择h步预测,则‘target’方法简化了预测误差的计算。
  • method ({'analytic''simulation''bootstrap'}) – 预测方法,默认为解析法(analytic). 方法选择仅影响预测结果的方差。并非所有波动率支持所有方法.应该指出,与平方项呈非线性的波动率模型在预测步数大于1时,并不支持解析方法(analytic),比如EGARCH或TARCH.
  • simulations (int) – 使用模拟或自举方法进行预测的模拟次数。
  • rng (callableoptional) – 基于模拟预测的随机数生成器,应使用rng(size)语法(simulations,horizon的二维数组)来生成随机样本。
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(paramsy=Noneregressors=None)[source]

计算模型残差。

Parameters:
  • params (ndarray) – 模型参数
  • y (ndarrayoptional) – 计算模型残差时使用的替代值。
  • regressors (ndarrayoptional) – 计算模型残差时使用的替代回归系数值。
Returns:

resids –模型残差

Return type:

ndarray

simulate(paramsnobsburn=500initial_value=Nonex=Noneinitial_value_vol=None)[source]

基于常数均值模型的模拟数据。

Parameters:
  • params (ndarray) – 模拟模型时使用的参数. 参数顺序为 [mean volatility distribution]. 在均值模型中有一个参数 mu.
  • nobs (int) – 模拟序列的长度
  • burn (intoptional) – 初始化模型进行模拟时使用的数值个数,且在原始数据中排除。
  • initial_value (None) – 该值未使用。
  • x (None) – 该值未使用。
  • initial_value_vol ({ndarrayfloat}optional) – 初始化波动率过程时使用的数组或标量。
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)

1.6.3 自回归

classarch.univariate.ARX(y=Nonex=Nonelags=Noneconstant=Truehold_back=Nonevolatility=Nonedistribution=None)[source]

带有可选外生变量的自回归模型估计和模拟。

Parameters:
  • y ({ndarraySeries}) – 包括因变量的观察值个数的向量。
  • x ({ndarrayDataFrame}optional) – nobs * k的包含外生因子的多维数组。
  • lags (scalar1-d arrayoptional) – 异方差自回归滞后阶数。标量包括1和最大值之间的滞后阶。一个1维数组包括 AR 滞后阶 lags[0], lags[1], …。
  • constant (booloptional) – 模型中是否包括常数。
  • hold_back (int) – 估计模型参数时排除的样本中观察值数量。当使用不同的滞后阶数对同一样本进行估计比较时使用。

举例:

>>> 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=1disp='final'starting_values=Nonecov_type='robust'show_warning=Truefirst_obs=Nonelast_obs=Nonetol=Noneoptions=Nonebackcast=None)

使用 nobs * 1的方差向量(sigma2)拟合模型。

Parameters:
  • update_freq (intoptional) – 迭代频率,并对应于迭代结果。该参数设置为 0 时则禁用迭代。
  • disp (str) –  ‘final’打印最优化结果,而 ‘off’则表示不显示结果。
  • starting_values (ndarrayoptional) – 使用的起始值数组。如果为空,则起始值由模型参数构建。
  • cov_type (stroptional) – 参数协方差的估计方法。‘robust’并不假定信息矩阵的平衡性而‘classic’则反之。在ARCH 文献中,‘robust’对应于Bollerslev-Wooldridge协方差估计参数。
  • show_warning (booloptional) – 是否显示收敛警示信息。
  • first_obs ({intstrdatetimeTimestamp}) – 估计模型使用的第一个观察值。
  • last_obs ({intstrdatetimeTimestamp}) – 估计模型使用的最后一个观察值。
  • tol (floatoptional) – 允许终止。
  • options (dictoptional) – 传递给 scipy.optimize.minimize参数. 可用参数为 ‘ftol’, ‘eps’, ‘disp’和 ‘maxiter’.
  • backcast (floatoptional) – 回测时使用的值。如果模型为非线性转换,在方差递归计算时应为方差。
Returns:

results – 模型结果对象。

Return type:

ARCHModelResult

注意:

如果SciPy的优化器表明最优化困难时将会给出警示。参数使用SLSQP进行最优化。

fix(paramsfirst_obs=Nonelast_obs=None)

允许使用固定参数ARCHModelFixedResult.

Parameters:
  • params ({ndarraySeries}) – 使用给定的参数生成结果,在给定均值模型,波动率模型和分布的情况下,应该提供正确的参数值。
  • first_obs ({intstrdatetimeTimestamp}) – 固定模型使用的第一个观察值。
  • last_obs ({intstrdatetimeTimestamp}) –固定模型使用的最后一个观察值。
Returns:

results – 模型结果对象。

Return type:

ARCHModelFixedResult

注意:

参数并不针对具体模型约束进行检查。

forecast(paramshorizon=1start=Nonealign='origin'method='analytic'simulations=1000rng=None)

构建基于估计模型的预测。

Parameters:
  • params ({ndarraySeries}optional) – 使用的替代参数。如果为空,则使用拟合模型的参数。该参数应与拟合参数一致。
  • horizon (intoptional) – 预测步数。
  • start ({intdatetimeTimestampstr}optional) – 整型,日期型或字符串型数据,表示用来预测的第一个观察值。日期型数据仅限于pandas数据且具有日期索引,字符串应该可以转换为‘1945-01-01’.
  • align (stroptional) – ‘origin’ 或 ‘target’. 若为 ‘origin’, 则第t行预测结果包含的预测值为 t+1, t+2, …, t+h. 若设定为 ‘target’, 第t行表示1步式预测结果对应于t-1,第2步对应于t-2,第h步对应于t-h. ‘target’方法在使用h步预测时,简化了预测误差的计算。method ({'analytic''simulation''bootstrap'}) – 预测方法,默认为解析法(analytic). 该方法仅影响预测结果的方差。并非全部波动率模型支持所有方法。应该指出,非线性波动率模型在预测步数大于1时不支持解析方法,如 EGARCH 或 TARCH。
  • simulations (int) – 使用模拟或自举方法进行预测时的模拟次数。
  • rng (callableoptional) – 模拟预测时使用的自主随机数生成器,应该使用2维数组(simulations,horizon)来生成随机样本。
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(paramsy=Noneregressors=None)

计算模型残差

Parameters:
  • params (ndarray) – 模型系数
  • y (ndarrayoptional) – 计算模型时使用的替代值。
  • regressors (ndarrayoptional) – 计算模型残差时使用的替代回归系数。
Returns:

resids – 模型残差

Return type:

ndarray

simulate(paramsnobsburn=500initial_value=Nonex=Noneinitial_value_vol=None)

模拟线性回归, AR 或 HAR模型。

Parameters:
  • params (ndarray) – 模拟模型使用的参数。参数顺序为 [mean volatility distribution],均值参数为 [constant lag[0] lag[1] … lag[p] ex[0] … ex[k-1]]。其中lag[j] 表示第j个滞后阶的系数,ex[j] 则为第j个外生变量系数。
  • nobs (int) – 模拟序列的长度。
  • burn (intoptional) – 用来模拟初始化模型的初始值个数,会在计算式排除。
  • initial_value ({ndarrayfloat}optional) – 当初始化模型时或为标量或最大滞后阶。如果忽略,则使用0.0.
  • x ({ndarrayDataFrame}optional) – nobs + burn个数值,模拟中包括 k个外生变量。
  • initial_value_vol ({ndarrayfloat}optional) – 初始化波动率过程的数组或标量。
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)

1.6.4 异方差自回归

classarch.univariate.HARX(y=Nonex=Nonelags=Noneconstant=Trueuse_rotated=Falsehold_back=Nonevolatility=Nonedistribution=None)[source]

异方差自回归(HAR), 且带有可选外生系数,估计模型以及模拟。

Parameters:
  • y ({ndarraySeries}) – 包括nobs维的因变量向量。
  • x ({ndarrayDataFrame}optional) – nobs* k大小的包括外生银子的数组。
  • lags ({scalarndarray}optional) – HAR的滞后阶数。标量包括1到最大值之间的阶数。其中1维数组包括HAR lags 1:lags[0], 1:lags[1], … ,2维数组包括HAR所有滞后列的 滞后阶数lags[0,j]:lags[1,j]。
  • constant (booloptional) – 模型是否包含常数。
  • use_rotated (booloptional) –是否使用HAR的替代变换形式,且滞后无重复。
  • hold_back (int) – 估计参数时需要排除的样本头的观察值个数。该法在对同一样本进行不同滞后阶数估计进行比较时使用。
  • volatility (VolatilityProcessoptional) – 模型中使用的波动率过程V
  • distribution (Distributionoptional) – 模型的误差分布。

举例:

>>> 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=1disp='final'starting_values=Nonecov_type='robust'show_warning=Truefirst_obs=Nonelast_obs=Nonetol=Noneoptions=Nonebackcast=None)

使用nobs*1大小的方差向量(sigma2)来拟合模型。

Parameters:
  • update_freq (intoptional) –迭代更新频率,并对应于每个结果。0表示禁用迭代。
  • disp (str) –  ‘final’打印最优化结果而‘off’则不显示信息。
  • starting_values (ndarrayoptional) – 使用的起始数组。如果为空,则使用模型参数构建初始值。
  • cov_type (stroptional) – 参数协方差的估计方法。‘robust’不假定信息矩阵的均衡化而 ‘classic’则反之。在 ARCH文献中,‘robust’对应于 Bollerslev-Wooldridge协方差估计参数。
  • show_warning (booloptional) – 是否显示收敛警示信息。
  • first_obs ({intstrdatetimeTimestamp}) –估计模型使用的第一个观察值。
  • last_obs ({intstrdatetimeTimestamp}) –估计模型使用的最后一个观察值。
  • tol (floatoptional) –允许终止程序。
  • options (dictoptional) – 传递给 scipy.optimize.minimize的参数.有效参数包括: ‘ftol’, ‘eps’, ‘disp’和 ‘maxiter’.
  • backcast (floatoptional) – 回测使用的值。如果在方差递归计算前为非线性变换则为方差。
Returns:

results – 模型结果对象

Return type:

ARCHModelResult

注意:

如果SciPy优化器无法获得最优值,则抛出收敛警示信息。参数使用SLSQP进行优化。

fix(paramsfirst_obs=Nonelast_obs=None)

使用固定参数构建 ARCHModelFixedResult.

Parameters:
  • params ({ndarraySeries}) – 使用所给具体参数生成结果。应该给出关于均值模型,波动率模型和分布的正确的具体参数。
  • first_obs ({intstrdatetimeTimestamp}) – 固定模型使用的第一个观察值。
  • last_obs ({intstrdatetimeTimestamp}) – 固定模型使用的最后一个观察值。
Returns:

results – 包含模型结果的对象。

Return type:

ARCHModelFixedResult

注意:

参数并不对具体模型的约束条件进行检查。

forecast(paramshorizon=1start=Nonealign='origin'method='analytic'simulations=1000rng=None)[source]

利用估计模型进行预测。

Parameters:
  • params ({ndarraySeries}optional) – 使用的替代参数。如果为空,则表示使用拟合模型所得参数。其大小必须与拟合模型参数一致。
  • horizon (intoptional) – 预测步数
  • start ({intdatetimeTimestampstr}optional) – 整型,日期型或字符串型数值,表示用来预测的第一个观察值数据。日期型仅仅适于带有日期索引的pandas数据,字符串必须可转换为日期型,如: ‘1945-01-01’.
  • align (stroptional) – ‘origin’或 ‘target’.  ‘origin’表示第t行的预测内容包括t=1,t+2,...t+h的预测结果。, 当设定为 ‘target’时,第t行数据表示1步对应于t-1,2步对应于t-2,...,h步对应于t-h. ‘target’在h步结果的出后可以简化预测误差的计算。
  • method ({'analytic''simulation''bootstrap'}) –预测方法,默认为解析法。该方法仅影响预测方差。并非所有波动率模型支持所有方法。应该指出,非线性模型在预测步数大于1时不支持解析方法,比如EGARCH 或 TARCH。
  • simulations (int) – 使用simulation 或bootstrap进行预测计算时的模拟次数。
  • rng (callableoptional) –用于模拟预测的自主随机数生成器 ,应该使用rng(size)(2维数组,包括simulation,horizon)语法来生成随机样本。
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(paramsy=Noneregressors=None)[source]

计算模型残差

Parameters:
  • params (ndarray) –模型参数
  • y (ndarrayoptional) – 计算模型残差的替代值。
  • regressors (ndarrayoptional) – 计算模型残差时替代回归系数值。
Returns:

resids – 模型残差

Return type:

ndarray

simulate(paramsnobsburn=500initial_value=Nonex=Noneinitial_value_vol=None)[source]

基于线性回归, AR 或 HAR模型模拟数据

Parameters:
  • params (ndarray) – 模拟模型的参数,参数顺序为[mean volatility distribution] ,其中均值模型的参数顺序为[constant lag[0] lag[1] … lag[p] ex[0] … ex[k-1]] 。其中, lag[j] 表示模型第j阶滞后, ex[j]表示第j个外生变量。
  • nobs (int) –模拟序列的长度
  • burn (intoptional) – 用于初始化模型的值得个数,且会在原始数据中排除。
  • initial_value ({ndarrayfloat}optional) – 初始化模型的标量值或最大滞后阶数数组。若省略,则使用0.0.
  • x ({ndarrayDataFrame}optional) – 模拟中nobs + burn 大小且包含 k个外生变量的数组。
  • initial_value_vol ({ndarrayfloat}optional) – 初始化波动率过程使用的数组或标量。
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)

1.6.5 最小平方法

classarch.univariate.LS(y=Nonex=Noneconstant=Truehold_back=None)[source]

最小平方法估计模型和模拟。

Parameters:
  • y ({ndarrayDataFrame}optional) – 包含因变量的nobs维向量
  • y – nobs *k维包含外生变量的数组
  • constant (booloptional) – 是否包含常数
  • hold_back (int) – 估计模型参数时需要排除的样本头的观察值数量。在对同一样本进行不同滞后阶数的比较分析时使用。

举例:

>>> 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=1disp='final'starting_values=Nonecov_type='robust'show_warning=Truefirst_obs=Nonelast_obs=Nonetol=Noneoptions=Nonebackcast=None)

使用nobs*1大小的方差向量拟合模型。

Parameters:
  • update_freq (intoptional) – 迭代频率,且对应于每个结果。0表示禁用迭代。
  • disp (str) –  ‘final’打印最优结果,而 ‘off’则表示不显示。
  • starting_values (ndarrayoptional) – 使用的起始值数组,如果为空,则使用模型参数构建起始值。
  • cov_type (stroptional) – 参数协方差的估计方法,robust不假定信息矩阵平衡性而classic则反之。在ARCH文献中,robust对应于 Bollerslev-Wooldridge协方差估计方法。
  • show_warning (booloptional) – 是否显示收敛警示信息。
  • first_obs ({intstrdatetimeTimestamp}) – 估计模型使用的第一个观察值。
  • last_obs ({intstrdatetimeTimestamp}) – 估计模型使用的最后一个观察值。
  • tol (floatoptional) – 允许终止。
  • options (dictoptional) – 传递给 scipy.optimize.minimize的参数,包括 ‘ftol’, ‘eps’, ‘disp’,和 ‘maxiter’.
  • backcast (floatoptional) – 回测使用的值,在进行方差递归运算前若为非线性变换,则应为方差。
Returns:

results – 包含模型结果的对象

Return type:

ARCHModelResult

注意:

如果SciPy的优化器无法找到最优值,则抛出收敛警示信息。参数采用SLSQP最优化。

fix(paramsfirst_obs=Nonelast_obs=None)

利用固定参数构建 ARCHModelFixedResult。

Parameters:
  • params ({ndarraySeries}) – 使用给定参数来产生结果,应该给出均值模型,波动率模型和分布的正确数量的参数。
  • first_obs ({intstrdatetimeTimestamp}) – 固定模型使用的第一个观察值
  • last_obs ({intstrdatetimeTimestamp}) – 固定模型使用的最后观察值
Returns:

results –包含模型结果的对象。

Return type:

ARCHModelFixedResult

注意:

参数并不针对具体模型的约束条件进行检查。

resids(paramsy=Noneregressors=None)

计算模拟残差

Parameters:
  • params (ndarray) – 模型参数。
  • y (ndarrayoptional) – 计算模型残差使用的替代值。
  • regressors (ndarrayoptional) – 计算模型残差时使用的替代回归系数值。
Returns:

resids – 模型残差

Return type:

ndarray

simulate(paramsnobsburn=500initial_value=Nonex=Noneinitial_value_vol=None)

模拟数据来自线性回归,AR或HAR模型。

Parameters:
  • params (ndarray) – 模拟模型时使用的参数. 参数顺序为 [mean volatility distribution],其中均值参数顺序为[constant lag[0] lag[1] … lag[p] ex[0] … ex[k-1]]。其中, lag[j] 表示模型中的第j阶滞后, ex[j]表示第j个外生变量。
  • nobs (int) – 模拟序列长度
  • burn (intoptional) – 原始数据中被排除且用于模拟时初始化模型的数据。
  • initial_value ({ndarrayfloat}optional) – 初始化模型的标量值或最大滞后阶数max(lags)数组。如果省略,则使用0.0.
  • x ({ndarrayDataFrame}optional) – nobs + burn,模拟中表示k个外生变量.
  • initial_value_vol ({ndarrayfloat}optional) –初始化波动率过程的数组或标量。
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)

1.6.6 编写新的均值模型

所有的均值模型必须继承自类:class:ARCHModel ,该类提供所有public方法。如果可行,则有两个可选的private方法。

class arch.univariate.base.ARCHModel(y=Nonevolatility=Nonedistribution=Nonehold_back=None)[source]

ARCH过程关于均值模型的抽象基类,表明了条件均值过程。

所有的public方法如果被子类覆盖会抛出未执行错误NotImplementedError。私有方法抛出未执行错误NotImplementedError如果可行则可选。

关于Python的ARCH包(七)相关推荐

  1. 关于Python的ARCH包(一)

    ARCH包 ARCH包目前包括内容如下: 1.单变量波动率模型 2.拔靴或自举 3.多对比分析过程 4.单位根检验 5.更新日志 将来计划继续添加金融数据分析相关内容. 关于该功能包的引用如下: 该包 ...

  2. python - 啃书 第七章 模块、包和库 (一)

    概述 在Python中,一个模块(Module)是一个以.py结尾的Python文件,包含了Python对象和语句. 在python中,一切皆对象.数字.字符串.元组.列表.字典.函数.方法.类.模块 ...

  3. python镜像下载包_python包详解

    干货大礼包!21天带你轻松学Python(文末领取更多福利) 点击查看课程视频地址 本课程来自于千锋教育在阿里云开发者社区学习中心上线课程<Python入门2020最新大课>,主讲人姜伟. ...

  4. python自动华 (七)

    Python自动化 [第七篇]:Python基础-面向对象高级语法.异常处理.Scoket开发基础 本节内容: 1.     面向对象高级语法部分 1.1   静态方法.类方法.属性方法 1.2   ...

  5. python下载包管理器_Python包管理整理:setuptool管理python相关的包

    setuptool管理python相关的包 一.介绍 setuptool管理python相关的包的工具.这些包是zip格式发布,但是后缀一般都是.egg setuptool能解决python包的依赖关 ...

  6. Python模块和包:导入制作模块、name、模块定位顺序(文件名与模块名重复、功能名与功能名重复、函数名与功能名重复、变量名与模块名重复)、from 模块名 import *__all__列表、包

    一.模块 Python 模块(Module),是⼀个 Python ⽂件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块能定义函数,类和变量,模块⾥也能包含可执⾏的代码. ...

  7. Python包管理整理:setuptool管理python相关的包

    setuptool管理python相关的包 一.介绍 setuptool管理python相关的包的工具.这些包是zip格式发布,但是后缀一般都是.egg setuptool能解决python包的依赖关 ...

  8. python安装卸载及查看python版本/第三方包版本

    文章目录 1. 在线安装anaconda anaconda下载安装 在线安装第三方库 python 常用第三方包镜像安装 2. 离线安装anaconda 离线安装包下载网址 whl 离线安装 tar ...

  9. Python语言程序设计第七章 - 组合数据类型 - 6.1

    目录 Python语言程序设计第七章 - 组合数据类型 集合运算 集合的关系 集合综合练习 元组元素抓7 元组解包 升序降序 截取部分元素 判断元素书否在列表中存在 头尾对调 翻转列表 指定元素对调 ...

最新文章

  1. matlab中decnbr,LMI 求解时调用decnbr()函数得到的决策变量的个数为小数是为什么
  2. c#图片base64去转义字符_C# 将图片转成Base64字符串,再将字符串转成图片,然后将图片存储到服务器文件夹中,求代码。感激不尽...
  3. 使用Microsoft Unity进行日志记录
  4. Longest Palindromic Substring
  5. Hadoop入门(十六)Mapreduce的单表关联程序
  6. linux 查看 CPU 使用率
  7. html页面转换pdf.txt
  8. C语言之生成汇编代码(十)
  9. 线条边框简笔画图片大全_表情包丨表情包简笔画图片大全可爱
  10. WinAPI: wvsprintf 与 wsprintf - Windows 的格式化输出函数
  11. 注册键值的根路径无效_mybatis mapper 接口注册流程源码解析
  12. java简单代码_几个简单的入门JAVA代码
  13. Windows10桌面美化——打造简洁高效美观桌面
  14. matpower学习笔记
  15. 如何在MacBook中录制iphone模式的视频?macbook屏幕模糊如何解决?
  16. 美国人物传记电影:巴顿将军
  17. python制作模型排放清单_机动车尾气污染物排放模型研究综述.pdf
  18. 无线鼠标迟钝但并不是电量问题
  19. SAP WM 上架策略R的几个幺蛾子
  20. 夫妻租房,同时办取上海市居住证 攻略

热门文章

  1. C++手机通讯录管理系统
  2. VTK 学习----VTK基础-VTK功能模块
  3. Java高频面试题(面向对象)
  4. 三星公司uboot模式下更改分区(EMMC)大小fdisk命令
  5. pyecharts做梯形图
  6. 计算机科学与技术分类号查询,计算机科学与技术专业论文
  7. php风车,用源码包来实现LAMP 的详细过程
  8. FPGA乒乓球(碰碰球)游戏设计
  9. Python入门 - 笔记 - 第三章 Python中的变量和数据类型
  10. python synonyms 近义词