乐趣区

关于数据挖掘:R语言马科维茨Markowitz均值方差风险投资模型分析最优投资组合数据预期收益率可视化

全文链接:https://tecdat.cn/?p=33146

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

证券及其它危险资产的投资首先须要解决的是两个外围问题:即预期收益与危险。那么如何测定组合投资的危险与收益和如何均衡这两项指标进行资产调配是市场投资者迫切需要解决的问题。正是在这样的背景下,在 50 年代和 60 年代初,马科维茨实践应运而生。

该理论依据以下几个假如:

  1. 投资者在思考每一次投资选择时,其根据是某一持仓工夫内的证券收益的概率分布。
  2. 投资者是依据证券的冀望收益率估测证券组合的危险。
  3. 投资者的决定仅仅是根据证券的危险和收益。
  4. 在肯定的危险程度上,投资者冀望收益最大;绝对应的是在肯定的收益程度上,投资者心愿危险最小。

依据以上假如,马科维茨确立了证券组合预期收益、危险的计算方法和无效边界实践,建设了资产优化配置的均值-方差模型(容许放空):

若不容许放空,则为:

随着计算机技术的倒退,利用古代统计学和编程语言进行数据分析和投资组合优化变得越来越广泛和容易。R 语言作为一种功能强大的数据分析工具,提供了丰盛的包和函数来反对马科维茨均值 - 方差模型的施行和可视化。

本论文旨在帮忙客户应用 R 语言实现马科维茨均值 - 方差模型,并通过可视化形式展现最优投资组合的预期收益率随工夫变动的趋势。

4 个类别的股票收益率数据:

类别 1 和类别 2

读取数据、进行投资组合分析,并绘制预期收益率随工夫变动的图表。


X0 = read.csv("sample1.csv")

读取名为 ”sample1.csv” 的 CSV 文件,并将其存储在 X0 变量中。该文件蕴含了用于投资组合分析的数据。


nrow(X0)

计算 X0 数据集的行数,即样本数量。


library(fPortfolio) 
library(tseries)

提供了进行投资组合分析和工夫序列剖析所需的函数和工具。

col = sample(2:ncol(X0), 5)

从 X0 数据集中随机抉择 5 个列,将其索引存储在变量 col 中。这些列将用于构建投资组合。


X = timeSeries(X0[, col])

创立一个工夫序列对象 X,其中蕴含 X0 数据集的选定列。X 将用于进行投资组合分析。



Spec

MV Efficient Portfolio 模型是指均值 - 方差效率组合模型(Mean-Variance Efficient Portfolio Model)。

该模型是由美国经济学家马科维茨(Harry Markowitz)于 1952 年提出的,在投资组合实践中被广泛应用。

该模型的核心思想是通过最大化预期回报与最小化投资危险之间的衡量,构建出在给定危险程度下收益最高的投资组合。

具体而言,该模型通过计算不同资产在组合中的权重,以及资产之间的相关性,进而确定最优投资组合。其中,均值是示意收益的期望值,方差则是掂量投资组合的危险。

在 MV Efficient Portfolio 模型中,投资者能够依据本身的危险承受能力和预期收益,抉择最优的投资组合。通过将不同资产在投资组合中的权重调整,能够实现在给定危险范畴内最大化投资回报。

然而,MV Efficient Portfolio 模型也存在一些局限性,例如,它基于历史数据来计算预期回报和危险,并假如投资者的决策行为是感性的。同时,它也没有思考到市场非理性行为和不确定性的因素。

尽管如此,MV Efficient Portfolio 模型依然是投资组合构建和治理中的重要工具,为投资者提供了一种系统化的办法来优化投资组合,均衡危险和回报。

创立了一个对象 Spec,并通过平均值设置了指标收益率。Spec 蕴含了投资组合分析的规格和参数。通过 mean(colMeans(X)) 计算出选定列的均匀收益率,并将其设为指标收益率。

Constraints = "Long Only"
Constraints

定义了一个约束条件 ”Long Only”,示意投资组合只能持有多头头寸(不能卖空)。

X = na.omit(X)

删除 X 中蕴含缺失值的行。

eo = efficientPortfolio(X, Spec, Constraints)
eo

用 X、Spec 和 Constraints 作为参数,来执行投资组合优化剖析,并将后果存储在 eo 变量中。


jo = getTrgtetrn(eo)
fo = gergRsk(eo)
qo = geeihts(eo)
qo

别离将 eo 对象的指标收益率、指标危险和资产权重存储在 jo、fo 和 qo 变量中。

ex = t(too) * qo
ex

计算投资组合预期收益率 ex,通过矩阵乘法将 too 转置后与权重 qo 相乘。


exr = apply(ex, 2, sum)
exr

对 ex 的每一列求和,失去预期收益率的向量 exr。

以上蕴含了读取数据、投资组合分析的过程。

对第二个类数据集进行剖析:

读取名为 ”sample2.csv” 的 CSV 文件,并将其存储在变量 X0 中。而后,计算 X0 数据集的行数,并加载了两个 R 包:fPortfolio 和 tseries。最初,依据随机抉择的列索引,创立一个工夫序列对象 X,其中蕴含了 X0 数据集的选定列。

X0 = read.csv("sample2.csv")

读取名为 ”sample2.csv” 的 CSV 文件,并将其存储在 X0 变量中。该文件蕴含了用于后续操作的数据。

nrow(X0)

计算 X0 数据集的行数,即样本数量。

library(fPofoio) 
library(tsrie)

加载了两个 R 包。它们提供了进行投资组合分析和工夫序列剖析所需的函数和工具。

col = sample(2:ncol(X0), 5)

从 X0 数据集中随机抉择 5 个列,将这些列的索引存储在变量 col 中。这些列将用于构建工夫序列对象 X。

X = timeSeries(X0[, col])

创立一个工夫序列对象 X,其中蕴含了 X0 数据集的选定列。X 将用于后续操作。

这段代码蕴含了一个循环,每次循环都会进行投资组合分析并绘制预期收益率随工夫变动的折线图。上面是对应代码的解释:

Spec = potolSpec()

创立一个对象 Spec,示意投资组合的规格和参数。


setTargetReturn(Spec) = mean(colMeans(X))

设置 Spec 对象的指标收益率为选定列的均匀收益率。

Spec

输入 Spec 对象,显示投资组合的规格和参数。

Constants = "Long Only"

定义一个约束条件 ”Long Only”,示意投资组合只能持有多头头寸(不能卖空)。


Constraints

输入约束条件,显示约束条件的内容。


X = na.omit(X)

删除 X 中蕴含缺失值的行。


eo = efficientPortfolio(X, Spec, Constraints); eo

执行投资组合优化剖析,并将后果存储在 eo 变量中。


jo = getTargetReturn(eo)

获取 eo 对象的指标收益率,并将其存储在 jo 变量中。


fo = gtTrgeRsk(eo)

获取 eo 对象的指标危险,并将其存储在 fo 变量中。

qo = geWigts(eo); qo

获取 eo 对象的资产权重,并将其存储在 qo 变量中。

抉择 X 的最初 30 行(即最近 30 个工夫点)作为变量 too 存储。


ex = t(too) * qo; ex

将 too 转置后与权重 qo 相乘,失去投资组合预期收益率 ex。

对 ex 的每一列求和,失去预期收益率的向量 exr。


pt = 1:30

创立一个长度为 30 的向量 pt,用于示意横轴上的日期。

lines(exr, lty = 1, col = 2, lwd = 1)

应用 lines 函数绘制 exr 的折线图,并指定线型、色彩和线宽。

整个代码段是一个循环,会反复执行上面的代码块 100 次:


col = sample(1:ncol(X0), 5)
X = timeSeries(X0[,col])
# 两头省略局部雷同的代码...

在每次循环中,随机抉择 5 个列,创立工夫序列对象 X,进行投资组合分析,并绘制预期收益率随工夫变动的折线图。

把两个类别的投资组合预期收益率进行比照

类别 1 和 3

setTargetReturlMeans(X))  
Spec
eo=efficientPo
X0=read.csv("sample3.csv")

setTargetReturn(S
Spec
eo=efficientPo

把两个类别的投资组合预期收益率进行比照


 plot(pt,exr ,xlab="date",ylab="expected return of P2 and P3",pch=16,type="l") 
lines(exr,lty=1, lwd=1,col=2) 

类别 2 和 3

类别 2:

setTargetReturn(Spec)=mean(colMeans(X))  
Spec

MV Efficient Portfolio 模型

类别 3:

把两个类别的投资组合预期收益率进行比照

类别 1 和 4

eo=efficientPortf

类别 1:

类别 2:

把两个类别的投资组合预期收益率进行比照


最受欢迎的见解

1.[](https://tecdat.cn/r%e8%af%ad%e8%a8%80%e7%bb%98%e5%88%b6%e7%94…) R 语言对 S&P500 股票指数进行 ARIMA + GARCH 交易策略

2.[](https://tecdat.cn/r%e8%af%ad%e8%a8%80%e7%94%9f%e5%ad%98%e5%88…) R 语言改良的股票配对交易策略剖析 SPY—TLT 组合和中国股市投资组合

3.[](https://tecdat.cn/r%e8%af%ad%e8%a8%80%e5%a6%82%e4%bd%95%e5%9c…) R 语言工夫序列:ARIMA GARCH 模型的交易策略在外汇市场预测利用

4.[](https://tecdat.cn/r%e8%af%ad%e8%a8%80%e4%b8%ad%e4%bd%bf%e7%94…)TMA 三均线期指高频交易策略的 R 语言实现

5.[](https://tecdat.cn/r%e8%af%ad%e8%a8%80%e7%94%9f%e5%ad%98%e5%88…) r 语言多均线量化策略回测比拟

6.[](https://tecdat.cn/r%e8%af%ad%e8%a8%80ggplot2%e8%af%af%e5%b7%a…) 用 R 语言实现神经网络预测股票实例

7.[](https://tecdat.cn/r-%e8%af%ad%e8%a8%80%e7%bb%98%e5%88%b6%e5%8…)r 语言预测稳定率的实现:ARCH 模型与 HAR-RV 模型

8.[](https://tecdat.cn/r%e8%af%ad%e8%a8%80%e5%a6%82%e4%bd%95%e6%89…)R 语言如何做马尔科夫转换模型 markov switching model

9.matlab 应用 Copula 仿真优化市场危险

退出移动版