共计 4050 个字符,预计需要花费 11 分钟才能阅读完成。
原文链接:http://tecdat.cn/?p=17526
原文出处:拓端数据部落公众号
本文提出了一种算法,能够依据市场波动性在均值回归和趋势追随策略之间进行切换。钻研了两种模型:一种应用历史稳定率,另一种应用 Garch(1,1)稳定率预测。均值回归策略应用 RSI(2)建模:RSI(2)时为 Long,否则为 Short。趋势跟踪策略以 SMA 50/200 穿插建模:当 SMA(50)> SMA(200)时为 Long,否则为 Short。
以下代码从 Yahoo Fiance 加载历史价格,并比拟买入和持有,均值回归和趋势跟踪策略的成果:
#*****************************************************************
# 加载历史数据
#******************************************************************
load.packages('quantmod')
tickers = 'SPY'
data <- new.env()
getSymbols(tickers, src = 'yahoo', from = '1970-01-01', env = data, auto.assign = T)
#*****************************************************************
# 代码策略
#******************************************************************
prices = d
# 购买并持有
data$weight\[
# 均值回归(MR)策略
rsi2 = bt.apply.ma
# 趋势跟踪(TF)策略
sma.short = apply.matrix(prices, SMA, 50)
sma.long = apply.matrix(prices, SMA, 200)
data$weight\[\] = NA
#*****************************************************************
# 创立报告
#******************************************************************
plotb
接下来,让咱们创立一个基于历史市场波动性在均值回归和趋势追随策略之间切换的策略。
#*****************************************************************
#依据历史市场稳定状况进行区制转移
#应用 252 天的回溯期按百分比对以后稳定率进行分类
#******************************************************************
# #区制转移历史
data$weight\[\] = NA
data$weight\[\] = iif(vol.rank > 0.5,
iif(rsi2 <
l=capital, trade.summary=T)
#*****************************************************************
#创立报告
#******************************************************************
report(regime, mr)
接下来,咱们创立一个 GARCH(1,1)稳定率预测。
有一些 R 包能够适宜 GARCH 模型。我将思考 tseries 软件包中的 garch 函数和 fGarch 软件包中的 garchFit 函数。tseries 软件包中的 garch 函数速度很快,但并不总能找到解决方案。fGarch 软件包中的 garchFit 函数速度较慢,但收敛得更加统一。为了演示 garch 函数和 garchFit 函数之间的速度差别,我创立了一个简略的基准测试:
#*****************************************************************
# 基准化 Garch 算法
#******************************************************************
temp = garchSim(n=252)
test1 <- function() {fit1=garch(temp, order = c(1, 1), control = garch.control(trace = F))
}
test2 <- function() {fit2=garchFit(~ garch(1,1), data = temp, include.mean=FALSE, trace=F)
}
benchmark(test1(),
test2(),
columns=
)
garchFit 函数均匀比 garch 函数慢 6 倍。因而,要预测稳定率,我将尝试在找到解决方案时应用 garch 函数,否则将尝试应用 garchFit 函数。
#*****************************************************************
#应用 Garch 预测稳定率
#来自 tseries 的 garch 速度很快,然而并不能始终收敛
#fGarch 的 garchFit 速度较慢,但收敛统一
#******************************************************************
load.packages('tseries,fGarch')
# Sigma\[t\]^2 = w + a* Sigma\[t-1\]^2 + b*r\[t-1\]^2
garch.predict.one.day <- function(fit, r1) {hl = tail( fitted(fit)\[,1\] ,1)
# 与预测雷同(fit, n.ahead=1, doplot=F)\[3\]
garchFit.predict.one.day <- funct
garch.vol = NA * hist.vol
for(i in (252+1):nperiods
err ) FALSE, warning=function(warn) FALSE )
if( !is.logical( fit
garch(1,1), data = temp, include.mean=FALSE, trace=F),
error=function(err) FALSE, warning=function(warn) FALSE )
if(!is.logical(
当初,让咱们创立一个基于 GARCH(1,1)稳定率预测在均值回归和趋势跟踪策略之间切换的策略。
#*****************************************************************
# 应用 Garch 进行区制转移
#******************************************************************
vol.rank = percent.rank(SMA(percent.rank(garch.v
# 区制转移 Garch
data$weight\[\] = NA
data$weight\[\] = iif(vol.rank > 0.5,
iif(rsi2 < 50, 1, -1),
iif(sma.short > sma.l
#*****************************************************************
#创立报告
#******************************************************************
report(regime.switching)
应用 GARCH(1,1)稳定率预测的转换策略要比应用历史稳定率的策略稍好。
您能够采纳多种不同的办法将预测合并到模型和交易策略中。R 有十分丰盛的软件包集,用于建模和预测工夫序列。
最受欢迎的见解
1.HAR-RV- J 与递归神经网络(RNN)混合模型预测和交易大型股票指数的高频稳定率
2.R 语言中基于混合数据抽样 (MIDAS) 回归的 HAR-RV 模型预测 GDP 增长回归的 HAR-RV 模型预测 GDP 增长 ”)
3.稳定率的实现:ARCH 模型与 HAR-RV 模型
4.R 语言 ARMA-EGARCH 模型、集成预测算法对 SPX 理论稳定率进行预测
5.GARCH(1,1),MA 以及历史模拟法的 VaR 比拟
6.R 语言多元 COPULA GARCH 模型工夫序列预测
7.R 语言基于 ARMA-GARCH 过程的 VAR 拟合和预测
8.matlab 预测 ARMA-GARCH 条件均值和方差模型
9.R 语言对 S&P500 股票指数进行 ARIMA + GARCH 交易策略