R语言对S&P500股票指数停止ARIMA + GARCH交易战略|附代码数据
原文链接:
比来我们被客户要求撰写关于交易战略的研究陈述,包罗一些图形和统计输出。 在本文中,我想向您展现若何利用S&P500股票市场指数的交易战略
通过组合ARIMA和GARCH模子,从持久来看,我们能够超越“买进并持有”办法。
战略概述
该战略在“滚动”揣测的根底上施行:
战略施行
第一个使命是在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阐发