estoy tratando de replicar un documento ("¿Es la variación de la media del mercado después de todo?" de Levy & Roll) en Matlab. quiero minimizar La siguiente función (D) con sus restricciones:
Quiero tener mu y sigma,
además alfa, q y r_z son variables libres, donde
- alfa: 0 ≤ α ≤ 1 es un parámetro determinante El peso relativo asignado a las desviaciones de las medias en relación con las desviaciones. de las desviaciones estándar.
- q: q> 0 es la constante de proporcionalidad
- r_z : tasa de beta cero (tasa de interés libre de riesgo)
Yo tengo:
- mu ^ sam: Vector de medios de devoluciones históricas.
- sigma ^ sam: Vector de desviación estándar de rendimientos históricos.
- Matriz de covarianza
- pesos x_m, yo
Ahora no sé cómo manejar las variables libres alfa, q y r_z
Mi función objetivo D:
function dist=distOpt(alpha, N, x0, mu_sam, sigma_sam)
sumSigma=0;
for i=1:N
sumMu=sumMu+((x0(i)-mu_sam(i))/sigma_sam(i))^2;
sumSigma=sumSigma+((x0(N+i)-sigma_sam(i))/sigma_sam(i))^2;
end
dist=sqrt(alpha*(1/N)*sumMu + (1-alpha)*(1/N)*sumSigma);
Y restricciones:
Mu_sam=repelem(-0.0001,y-1);
Sigma_sam=repelem(-0.0002,y-1);
x0=[Mu_sam Sigma_sam];
function [c,ceq] = confuneq(x0,rz,Cor,Weights)
q=1;
ceq=diag(x0(7:end))*Cor*diag(x0(7:end))*Weights" - q*(x0(1:6)"-rz);
c=[];
Mi uso de fmincon:
optFunc=@(x0) distOpt(alpha,(y-1),x0, Mu_sam, Sig_sam);
options = optimoptions(@fmincon,"Algorithm","sqp","MaxFunctionEvaluations", 12000,"FunValCheck","on");
nonlcon=@(c,ceq) confuneq(x0,r_z, rho, Weights);
[x0, fval, exitFlag]= fmincon(optFunc,x0,[],[],[],[],[],[],nonlcon,options);
¿Alguien puede ayudar?
Respuestas
0 para la respuesta № 1Ahora no sé cómo manejar las variables libres alfa, q y r_z
Creo que tienes dos opciones:
1) Elija valores fijos para ellos.
2) Inclúyelos en tu x para obtener valores óptimos.