1

我正在尝试在 R 中实现 Excel Solver。

我有两个权重向量。Old_Weights 和 New_Weights。我需要找到 New_Weights。

目标函数:Max((回报 - 成本)/风险)

例子:

Old_Weights<-c(0.5,0.5,0)
New_Weights<-c(X,Y,Z)

Returns <- New_Weights * Market_Returns
Cost<- (New_Weights - Old_Weights) * 15
Risk <- t(New_Weights) * Var(Market_Returns) * New_Weights

所以基本上我需要一个函数来改变 X、Y、Z 的值,从而最大化目标函数。

4

1 回答 1

2

您可以使用optim()R 中的函数来计算它。

optim()函数的一般格式为optim(objective, constraints, bounds = NULL, types= NULL, maximum = FALSE)

您可以首先编写一个包含参数的函数,例如,

> f <- function(x) 15 * (x[1]-0.5) + 7 * (x[2]-3)^2 + 30 

接下来设置约束

> c <- c(1, 1)

然后使用 optim(c, f) 得到优化的解决方案

> r <- optim(c, f)

> r

于 2019-12-15T20:08:11.270 回答