我正在尝试在R中实现Excel求解器。
我有两个权重向量。Old_Weights和New_Weights。我需要找到New_Weights。
目标函数:最大值((回报 - 成本(/风险(
例:
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 的值,使目标函数最大化。
可以使用 R 中的optim()
函数来计算此值。
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