原文链接: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)
visuali('2000::2001')
提早进场 / 登场的益处是交易量少,成交量小。
#*****************************************************************
# 设置
#*****************************************************************
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 = 5
sma.cash = sma * NA
for(i in 1:nbreaks) {temp = data(matrix(prices, SMA, (nbreaks - i + 1)* 2 *22)
}
#*****************************************************************
# 报告
#*****************************************************************
plot(models)
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)
接下来,让咱们把雷同的带状策略利用于 TAA 模型。
# 加载保留的代理原始数据
data <- new.env()
getSymbols(tickers, src = 'yahoo')
#*****************************************************************
# 设置
#*****************************************************************
universe = prices > 0
models = 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)
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)
带状逻辑很容易实现,减少了收益。
最受欢迎的见解
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 工夫序列聚类办法对股票价格工夫序列聚类
9.python3 用 arima 模型进行工夫序列预测