arch
用Python编写的自回归条件异方差(ARCH)和其他金融计量经济学工具(使用Cython和/或Numba来提高性能)
模块内容
Python 3
arch
仅支持Python 3。4.8版本是最后一个支持Python 2.7的版本。
文档
主分支的文档托管在我的GitHub Pages上。
已发布的文档托管在Read the Docs上。
更多关于ARCH
更多关于ARCH和相关模型的信息可以在Kevin Sheppard的网站上的笔记和研究中找到。
贡献
欢迎贡献。有多个层面可以贡献:
- 实现新的波动率过程,例如FIGARCH
- 改进不清晰或有拼写错误的文档字符串
- 提供示例,最好是以IPython notebook的形式
示例
波动率建模
- 均值模型
- 常数均值
- 异质自回归(HAR)
- 自回归(AR)
- 零均值
- 带和不带外生回归变量的模型
- 波动率模型
- ARCH
- GARCH
- TARCH
- EGARCH
- EWMA/RiskMetrics
- 分布
- 正态分布
- 学生t分布
- 广义误差分布
查看单变量波动率示例notebook以获得更完整的概述。
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()
单位根检验
- 增广迪基-富勒检验
- 迪基-富勒GLS检验
- 菲利普斯-佩龙检验
- KPSS检验
- Zivot-Andrews检验
- 方差比检验
查看单位根检验示例notebook以了解如何对序列进行单位根检验的示例。
协整检验和分析
- 检验
- Engle-Granger检验
- Phillips-Ouliaris检验
- 协整向量估计
- 标准化协整回归
- 动态OLS
- 完全修正OLS
查看协整检验示例notebook以了解如何对序列进行协整检验的示例。
自助法
- 自助法
- IID自助法
- 平稳自助法
- 循环区块自助法
- 移动区块自助法
- 方法
- 置信区间构建
- 协方差估计
- 应用方法在自助样本中估计模型
- 通用自助法迭代器
查看自助法示例笔记本,了解夏普比率和statsmodels中Probit模型的自助法示例。
# 导入数据
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()
# 计算参数的函数
def sharpe_ratio(x):
mu, sigma = 12 * x.mean(), np.sqrt(12 * x.var())
return np.array([mu, sigma, mu / sigma])
# 自助法置信区间
from arch.bootstrap import IIDBootstrap
bs = IIDBootstrap(returns)
ci = bs.conf_int(sharpe_ratio, 1000, method='percentile')
多重比较程序
- 优越预测能力检验(SPA),也称为现实检验或自助法数据探索
- 逐步法(StepM)
- 模型置信集(MCS)
查看多重比较示例笔记本,了解多重比较程序的示例。
长期协方差估计
基于核的长期协方差估计器,包括在计量经济学中被称为Newey-West的Bartlett核。所有协方差估计器都可以使用自动带宽选择。
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)
# 获取长期协方差
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 (用于构建文档)
安装注意事项
- 如果未安装Cython,将按照设置
ARCH_NO_BINARY=1
的方式安装软件包。 - 安装程序不验证这些要求。请确保已安装这些要求。