Contenido del curso

- Métodos Basados en Valor I: Q-Learning y Optimización de Portafolios

Métodos Basados en Valor I: Q-Learning y Optimización de Portafolios

Odisea Algorítmica · De la Regresión al Aprendizaje Profundo — Descripción Unificada

Q-Learning es un algoritmo de aprendizaje por refuerzo off-policy que aprende la función de valor de acción óptima Q*(s,a) directamente, sin depender de la política actual. Su versatilidad lo convierte en una herramienta poderosa para problemas discretos como la optimización dinámica de portafolios, donde cada estado representa una distribución de activos, cada acción un rebalanceo, y la recompensa se mide mediante el ratio de Sharpe (retorno ajustado por riesgo).

Fundamentos del Algoritmo Q-Learning

La actualización central de Q-Learning utiliza la ecuación de Bellman sin necesidad de un modelo de transición. La regla de actualización es:

Q(s,a) ← Q(s,a) + α · [ r + γ · maxa' Q(s',a') – Q(s,a) ]

Donde α (tasa de aprendizaje) controla cuánto se incorpora la nueva estimación, γ es el factor de descuento y r la recompensa inmediata. Al ser off-policy, Q-Learning puede aprender la política óptima incluso mientras explora con estrategias como ε-greedy.

Estrategia de exploración ε-greedy

Para equilibrar exploración y explotación, el agente selecciona una acción aleatoria con probabilidad ε y la acción con mayor Q con probabilidad 1–ε. Este mecanismo es vital en portafolios financieros, donde explorar nuevas asignaciones puede descubrir combinaciones más robustas.

Estado (portfolio)

Distribución actual de activos: pesos w₁, w₂, …, wₙ discretizados en percentiles (ej. 0%, 25%, 50%, 75%, 100%).

Acción (rebalanceo)

Cambiar la asignación entre activos: mover 5%, 10% o 20% de un activo a otro. Conjunto finito de transiciones discretas.

Recompensa (Sharpe)

Retorno diario ajustado: (rendimiento - tasa libre de riesgo) / desviación estándar. Se usa Sharpe histórico medio del período.

Implementación paso a paso: Q-Table y episodios

  1. Inicialización: Crear tabla Q(s,a) con ceros para todos los pares estado–acción. Para 2 activos con 5 buckets cada uno, hay 25 estados y, por ejemplo, 9 acciones posibles.
  2. Bucle de episodios: Para cada episodio (secuencia de días históricos) se parte de un estado aleatorio (distribución inicial).
  3. Selección de acción usando ε-greedy (ε = 0.2 inicial, decaimiento).
  4. Transición: Ejecutar la acción (rebalanceo) y observar nueva distribución (estado siguiente) y recompensa (Sharpe de la nueva cartera).
  5. Actualización Q(s,a): Aplicar la ecuación de Bellman con α = 0.1, γ = 0.95.
  6. Convergencia: Se repite hasta que los cambios en Q sean menores a un umbral o se alcance un número máximo de episodios.

Ejemplo en Python: portafolio de 2 activos con datos simulados

El siguiente fragmento muestra el núcleo del entrenamiento Q-Learning para un universo de dos activos (renta variable y bonos). Los rendimientos se generan con una cópula simple para simular correlación.

import numpy as np

class QLearningPortfolio:
    def __init__(self, n_states=25, n_actions=9, alpha=0.1, gamma=0.95, epsilon=0.2):
        self.Q = np.zeros((n_states, n_actions))
        self.alpha = alpha
        self.gamma = gamma
        self.epsilon = epsilon
        self.n_actions = n_actions
        # discretización: 5 buckets para activo1 y activo2
        self.buckets = [0.0, 0.25, 0.50, 0.75, 1.0]
    
    def discretize_state(self, w1):
        # w1 es proporción activo1, w2 = 1-w1
        idx = np.digitize(w1, self.buckets) - 1
        return max(0, min(idx, 4))  # 0..4
    
    def act(self, state):
        if np.random.rand() 

Después del entrenamiento, la tabla Q contiene las utilidades esperadas de cada acción en cada estado. Al inspeccionar los valores, se observa que las acciones de rebalanceo hacia un 60/40 (activo1/activo2) suelen tener las Q más altas, reflejando el máximo Sharpe teórico de los datos generados.

Discusión sobre convergencia y límites

Q-Learning converge a la función Q* óptima bajo condiciones de exploración infinita y actualización asíncrona (Watkins & Dayan, 1992). Sin embargo, en optimización de portafolios surgen desafíos:

  • Espacio de estados continuo: La discretización del porcentaje de activos genera pérdida de precisión. Con 2 activos y 5 buckets aún es manejable, pero con 5+ activos explota la dimensionalidad.
  • No estacionariedad: Los mercados financieros cambian su distribución; una tabla Q aprendida con datos históricos puede quedar obsoleta. Se requieren mecanismos de adaptación (retraining periódico).
  • Función de recompensa ruidosa: El ratio de Sharpe estimado en ventanas cortas tiene alta varianza, lo que ralentiza la convergencia. Usar recompensas suavizadas o promedios móviles mejora la estabilidad.

Alternativa para espacios continuos: Deep Q-Networks (DQN) y variantes con aproximación de funciones (redes neuronales) permiten escalar a espacios de estados continuos, pero introducen sus propias complejidades (experiencia replay, target network).

Tabla comparativa: elementos clave en Q-Learning para portafolios

ComponenteDescripciónEjemplo en portafolio
Estado (s)Vector de asignación de activos discretizado[0.25, 0.75] → bucket 1 (activo1 25%)
Acción (a)Cambio porcentual en la composición+10% en activo1 (rebalanceo desde 50/50 a 60/40)
Recompensa (r)Retorno ajustado por riesgo del nuevo portafolioSharpe diario = (0.0008 – 0.0001) / 0.0021 = 0.33
Transición (s → s')Nueva distribución tras ejecutar la accións' = bucket(0.60, 0.40)
Política (π)Estrategia ε-greedy basada en Qacción que maximiza Q(s,·) con probabilidad 0.9

En resumen, Q-Learning proporciona una base sólida para la optimización de portafolios mediante tablas discretas, con resultados interpretables y convergencia garantizada en espacios pequeños. Su extensión a entornos continuos (redes neuronales) abre la puerta al aprendizaje profundo por refuerzo, manteniendo los mismos principios de actualación de valor y exploración estructurada.

Presentación del algoritmo Q-Learning como método off-policy basado en tabla Q. Fórmula de actualización de Q(s,a) con tasa de aprendizaje α. Estrategia de exploración ε-greedy. Aplicación a la optimización de portafolios: estados = distribución de activos, acciones = rebalancear entre activos, recompensa = retorno ajustado por riesgo (ej. ratio de Sharpe). Implementación paso a paso: inicialización de Q, iteración de episodios, actualización de Q(s,a) con la ecuación de Bellman. Ejemplo en Python para un portafolio de 2 activos con datos históricos simulados. Discusión sobre convergencia y límites con espacios de estados continuos.
Calificación
0 0

No hay comentarios por ahora.