Skip to main content

Multiple Univariate ARCH modeling toolbox built on top of the ARCH package

Project description

MUArch

Continuous Integration

Build Status Build status

Documentation

Documentation Status

Coverage

Coverage Status

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:

  1. Enable faster Monte Carlo simulation
  2. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

muarch-0.2.1.tar.gz (436.0 kB view details)

Uploaded Source

Built Distributions

muarch-0.2.1-cp38-cp38-win_amd64.whl (432.5 kB view details)

Uploaded CPython 3.8 Windows x86-64

muarch-0.2.1-cp37-cp37m-win_amd64.whl (431.6 kB view details)

Uploaded CPython 3.7m Windows x86-64

File details

Details for the file muarch-0.2.1.tar.gz.

File metadata

  • Download URL: muarch-0.2.1.tar.gz
  • Upload date:
  • Size: 436.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.1.0.post20200127 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.7.6

File hashes

Hashes for muarch-0.2.1.tar.gz
Algorithm Hash digest
SHA256 8ba4f93eb8c07b53b14e7663f6752b9876c67f76fa1b40a1f3311a599992c2dd
MD5 8bdd5fa47d5eeeb4f455331beff469f2
BLAKE2b-256 980fcc261f1e29f24491cc0243fd184f56ecec1d7cf00d2d4c8acbb08de39337

See more details on using hashes here.

File details

Details for the file muarch-0.2.1-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: muarch-0.2.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 432.5 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.1.0.post20200127 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.7.6

File hashes

Hashes for muarch-0.2.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 b7c3f5f2a53e064bb22833e16a5e772ec8f94561aac1f90dfc905b03d5eb7a77
MD5 9bed56193d8072fc99234ac2a8625def
BLAKE2b-256 ce5a3de149de0e077fe0199263bdb468b86f5715a5938de4c997e0d27675c9c7

See more details on using hashes here.

File details

Details for the file muarch-0.2.1-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: muarch-0.2.1-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 431.6 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.1.0.post20200127 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.7.6

File hashes

Hashes for muarch-0.2.1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 87f2d87f806d828092c1a433136e9e086aca71e3a055e06def67cc1714b70264
MD5 a1c2509b9ad5cb604dd95d42c51aee98
BLAKE2b-256 f772071c47ef907f359e1545b9de3a318e51b2540b96f5cba865be703b18a745

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page