6 votos

¿Optimización robusta de la cartera bayesiana en matlab?

Estoy trabajando a través de este documento .

Quiero implementar la optimización bayesiana robusta (ver páginas 6 en adelante) en Matlab usando fmincon .

He aquí un breve resumen de mi problema:

Dejemos que $\alpha$ sea el vector de rendimientos y que $w$ sea ta conjunto de pesos que representan una cartera.

Entonces, nuestro problema habitual de media-varianza es encontrar las ponderaciones de cartera resultantes que minimicen la varianza de la cartera $\sigma^2(x)=w' \Sigma w$ .

En el marco robusto, se supone que el vector de rendimientos se encuentra en algún región de incertidumbre Llámalo $U$ . Aquí, los autores definen esa región como la esfera centrada en $\alpha$ con un radio igual a $|\chi| \cdot \alpha$ con $\chi \in [0,1]$ .

En otras palabras, nuestro problema de optimización se convierte ahora en

$\min_\omega\omega'\Sigma\omega$ con sujeción a $\min_Ur_p \geq r_0$

donde $\Sigma$ es una matriz definida positiva y $\omega$ es un vector de pesos que suman 1.
También: $r_p=\alpha'\omega$ .

Los autores demuestran que:

$$\min_U r_p=|\alpha||w|[cos(\phi)-\chi]$$

donde $\phi$ es el ángulo entre los dos vectores $\alpha$ y $\omega$ .

Dan la fórmula para la "familia de matrices de covarianza robustas" - (ver página 7, ec. 13) así como la fórmula para los pesos optimizados (ver página 7, ec. 12).

Estoy tratando de implementar esto en Matlab. Sin embargo, no se pueden utilizar las ecuaciones (12) o (13) ya que ambas ecuaciones requieren que se conozcan los pesos optimizados.

Mi pregunta es, por lo tanto, si existe un método para implementar una optimización robusta como ésta O alguna sugerencia sobre cómo podría hacerlo?

3voto

m0j0 Puntos 21

Desde un punto de vista general y para responder directamente a su original pregunta, sólo debería tener que modificar las entradas de la función de MATLAB a la que se refiere. De hecho, fmincon es un optimizador que busca procesar una amplia variedad de problemas como se explica en la documentación:

fmincon intenta encontrar un mínimo restringido de una función escalar de varias variables partiendo de una estimación inicial. Esto se conoce generalmente como optimización no lineal restringida o programación no lineal.

No tendrás que modificar nada del algoritmo, por ejemplo. Sólo tienes que asegurarte de que las entradas son correctas, que en este caso es la función objetivo que pasas a fmincon .

Por ejemplo, si sólo quiere utilizar una matriz encogida (dada por la ecuación 9 de la página 5) para obtener una cartera de varianza media más robusta, puede hacer lo siguiente:

SigmaHat=...;
robustMinVar = fmincon(@(x)(x' * SigmaHat * x), ...);

donde SigmaHat es la matriz de covarianza encogida que calculaste previamente.

Supongo que está dispuesto a calcular lo siguiente:

$$\underset{w}{\arg \min} ~ \sigma^2(w) \quad \text{s.t.} \quad \underset{U_\alpha}{\arg \min} ~ r_P \geq r_0$$

Es necesario generar dos funciones:

  • $f(w)$ la función objetivo
  • $c(w)$ una función de restricción.

La función de restricción debe devolver el valor de $\underset{U_\alpha}{\arg \min} ~ r_P$ y puede calcularse como se menciona en la fórmula.

Así que en tu script, simplemente haz:

% Here I define my variables
alpha=...;
chi=...;
r0=...;
function r=bayesConst(w)
  r= -(alpha' * w - chi* sqrt(sum(alpha.^2))*sqrt(sum(w.^2))-r0);
end

Obsérvese aquí que se crea una función dentro del script para inyectar la variable alpha y chi y r0 . Fíjate también en que he configurado la función de manera que tenga la forma $c(w) \leq 0$ . Tienes que introducir esto en fmincon como una restricción no lineal (el nonloncon argumento).

Ahora la otra función es sólo calcular la varianza mínima con $w$ Pero no sé si debemos usar la matriz de covarianza encogida (de la página 7) o no, intuitivamente diría que sí.

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