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

动量和马科维茨Markowitz投资组合(Portfolio)模型实现

拓端数据部落 2023-01-11
704

全文链接:http://tecdat.cn/?p=17931 


动量和马科维茨投资组合模型使 均值方差优化 组合成为可行的解决方案。通过建议并测试点击文末“阅读原文”获取完整代码数据



相关视频



  • 增加最大权重限制

  • 增加目标波动率约束

来控制 均值方差最优化的解。

下面,我将查看8个资产的结果:

首先,让我们加载所有历史数据

#*****************************************************************  
# 加载历史数据

#*****************************************************************


load.packages('quantmod')

# 加载保存的原始数据
#
load('raw.Rdata')



getSymbols.extra(N8.tickers, src = 'yahoo', from = '1970-01-01', env = data, raw.data =
for(i in data$symbolnames) data[[i]] = adjustOHLC(data[[i]]

接下来,让我们测试函数

#*****************************************************************  
# 运行测试,每月数据
#*****************************************************************


plot(scale.one(data$prices))



点击标题查阅往期内容


R语言Markowitz马克维茨投资组合理论分析和可视化


左右滑动查看更多


01

02

03

04




prices = data$prices  

plotransition(res[[1]]['2013::'])

接下来,让我们创建一个基准并设置用于所有测试。

#*****************************************************************  
# 建立基准
#*****************************************************************

models = list()

commission = list(cps = 0.01, fixed = 10.0, percentage = 0.0)

data$weight[] = NA

model = brun(data, clean.signal=T,

接下来,让我们获取权重,并使用它们来进行回测

#*****************************************************************  
#  转换为模型结果
#*****************************************************************

CLA = list(weight = res[[1]], ret = res[[2]], equity = cumprod(1 + res[[2]]), type = "weight")

obj = list(weights = list(CLA = res[[1]]), period.ends

我们可以复制相同的结果

#*****************************************************************  
#进行复制
#*****************************************************************

weight.limit = data.frame(last(pric
obj = portfoli(data$prices,
periodicity = 'months', lookback.len = 12, silent=T,
const.ub = weight.limit,urns,1) + colSums(last(hist.returns,3)) +
colSums(last(hist.returns,6)) + colSums(last(hist.returns,12))) 22
ia
},
min.risk.fns = list(
)

另一个想法是使用Pierre Chretien的平均输入假设

#*****************************************************************  
# 让我们使用Pierre的平均输入假设
#*****************************************************************

obj = portfolio(data$prices,
periodicity = 'months', lookback.len = 12, si
create.ia.fn =  create.(c(1,3,6,12), 0),
min.risk.fns = list(
TRISK.AVG = target.risk.portfolio(target.r
)

最后,我们准备看一下结果

#*****************************************************************  
#进行回测
#*****************************************************************


plotb(models, plotX = T, log = 'y', Left

layout(1)  
barplot(sapply(models, turnover, data)

使用平均输入假设会产生更好的结果。

我想应该注意的主要观点是:避免盲目使用优化。相反,您应该使解决方案更具有稳健性。





本文摘选R语言动量和马科维茨Markowitz投资组合(Portfolio)模型实现,点击“阅读原文”获取全文完整资料。





点击标题查阅往期内容

Python风险价值计算投资组合VaR、期望损失ES
极值理论 EVT、POT超阈值、GARCH 模型分析股票指数VaR、条件CVaR:多元化投资组合预测风险测度分析
Fama French (FF) 三因子模型和CAPM模型分析股票市场投资组合风险/收益可视化
R语言Fama-French三因子模型实际应用:优化投资组合
R语言动量和马科维茨Markowitz投资组合(Portfolio)模型实现
Python计算股票投资组合的风险价值(VaR)
R语言Markowitz马克维茨投资组合理论分析和可视化
R语言中的广义线性模型(GLM)和广义相加模型(GAM):多元(平滑)回归分析保险资金投资组合信用风险敞口
Python基于粒子群优化的投资组合优化研究
多均线趋势策略玩转股票投资
主成分分析(PCA)原理及R语言实现及分析实例
偏最小二乘回归(PLSR)和主成分回归(PCR)
R语言高维数据的主成分pca、 t-SNE算法降维与可视化分析案例报告
使用Python和Keras进行主成分分析、神经网络构建图像重建
R语言中的岭回归、套索回归、主成分回归:线性模型选择和正则化


欲获取全文文件,请点击左下角“阅读原文”。


欲获取全文文件,请点击左下角“阅读原文”。

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

评论