首页 > 其他分享 >R语言对S&P500股票指数进行ARIMA + GARCH交易策略|附代码数据

R语言对S&P500股票指数进行ARIMA + GARCH交易策略|附代码数据

时间:2024-05-31 23:45:16浏览次数:31  
标签:预测 P500 模型 ARIMA GARCH 序列 语言

原文链接:http://tecdat.cn/?p=7207

最近我们被客户要求撰写关于ARIMA + GARCH交易策略的研究报告,包括一些图形和统计输出。

在本文中,我想向您展示如何应用S&P500股票市场指数的交易策略

通过组合ARIMA和GARCH模型,从长期来看,我们可以超过“买入并持有”方法。

策略概述

该策略在“滚动”预测的基础上执行:

  1. 对于每一天,股票指数的对数收益的前_k_天被用作拟合最佳ARIMA和GARCH模型的窗口。 
  2. 组合模型用于对第二天的收益进行预测。
  3. 如果预测为负,则在上一个收盘时做空股票,而如果预测为正,则做多。
  4. 如果预测与前一天的方向相同,则什么都不会改变。

策略实施

第一个任务是在R中安装和导入必要的库:

如果已经安装了库,则可以简单地导入它们:

   
> library(quantmod)
> library(lattice)
> library(timeSeries)
> library(rugarch)

完成后,将把该策略应用于S&P500。

然后,我们可以创建标准普尔500的“收盘价”的对数收益率差分序列,并去除初始NA值:

根据Akaike信息准则,循环过程将为我们提供“最佳”拟合ARMA模型,然后我们可以将其用于输入GARCH模型:

   
>     final.aic <- Inf
>     final.order <- c(0,0,0)
>     for (p in 0:5) for (q in 0:5) {
>         if ( p == 0 && q == 0) {
>             next
>         }
> 
>         arimaFit = tryCatch( arima(spReturnsOffset, order=c(p, 0, q)),
>                              error=function( err ) FALSE,
>                              warning=function( err ) FALSE )
> 
>         if( !is.logical( arimaFit ) ) {
>             current.aic <- AIC(arimaFit)
>             if (current.aic < final.aic) {
>                 final.aic <- current.aic
>                 final.order <- c(p, 0, q)
>                 final.arima <- arima(spReturnsOffset, order=final.order)
>             }
>         } else {
>             next
>         }
>     }

如果GARCH模型无法收敛,那么我们只需将日期设置为产生“长期”预测 。

为了准备CSV文件的输出,我创建了一个字符串,其中包含用逗号分隔的数据,并带有第二天的预测方向:

   
>     if(is(fit, "warning")) {
>       forecasts[d+1] = paste(index(spReturnsOffset[windowLength]), 1, sep=",")
>       print(paste(index(spReturnsOffset[windowLength]), 1, sep=","))
>     } else {
>       fore = ugarchforecast(fit, n.ahead=1)
>       ind = fore@forecast$seriesFor
>       forecasts[d+1] = paste(colnames(ind), ifelse(ind[1] < 0, -1, 1), sep=",")
>       print(paste(colnames(ind), ifelse(ind[1] < 0, -1, 1), sep=",")) 
>     }
> }

倒数第二步是将CSV文件输出 。

确保在与forecasts.csv文件相同的目录中运行:

   
forecasts = open("forecasts.csv", "r").readlines()

至此,我们已将更正的指标文件存储在中forecasts_new.csv

策略结果

现在,我们已经生成了指标CSV文件,我们需要将其效果与“买入并持有”进行比较。

我们首先从CSV文件中读取指标并将其存储为spArimaGarch

然后,我们将ARIMA + GARCH预测的日期与S&P500的原始收益集相交。

一旦获得ARIMA + GARCH策略的收益,就可以为ARIMA + GARCH模型和“买入并持有”创建资产曲线。最后,我们将它们合并为一个数据结构:

   
> spArimaGarchCurve = log( cumprod( 1 + spArimaGarchReturns ) )
> spBuyHoldCurve = log( cumprod( 1 + spIntersect[,2] ) )
> spCombinedCurve = merge( spArimaGarchCurve, spBuyHoldCurve, all=F )

最后,我们可以在同一图上绘制两条收益曲线:

   
> xyplot( 
>   spCombinedCurve,
>   superpose=T,
>   col=c("darkred", "darkblue"),
>   lwd=2,
>   key=list( 
>     text=list(
>       c("ARIMA+GARCH", "Buy & Hold")
>     ),
>     lines=list(
>       lwd=2, col=c("darkred", "darkblue")
>     )
>   )
> )

资产曲线如下:

图片


点击标题查阅往期内容

图片

R语言动量交易策略分析调整后的数据

图片

左右滑动查看更多

图片

01

图片

02

图片

03

图片

04

图片

ARIMA + GARCH策略的股票曲线与S&P500的“买入并持有”

如您所见,在65年的时间里,ARIMA + GARCH策略的表现明显优于“买入并持有”。但是,您还可以看到,大部分收益发生在1970年至1980年之间。

因此,在将此类模型建立之前将其应用于历史序列真的合适吗?另一种选择是开始将模型应用于最新数据。实际上,我们可以考虑一下从2005年1月1日至今的最近十年的表现:

图片

从2005年至今,ARIMA + GARCH策略与S&P500的“买入并持有”股票曲线

现在,我们已经完成了ARIMA和GARCH模型的讨论,我想通过考虑长状态空间模型和协整时间序列来继续进行时间序列分析讨论。

时间序列的这些后续领域将向我们介绍一些模型,这些模型可以改善我们的预测,这将大大提高我们的交易获利能力和/或降低风险。


图片

本文摘选  R语言对S&P500股票指数进行ARIMA + GARCH交易策略  ,点击“阅读原文”获取全文完整资料。


点击标题查阅往期内容

R语言ARMA GARCH COPULA模型拟合股票收益率时间序列和模拟可视化
ARMA-GARCH-COPULA模型和金融时间序列案例
时间序列分析:ARIMA GARCH模型分析股票价格数据
GJR-GARCH和GARCH波动率预测普尔指数时间序列和Mincer Zarnowitz回归、DM检验、JB检验
【视频】时间序列分析:ARIMA-ARCH / GARCH模型分析股票价格
时间序列GARCH模型分析股市波动率
PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化
极值理论 EVT、POT超阈值、GARCH 模型分析股票指数VaR、条件CVaR:多元化投资组合预测风险测度分析
Garch波动率预测的区制转移交易策略
金融时间序列模型ARIMA 和GARCH 在股票市场预测应用
时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格
R语言风险价值:ARIMA,GARCH,Delta-normal法滚动估计VaR(Value at Risk)和回测分析股票数据
R语言GARCH建模常用软件包比较、拟合标准普尔SP 500指数波动率时间序列和预测可视化
Python金融时间序列模型ARIMA 和GARCH 在股票市场预测应用
MATLAB用GARCH模型对股票市场收益率时间序列波动的拟合与预测R语言GARCH-DCC模型和DCC(MVT)建模估计
Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列
R语言中的时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格
R语言ARIMA-GARCH波动率模型预测股票市场苹果公司日收益率时间序列
Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模拟进行股价预测
R语言时间序列GARCH模型分析股市波动率
R语言ARMA-EGARCH模型、集成预测算法对SPX实际波动率进行预测
matlab实现MCMC的马尔可夫转换ARMA - GARCH模型估计
Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模拟进行股价预测
使用R语言对S&P500股票指数进行ARIMA + GARCH交易策略
R语言用多元ARMA,GARCH ,EWMA, ETS,随机波动率SV模型对金融时间序列数据建模
R语言股票市场指数:ARMA-GARCH模型和对数收益率数据探索性分析
R语言多元Copula GARCH 模型时间序列预测
R语言使用多元AR-GARCH模型衡量市场风险
R语言中的时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格
R语言用Garch模型和回归模型对股票价格分析
GARCH(1,1),MA以及历史模拟法的VaR比较
matlab估计arma garch 条件均值和方差模型R语言POT超阈值模型和极值理论EVT分析

标签:预测,P500,模型,ARIMA,GARCH,序列,语言
From: https://www.cnblogs.com/tecdat/p/18225445

相关文章

  • R语言GARCH-DCC模型和DCC(MVT)建模估计
    原文链接:http://tecdat.cn/?p=7194原文出处:拓端数据部落公众号 这个简短的演示说明了使用r软件包的DCC模型及其方法的使用,尤其是在存在MVT分布形状参数的情况下进行2级DCC估计的另一种方法。第一阶段并将其传递给dccfit  cl=makePSOCKcluster(10)multf=multi......
  • GARCH族模型:正态分布、t、GED分布EGARCH、TGARCH的VaR分析股票指数|附代码数据
    全文链接:http://tecdat.cn/?p=31023最近我们被客户要求撰写关于GARCH族模型的研究报告,包括一些图形和统计输出。如何构建合适的模型以恰当的方法对风险进行测量是当前金融研究领域的一个热门话题 ( 点击文末“阅读原文”获取完整代码数据******** )。VaR方法作为当前业内比较......
  • ARIMA时间序列模型水质预测应用
    ARIMA时间序列模型简介时间序列是研究数据随时间变化而变化的一种算法,是一种预测性分析算法。它的基本出发点就是事物发展都有连续性,按照它本身固有的规律进行。ARIMA(p,d,q)模型全称为差分自回归移动平均模型(AutoregressiveIntegratedMovingAverageModel,简记ARIMA).......
  • Mono 支持LoongArch架构
    近期,著名的.NET开源社区Mono正式支持LoongArch(龙架构),目前LoongArch64架构已出现在.NET社区主干分支上。详细内容可以跟踪https://github.com/mono/mono/issues/21381,一共分5部分提交:Mono是一个开源的.NET框架实现,它允许开发者在非Windows平台上运行.NET应用程序。Mono项目是由X......
  • Python金融时间序列模型ARIMA 和GARCH 在股票市场预测应用|附代码数据
    原文链接:http://tecdat.cn/?p=24407最近我们被客户要求撰写关于金融时间序列模型的研究报告,包括一些图形和统计输出。这篇文章讨论了自回归综合移动平均模型(ARIMA)和自回归条件异方差模型(GARCH)及其在股票市场预测中的应用 ( 点击文末“阅读原文”获取完整代码数据******......
  • 数据分享|SAS与eviews用ARIMA模型对我国大豆产量时间序列预测、稳定性、白噪声检验可
    全文链接:http://tecdat.cn/?p=31480最近我们被客户要求撰写关于ARIMA的研究报告,包括一些图形和统计输出。我国以前一直以来都是世界上大豆生产的第一大国。但由于各国的日益强大,导致我国豆种植面积和产量持续缩减。因此,预测我国的大豆产量对中国未来的经济发展有着极其重要的作......
  • R语言结合新冠疫情COVID-19对股票价格预测:ARIMA,KNN和神经网络时间序列分析
    原文链接:http://tecdat.cn/?p=24057原文出处:拓端数据部落公众号1.概要本文的目标是使用各种预测模型预测Google的未来股价,然后分析各种模型。Google股票数据集是使用R中的Quantmod软件包从YahooFinance获得的。2.简介预测算法是一种试图根据过去和现在的数据预测未来值的过......
  • MATLAB用GARCH-EVT-Copula模型VaR预测分析股票投资组合
    全文链接:http://tecdat.cn/?p=30426原文出处:拓端数据部落公众号对VaR计算方法的改进,以更好的度量开放式基金的风险。本文把基金所持股票看成是一个投资组合,引入Copula来描述多只股票间的非线性相关性,构建多元GARCH-EVT-Copula模型来度量开放式基金的风险,并与其他VaR估计方法的预......
  • R语言基于ARMA-GARCH-VaR模型拟合和预测实证研究分析案例
    原文链接:http://tecdat.cn/?p=3186原文出处:拓端数据部落公众号 本文显示了如何基于潜在的ARMA-GARCH模型(当然也涉及更广泛意义上的QRM)来拟合和预测风险价值(VaR)。从ARMA-GARCH过程模拟(log-return)数据我们考虑使用t分布的ARMA(1,1)-GARCH(1,1)过程。模拟一个序列(用于说明目的)。......
  • R语言用GARCH模型波动率建模和预测、回测风险价值 (VaR)分析股市收益率时间序列|附代
    原文链接:http://tecdat.cn/?p=26897最近我们被客户要求撰写关于GARCH的研究报告,包括一些图形和统计输出。风险价值(VaR)是金融风险管理中使用最广泛的市场风险度量,也被投资组合经理等从业者用来解释未来市场风险风险价值(VaR)VaR可以定义为资产在给定时间段内以概率θ......