跳转到主要内容

ARCH for Python

项目描述

arch

arch

自回归条件异方差性 (ARCH) 和其他金融计量学工具,用Python编写(使用Cython和/或Numba以提高性能)

度量
最新发布 PyPI version
conda-forge version
持续集成 Build Status
覆盖率 codecov
代码质量 Codacy Badge
codebeat badge
引用 DOI
文档 Documentation Status

模块内容

Python 3

arch仅适用于Python 3。版本4.8是支持Python 2.7的最后一个版本。

文档

主分支的文档托管在我的GitHub页面上。

发布的文档托管在read the docs

关于ARCH的更多信息

有关ARCH和相关模型的更多信息可在Kevin Sheppard的网站上的笔记和研究资料中找到。

贡献

欢迎贡献。有许多层次可以贡献

  • 实现新的波动过程,例如,FIGARCH
  • 改进docstrings中不清楚或存在错别字的地方
  • 提供示例,最好是IPython笔记本的形式

示例

波动率建模

  • 均值模型
    • 常数均值
    • 异方差自回归(HAR)
    • 自回归(AR)
    • 零均值
    • 有或没有外生回归因子的模型
  • 波动率模型
    • ARCH
    • GARCH
    • TARCH
    • EGARCH
    • EWMA/RiskMetrics
  • 分布
    • 正态分布
    • 学生t分布
    • 广义误差分布

请参阅单变量波动率示例笔记本以获取更全面的概述。

import datetime as dt
import pandas_datareader.data as web
st = dt.datetime(1990,1,1)
en = dt.datetime(2014,1,1)
data = web.get_data_yahoo('^FTSE', start=st, end=en)
returns = 100 * data['Adj Close'].pct_change().dropna()

from arch import arch_model
am = arch_model(returns)
res = am.fit()

单位根检验

  • Augmented Dickey-Fuller
  • Dickey-Fuller GLS
  • Phillips-Perron
  • KPSS
  • Zivot-Andrews
  • 方差比率测试

请参阅单位根测试示例笔记本以了解对时间序列进行单位根测试的示例。

协整测试与分析

  • 测试
    • Engle-Granger测试
    • Phillips-Ouliaris测试
  • 协整向量估计
    • 典型协整回归
    • 动态OLS
    • 完全修正OLS

请参阅协整测试示例笔记本以了解对时间序列进行协整测试的示例。

自举法

  • 自举法
    • 独立同分布(IID)自举法
    • 平稳自举法
    • 环形块自举法
    • 移动块自举法
  • 方法
    • 置信区间构建
    • 协方差估计
    • 将方法应用于自举法估计模型
    • 通用的自举迭代器

请参阅自举示例笔记本以了解从statsmodels中自举夏普比率和Probit模型的示例。

# Import data
import datetime as dt
import pandas as pd
import numpy as np
import pandas_datareader.data as web
start = dt.datetime(1951,1,1)
end = dt.datetime(2014,1,1)
sp500 = web.get_data_yahoo('^GSPC', start=start, end=end)
start = sp500.index.min()
end = sp500.index.max()
monthly_dates = pd.date_range(start, end, freq='M')
monthly = sp500.reindex(monthly_dates, method='ffill')
returns = 100 * monthly['Adj Close'].pct_change().dropna()

# Function to compute parameters
def sharpe_ratio(x):
    mu, sigma = 12 * x.mean(), np.sqrt(12 * x.var())
    return np.array([mu, sigma, mu / sigma])

# Bootstrap confidence intervals
from arch.bootstrap import IIDBootstrap
bs = IIDBootstrap(returns)
ci = bs.conf_int(sharpe_ratio, 1000, method='percentile')

多重比较程序

  • 测试优越预测能力(SPA),也称为现实检查或自举数据侦察
  • 逐步(StepM)
  • 模型置信集(MCS)

请参阅多重比较示例笔记本以了解多重比较程序的示例。

长期协方差估计

基于核的长程协方差估计器,包括Bartlett核,在计量经济学中称为Newey-West。所有协方差估计器都提供自动带宽选择。

from arch.covariance.kernel import Bartlett
from arch.data import nasdaq
data = nasdaq.load()
returns = data[["Adj Close"]].pct_change().dropna()

cov_est = Bartlett(returns ** 2)
# Get the long-run covariance
cov_est.cov.long_run

要求

这些要求反映了测试环境。arch可能在更旧版本中也能工作。

  • Python(3.9+)
  • NumPy(1.19+)
  • SciPy(1.5+)
  • Pandas(1.1+)
  • statsmodels(0.12+)
  • matplotlib(3+),可选

可选要求

  • 如果可用,将使用Numba(0.49+),并且当不构建二进制模块时安装。为了确保不构建这些模块,您必须设置环境变量ARCH_NO_BINARY=1并且不使用wheel安装。
export ARCH_NO_BINARY=1
python -m pip install arch

或者在Windows上使用Powershell

$env:ARCH_NO_BINARY=1
python -m pip install arch
  • jupyter和notebook是运行笔记本所必需的

安装

使用编译器进行标准安装需要Cython。如果您没有安装编译器,arch仍然可以安装。您会看到一条警告,但这可以忽略。如果您没有编译器,强烈推荐使用numba

pip

发布版可在PyPI上获取,并可以使用pip进行安装。

pip install arch

您还可以从GitHub安装最新版本。

pip install git+https://github.com/bashtage/arch.git

设置环境变量ARCH_NO_BINARY=1可以用来禁用扩展的编译。

Anaconda

使用conda的用户可以从conda-forge安装,

conda install arch-py -c conda-forge

注意:conda-forge的名称是arch-py

Windows

当使用Python 3.8或更高版本时,使用社区版Visual Studio构建扩展非常简单。如果已安装numba,则无需构建,因为即时编译代码(numba)的运行速度与预编译扩展相同。

开发

开发需求包括

  • Cython(0.29+,如果不使用ARCH_NO_BINARY=1,则支持3.0.0b2+)
  • pytest(用于测试)
  • sphinx(用于构建文档)
  • sphinx-immaterial(用于构建文档)
  • jupyter,notebook和nbsphinx(用于构建文档)

安装说明

  1. 如果未安装Cython,则将包安装为设置了ARCH_NO_BINARY=1的情况。
  2. 设置不会验证这些要求。请确保已安装这些软件包。

项目详情


下载文件

下载适合您平台的项目文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

arch-7.1.0.tar.gz (3.7 MB 查看哈希值

上传时间

构建版本

arch-7.1.0-cp313-cp313-win_amd64.whl (923.0 kB 查看哈希值

上传时间 CPython 3.13 Windows x86-64

arch-7.1.0-cp313-cp313-musllinux_1_2_x86_64.whl (983.4 kB 查看哈希值

上传时间 CPython 3.13 musllinux:musl 1.2+ x86-64

arch-7.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (975.7 kB 查看哈希值)

上传时间: CPython 3.13 manylinux: glibc 2.17+ x86-64

arch-7.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (945.2 kB 查看哈希值)

上传时间: CPython 3.13 manylinux: glibc 2.17+ ARM64

arch-7.1.0-cp313-cp313-macosx_11_0_arm64.whl (923.1 kB 查看哈希值)

上传时间: CPython 3.13 macOS 11.0+ ARM64

arch-7.1.0-cp313-cp313-macosx_10_13_x86_64.whl (943.7 kB 查看哈希值)

上传时间: CPython 3.13 macOS 10.13+ x86-64

arch-7.1.0-cp312-cp312-win_amd64.whl (923.9 kB 查看哈希值)

上传时间: CPython 3.12 Windows x86-64

arch-7.1.0-cp312-cp312-musllinux_1_2_x86_64.whl (984.2 kB 查看哈希值)

上传时间: CPython 3.12 musllinux: musl 1.2+ x86-64

arch-7.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (976.1 kB 查看哈希值)

上传时间: CPython 3.12 manylinux: glibc 2.17+ x86-64

arch-7.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (946.1 kB 查看哈希值)

上传时间: CPython 3.12 manylinux: glibc 2.17+ ARM64

arch-7.1.0-cp312-cp312-macosx_11_0_arm64.whl (925.4 kB 查看哈希值)

上传时间: CPython 3.12 macOS 11.0+ ARM64

arch-7.1.0-cp312-cp312-macosx_10_13_x86_64.whl (946.7 kB 查看哈希值)

上传时间: CPython 3.12 macOS 10.13+ x86-64

arch-7.1.0-cp311-cp311-win_amd64.whl (924.9 kB 查看哈希值)

上传于 CPython 3.11 Windows x86-64

arch-7.1.0-cp311-cp311-musllinux_1_2_x86_64.whl (996.2 kB 查看哈希值)

上传于 CPython 3.11 musllinux: musl 1.2+ x86-64

arch-7.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (983.2 kB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ x86-64

arch-7.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (955.7 kB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ ARM64

arch-7.1.0-cp311-cp311-macosx_11_0_arm64.whl (923.0 kB 查看哈希值)

上传于 CPython 3.11 macOS 11.0+ ARM64

arch-7.1.0-cp311-cp311-macosx_10_9_x86_64.whl (944.2 kB 查看哈希值)

上传于 CPython 3.11 macOS 10.9+ x86-64

arch-7.1.0-cp310-cp310-win_amd64.whl (924.9 kB 查看哈希值)

上传于 CPython 3.10 Windows x86-64

arch-7.1.0-cp310-cp310-musllinux_1_2_x86_64.whl (996.6 kB 查看哈希值)

上传于 CPython 3.10 musllinux: musl 1.2+ x86-64

arch-7.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (982.9 kB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ x86-64

arch-7.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (956.1 kB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ ARM64

arch-7.1.0-cp310-cp310-macosx_11_0_arm64.whl (922.4 kB 查看哈希值)

上传于 CPython 3.10 macOS 11.0+ ARM64

arch-7.1.0-cp310-cp310-macosx_10_9_x86_64.whl (943.1 kB 查看哈希值)

上传于 CPython 3.10 macOS 10.9+ x86-64

arch-7.1.0-cp39-cp39-win_amd64.whl (926.0 kB 查看哈希值)

上传于 CPython 3.9 Windows x86-64

arch-7.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (983.9 kB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ x86-64

arch-7.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (957.1 kB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ ARM64

arch-7.1.0-cp39-cp39-macosx_11_0_arm64.whl (923.4 kB 查看哈希值)

上传于 CPython 3.9 macOS 11.0+ ARM64

arch-7.1.0-cp39-cp39-macosx_10_9_x86_64.whl (944.3 kB 查看哈希值)

上传于 CPython 3.9 macOS 10.9+ x86-64

支持