¿Qué es un algoritmo heurístico?
¿Por qué un algoritmo heurístico para la optimización de carteras?
Restricciones
Funciones objetivo no suaves.
Tipos de algoritmos heurísticos
Simulated annealing
Threshold accepting
Tabu search
Genetic algorithm
Simulated annealing
2. 2
¿Qué es un algoritmo heurístico?
¿Por qué un algoritmo heurístico para la optimización de carteras?
Restricciones
Funciones objetivo no suaves.
Tipos de algoritmos heurísticos
Simulated annealing
Threshold accepting
Tabu search
Genetic algorithm
Resumen
3. 3
¿Qué es un algoritmo heurístico?
Algoritmos heurísticos para la optimización de carteras
Heurística, del griego “heuriskein” significa encontrar o descubrir. La heurística trata de
métodos o algoritmos exploratorios durante la resolución de problemas en los cuales las
soluciones se descubren por la evaluación del progreso logrado en la búsqueda de un
resultado final.
Técnicas heurísticas, las cuales son empleadas en una gran cantidad de disciplinas y áreas
del conocimiento y su finalidad es la de entregar soluciones que satisfagan al máximo el
problema al cual se pretenden encontrar salidas.
Un algoritmo heurístico es un procedimiento de búsqueda de soluciones casi optímales a un
coste computacional razonable, sin ser capaz de garantizar la factibilidad de las
soluciones empleadas ni determinar a que distancia de la solución optima nos encontramos.
Características:
No aseguran dar el resultado optimo.
No se puede asegurar que tan bueno es el resultado.
El tiempo de los resultados es aceptable.
Se pueden hacer estudios estadísticos sobre los resultados.
4. 4
Algoritmos heurísticos para la optimización de carteras
Tipos de algoritmos heurísticos
Simulated annealing:
Tomar una cartera inicial.
Generar aleatoriamente carteras cercanas (vecinas) a esta cartera.
Si esta cartera vecina mejora la cartera inicial, la cartera vecina se convierte en el nuevo punto
de partida.
Si la cartera vecina no mejora la cartera inicial, se sortea si se convierte en el nuevo punto de
partida.
Threshold accepting:
Si la cartera vecina no mejora la cartera inicial, se sortea si se convierte en el nuevo punto de
partida.
5. 5
Algoritmos heurísticos para la optimización de carteras
Tipos de algoritmos heurísticos
Genetic algorithms:
Generar un conjunto de posibles carteras iniciales (población de individuos).
Evaluar la calidad (adaptación al medio) de cada una de las posibles carteras.
Las carteras (individuos) con mejores características (genes) serán escogidas (evolución:
reproducción y mutación) para generar un nuevo conjunto de carteras (nuevos individuos).
Repetir el proceso lo necesario.
Tabu search:
Tomar una cartera inicial.
Generar aleatoriamente carteras cercanas (vecinas) a esta cartera.
De las carteras vecinas, escoger la mejor como nueva cartera inicial.
Repetir el proceso.
Para evitar caer en ciclos emplear una lista de”movimientos tabu”, de manera que se eviten
movimientos que supongan volver a alguna solución inicial anterior.
6. 6
Algoritmos heurísticos para la optimización de carteras
¿Por qué un algoritmo heurístico para la optimización de carteras?
Tenemos un conjunto de n activos financieros. Cada uno de ellos tiene una rentabilidad
esperada y un riesgo asociados.
La rentabilidad es una variable aleatoria. Es necesario definir una función de distribución de
probabilidad. Generalmente se elige la distribución normal (especificadas media y varianza
finitas).
Se desea obtener las combinaciones eficientes de títulos para una serie de restricciones dadas.
Una combinación de títulos es eficiente cuando verifica una de las dos condiciones siguientes:
- Tiene el menor riesgo para un rendimiento esperado dado;
- Tiene el máximo rendimiento exigido para un nivel de riesgo dado.
El conjunto de carteras eficientes conforma lo que se llama frontera eficiente.
7. 7
Algoritmos heurísticos para la optimización de carteras
¿Por qué un algoritmo heurístico para la optimización de carteras?
Rendimiento de una cartera: suma de las rentabilidades individuales de cada título que la
componen, ponderadas por el peso de cada título.
La varianza o la desviación típica serán medidas adecuadas para medir el riesgo siempre y cuando la
probabilidad de la rentabilidad de la cartera forme una función de densidad simétrica.
Para conocer la varianza de la cartera necesitamos conocer las varianzas de cada título y las covarianzas
entre ellos.
Si la covarianza es positiva (negativa), rendimientos mejores de los esperados en un valor se corresponden
con rendimientos superiores (inferiores) a lo esperado en el otro.
La varianza de una cartera. Ésta dependerá de la varianza de los títulos que la componen (riesgo individual
de cada uno de ellos), de sus covarianzas (riesgo conjunto, tomando pares de títulos) y el peso de cada título
en la cartera.
n
c 1 1 2 2 n n i i
i 1
x x ... x x
n n n n
2 2 2
c i i i j i,j i j i,j
i 1 i,j 1 i 1 j 1
i j
σ x σ x x σ x x σ
8. 8
Algoritmos heurísticos para la optimización de carteras
¿Por qué un algoritmo heurístico para la optimización de carteras?
Mientras que la rentabilidad de una cartera es la media ponderada de las rentabilidades de los
títulos, su riesgo (la varianza) será siempre menor o igual que la media ponderada de los
riesgos de los títulos, dependiendo de la correlación:
Correlación igual a 1: la varianza de la cartera será igual a la media ponderada de las
varianzas de los títulos. Es decir, no hay ninguna diversificación.
Correlación entre los títulos igual a -1: se produce la reducción máxima de la cartera. De
hecho, si ambos títulos pesan lo mismo, la varianza (el riesgo) se elimina totalmente.
Correlación entre los títulos <+1 y >-1: la varianza de la cartera será inferior a la media
ponderada. Es decir, se produce cierta diversificación. Es el caso más general.
9. 9
Algoritmos heurísticos para la optimización de carteras
¿Por qué un algoritmo heurístico para la optimización de carteras?
Markowitz asume que el rendimiento de los activos siguen una distribución normal multivariante.
Esto supone que la distribución del rendimiento de un activo puede ser prácticamente descrito
por su rendimiento esperado y por la varianza.
El problema de selección de carteras puede ser planteado como un problema de programación
cuadrática, con restricciones en forma de igualdad:
1 1
1
1
:
. .
1
n n
i j ij
i j
n
i i c
i
n
i
i
Min x x
s a
x
x
Para un determinado nivel de rentabilidad esperada se trata de minimizar el riesgo.Este
problema es facilmente resoluble por el método de los multiplicadores de lagrange.
10. 10
¿Por qué un algoritmo heurístico para la optimización de carteras?
Sin embargo, el modelo original es demasiado
simplista para representar la complejidad de la
selección de carteras. Es necesario introducir
restricciones que complican la resolución del
problema.
Restricciones adicionales:
- Restricciones de cantidad: Imponer límites de
mínimo y máximo para las ponderaciones de los
activos.
- Restricción de cantidad por sectores.
- Restricción de cardinalidad: Imponer un número
máximo de activos en cartera.
- Restricción de cardinalidad por sectores: Imponer un
límite al número de activos de la cartera que se
encuentran dentro de un sector.
1 1
1
1
:
. .
1
0,1
n n
i j ij
i j
n
i i c
i
n
i
i
i i i i i
n
i
i
i
M in x x
s a
x
x
z x z
z K
z
Notación:
zi : Variable binaria que toma valor 1 si el activo i se encuentra en la cartera, 0 en caso
contrario.
i : Ponderación mínima que puede tener activo i, si se encuentra en la cartera.
i : Ponderación máxima que puede tener activo i, si se encuentra en la cartera.
K : Número de activos en la cartera.
Algoritmos heurísticos para la optimización de carteras
11. 11
¿Por qué un algoritmo heurístico para la optimización de carteras?
Funciones Objetivos no suaves:
1. Expected Shortfall.
2. Omega Ratio.
3. Historic VaR.
Algoritmos heurísticos para la optimización de carteras
12. 12
El algoritmo consta de los siguientes pasos:
1. Elección de una solución inicial x(0) y cálculo del valor de la función objetivo F(x(0)). Se toma
x(0) y F(x(0)) como la mejor solución disponible: (x*, F(x*))←(x(0), F(x(0)).
2. Hasta un que no se cumpla un determinado criterio de parada, y para x(n) como mejor
solución disponible hasta el momento:
Lanzar una solución aleatoria x en el entorno V(x(n)) de x(n).
Si F(x)<F(x(n)) entonces x(n+1) ← x.
Si F(x) < F* entonces (x*, F(x*))←(x(0), F(x(0)).
Si F(x)>F(x(n)) entonces lanzar un número aleatorio p Є [0,1] y:
Si p < p(n, x, x(n)) entonces x(n+1) ← x.
En caso contrario: x(n+1) ← x(n).
Simulated Annealing
Algoritmos heurísticos para la optimización de carteras
13. 13
Simulated Annealing
)
1
exp(),,( )(
n
n
n
F
T
xxnP
La función p(n,x,x(n)) suele ser una función de Boltzman, inspirada en los modelos de
termodinámica.
Donde:
ΔFn = F(x) – F(x(n))
Tn es la temperatura en el paso n.
La temperatura se mantiene constante en cada etapa, una etapa consta de un número L de
iteraciones. Después de cada etapa, la temperatura es multiplicada por un factor constante α Є [0,1].
Generalmente, se fija igual a 0.95.
La temperatura inicial T0 suele fijarse de tal manera que durante la primera fase de enfriamiento la
probabilidad de aceptar un nuevo movimiento (X0) sea un valor relativamente alto (p.e. X0 = 0.8).
Para ello, se suele correr el algoritmo durante L movimientos sin rechazar ninguno, se computa el
valor medio de la variación de la función objetivo durante esta fase (Δ) y T0 se fija de la siguiente
manera:
)( 0
0
Ln
T
Algoritmos heurísticos para la optimización de carteras
14. 14
Simulated Annealing
Después de L movimientos la temperatura desciende de acuerdo a la siguiente expresión: Tk+1
= αTk.
La fijación de L es un poco más compleja. Un valor alto de L permite una amplia exploración
del espacio, sin embargo, aumenta el tiempo de computación. La fijación de L suele realizarse
de acuerdo al tamaño del entorno de la solución.
Sin embargo, la fijación de L de esta manera nos puede llevar un número demasiado amplio de
movimientos.
3
n
L
Algoritmos heurísticos para la optimización de carteras
15. 15
Establecimiento de restricciones y generación de soluciones en el entorno de una solución previa
Una de las tareas previas y comunes a todos los algoritmos heurísticos es la codificación de
las restricciones.
Surge aquí también el debate clásico sobre si es adecuado forzar el cumplimiento de todas las
restricciones (all feasible) generando soluciones factibles o relajar esta condición permitiendo
momentaneamente soluciones no factibles introduciendo una penalización en la función
objetivo (penalty). Ambos enfoques dependerán de la situación y del tipo de restricción a
codificar.
Cuando se emplean penalizaciones, la magnitud de cada penalización de depender de la
magnitud del incumplimiento de la correspondiente restricción, y convenientemente reescalada
a la función objetivo (varianza, omega, VaR, Tail VaR).
Una posible expresión para la penalización es:
Donde a y p son factores de escala.
Los inconvenientes de este enfoque son, por un lado, el aumento de la dimensión del espacio a
explorar, y por otro, la calibración de los factores de escala.
p
xa entoincumplimi
Algoritmos heurísticos para la optimización de carteras
16. 16
La restricción de presupuesto, que todos los pesos sumen la unidad, es de fácil de forzar su
cumplimiento simplemente es normalizar el peso de los activos que componen la cartera.
Sin embargo, implementar la restricción de rentabilidad exigida mediante penalizaciones
puede no ser lo más recomendable si lo que se pretende es dibujar la frontera eficiente, para
cada punto de rentabilidad exigida.
Una forma de forzar el cumplimiento de la rentabilidad exigida es a partir de una solución x
cualquiera generar otra solución x’, tal que tenga 3 activos que cumplan las siguientes
condiciones:
Si x cumple la restricción de rentabilidad exigida, x’ también la cumplirá.
3para'
32
12
3
'
32
31
2
'
2
1
'
1
3
ixx
RR
RR
stepxx
RR
RR
stepxx
stepxx
ii
Establecimiento de restricciones y generación de soluciones en el entorno de una solución previa
Algoritmos heurísticos para la optimización de carteras
17. 17
Geometricamente, todas las soluciones x’ generadas en el entorno de x según la forma
descrita anteriormente, tien…
La elección de los tres activos determina la dirección de los movimientos y la amplitud viene
determinada por el valor del parámetro step.
Una forma fácil de generar una solución inicial x’, que cumpla la restricción de presupuesto y
de rentabilidad exigida, a partir de una cartera inicial cualquiera x, puede ser:
Donde xmin y Rmin son el peso y la rentabilidad del activo con menor rentabilidad de la cartera
original x. Al contrario, xmax y Rmax son el peso y la rentabilidad del activo con menor
rentabilidad de la cartera original x
'
minmaxmin
'
max
maxmin
maxmin,
maxmaxminexp
'
min
xxxx
RR
RxxRxR
x
n
i
ii
Establecimiento de restricciones y generación de soluciones en el entorno de una solución previa
Algoritmos heurísticos para la optimización de carteras
18. 18
Para determinar la amplitud de los movimientos, step, puede construirse una esfera
alrededor de la actual solución, y todas las posibles soluciones vecinas son las que descansa
sobre la superficie de la esfera.
La distancia o la amplitud del movimiento dependerá del radio de la esfera:
Donde el signo se puede fijar de forma aleatoria, y el radio dependerá de las restricciones de
mínimo y máximo para cada activo.
Para las restricciones de mínimo y máximo para cada activo, fácilmente se puede recurrir al
enfoque de las penalizaciones:
2
12
2
31
2
32
32*
RRRRRR
RRradius
step
p
iiii
p
iiii
xxapenaltyentoncesxxSi
xxapenaltyentoncesxxSi
)(
)(
minmin
maxmax
Establecimiento de restricciones y generación de soluciones en el entorno de una solución previa
Algoritmos heurísticos para la optimización de carteras
19. 19
La dirección de los movimientos viene determinada por la elección de los tres activos.
Esta selección puede realizarse de la siguiente manera:
1. Ordenar de mayor a menor rentabilidad todos los activos.
2. Para cada rentabilidad exigida Rexp guardamos el orden q del activo más cercano de la
lista ordenada.
3. En cada iteración del algoritmo, elegimos como el primer activo a ser modificado a aquel
que resulte de la extracción de un numero aleatorio de una normal de media q y varianza
suficiente para cubrir todo el universo.
4. El segundo y tercer activo se sortean de forma uniforme.
Establecimiento de restricciones y generación de soluciones en el entorno de una solución previa
Algoritmos heurísticos para la optimización de carteras
20. 20
Para abordar la restricción de cardinalidad (i.e número máximo de activos), lo más
recomendable es forzar la factibilidad de todas posibles soluciones.
Conviene recordar que la elección de los tres activos cuyos pesos van a ser modificados se
realiza de forma aleatoria. Puede ocurrir que:
Los tres activos están en la solución actual, entonces la modificación de los pesos puede
realizarse de la manera que hemos descrito anteriormente.
Los activos 1 y 2 se encuentren en la solución actual, pero en cambio el activo 3 no se
encuentre. En tal caso, se recomienda:
Fijar la dimensión de los movimientos step igual al peso del activo 1 (x’1=0),
Ajustar las ponderaciones de los activos 2 y 3 para cumplir las restricciones de
rentabilidad exigida y de presupuesto.
Este caso puede que la nueva solución implica la sustitución de un activo por otro.
Establecimiento de restricciones y generación de soluciones en el entorno de una solución previa
Algoritmos heurísticos para la optimización de carteras
21. 21
Partes del programa:
Generación de la solución inicial.
Función del boltzman.
Función que sortee los 3 activos a mover
Función que genere una solución a partir de una existente.
Establecimiento de restricciones y generación de soluciones en el entorno de una solución previa
Algoritmos heurísticos para la optimización de carteras
23. 23
Gilli, M. And Kellezei, E.: A Heuristic Approach to Portfolio Optimization.
Crama, Y, and Schyms, M.: Simulated Annealing for complex portfolio selection
problems.