使用r语言做garch模型_使用GARCH估计货币波动率

使用r语言做garch模型

Asset prices have a high degree of stochastic trends inherent in the time series. In other words, price fluctuations are subject to a large degree of randomness, and therefore it is very difficult to forecast asset prices using traditional time series models such as ARIMA.

资产价格具有时间序列固有的高度随机趋势。 换句话说,价格波动受到很大程度的随机性影响,因此很难使用诸如ARIMA之类的传统时间序列模型来预测资产价格。

Moreover, with much of the trading done on an algorithmic basis today — prices are constantly adjusting on the basis of such forecasts — making it quite hard to exploit an advantage in the markets.

而且,由于当今许多交易都是基于算法进行的-价格在这种预测的基础上不断调整-因此很难在市场中利用优势。

For instance, suppose I build a time series model to predict rainfall in a city for the next three months. My time series model could have a strong degree of accuracy as the forecasts will not influence rainfall levels in the future. However, if everyone uses an ARIMA model to predict asset price fluctuations for the next three months — then subsequent trading on the basis of those forecasts will directly influence previous forecasts — rendering them invalid in many cases.

例如,假设我建立了一个时间序列模型来预测未来三个月城市的降雨。 我的时间序列模型可能具有很高的准确性,因为预测不会影响将来的降雨量。 但是,如果每个人都使用ARIMA模型来预测未来三个月的资产价格波动-那么根据这些预测进行的后续交易将直接影响先前的预测-在许多情况下使它们无效。

背景 (Background)

As a result, it is common to model projected volatility of an asset price in the financial markets — as opposed to forecasting projected price outright.

因此,通常在金融市场中对资产价格的预计波动率建模,而不是直接预测预测价格。

Let’s see how this can be accomplished using Python. A GARCH model is used to forecast volatility for the EUR/USD and GBP/USD currency pairs, using data from January 2017 — January 2018.

让我们看看如何使用Python来实现。 GARCH模型用于使用2017年1月至2018年1月的数据预测EUR / USD和GBP / USD货币对的波动。

The data is sourced from FRED using the Quandl library:

数据使用Quandl库来自FRED:

eurusd = quandl.get("FRED/DEXUSEU", start_date='2017-01-01', end_date='2018-01-01', api_key='enter_api_key')gbpusd = quandl.get("FRED/DEXUSUK", start_date='2017-01-01', end_date='2018-01-01', api_key='enter_api_key')

The series are converted to logarithmic format to smooth out the time series:

该系列将转换为对数格式,以平滑时间序列:

欧元/美元 (EUR/USD)

英镑/美元 (GBP/USD)

Image for post
Source: Quandl
资料来源:Quandl

The data is then first-differenced to approximate a Gaussian distribution.

然后对数据进行一阶微分以近似高斯分布。

Dickey-Fuller tests show a p-value of 0 for both series — indicating that we reject the null hypothesis that a unit root is present at the 5% level of significance, i.e. stationarity or trend stationarity is indicated as being present in the model.

Dickey-Fuller检验显示两个系列的p值均为0,这表明我们拒绝零假设,即单位根以5%的显着性水平存在,即模型中指示存在平稳性或趋势平稳性。

EUR/USD: Dickey-Fuller Test Results

欧元/美元:迪基-富勒测试结果

>>> result = ts.adfuller(data, 1)
>>> result(-16.26123019770431,
3.564065405943774e-29,
0,
247,
{'1%': -3.457105309726321,
'5%': -2.873313676101283,
'10%': -2.5730443824681606},
-1959.704886024891)

GBP/USD: Dickey-Fuller Test Results

英镑/美元:迪基-富勒测试结果

>>> result = ts.adfuller(data, 1)
>>> result(-12.380335699861567,
5.045829408723097e-23,
1,
246,
{'1%': -3.457215237265747,
'5%': -2.873361841566324,
'10%': -2.5730700760129555},
-1892.8308007824835)

Additionally, a visual screening of QQ plots show that the series now largely follow a normal distribution:

此外,对QQ图的可视化筛选显示,该系列现在基本上遵循正态分布:

EUR/USD: QQ Plot

欧元/美元:QQ情节

Image for post
Source: Jupyter Notebook Output
资料来源:Jupyter Notebook输出

GBP/USD: QQ Plot

英镑/美元:QQ情节

Image for post
Source: Jupyter Notebook Output
资料来源:Jupyter Notebook输出

GARCH建模 (GARCH Modelling)

A GARCH(1,1) model is built to predict the volatility for the last 30 days of trading data for both currency pairs. The previous data is used as the training set for the GARCH model.

建立了GARCH(1,1)模型以预测两种货币对的交易数据的最后30天的波动性。 先前的数据用作GARCH模型的训练集。

# split into train/test
n_test = 30
train, test = data[:-n_test], data[-n_test:]
# define model
model = arch_model(train, mean='Zero', vol='GARCH', p=1, q=1)

The predictions are generated as follows:

预测生成如下:

# fit model
model_fit = model.fit()
# forecast the test set
yhat = model_fit.forecast(horizon=n_test)

Now, let’s compare the predicted variance with the actual 5-day rolling variance across the test set.

现在,让我们将预测方差与整个测试集的实际5天滚动方差进行比较。

欧元/美元 (EUR/USD)

Predicted Variance

预测方差

test.rolling(window=5).var().plot(style='g')
pyplot.title("5-day Rolling Variance")
Image for post
Source: Jupyter Notebook Output
资料来源:Jupyter Notebook输出

5-day Rolling Variance

5天滚动差异

pyplot.plot(yhat.variance.values[-1, :])
pyplot.title("Predicted Variance")
pyplot.show()
Image for post
Source: Jupyter Notebook Output
资料来源:Jupyter Notebook输出

We see that the GARCH model predicts a drop in volatility for the last 30 days (as measured by variance) — this is confirmed by a visual inspection of the actual 5-day rolling variance.

我们看到,GARCH模型预测了最近30天的波动性下降(以方差衡量),这通过对实际5天滚动方差的目视检查得到确认。

Let’s have a look at the comparisons across the GBP/USD.

让我们看一下英镑/美元之间的比较。

英镑/美元 (GBP/USD)

Predicted Variance

预测方差

Image for post
Source: Jupyter Notebook Output
资料来源:Jupyter Notebook输出

5-day Rolling Variance

5天滚动差异

Image for post
Source: Jupyter Notebook Output
资料来源:Jupyter Notebook输出

We can see that while the scale for the predicted variance is much narrower than the actual 5-day rolling variance — both instances are predicting a decrease in variance across the 30-day test period.

我们可以看到,尽管预测方差的标度比实际5天滚动方差要窄得多,但两个实例都预测了30天测试期间方差的减少。

This corresponds with what we actually observe — there was little movement in both the EUR/USD and GBP/USD currency pairs in December 2017 relative to that of other months in the trading year.

这与我们实际观察到的情况相对应-与交易年度的其他月份相比,2017年12月的EUR / USD和GBP / USD货币对几乎没有变化。

结论 (Conclusion)

This has been an illustration of how GARCH can be used to model time series volatility.

这说明了如何使用GARCH对时间序列波动性进行建模。

Hope you found the article useful, and any questions or feedback are greatly appreciated. The GitHub repository for this example, as well as other relevant references are available below.

希望您觉得这篇文章对您有用,对您的任何问题或反馈都深表感谢。 下面提供了此示例的GitHub存储库以及其他相关参考。

Disclaimer: This article is written on an “as is” basis and without warranty. It was written with the intention of providing an overview of data science concepts, and should not be interpreted as investment advice, or any other sort of professional advice.

免责声明:本文按“原样”撰写,不作任何担保。 本文档旨在概述数据科学概念,不应将其解释为投资建议或任何其他形式的专业建议。

翻译自: https://towardsdatascience.com/estimating-currency-volatility-using-garch-e373cf82179d

使用r语言做garch模型

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/391348.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

方差偏差权衡_偏差偏差权衡:快速介绍

方差偏差权衡The bias-variance tradeoff is one of the most important but overlooked and misunderstood topics in ML. So, here we want to cover the topic in a simple and short way as possible.偏差-方差折衷是机器学习中最重要但被忽视和误解的主题之一。 因此&…

win10 uwp 让焦点在点击在页面空白处时回到textbox中

原文:win10 uwp 让焦点在点击在页面空白处时回到textbox中在网上 有一个大神问我这样的问题:在做UWP的项目,怎么能让焦点在点击在页面空白处时回到textbox中? 虽然我的小伙伴认为他这是一个 xy 问题,但是我还是回答他这个问题。 首…

重学TCP协议(1) TCP/IP 网络分层以及TCP协议概述

1. TCP/IP 网络分层 TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议,通过20多年的发展已日渐成熟,并被广泛应用于局域网和…

分节符缩写p_p值的缩写是什么?

分节符缩写pp是概率吗? (Is p for probability?) Technically, p-value stands for probability value, but since all of statistics is all about dealing with probabilistic decision-making, that’s probably the least useful name we could give it.从技术…

[测试题]打地鼠

Description 小明听说打地鼠是一件很好玩的游戏,于是他也开始打地鼠。地鼠只有一只,而且一共有N个洞,编号为1到N排成一排,两边是墙壁,小明当然不可能百分百打到,因为他不知道地鼠在哪个洞。小明只能在白天打…

重学TCP协议(2) TCP 报文首部

1. TCP 报文首部 1.1 源端口和目标端口 每个TCP段都包含源端和目的端的端口号,用于寻找发端和收端应用进程。这两个值加上IP首部中的源端IP地址和目的端IP地址唯一确定一个TCP连接 端口号分类 熟知端口号(well-known port)已登记的端口&am…

机器学习 预测模型_使用机器学习模型预测心力衰竭的生存时间-第一部分

机器学习 预测模型数据科学 , 机器学习 (Data Science, Machine Learning) 前言 (Preface) Cardiovascular diseases are diseases of the heart and blood vessels and they typically include heart attacks, strokes, and heart failures [1]. According to the …

重学TCP协议(3) 端口号及MTU、MSS

1. 端口相关的命令 1.1 查看端口是否打开 使用 nc 和 telnet 这两个命令可以非常方便的查看到对方端口是否打开或者网络是否可达。如果对端端口没有打开,使用 telnet 和 nc 命令会出现 “Connection refused” 错误 1.2 查看监听端口的进程 使用 netstat sudo …

Diffie Hellman密钥交换

In short, the Diffie Hellman is a widely used technique for securely sending a symmetric encryption key to another party. Before proceeding, let’s discuss why we’d want to use something like the Diffie Hellman in the first place. When transmitting data o…

如何通过建造餐厅来了解Scala差异

I understand that type variance is not fundamental to writing Scala code. Its been more or less a year since Ive been using Scala for my day-to-day job, and honestly, Ive never had to worry much about it. 我了解类型差异并不是编写Scala代码的基础。 自从我在日…

组织在召唤:如何免费获取一个js.org的二级域名

之前我是使用wangduanduan.github.io作为我的博客地址,后来觉得麻烦,有把博客关了。最近有想去折腾折腾。先看效果:wdd.js.org 如果你不了解js.org可以看看我的这篇文章:一个值得所有前端开发者关注的网站js.org 前提 已经有了github pages的…

linkedin爬虫_您应该在LinkedIn上关注的8个人

linkedin爬虫Finding great mentors are hard to come by these days. With so much information and so many opinions flooding the internet, finding an authority in a specific field can be quite tough.这些天很难找到优秀的导师。 互联网上充斥着如此众多的信息和众多…

重学TCP协议(4) 三次握手

1. 三次握手 请求端(通常称为客户)发送一个 S Y N段指明客户打算连接的服务器的端口,以及初始序号。这个S Y N段为报文段1。服务器发回包含服务器的初始序号的 S Y N报文段(报文段2)作为应答。同时,将确认序…

java温故笔记(二)java的数组HashMap、ConcurrentHashMap、ArrayList、LinkedList

为什么80%的码农都做不了架构师?>>> HashMap 摘要 HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例…

前置交换机数据交换_我们的数据科学交换所

前置交换机数据交换The DNC Data Science team builds and manages dozens of models that support a broad range of campaign activities. Campaigns rely on these model scores to optimize contactability, volunteer recruitment, get-out-the-vote, and many other piec…

在Centos中安装mysql

下载mysql这里是通过安装Yum源rpm包的方式安装,所以第一步是先下载rpm包 1.打开Mysql官网 https://www.mysql.com/, 点击如图选中的按钮 点击如图框选的按钮 把页面拉倒最下面,选择对应版本下载,博主这里用的是CentOS7 下载完成后上传到服务器,由于是yum源的安装包,所以…

Docker 入门(1)虚拟化和容器

1 虚拟化 虚拟化是为一些组件(例如虚拟应用、服务器、存储和网络)创建基于软件的(或虚拟)表现形式的过程。它是降低所有规模企业的 IT 开销,同时提高其效率和敏捷性的最有效方式。 1.1 虚拟化用于程序跨平台兼容 要…

量子相干与量子纠缠_量子分类

量子相干与量子纠缠My goal here was to build a quantum deep neural network for classification tasks, but all the effort involved in calculating errors, updating weights, training a model, and so forth turned out to be completely unnecessary. The above circu…

Python -- xlrd,xlwt,xlutils 读写同一个Excel

最近开始学习python,想做做简单的自动化测试,需要读写excel,然后就找到了xlrd来读取Excel文件,使用xlwt来生成Excel文件(可以控制Excel中单元格的格式),需要注意的是,用xlrd读取excel是不能对其进行操作的&…

知识力量_网络分析的力量

知识力量The most common way to store data is in what we call relational form. Most systems get analyzed as collections of independent data points. It looks something like this:存储数据的最常见方式是我们所谓的关系形式。 大多数系统作为独立数据点的集合进行分析…