我很长一段时间都在寻找优化参数化产品组合的程序代码。 投资者的问题是选择最大化其预期效用的投资组合:
ri,t+1
是库存回报i
,wi,t
是库存i
的权重。参数化投资组合是权重取决于状态变量的投资组合,因此:
其中wi,t (bar)
是基准投资组合中股票i的权重,teta
是要估计的系数的向量,xi,t
是状态变量。
因此,最大化投资者效用的系数是:
最近,我收到了以下代码,它提供了优化功能:
func<-function(x,wb,nt, ret, A, B, C){ #A, B and C are the state variables,ret= the matrix of returns, wb and nt are from the optimization formula in equation 2.
wi=as.matrix(wb+(nt)*((x[1]*A)+(x[2]*B)+(x[3]*C))) #wi is the weights (linear combinaison of asset variables A, B and C)
wret=rowSums(wi*ret,na.rm=T)
ut=((1+wret)^(1-rr))/(1-rr) #utility function
######ut=log1p(wret) ##### to rr=1
u=-mean(ut)
pen=abs(sum((abs(wi)>0.2)*wi,na.rm=T))
return(u+pen)
}
问题是我不知道如何在R中使用optim
函数来优化效用函数。
你能告诉我在R的optim
函数中写些什么。老实说,我不知道怎么写这段代码
optim(par, fn, gr = NULL, ...,
method = c("Nelder-Mead", "BFGS", "CG", "L-BFGS-B", "SANN",
"Brent"),
lower = -Inf, upper = Inf,
control = list(), hessian = FALSE)
我知道fn
是func
。
感谢您提供的任何帮助。