Quant500 Academy

3. Qué es exactamente el machine learning

Nivel 10: Machine Learning Aplicado al Trading

Hay una definición divulgativa muy repetida: el machine learning es el campo de la informática que da a los ordenadores la capacidad de aprender sin haber sido programados explícitamente para ello. Es útil como titular, pero es vaga: no dice qué significa aprender ni cómo comprobar si de verdad ha ocurrido.

El machine learning nació durante el desarrollo temprano de la inteligencia artificial y el reconocimiento de patrones, y como todas las tecnologías creció hasta convertirse en industria de la mano de los negocios. Existe una definición formal ampliamente usada, de Tom M. Mitchell:

"Se dice que un programa de ordenador aprende de la experiencia E respecto a cierta clase de tareas T y una medida de rendimiento P, si su rendimiento en las tareas de T, medido por P, mejora con la experiencia E."

La definición dice dos cosas importantes: nuestro programa tiene que aprender de los datos, y tiene que mejorar su rendimiento. Ambas partes son exigibles y comprobables.

El ejemplo clásico es predecir el precio de una vivienda: primero alimentamos el algoritmo con datos como los precios actuales según los metros cuadrados, el número de habitaciones y demás. A partir de esos datos, el algoritmo aprende y mejora sus estimaciones reduciendo los errores de predicción. Podemos medir el rendimiento ejecutando el algoritmo sobre datos de entrada nuevos cuyo resultado conocemos y observando la tasa de error. Nuestro objetivo será reducir esa tasa de error.

Traducido a un sistema de trading, las tres piezas quedan así:

Esta descomposición es más que un ejercicio académico. Obliga a fijar la métrica antes de entrenar, que es exactamente el punto donde más autoengaños se cuelan en el trading cuantitativo. Y obliga a que P se mida sobre datos no vistos: si P mejora sobre los mismos datos con los que aprendiste, no has demostrado nada, porque memorizar también hace bajar el error dentro de muestra.

# La definición de Mitchell, escrita como código
def aprende(modelo, experiencia_creciente, tarea_test, metrica):
    resultados = []
    for E in experiencia_creciente:          # cada vez más datos de entrenamiento
        modelo.fit(E["X"], E["y"])
        p = metrica(tarea_test["y"], modelo.predict(tarea_test["X"]))
        resultados.append(p)
    # Aprende si P mejora conforme crece E, medido SIEMPRE sobre datos no vistos
    return resultados[-1] > resultados[0], resultados

Si esa función devuelve False, tienes un programa que procesa datos, pero no un programa que aprende.

El resto de Quant500

Lo que estás aprendiendo, aplicado al índice todos los días:

La cartera del modelo, cada semana en tu correo

Cada sábado, su semana en un minuto: cómo fue, lo mejor y lo peor, y qué directivos compraron con su dinero. Y el día que el modelo se rehace, qué entra y qué sale. Es una simulación, no un consejo. Como mucho un correo a la semana, sin publicidad y sin cuenta; te das de baja con un clic. Lo hace una persona: Pol Gracia.

Cartera modelo con resultados simulados, no una recomendación personalizada. Tu correo se usa solo para esto: privacidad.

Detrás de la Academia y del resto de Quant500 hay una sola persona: Pol Gracia Serrahima.