Las experiencias que vivimos nos ayudan a tomar decisiones. Este razonamiento puede extenderse a otros campos.
El lunes me levanté, me asomé a la ventana y ví que hacía sol, así que no cogí el paraguas. Por la tarde el cielo se nubló completamente y llovió como si no hubiera un mañana. El martes hacía sol, quizá incluso más que el lunes. Cogí el paraguas por si acaso. A las 18 empezó a llover otra vez. El miércoles amaneció aún más soleado. Tomé el paraguas, me puse el chubasquero, me enfundé las botas de agua y salí de casa. Diluvió todo el día.
Aprendemos a tomar decisiones de acuerdo con nuestra experiencia. Las reacciones de hoy están basadas en las situaciones que vivimos ayer, dirigidas por lo que nos condujo al éxito o a equivocarnos en aquella otra circunstancia por la que pasamos hace tiempo y que se parecía mucho a ésta. Si nos funciona en la vida, ¿por qué no aplicarlo a otros campos?
¿Cómo podemos modelizar el aprendizaje? Nearest Neighbours, Redes Neuronales, Algoritmo Genético… son términos técnicos complicados que en realidad no encierran más que un concepto muy básico, que no sencillo: el aprendizaje. Todos estos procesos se inspiran en el aprendizaje cotidiano.
“La experiencia del mundo no consiste en el número de cosas que se han visto, sino en el número de cosas sobre las que se ha reflexionado con fruto” Gottfried Leibniz
En este post propongo un primer acercamiento al algoritmo Nearest Neighbours. El método consiste en encontrar esas experiencias parecidas (vecinos) para decidir la respuesta más acorde a ellas. Es una aplicación sobre una serie temporal, en concreto, sobre la evolución del tipo de cambio GBPUSD:
¿Qué son los vecinos más cercanos?
Dado un día concreto x, definimos sus vecinos más cercanos como aquellos otros días x1, x2,… xK más parecidos a x.
¿Cómo definimos el parecido de los vecinos?
Debemos elegir una serie de atributos que serán la caracterización de las experiencias. Esta pieza es clave para que el método tenga éxito. Debemos centrar el tiro en captar la información de similitud que persiga nuestro objetivo.
En esta prueba mi objetivo es buscar evoluciones del precio similares en distintos momentos de la historia. Por tanto, he elegido como atributos varios indicadores que miden el movimiento de la serie para varias ventanas temporales.
¿Cómo encontramos los vecinos más cercanos?
Calculamos los puntos que minimizan la distancia de los atributos anteriores:
Esto nos da una asignación de parecido para cada par de puntos temporales: el día x se parece DIST(x,y) al día y. Obtenemos así una matriz de relación de similitudes:
El gráfico muestra para cada punto cuánto se parece a todos los puntos anteriores. Por ejemplo, si elegimos 2014 (eje Y), la línea horizontal correspondiente contiene todos los puntos [2005, 2014) clasificados por colores:
¿Cuáles han sido las 10 situaciones pasadas más parecidas a la que vivimos hoy?
La cuantificación de similitud anterior es la herramienta para poder ya responder a esta pregunta:
¿Para qué nos sirve conocer los vecinos más cercanos?
Para conocer la clase desconocida de una situación particular. El vector de clases no es más que una clasificación de los puntos temporales. Son las reacciones que tuvieron lugar tras cada experiencia.
Esta clasificación se ha asignado utilizando cierta información posterior a los puntos temporales, por lo que somos capaces de medir la clase de fechas pasadas, pero no contamos aún con información suficiente para obtener la clasificación de la situación actual (claro, si conociéramos el futuro ¡ya no tendríamos ningún problema por resolver!).
Estimaremos la clase desconocida como la clase que más predomina en sus vecinos próximos. Una forma natural de realizar esta estimación es tomar los K vecinos más cercanos y hacer la suma de sus clases, ponderando por el parecido con cada uno de ellos:
Pensemos en una aplicación concreta para entender el concepto Nearest Neighbours como método de predicción. Si queremos estimar dónde se situará el precio la semana que viene, entonces el vector de clases será la variación del precio en los cinco días posteriores a cada punto. Y estimaremos hoy cuál es la variación que esperamos para la semana que viene.
Incluyo un sencillo test de los atributos propuestos utilizándolos como predicción. Es una prueba simple, un método de trading automático que apuesta cada día en función del signo de la variación estimada del precio:
Las curvas son el resultado del método aplicándolo sobre K=10, 20, 30…hasta la última de las pruebas en la que utilizamos toda la serie como vecinos. Las mejores curvas resultan tomando las menores cantidades de vecinos.
Puede que no parezca un resultado demasiado brillante, pero para aquellos que conozcáis la dificultad de la serie escogida o tengáis alguna experiencia en el espinoso camino de la predicción de series financieras en general, y de divisas en particular, estaréis de acuerdo conmigo en que es suficientemente bueno como para concluir que esta vía es prometedora y que merece la pena indagar más a fondo en la búsqueda y el uso de los vecinos cercanos.