相信大家都听说过股票和债券的多元化投资组合。改进的股票配对交易策略基本上使用了一种前进的方法(参考文章中的概念),即最大化夏普比率,偏向于波动率而不是收益率。也就是说,它使用72天的移动窗口来最大化投资组合的不同权重配置之间的总收益,标准差提高到52的幂。说得通俗一点,在1的幂数下,这是基本的夏普比率,在0的幂数下,只是一个动量最大化的算法。
这个策略的过程很简单:每个月重新平衡SPY和TLT之间5%的倍数,之前最大化了以下数量(在72天窗口中返回波动率^2.5)。
以下是获取数据和计算必要数据的代码:
require(quantmod)
getSymbols(c("SPY", "TLT"), from="1990-01-01")
for(i in 1:21)
weightSPY <- (i-1)*.05
config <- Return.portfolio(R = returns, weights=c(weightSPY, weightTLT)
period <- 72
接下来,建立权重的代码:
weights <- t(apply(monthlyModSharpe, 1, findMax))
weights[is.na(weights)] <- 0
也就是说,在每个重新平衡的日期(每月的月末),简单地采用使每月修改的夏普比率计算最大化的设置。接下来是收益表现:
Performance(stratRets)
结果如下:
具有以下股票曲线:
并不完美,但相比之下,它的成分如何呢,我们来看看。
apply.yearly(Components, Return.cumulative)
以下是一些常见的统计数据:
简而言之,这一策略的表现似乎远远好于上述两种成分。我们来看看股票曲线的比较是否反映了这一点。
事实上,虽然它确实在危机中出现了下跌,但当时这两个工具都在下跌,所以看起来这个策略在糟糕的情况下取得了最好的效果.以下是年度收益。
yearly(Return.cumulative)
然而,从2002年整体上看,虽然该策略很少会像两个中更好的表现一样,但它总是比两个中更差的表现出色--不仅如此,即使在一个表现差的时候,该策略在回测的每一年中都取得了积极的表现,例如2008年的SPY,以及2009年和2013年的TLT。以下是SPY在策略中的权重。
weightSPY <- do.call(rbind, weightSPY)
TimeSeries(alig, date.format="%Y", ylab="SPY权重", main="SPY-TLT配对中SPY的权重")
股票数据获取及整理
## [1] "GZMT" "MSYH"
组合收益表现结果如下:
加入比较项-非组合下的单只表现
年化收益率比较
通过累积收益率、日收益率和最大回撤率,以及年化收益率比较,可以发现采用优化方法的投资组合明显优于传统的投资策略。
现在,虽然这对某些人来说可能是一个独立的策略,但在我看来,动态地重新加权两个具有负相关性的收益流,与它们形成的成分相比,可能会产生一些较好的结果。此外,模拟实际组合收益率所采用的方法很有趣,不是简单地依靠一个数字来总结两种工具之间的关系,毫无疑问,这种方法作为一种一般的前进方法,有着广泛的应用。
最受欢迎的见解
1.用机器学习识别不断变化的股市状况—隐马尔科夫模型(HMM)的应用
2.R语言GARCH-DCC模型和DCC(MVT)建模估计
3.R语言实现 Copula 算法建模依赖性案例分析报告
4.R语言COPULAS和金融时间序列数据VaR分析
5.R语言多元COPULA GARCH 模型时间序列预测
6.用R语言实现神经网络预测股票实例
7.r语言预测波动率的实现:ARCH模型与HAR-RV模型
8.R语言如何做马尔科夫转换模型markov switching model
9.matlab使用Copula仿真优化市场风险