如何使用广义目标函数解决投资组合优化问题?

时间:2016-04-26 16:58:32

标签: r optimization portfolio quantitative-finance quadprog

我有5只股票的投资组合,我希望找到最小化投资组合差异和最大化预期未来股息的最佳组合。后者来自分析师的预测。我的问题是我知道如何解决最小方差问题,但我不知道如何将二次形式放入quadprog目标函数的正确矩阵形式。

标准最小方差问题为

Min! ( portfolio volatility )

其中, r 包含五种股票的每日252次回报, d 具有预期的每年股息收益率(firm_A支付1 firm_B支付2 等),

我编程如下

dat = rep( rnorm( 10, mean = 0, sd = 1 ), 252*5 )
r   = matrix( dat, nr = 252, nc = 5 )
d   = matrix( c( 1, 2, 1, 2, 2 ) )

library(quadprog)
# Dmat (covariance) and dvec (penalized returns) are generated easily

risk.param = 0.5
Dmat = cov(r)
Dmat[is.na(Dmat)]=0

dvec = matrix(colMeans(r) * risk.param)
dvec[is.na(dvec)]=1e-5

# The weights sum up to 1
n   = 5
A   = matrix( rep( 1, n ), nr = n )
b   = 1
meq = 1

res = solve.QP( Dmat, dvec, A, b, meq = 1 )

显然, r 的回报率为标准正态值,因此每只股票的权重约为20%。

Q1: 我如何解释firm_A派息1,firm_B派息2等事实?

新的目标函数如下:

Max! ( 0.5 * Portfolio_div - 0.5 * Portfolio_variance )

但我不知道如何硬编码。投资组合差异很容易纳入 Dmat ,但新的目标函数将Portfolio_div元素定义为 Portfolio_div = w * d ,其中 w 有五个权重。

非常感谢。

EDIT: 也许添加更高级别的问题描述是有意义的: 我能够使用上面的代码进行最小方差优化。最小化组合方差意味着优化变量协方差矩阵Dmat(维度5x5)的权重。但是,我想在优化中添加一个额外的部分,即 d 中的红利乘以权重(因此维度为5x1)。 Dmat也使用相同的权重。

Q2: 如何将代码d添加到代码中?

EDIT2: 我想答案就是简单地使用

dvec = -1/d

因为我通过最小化负数的倒数来最大化预期股息。

Q3: 有人可以告诉我这是不是正确?

1 个答案:

答案 0 :(得分:-1)

打开一罐蠕虫:

TLDR虽然我尊重Harry MARKOWITZ(1990年诺贝尔奖)所做的伟大工作,但我更欣赏他的精彩CACI模拟衍生确定性模拟框架COMET III,而不是投资组合理论假设, variance本身是投资组合优化流程的最小化驱动因素。

推动这一主要观点

(仍然可能遇到大资金的一点形式不良的动机,从他们的2-by幸福地生活-20费用由于“他们的”偏见的直接损失认知的性质和规模,他们认为是非获得的大量&无风险管理费与人群恐慌性流失相关联归因于AUM侵蚀,而非实际利润和损失,从他们获得( in)能够提供任何高于平均水平的AUM回报)

进一步,更接近你的想法
问题是正确的制定{ penalty | utility }函数

虽然 variance 在经典有效前沿理论中被视为惩罚因素,但在 min! 中运作全球搜索,它与真正的利润产生没什么关系。即使对于正面方差分量,你也会受到惩罚,这本身就是无意义的。

相反, dividend 是一个直接的好处,绝对是 utility ,进入 max! 优化过程。

所以Q3&的第一步Q1应该是与相对的,与收入无关的因素隔离的一致utility function 的设计,但包含所有其他绝对因素 - 进入成本,交易成本,再平衡成本 - - 否则您的实用新型会误导您的投资组合财富管理策略。

A2: 如果没有这个先验设计的属性,没有人可以声称模型值得一个CPU小时甚至开始模型的全局优化工作。