En resumen, estoy tratando de hacer lo siguiente
- Subconjunto de bonos 1 : Obtener la lista de bonos en USD --> Filtrar los bonos que tienen YTM > y% DUR > 10 Y etc Esto nos da los bonos que nos interesan. Así que al final tendremos un subconjunto de estos Bonos en la cartera final
- Subconjunto de bonos 2 : Lista de Bonos que seguramente necesitan incluir . A diferencia del subconjunto anterior, estos bonos deberían incluirse definitivamente en la cartera final
- Restricciones :
a. Coincidir con la duración total y la duración del tipo clave: Dado el perfil DV01 del pasivo del cliente, la cartera resultante debe coincidir con este perfil con una desviación de +- X%. b. Aplicar restricciones sectoriales : Total en el sector financiero <= 0,25 del total, etc. c. Límites inferiores y superiores de inversión en un solo valor d. Número máximo de valores en la cartera resultante = N - Objetivo : Lograr el rendimiento = Y % o maximizar el rendimiento
Así que he creado un conjunto de desigualdades para satisfacer estas restricciones y también tengo definida mi función objetivo. Para ello utilizo el programa fmincon de Matlab.
Problema fmincon intenta incluir todos los bonos en la optimización y el resultado es tal que no se satisfacen las restricciones. Necesito poder elegir o eliminar selectivamente los enlaces del subconjunto 1. Lo que significa que necesito que el solucionador tenga número de variables . Para resolver este problema estoy buscando encontrar mejor manera de muestrear subconjuntos de Bonos 1 y ejecutar el solver en esto para que me quede una cartera que satisfaga las restricciones. ¿Alguien tiene alguna idea sobre este problema de muestreo en la optimización de carteras? (Por favor, no sugiera considerar todas las combinaciones de bonos posibles para encontrar subconjuntos para los que se satisfagan las restricciones y obtenga el máximo rendimiento, ya que el rendimiento del código es muy importante aquí y el número de valores es de alrededor de 1000)