答案:【计分规则】: CalWeiVaR = function(ret,X){ ret = exp(ret) logWeibull <- function(params) { lambda = params[1] k = params[2] n = length(ret) SumProb = 0 for (i in 1:n) { SumProb = SumProb + log((k/lambda)*((ret[i]/lambda)^(k-1))*exp(-(ret[i]/lambda)^k)) } return(SumProb) } optimparams = optim(c(1,1),logWeibull,method="BFGS",control=list(fnscale=-1)) lambda = optimparams$par[1] k = optimparams$par[2] VaR = log(qweibull(1-X,k,lambda)) results = as.numeric(list(VaR,k,lambda)) return(results)}Weiresults <- CalWeiVaR(ret,X)WeiVaR <- Weiresults[1]