关于数据挖掘:R语言对S&P500股票指数进行ARIMA-GARCH交易策略附代码数据

30次阅读

共计 3642 个字符,预计需要花费 10 分钟才能阅读完成。

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

最近咱们被客户要求撰写对于交易策略的钻研报告,包含一些图形和统计输入。
在本文中,我想向您展现如何利用 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 剖析

正文完
 0