3 votos

¿Qué enfoque de Diversificación Máxima en MATLAB es el correcto?

Actualmente estoy tratando de encontrar los pesos del portafolio de Diversificación Máxima y encontré dos enfoques que resultan en diferentes resultados.

El primero se basa en este papel: https://www.tobam.fr/wp-content/uploads/2014/12/TOBAM-JoPM-Maximum-Div-2008.pdf

Aquí primero calculo los pesos de los activos en activos sintéticos y luego los convierto en un portafolio de activos reales. Según el papel, existe la posibilidad de estar largo o corto en efectivo, pero como quiero estar completamente invertido en los activos riesgosos, escalo los pesos a 1. ¿Mi pregunta es si esto sería "permitido" sin cambiar el problema de optimización?

Esta es la función objetivo que minimizo:

function fval = md(corMat,w_md)

fval = w_md'*corMat*w_md;

end

Y esta es la optimización:

T = readtable('Data_test.xlsx');

  mon_ret = tick2ret(T{:,3:end});

  numReturns = size(mon_ret,1);

  covMat  = cov(mon_ret) ;  
  [corMat, std] = corrcov(covMat);

  port_size = length(covMat) ; 

  Aeq = ones(1,port_size);
  Beq = 1;

  lbnds = zeros(1,port_size);
  ubnds = ones (1,port_size);

  n1 = 1.0/port_size;
  w0 = repmat(n1, port_size, 1) ;

  mdfunction = @(w_md) md(corMat, w_md);
  w_md = fmincon(mdfunction, w0, ...
                                     [], [], Aeq, Beq, lbnds,       ubnds, []) ;

  w_md = w_md./std;
  w_md = w_md/sum(w_md);

El segundo enfoque es de este papel (pág. 21): http://www.qminitiative.org/UserFiles/files/FroidureSSRN-id1895459.pdf

Creo que lo resolví correctamente con este enfoque:

Función Objetivo:

function fval = md2(covMat, w_md2)

fval = w_md2'*covMat*w_md2;

end

Restricción No Lineal:

function [c,ceq] = nlcon(w_md2,std)

c =[];
ceq = sum(w_md2'.*std)-1;

end

y la optimización:

md2function = @(w_md2) md(corMat, w_md2);

w_md2 = fmincon(md2function, w0, ...
                                     [], [], Aeq, Beq, lbnds, ubnds, []) ;

w_md2 = w_md2/sum(w_md2);

¿Alguien sabe cuál enfoque es correcto o dónde está mi error?

¡Agradecería cualquier ayuda!

Saludos cordiales

0 votos

¿Puedes dar valores numéricos para un problema MDP (preferiblemente pequeño) para el cual los dos códigos arrojen valores diferentes? Luego, otras personas pueden ejecutarlo en su propio código y ver qué respuesta obtienen.

0 votos

¿Hay alguna manera de subir un archivo? El problema más pequeño con valores significativamente diferentes es para 8 devoluciones y 7 activos, lo cual sería bastante tedioso de escribir.

1voto

Arlene Serrano Puntos 6

¿Es la fórmula para código #1 $\max D(S)=\frac{S^{\top}\Sigma_S}{\sqrt{S^{\top}V_S S}}$?

o es $\max D(S)=\frac{1}{\sqrt{S^{\top}V_S S}}$ sujeto a las restricciones $\Gamma$? Ambas aparecen en la misma página, 41, en el paper #1.

y es la fórmula para código #2 $\min \frac{1}{2}\mathbf{w}^{\top}\Sigma\mathbf{w}$ sujeto a $w_i\geq 0$, $\mathbf{w^{\top}}\boldsymbol{\sigma}=1$ del apéndice del paper #2?

Si es así, la 2da fórmula tiene una restricción de no negatividad, convirtiéndola en el MDP con restricción de venta en corto, lo que podría ser la razón por la que no corresponde a la 1ra, si la 1ra es el MDP sin restricciones.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X