UArch¶
UArch
is short for Univariate ARCH models and MUArch
stands for multiple (or many) Univariate ARCH models. In essence MUArch
, is a list of many UArch
models. This helps when you need to simulate many univariate ARCH models together. Also, it is helpful when you need to specify the marginals as in a Copula-GARCH model.
-
class
muarch.uarch.
UArch
(mean='Constant', lags=0, vol='GARCH', p=1, o=0, q=1, power=2.0, dist='Normal', hold_back=None, scale=1)[source]¶ Univariate ARCH model that wraps on top of Mean, Volatility and Distribution classes defined in the arch package. Mainly, this class combines the original model and fitted model in the arch package for convenience. It has also some additional methods such as
simulate_mc
for Monte Carlo simulations.-
__init__
(mean='Constant', lags=0, vol='GARCH', p=1, o=0, q=1, power=2.0, dist='Normal', hold_back=None, scale=1)[source]¶ Creates the wrapping arch model
- Parameters
mean ({ 'zero', 'constant', 'harx', 'har', 'ar', 'arx', 'ls' }, optional) –
Name of the mean model. Currently supported options are:
Constant (default) - Constant mean model
Zero - Zero mean model
AR - Autoregression model
ARX - Autoregression model with exogenous regressors. Falls back to AR if no exogenous regressors
HAR - Heterogeneous Autoregression model
HARX - Heterogeneous Autoregressions with exogenous regressors
LS - Least squares model
For more information on the different models, check out the documentation at https://arch.readthedocs.io/en/latest/univariate/mean.html
lags (int or list (int), optional) – Either a scalar integer value indicating lag length or a list of integers specifying lag locations.
vol ({ 'GARCH', 'ARCH', 'CONSTANT' 'EGARCH', 'FIGARCH' and 'HARCH', 'CONSTANT' }, optional) –
Name of the volatility model. Currently supported options are:
GARCH (default) - Standard GARCH process which can be used to specify the following models:
ARCH(p)
GARCH(p,q)
GJR-GARCH(p,o,q)
AVARCH(p)
AVGARCH(p,q)
TARCH(p,o,q)
Models with arbitrary, pre-specified powers
ARCH - ARCH process
EGARCH - EGARCH process
FIGARCH - Fractionally Integrated (FI) GARCH process
HARCH - Heterogeneous ARCH process
Constant (default) - Constant volatility process
p (int, optional) – Lag order of the symmetric innovation
o (int, optional) – Lag order of the asymmetric innovation
q (int, optional) – Lag order of lagged volatility or equivalent
power (float, optional) – Power to use with the innovations. Default is 2.0, which produces ARCH and related models. Using 1.0 produces AVARCH and related models. Other powers can be specified, although these should be strictly positive, and usually larger than 0.25.
dist ({ 'normal', 'gaussian', 'studentst', 't', 'skewstudent', 'skewt', 'ged', 'generalized error' }, optional) –
Name of the distribution for the innovations. Currently supported options are:
normal, gaussian (default) - Standard Normal distribution
t, studentst - Standardized Student’s distribution
skewstudent, skewt - Standardized Skewed Student’s distribution.
ged, **generalized error” - Generalized Error Distribution
hold_back (int, optional) – Number of observations at the start of the sample to exclude when estimating model parameters. Used when comparing models with different lag lengths to estimate on the common sample.
scale (float) – Factor to scale data up or down by. This is useful when your data is too small leading to numerical errors when fitting. It will be used to scale simulation data
-
fit
(y, x=None, update_freq=1, disp='off', starting_values=None, cov_type='robust', show_warning=True, first_obs=None, last_obs=None, tol=None, options=None, backcast=None)[source]¶ Fits the model given a nobs by 1 vector of sigma2 values
- Parameters
y ({ndarray, Series}) – The dependent variable
x ({ndarray, DataFrame}, optional) – Exogenous regressors. Ignored if model does not permit exogenous regressors.
update_freq (int, optional) – Frequency of iteration updates. Output is generated every update_freq iterations. Set to 0 to disable iterative output
disp ('final' or 'off' (default)) – Either ‘final’ to print optimization result or ‘off’ to display nothing
starting_values (ndarray, optional) – Array of starting values to use. If not provided, starting values are constructed by the model components
cov_type (str, optional) – Estimation method of parameter covariance. Supported options are ‘robust’, which does not assume the Information Matrix Equality holds and ‘classic’ which does. In the ARCH literature, ‘robust’ corresponds to Bollerslev-Wooldridge covariance estimator.
show_warning (bool, optional) – Flag indicating whether convergence warnings should be shown.
first_obs ({int, str, datetime, Timestamp}) – First observation to use when estimating model
last_obs ({int, str, datetime, Timestamp}) – Last observation to use when estimating model
tol (float, optional) – Tolerance for termination
options (dict, optional) – Options to pass to scipy.optimize.minimize. Valid entries include ‘ftol’, ‘eps’, ‘disp’, and ‘maxiter’
backcast (float, optional) – Value to use as backcast. Should be measure \(\sigma^2_0\) since model-specific non-linear transformations are applied to value before computing the variance recursions.
- Returns
Fitted UArch instance
- Return type
-
forecast
(params=None, horizon=1, start=None, align='origin', method='analytic', simulations=1000, rng=None)[source]¶ Construct forecasts from estimated model
- Parameters
params (ndarray, optional) – Alternative parameters to use. If not provided, the parameters estimated when fitting the model are used. Must be identical in shape to the parameters computed by fitting the model.
horizon (int, optional) – Number of steps to forecast
start ({int, datetime, Timestamp, str}, optional) – An integer, datetime or str indicating the first observation to produce the forecast for. Datetimes can only be used with pandas inputs that have a datetime index. Strings must be convertible to a date time, such as in ‘1945-01-01’.
align ({'origin', 'target'}, optional) –
When set to ‘origin’, the t-th row of forecasts contains the forecasts for t+1, t+2, …, t+h.
When set to ‘target’, the t-th row contains the 1-step ahead forecast from time t-1, the 2 step from time t-2, …, and the h-step from time t-h. ‘target’ simplifies computing forecast errors since the realization and h-step forecast are aligned.
method ({'analytic', 'simulation', 'bootstrap'}, optional) – Method to use when producing the forecast. The default is ‘analytic’. The method only affects the variance forecast generation. Not all volatility models support all methods. In particular, volatility models that do not evolve in squares such as EGARCH or TARCH do not support the ‘analytic’ method for horizons > 1.
simulations (int, optional) – Number of simulations to run when computing the forecast using either simulation or bootstrap.
rng ({callable, ndarray}, optional) –
If using a custom random number generator to for simulation-based forecasts, function must produce random samples using the syntax rng(size) where size is a 2-element tuple (simulations, horizon).
Else, if a numpy array is passed in, array must have shape (simulation x horizon).
- Returns
forecasts – t by h data frame containing the forecasts. The alignment of the forecasts is controlled by align.
- Return type
ARCHModelForecast
Notes
The most basic 1-step ahead forecast will return a vector with the same length as the original data, where the t-th value will be the time-t forecast for time t + 1. When the horizon is > 1, and when using the default value for align, the forecast value in position [t, h] is the time-t, h+1 step ahead forecast.
If model contains exogenous variables (model.x is not None), then only 1-step ahead forecasts are available. Using horizon > 1 will produce a warning and all columns, except the first, will be nan-filled.
If align is ‘origin’, forecast[t,h] contains the forecast made using y[:t] (that is, up to but not including t) for horizon h + 1. For example, y[100,2] contains the 3-step ahead forecast using the first 100 data points, which will correspond to the realization y[100 + 2]. If align is ‘target’, then the same forecast is in location [102, 2], so that it is aligned with the observation to use when evaluating, but still in the same column.
-
hedgehog_plot
(params=None, horizon=10, step=10, start=None, type_='volatility', method='analytic', simulations=1000)[source]¶ Plot forecasts from estimated model
- Parameters
params ({Series, ndarray}, optional) – Alternative parameters to use. If not provided, the parameters computed by fitting the model are used. Must be 1-d and identical in shape to the parameters computed by fitting the model
horizon (int, optional) – Number of steps to forecast
step (int, optional) – Non-negative number of forecasts to skip between spines
start (int, datetime or str, optional) – An integer, datetime or str indicating the first observation to produce the forecast for. Datetimes can only be used with pandas inputs that have a datetime index. Strings must be convertible to a date time, such as in ‘1945-01-01’. If not provided, the start is set to the earliest forecastable date
type_ ({'volatility', 'mean'}) – Quantity to plot, the forecast volatility or the forecast mean
method ({'analytic', 'simulation', 'bootstrap'}) – Method to use when producing the forecast. The default is analytic. The method only affects the variance forecast generation. Not all volatility models support all methods. In particular, volatility models that do not evolve in squares such as EGARCH or TARCH do not support the ‘analytic’ method for horizons > 1
simulations (int) – Number of simulations to run when computing the forecast using either simulation or bootstrap
- Returns
Handle to the figure
- Return type
figure
-
property
params
¶ Model Parameters
-
residual_plot
(annualize=None, scale=None)[source]¶ Plot standardized residuals and conditional volatility
- Parameters
annualize (str, optional) – String containing frequency of data that indicates plot should contain annualized volatility. Supported values are ‘D’ (daily), ‘W’ (weekly) and ‘M’ (monthly), which scale variance by 252, 52, and 12 respectively
scale (float, optional) – Value to use when scaling returns to annualize. If scale is provides, annualize is ignored and the value in scale is used.
- Returns
Handle to the figure
- Return type
figure
-
residuals
(standardize=True) → numpy.ndarray[source]¶ Model residuals
- Parameters
standardize (bool, optional) – Whether to standardize residuals. Residuals are standardized by dividing it with the conditional volatility
- Returns
Residuals
- Return type
ndarray
-
simulate
(nobs: int, burn=500, initial_value: Union[numpy.ndarray, float] = None, x: Union[numpy.ndarray, pandas.core.frame.DataFrame, None] = None, initial_value_vol: Union[numpy.ndarray, float] = None, data_only=False, params: Optional[numpy.ndarray] = None, custom_dist: Union[Callable[[Union[int, Iterable[int]]], numpy.ndarray], numpy.ndarray, None] = None) → Union[pandas.core.frame.DataFrame, numpy.ndarray][source]¶ Simulates data from a ARMA-GARCH model
- Parameters
nobs (int) – Length of series to simulate
burn (int, optional) – Number of values to simulate to initialize the model and remove dependence on initial values
initial_value ({ndarray, float}, optional) – Either a scalar value or max(lags) array set of initial values to use when initializing the model. If omitted, 0.0 is used
x ({ndarray, DataFrame}, optional) – nobs + burn by k array of exogenous variables to include in the simulation. This should be a 2D matrix
initial_value_vol ({ndarray, float}, optional) – An array or scalar to use when initializing the volatility process.
data_only (bool, default True) – If True, this returns only the simulated data, omits the volatility and error. In this case, it will return as a numpy array. Otherwise, it returns a data frame with the data, volatility and error
params (ndarray, optional) – If not None, model will use the parameters supplied to generate simulations. Otherwise, it will use the fitted parameters.
custom_dist ({ndarray, Callable}, optional) –
Optional density from which to simulate the innovations (Distribution) in the GARCH models. This is useful when working with the copula-GARCH model where each univariate model innovations has dependence on others. It is assumed that the values supplied are standardized [0, 1] innovations instead of the unstandardized residuals.
The shape of the array must be at least as long as the simulation size required after accounting for burn and type of innovation process. If unsure, use
simulation_size_required
to check.If a random number generator function is passed in, ensure that it only takes only argument and returns a numpy array. The argument can be an integer or a tuple of integers. In this case, the size will be automatically derived to save the user the trouble.
- Returns
DataFrame with columns data containing the simulated values, volatility, containing the conditional volatility and errors containing the errors used in the simulation. If data_only, it returns the ‘data’ column as a numpy array
- Return type
DataFrame or ndarray
-
simulate_mc
(nobs: int, reps: int, burn=500, initial_value: Union[numpy.ndarray, float] = None, x: Union[numpy.ndarray, pandas.core.frame.DataFrame, None] = None, initial_value_vol: Union[numpy.ndarray, float] = None, params: Optional[numpy.ndarray] = None, custom_dist: Union[Callable[[Union[int, Iterable[int]]], numpy.ndarray], numpy.ndarray, None] = None) → Union[pandas.core.frame.DataFrame, numpy.ndarray][source]¶ Simulates data from a ARMA-GARCH model with multiple repetitions.
This is used for Monte Carlo simulations.
- Parameters
nobs (int) – Length of series to simulate
reps (int) – Number of repetitions in Monte Carlo simulation
burn (int, optional) – Number of values to simulate to initialize the model and remove dependence on initial values
initial_value ({ndarray, float}, optional) – Either a scalar value or max(lags) array set of initial values to use when initializing the model. If omitted, 0.0 is used
x ({ndarray, DataFrame}, optional) – nobs + burn by k array of exogenous variables to include in the simulation. This should be a 2D matrix
initial_value_vol ({ndarray, float}, optional) – An array or scalar to use when initializing the volatility process.
params ({Series, ndarray}, optional) – If not None, model will use the parameters supplied to generate simulations. Otherwise, it will use the fitted parameters.
custom_dist ({ndarray, Callable}, optional) –
Optional density from which to simulate the innovations (Distribution) in the GARCH models. This is useful when working with the copula-GARCH model where each univariate model innovations has dependence on others. It is assumed that the values supplied are standardized [0, 1] innovations instead of the unstandardized residuals.
The shape of the array must be at least as long as the simulation size required after accounting for burn and type of innovation process. If unsure, use
simulation_size_required
to check.If a random number generator function is passed in, he size will be automatically derived to save the user the trouble. However, the function must:
take as it first argument an integer or a tuple of integer
have other parameters that are optional
return a numpy array
- Returns
simulated_data – Array containing the simulated values
- Return type
ndarray
See also
UArch.simulation_horizon_required()
Calculates the simulation size required
-
simulation_horizon_required
(nobs: int, burn: int)¶ Calculates the number of random generations needed for simulation
- Parameters
nobs (int) – number of observations
burn (int) – number of observations burnt in simulation
- Returns
number of random generations required
- Return type
int
-
summary
(short=False, dp=4) → Union[pandas.core.series.Series, muarch.summary.Summary][source]¶ Summary of fitted model
- Parameters
short (bool, optional) – Whether to show short summary or full summary.
dp (int, optional) – Number of decimal places to show in short summary
- Returns
Model Summary
- Return type
Summary
-