拓端tecdat|拓端tecdat|R语言资产配置策略量化模型(改进的移动平均线策略动态回测)

原文链接:http://tecdat.cn/?p=23141 定量战术资产配置策略(QATAA)模型是使用10个月的移动平均线作为过滤器。如果在月末,资产的价格高于移动平均线,就留在市场中;否则就会离开市场。
10个月有什么特别之处;为什么10个月对所有资产和区制都是不变的。我提出了根据历史波动率来调整移动平均线回溯的想法。也就是说,在高波动时期,较短的移动平均线会让我们更快地离开市场,而在低波动时期,较长的移动平均线会让我们留在市场中。但是,这导致了更差的结果。
我花了一些时间分析基础的10个月移动平均线策略,看到了相当大的损失,简单的解决方法是在10个月移动平均线周围使用+/-5%的区间,以减少损失,增加收益。
下面我将展示这个概念是如何运作的。

#***************************************************************** # 加载历史数据 #*****************************************************************# 加载保存的代理原始数据tickers = ' SPY CASH = SHY + TB3Y '#***************************************************************** # 用来显示信号的辅助函数 #*****************************************************************signal = iif(model == 'base', prices > sma,#基于信号创建一个模型 share(data, clean.signal=T, silent=T)# 创建一个图来显示信号plot(p\[dates\] ,type='l', plotX=F, x.highlight = highlight)

拓端tecdat|拓端tecdat|R语言资产配置策略量化模型(改进的移动平均线策略动态回测)
文章图片

visuali('2000::2001')

拓端tecdat|拓端tecdat|R语言资产配置策略量化模型(改进的移动平均线策略动态回测)
文章图片

延迟进场/退场的好处是交易量少,成交量小。
#***************************************************************** # 设置 #*****************************************************************models = list()#***************************************************************** # SPY #******************************************************************run(data)#***************************************************************** #SPY + 10个月过滤器 #****************************************************************** apply(prices, SMA, 10*22) iif(prices > sma, 1, 0) CASH = 1 - ifna( ifna(SPY), 0)#***************************************************************** # SPY+10个月+5/-5%过滤器 #****************************************************************** (cross(prices, sma * 1.05), (prices, sma * 0.95), 0, NA)

我还包括了我对动态回测移动平均线的尝试,但在这种形式下,并不实用。
#***************************************************************** #SPY + 基于波动率的动态过滤器 #****************************************************************** vol = matrix(ret, SD, n = 21) if(vol.rank < 0.5, bt(prices, SMA, 10\*22),matrix(prices, SMA, 1\*22))data$w#***************************************************************** # SPY+基于波动率的动态过滤器;多个级别 #****************************************************************** nbreaks = 5sma.cash = sma * NA for(i in 1:nbreaks) { temp = data(matrix(prices, SMA, (nbreaks - i + 1)* 2 *22)}#***************************************************************** # 报告 #***************************************************************** plot(models)

拓端tecdat|拓端tecdat|R语言资产配置策略量化模型(改进的移动平均线策略动态回测)
文章图片

SPY
SPY.CASH
SPY.CASH.BAND
SPY.CASH.VOL.SIMPLE
SPY.CASH.VOL
Period
Jan1993 - Feb2015
Jan1993 - Feb2015
Jan1993 - Feb2015
Jan1993 - Feb2015
Jan1993 - Feb2015
Cagr
9.4
9.9
12.1
9.2
8
DVR
41.9
78.3
91.4
83.8
74
Sharpe
56.7
83.6
97.1
90.8
77.1
R2
73.9
93.7
94.1
92.3
96
Win.Percent
100
41.1
100
45.7
43.3
Avg.Trade
623.7
1.9
27.6
0.7
0.7
MaxDD
-55.2
-20.1
-19.1
-15.9
-22.3
Num.Trades
1
146
12
302
254
barplot(turnover, data)

拓端tecdat|拓端tecdat|R语言资产配置策略量化模型(改进的移动平均线策略动态回测)
文章图片

接下来,让我们把相同的带状策略应用于TAA模型。
#加载保存的代理原始数据data <- new.env()getSymbols(tickers, src = 'https://www.it610.com/article/yahoo')#***************************************************************** #设置 #***************************************************************** universe = prices > 0models = list()#***************************************************************** # 基准 #***************************************************************** weight\[\] = NA#***************************************************************** #The \[战术性资产配置策略的量化方法(QATAA) Mebane T. Faber\](http://mebfaber.com/timing-model/) #\[SSRN \](http://papers.ssrn.com/sol3/papers.cfm?abstract_id=962461) #*****************************************************************weight = iif(prices > sma, 20/100, 0) run(data)#***************************************************************** #bands替代方案 移动平均 #***************************************************************** signal = if(cross(prices, sma * 1.05), 1, iif(cross.dn(prices, sma * 0.95), 0, NA))#***************************************************************** # 报告 #***************************************************************** #performance(models, T)

拓端tecdat|拓端tecdat|R语言资产配置策略量化模型(改进的移动平均线策略动态回测)
文章图片

SP500
EW
Model
Model.B
Period
Jun1996 - Feb2015
Jun1996 - Feb2015
Jun1996 - Feb2015
Jun1996 - Feb2015
Cagr
8.2
8.6
9.8
10.6
DVR
28.7
64
117.4
127.9
Sharpe
49.2
69.3
120.4
132.7
R2
58.4
92.4
97.5
96.5
Win.Percent
100
59.9
64.4
64.6
Avg.Trade
335.7
0.1
0.2
0.2
MaxDD
-55.2
-47.5
-17.1
-13.1
Num.Trades
1
1113
930
887
layout(1) barplot(sapply(models,turnover)

拓端tecdat|拓端tecdat|R语言资产配置策略量化模型(改进的移动平均线策略动态回测)
文章图片

带状逻辑很容易实现,增加了收益。
拓端tecdat|拓端tecdat|R语言资产配置策略量化模型(改进的移动平均线策略动态回测)
文章图片

最受欢迎的见解
1.在python中使用lstm和pytorch进行时间序列预测
2.python中利用长短期记忆模型lstm进行时间序列预测分析
3.使用r语言进行时间序列(arima,指数平滑)分析
4.r语言多元copula-garch-模型时间序列预测
5.r语言copulas和金融时间序列案例
6.使用r语言随机波动模型sv处理时间序列中的随机波动
7.r语言时间序列tar阈值自回归模型
8.r语言k-shape时间序列聚类方法对股票价格时间序列聚类
【拓端tecdat|拓端tecdat|R语言资产配置策略量化模型(改进的移动平均线策略动态回测)】9.python3用arima模型进行时间序列预测

    推荐阅读