原文链接:http://tecdat.cn/?p=19252

原文出处:拓端数据部落公众号

概要

有人已经表示有必要在战术资产配置(Tactical Asset Allocation, 简称TAA)策略中使用共同基金而不是ETF。不是使用半月更新(每月两次),而是每季度更新,因为许多平台不允许更频繁地交易共同基金。因此,我们着手开发共同基金的TAA策略。

对于此TAA策略,我从八个不同的资产类别中选择了八个共同基金。每个共同基金的要求都包括与ETF的高度相关性,因此ETF可以根据需要替换共同基金。

我使用回测结果开发共同基金的战术策略。尽管共同基金的历史可以追溯到1996年及以后,但回测只能追溯到2003年。

每个季度选择排名最高的共同基金的指标分别为5个月和20天的收益率,每个加权50%。必须通过3个月的移动平均线才能在任何给定时期内选择排名最高的共同基金。
#*****************************************************************
# 载入历史数据
#*****************************************************************load.packages('quantmod')data <- new.env()
getSymbols.extra(tickers, src = 'yahoo', from = '1970-01-01', env = data, set.symbolnames = T, auto.assign = T)
for(i in data$symbolnames) data[[i]] = adjustOHLC(data[[i]], use.Adjusted=T)# 检查数据plota.matplot(scale.one(data$prices)

#*****************************************************************
# 设置
#*****************************************************************
data$universe = data$prices > 0frequency = 'quarters'
# 查找期末,可以是“周”,“月”,“季度”,“年”commission = list(cps = 0.01, fixed = 10.0, percentage = 0.0)#价格滞后1天#prices = mlag(prices)
#*****************************************************************
# 每个重新平衡期间权重相等#******************************************************************data$weight[period.ends,] = ntop(prices[period.ends,], n)

策略:

根据每个季度选择排名最高的资产,5个月和20天的总收益率各占50%。必须通过过滤器才能选择排名第一的共同基金,在任何给定期间内。过滤器是3个月的移动平均线。

# 计算3个月移动平均值sma = bt.apply.matrix(prices, SMA, 3*21)# 如果价格跌破3个月移动平均线,请套现go2cash = prices <= smago2cash.d = ifna(go2cash, T)# 计算几个月的移动平均值sma = bt.apply.matrix(prices, SMA, 3, periodicity='months')go2cash = prices <= smago2cash.m = ifna(go2cash, T)# 以下所有逻辑均在period.ends完成#*****************************************************************
# 排名总分#*****************************************************************
# 分配# 如果资产高于其3个月移动平均值,则进行分配weight = iif(go2cash.d, 0, target.allocation)# 否则,它的权重分配给现金data$weight[period.ends,] = weight# 相同,但使用每月移动平均线触发data$weight[period.ends,] = weight#*****************************************************************
# 将总分的每个部分排在第一位#*****************************************************************
# 目标分配# 如果资产高于其3个月移动平均线,则进行分配weight = iif(go2cash.d, 0, target.allocation)#否则,它的权重分配给现金weight$CASH = 1 - rowSums(weight)data$weight[] = NAdata$weight[period.ends,] = weight#相同,但使用每月移动平均线触发现金weight = iif(go2cash.m, 0, target.allocation)
weight$CASH = 1 - rowSums(weight)#*****************************************************************
# 报告
#*****************************************************************plotbt(models)

print(plotstrategy(models))
ew   QTS.d   QTS.m   QTS.RANK.d  QTS.RANK.m
时期  Jun1996 - Mar2015   Jun1996 - Mar2015   Jun1996 - Mar2015   Jun1996 - Mar2015   Jun1996 - Mar2015
复合增长率   8.13    16.08   19.32   16.57   20.12
夏普比率    0.67    0.91    1.07    0.96    1.15
DVR 0.61    0.76    0.81    0.82    0.86
波动性 12.89   18.28   17.99   17.54   17.32
MaxDD   -44.61  -26.78  -26.78  -25 -19.39
AvgDD   -1.55   -3.09   -3.01   -2.87   -2.77
风险价值    -1.16   -1.79   -1.75   -1.71   -1.69
条件风险价值  -1.96   -2.82   -2.72   -2.71   -2.61
Exposure    99.98   99.98   99.98   99.98   99.98

假设每个季度只选择一个最优基金,那么该策略对输入参数很敏感。

最后,让我们查看各个时期:

dates.range = c('2002-12-31::2014-08-15', '::2002-12-31', '2014-08-15::')print(plot(models1))
}

总之,本文开发的共同基金策略可能对那些必须使用共同基金且只能按季度交易的投资者有所帮助。ETF重复了这种策略,因此,希望减少交易(仅按季度)的投资者可能也会发现此策略有用。


最受欢迎的见解

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仿真优化市场风险

拓端tecdat|R语言资产配置: 季度战术资产配置策略研究相关推荐

  1. 拓端tecdat|R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险

    最近我们被客户要求撰写关于冠心病风险的研究报告,包括一些图形和统计输出. 相关视频:R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险 逻辑回归Logistic模型原理和R语言分类预测冠 ...

  2. 拓端tecdat|R语言向量误差修正模型 (VECMs)分析长期利率和通胀率影响关系

    最近我们被客户要求撰写关于向量误差修正模型的研究报告,包括一些图形和统计输出. 向量自回归模型估计的先决条件之一是被分析的时间序列是平稳的.但是,经济理论认为,经济变量之间在水平上存在着均衡关系,可以 ...

  3. 拓端tecdat|R语言用LOESS(局部加权回归)季节趋势分解(STL)进行时间序列异常检测

    最近我们被客户要求撰写关于LOESS(局部加权回归)的研究报告,包括一些图形和统计输出. 这篇文章描述了一种对涉及季节性和趋势成分的时间序列的中点进行建模的方法.我们将对一种叫做STL的算法进行研究, ...

  4. 拓端tecdat|R语言线性回归和时间序列分析北京房价影响因素可视化案例

    最近我们被客户要求撰写关于北京房价影响因素的研究报告,包括一些图形和统计输出. 目的 房价有关的数据可能反映了中国近年来的变化: 人们得到更多的资源(薪水),期望有更好的房子 人口众多 独生子女政策: ...

  5. 拓端tecdat荣获掘金社区入驻新人奖

    2021年7月,由掘金发起了"入驻成长礼"颁奖活动.本次活动邀请到知名开发者.服务机构代表等业界人士. 据了解,掘金社区"新入驻创作者礼"主要对已经积累了一定历 ...

  6. 拓端tecdat荣获2022年度51CTO博主之星

    相信技术,传递价值,这是51CTO每一个技术创作者的动力与信念,2022 年度,拓端tecdat 作为新锐的数据分析咨询公司,在51CTO平台上,不断的输出优质的技术文章,分享前沿创新技术,输出最佳生 ...

  7. 拓端tecdat|bilibili视频流量数据潜望镜

    最近我们被客户要求撰写关于bilibili视频流量的研究报告,包括一些图形和统计输出. 最新研究表明,中国有超过7亿人在观看在线视频内容.Bilibili,被称为哔哩哔哩或简称为B站,是中国大陆第二个 ...

  8. R语言量化技术分析的百度指数关注度交易策略可视化

    全文链接:http://tecdat.cn/?p=31556 传统的经济理论认为股票市场是有效的,价格波动是对市场信息的反应,投资者能够及时处理所有实时信息并做出最优决策(点击文末"阅读原文 ...

  9. R语言广义加性模型GAMs分析温度、臭氧环境数据绘制偏回归图与偏残差图

    最近我们被客户要求撰写关于广义加性模型的研究报告,包括一些图形和统计输出. 视频:R语言广义相加模型(GAM)在电力负荷预测中的应用 拓端tecdat:R语言广义相加模型(GAM)在电力负荷预测中的应 ...

  10. R语言中的广义线性模型(GLM)和广义相加模型(GAM):多元(平滑)回归分析保险资金投资组合信用风险敞口

    最近我们被客户要求撰写关于信用风险敞口的研究报告,包括一些图形和统计输出. 在之前的课堂上,我们已经看到了如何可视化多元回归模型(带有两个连续的解释变量).在此,目标是使用一些协变量(例如,驾驶员的年 ...

最新文章

  1. 获取某一目录之下所有文件的大小
  2. shell 获取字符串/文件的MD5值
  3. android 网络编程--URL获取数据/图片
  4. 17.Spark第1部分
  5. 永洪报表工具_该怎么选BI工具
  6. C语言 枚举,进制,原码,反码,补码,移码,结构体
  7. 检测和语义分割_分割和对象检测-第2部分
  8. 一个人成为废材的9大原因
  9. 生日快乐程序员的浪漫代码_python告白代码,只属于程序员的浪漫
  10. java删除指定文件_java删除指定目录下指定格式文件的方法
  11. 通过xib创建控制器
  12. sqlserver2000中字符串类型的日期如何比较大小
  13. Unity 编辑器启动时运行自定义编辑器脚本
  14. 微信小程序-基于云开发 CMS + Vant Weapp 电商 Demo 来了!
  15. 数学图形之双曲抛物面
  16. 詹森不等式的积分形式
  17. python导入上一级目录自定义模块
  18. 网站漏洞修复之最新版本UEditor漏洞
  19. 如何在飞腾平台使用4G模块拨号上网
  20. 笔记本双系统安装Ubuntu 20.04.3 LTS没有WIFI的解决方法

热门文章

  1. MyEclipse2014安装aptana插件
  2. PXE无人值守安装linux后无法启动图形
  3. 刘晓攀:连滚带爬看完《你的知识需要管理》
  4. 第二季-专题17-触摸屏显身手
  5. 数据-第10课-循环链表
  6. 凸优化有关的数值线性代数知识五:作业题
  7. eclipse中支持python
  8. mysql中alter语句卡死的一个解决方法
  9. 为何超四成人反感大数据应用
  10. 《Core Data应用开发实践指南》一2.15 小结