暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Garch波动率预测的区制转移交易策略

拓端数据部落 2022-06-30
285

原文链接: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语言中的时间序列分析模型:ARIMA-ARCH GARCH模型分析股票价格


左右滑动查看更多


01

02

03

04




有一些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有非常丰富的软件包集,用于建模和预测时间序列。




本文摘选R语言基于Garch波动率预测的区制转移交易策略,点击“阅读原文”获取全文完整资料。





点击标题查阅往期内容

金融时间序列模型ARIMA 和GARCH 在股票市场预测应用
时间序列分析模型:ARIMA-ARCH GARCH模型分析股票价格
R语言ARIMA-GARCH波动率模型预测股票市场苹果公司日收益率时间序列
R语言中的时间序列分析模型:ARIMA-ARCH GARCH模型分析股票价格
R语言多元Copula GARCH 模型时间序列预测
python中的copula:Frank、Clayton和Gumbel copula模型估计与可视化
R语言中的copula GARCH模型拟合时间序列并模拟分析
matlab使用Copula仿真优化市场风险数据VaR分析
R语言多元Copula GARCH 模型时间序列预测
R语言Copula函数股市相关性建模:模拟Random Walk(随机游走)
R语言实现 Copula 算法建模依赖性案例分析报告
R语言ARMA-GARCH-COPULA模型和金融时间序列案例
R语言基于copula的贝叶斯分层混合模型的诊断准确性研究
R语言COPULA和金融时间序列案例
matlab使用Copula仿真优化市场风险数据VaR分析
matlab使用Copula仿真优化市场风险
R语言多元CopulaGARCH模型时间序列预测
R语言Copula的贝叶斯非参数MCMC估计
R语言COPULAS和金融时间序列
R语言乘法GARCH模型对高频交易数据进行波动性预测
R语言GARCH-DCC模型和DCC(MVT)建模估计
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语言ARMA-GARCH-COPULA模型和金融时间序列案例





文章转载自拓端数据部落,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论