Multiple Univariate ARCH modeling toolbox built on top of the ARCH package
Project description
MUArch
Continuous Integration
Documentation
Coverage
Installing
Install and update using pip and on conda.
This is a wrapper on top of Kevin Sheppard's ARCH package. The purpose of which are to:
- Enable faster Monte Carlo simulation
- Simulate innovations through copula marginals
In the package, there are 2 classes to aid you - UArch
and MUArch
. The UArch
class can be defined using a similar API to arch_model
in the original arch
package. The MUArch
is a collection of these UArch
models.
Thus, if you have a function that generates uniform marginals, like a copula, you can create a dependence structure among the different marginals when simulating the GARCH processes.
If you need a copula package, I have one here. :)
Example
I'll list out a simple procedure to do AR-GARCH-Copula simulations.
from muarch import MUArch, UArch
from muarch.datasets import load_etf
from copulae import NormalCopula
returns = load_etf() # load returns data
num_assets = returns.shape[1]
# sets up a MUArch model collection where each model defaults to
# mean: AR(1)
# vol: GARCH(1, 1)
# dist: normal
models = MUArch(num_assets, mean='AR', lags=1)
# set first model to AR(1)-GARCH(1, 1) with skewt innovations
models[0] = UArch('AR', lags=1, dist='skewt')
# fit model, if you get complaints regarding non-convergence, you can scale the data up
# using the scale parameter in the UArch or MUArch. i.e. UArch(..., scale=100). This will
# reduce numerical errors. Don't worry, I'll rescale the simulation values subsequently
models.fit(returns)
# Usually you'll want to fit the residuals to the copula, use the copula to generate the
# residuals and subsequently transform it back to returns
residuals = models.residuals() # defaults to return the standardized residuals
cop = NormalCopula(dim=num_assets) # use a normal copula, you could of course use a TCopula
cop.fit(residuals)
# simulate 10 steps into the future, over 4 repetitions. This will return a (10 x 4 x 3) array
models.simulate_mc(10, 4, custom_dist=cop.random)
Future Works
This is actually a temporary hack so that others can do GARCH copula simulation. Another issue is that an ARFIMA mean model is not so easily specified (and simulated from) with the original arch
package. You could specify an ARFIMA (or even just an ARMA model for the matter), fit it separately then use the residuals to fit a zero-mean model (pure GARCH). However, in such a way, the simulation is not so straightforward as you'll have to stitch the simulations from GARCH process and the mean model process back.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
File details
Details for the file muarch-0.0.7.tar.gz
.
File metadata
- Download URL: muarch-0.0.7.tar.gz
- Upload date:
- Size: 420.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | af05dddd768109662d48e6297b21c605e771be39a79f236ff80505cba7afe663 |
|
MD5 | b0e322ac88f35140f75e976845a793b5 |
|
BLAKE2b-256 | 4375ef92d1aa9da217e23501a84834ab48a6d68b05c34cd6818b7f35a7725f6f |
File details
Details for the file muarch-0.0.7-cp37-cp37m-win_amd64.whl
.
File metadata
- Download URL: muarch-0.0.7-cp37-cp37m-win_amd64.whl
- Upload date:
- Size: 407.4 kB
- Tags: CPython 3.7m, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c7ea44acd9bd8b91c955860d1772f28d870ebc7b021e1a15cc3d502b652e4bc1 |
|
MD5 | 452c7db1498fabc313e535aacbffebb4 |
|
BLAKE2b-256 | 4823d617607339cddd2d8223b0bfdc2eb832ca4fcec28ae4113d40b2733fbccb |
File details
Details for the file muarch-0.0.7-cp37-cp37m-manylinux1_x86_64.whl
.
File metadata
- Download URL: muarch-0.0.7-cp37-cp37m-manylinux1_x86_64.whl
- Upload date:
- Size: 997.1 kB
- Tags: CPython 3.7m
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f5d2c5c1c89eaa6d5bdc91de5f552921b56aff62d59bfb45391f0b5f3250c7b2 |
|
MD5 | d7515c40f5cdd7d62c5ee3b0a781e872 |
|
BLAKE2b-256 | 5e81323d3e67f90ed75be42cfa3d05bbc4951056779a7c640c169d7338b84653 |
File details
Details for the file muarch-0.0.7-cp36-cp36m-win_amd64.whl
.
File metadata
- Download URL: muarch-0.0.7-cp36-cp36m-win_amd64.whl
- Upload date:
- Size: 407.5 kB
- Tags: CPython 3.6m, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.18.4 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.6.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ca4091af96621dec441e2ac328bbb3b7571d03e9c5ee60311c767d3d1a8d5c42 |
|
MD5 | 205e968cd6784952b0a68b12b37e35cd |
|
BLAKE2b-256 | ca3c3e50a977223fcd403c71d04aed03daa5b7122c903e0509b26085435fe870 |
File details
Details for the file muarch-0.0.7-cp36-cp36m-manylinux1_x86_64.whl
.
File metadata
- Download URL: muarch-0.0.7-cp36-cp36m-manylinux1_x86_64.whl
- Upload date:
- Size: 996.6 kB
- Tags: CPython 3.6m
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b0243466579e3c6f6c9bfb2ff0cf812545c576478215892a54442b5fd37deb8f |
|
MD5 | 2ee8236c74f5f29be951c010ed56a8f1 |
|
BLAKE2b-256 | 80ba2389c036123b35273d3bce0c29cf80ba91c10ba01ee920a28f95f20409ab |