Agente de Trading con Reinforcement Learning
Agente de Trading con Reinforcement Learning
1
make predictions about new information. On the se ha acelerado rápidamente en 2020, ya que los
other hand, regarding the finance area, it is an operadores de compra a nivel mundial
area that is at the forefront and that has recurrieron a los algoritmos equipados con
generated several changes in the sector. These Machine Learning del banco de inversión para
two worlds are increasingly integrated to seek lidiar con la intensa volatilidad del mercado. (The
solutions to different problems such as the Trade News, 2021) Sumado a esto,
probability of a bank to default, price modeling or recientemente JP Morgan ha utilizado tecnología
different trading strategies. Due to the relevance de Reinforcement Learning para crear señales
and global importance that the subject of avanzadas para el enrutamiento y la colocación
Machine Learning and its application in the de pedidos. (The Trade News, 2021)
finance area is taking, it is considered that this
Por lo que, en el siguiente documento, se busca
project can be of great benefit to know and
entender y aplicar esta nueva ola del
investigate more in this world and address issues
conocimiento para el área financiera a través del
of current importance. In that sense, in this
Trading automatizado. Para esto se planteará y
research project Reinforcement Learning will be
programará un agente de trading basado en
used to propose and obtain different derivatives
algoritmos de Machine Learning, más
trading strategies. Topics such as the pricing of
específicamente Reinforcement Learning. El
different options will be used based on the Black-
objetivo de este agente será maximizar su
Scholes method. Also, Markov decision processes
recompensa (basada en las ganancias) a partir de
will be used to define the actions and the
las diferentes acciones/decisiones que tomará
transition probabilities of the different states of
durante la ventana de tiempo de prueba. Para
the Reinforcement Learning model. These two
esto, el agente será entrenado en una ventana de
models will be joined to achieve the objective of
tiempo diferente a la de prueba para que este
proposing trading strategies considering Monte-
aprenda los momentos en que cada acción le
Carlo simulations.
optimiza sus recompensas. Seguidamente, se
1. Introducción mostrarán los pasos de la construcción del
modelo de Reinforcement Learning. Luego, se
El mercado de inteligencia artificial de Machine evidenciarán los resultados y el análisis
Learning está creciendo a una tasa compuesta comparativo a otras maneras de inversión.
anual del 18,14% durante el período de Finalmente se presentan las conclusiones y
pronóstico 2020-2026. (KSU | The Sentinel recomendaciones a partir de los resultados
Newspaper, 2021) Asimismo, el crecimiento de obtenidos.
este mercado ha generado que cada vez más
diferentes empresas y organizaciones se 2. Marco Teórico
interesen en las ventajas competitivas de contar 2.1 Investigaciones Recientes
con este tipo de herramientas que buscan el uso
de toda la información o datos relacionados a Son varias las investigaciones y los modelos de
cualquier negocio para mejorar sus procesos, Machine Learning que se han realizado buscando
automatizar funciones o tomar decisiones críticas mejoras y la automatización inteligente de las
más rápidamente. (La República, 2021) estrategias de trading en base de las nuevas
oportunidades y necesidades del sector. Entre
Entre las compañías más beneficiadas por esta estas investigaciones e información reciente del
disciplina científica de la Inteligencia Artificial son tema se encuentran varios libros: Machine
las que hacen parte del sector financiero. Un Learning for Algorithmic Trading, Hands-On
ejemplo de esto es el crecimiento en el comercio Machine Learning for Algorithmic, ambos de
algorítmico de futuros de renta fija en JP Morgan Stefan Jansen y Hands-On Machine Learning with
2
Scikit-Learn, Keras & TensorFlow de Aurélien Sin embargo, estas tareas o problemas de
Géron, entre otros. Del mismo modo, hay varios Machine Learning pueden ser clasificados de
algoritmos, repositorios y modelos estudiados de acuerdo con su funcionalidad y complejidad.
diferentes autores disponibles en la web. En
2.2.1.1 Tareas de percepción
towards data science, un medio de publicaciones
compartidas de conceptos, ideas y códigos, se Las tareas de percepción se caracterizan por
encuentran “How My Machine Learning Trading tener una acción fija, como clasificar una imagen,
Algorithm Outperformed the SP500 For 10 o traducir un texto. Un ejemplo de estas tareas
Years”, un algoritmo de trading usando Python y son los problemas de clasificación o de regresión
Quantopian para vencer el mercado de acciones y el resultado es una función 𝑓(𝑥) aprendida a
por más de 10 años creado por Tomiwa y “Deep partir de los datos disponibles.
Reinforcement Learning for Automated Stock
Trading”, donde se usa Reinforcement Learning 2.2.1.2 Tareas de acción
para el trading de varias acciones utilizando
Las tareas de acción son iguales a las tareas de
Python y OpenAi Gym creado por Bruce Yan y
percepción, sin embargo, en estas se pueden
presentado en ICAIF 2020. Del mismo modo, se
realizar múltiples acciones posibles. Por esta
pueden encontrar varios avances y publicaciones
razón, se acercan más a el aprendizaje humano.
acerca del tema. Una muestra de esto son las
Además, en caso de problemas secuenciales, las
publicaciones “An Intelligent System for Insider
tareas de acción involucran una planeación y una
Trading Identification in Chinese Security Market”
previsión del futuro.
de Deng, Wang, Fu y Wang; y “Machine Learning
for Market Microstructure and High Frequency 2.2.2 Reinforcement Learning2
Trading” en los cuales se aplica Machine Learning
En Reinforcement Learning, un agente
tanto en el mercado de securities de China como
programado realiza observaciones y toma
para el trading de alta frecuencia.
acciones dentro de un ambiente, y en retorno
2.2 Estado del Arte recibe recompensas. Su objetivo es aprender a
2.2.1 Machine Learning1 actuar en la forma que va a maximizar sus
recompensas esperadas a lo largo del tiempo. De
Todas las tareas de Machine Learning se basan en esta manera, se puede asemejar a que el agente
problemas conformados por un agente y el buscara obtener las recompensas positivas y
ambiente. En dichos problemas el agente evadir las negativas. En pocas palabras, el agente
interactúa con el ambiente para aprender de él y actúa en el ambiente y aprende por prueba y
obtener un mejor desempeño en sus tareas lo error para maximizar sus recompensas positivas y
que resulta en un problema de realizar las minimizar las negativas. Por otro lado,
acciones óptimas para lograr un objetivo. Reinforcement Learning puede ser aplicado a una
gran variedad de tareas, por ejemplo: el agente
puede ser el programa que controla un robot, el
agente puede ser el programa que controla el
juego de PacMan, el agente puede observar el
precio de una acción en el mercado y decidir
cuanto comprar o vender cada segundo,
1 2
Definición obtenida de Hands-On Machine Learning Definición obtenida de Hands-On Machine Learning
with Scikit-Learn, Keras & TensorFlow with Scikit-Learn, Keras & TensorFlow
3
2.2.2.4 Proceso de Decisión de Markov
4
Donde 𝑃 es una matriz cuadrada donde cada fila ambiente. Así, cuando una política es actualizada,
y columna está asociada a un estado 𝑆 y el la recolección de experiencias utilizadas se olvida
componente de la fila (𝑖) y la columna (𝑗) es la y se toma una nueva colección a partir de las
probabilidad de que en el sistema se pase del decisiones tomadas con la nueva política. Esto,
estado 𝑖 al estado 𝑗 en un paso. genera que este algoritmo sea del tipo “on-policy
Learning” donde las experiencias tomadas son
2.2.2.4.3 Estado Inicial solo útiles para la actualización de la política
Otro parámetro importante para definir una actual. (Python Lessons, 2020)
Cadena de Markov de Tiempo Discreto es el
2.2.3.1 Estructura modelo Actor-Critic
estado inicial del proceso. Este se caracteriza a
través de 𝑎𝑖 = 𝑃[𝑥0 = 1] o la probabilidad de PPO utiliza la aproximación Actor-Critic para el
que el estado inicial del proceso sea 𝑖. agente, lo que significa que utiliza dos modelos,
uno llamado el Actor y otro llamado Critic. El
2.2.2.4.4 Ecuación de Bellman modelo del Actor se encarga de aprender qué
Bellman encontró la manera para estimar el valor acción tomar bajo la observación de un estado
óptimo de estado de cada estado S, denotado particular del ambiente. De manera similar, el rol
como 𝑉 ∗ (𝑠), que es la suma de todas las principal del modelo Critic es aprender a evaluar
recompensas futuras descontadas que el agente si la acción tomada por el modelo Actor mejora el
puede esperar en promedio después de alcanzar rendimiento en el ambiente o no, y envía
el estado S, asumiendo que actúa en optimalidad. realimentación al Actor. El modelo Critic envía un
Bellman demostró que, si un agente actúa en numero indicando el rating (Q-value) de la acción
optimalidad, entonces la Ecuación de tomada en el estado anterior. Así, comparando
Optimalidad de Bellman aplica. los rating obtenidos, el modelo Actor puede
comparar su política actual con la nueva y decidir
Ecuación 1. Ecuación de Optimalidad de Bellman cómo quiere mejorar para tomar mejores
acciones.
𝑉 ∗ (𝑠) = max ∑ 𝑇(𝑠, 𝑎, 𝑠 ′ )[𝑅(𝑠, 𝑎, 𝑠 ′ ) + 𝛾
a
𝑠 3. Metodología
∗ 𝑉 ∗ (𝑠 ′ )] ∀ 𝑠 3.1 Ambiente
Donde,
Una parte importante de la implementación de
• 𝑇(𝑠, 𝑎, 𝑠 ′)
es la probabilidad de Reinforcement Learning para plantear un agente
transición del estado 𝑠 al estado 𝑠 ′ , dado de trading es el ambiente. Para esto, se creó un
que el agente escoge la acción 𝑎. ambiente personalizado del cual el agente
• 𝑅(𝑠, 𝑎, 𝑠 ′ ) es la recompensa que recibe obtendrá la información y le permitirá tomar
el agente cuando pasa del estado 𝑠 al diferentes acciones durante la ventana de
estado 𝑠 ′ , dado que el agente escoge la tiempo. Este ambiente personalizado cuenta con
acción 𝑎. cuatro funciones fundamentales para correr al
• 𝛾 es el factor de descuento. agente y permitir que aprenda. Estas funciones
son la iniciación, paso, reset y render.
2.2.3 Proximal Policy Optimization 3.1.1 Iniciación
PPO o “Proximal Policy Optimization” es uno de La función de iniciación se utiliza principalmente
los métodos de Reinforcement Learning más para declarar el espacio de acciones que se
populares. PPO se basa en la actualización de las podrán ejecutar y el espacio de estados que
políticas de decisión del agente en base a la contiene toda la información del ambiente.
recolección de experiencias interactuando con el Además, en esta función se tienen en cuenta el
5
número de pasos de la ventana de tiempo, la De esta manera, el agente tendrá toda la
información de las ordenes realizadas y el dinero información relevante al momento de tomar una
inicial con el cual el agente podrá comprar o acción.
vender la acción. En esta función también se
3.1.2.2 Acciones
inicializarán los parámetros y el optimizador de la
Red Neuronal. El agente podrá tomar principalmente 3 acciones:
comprar, vender y mantener. Sin embargo, según
3.1.2 Paso
la información que obtenga de los estados y el
En la formulación del agente de trading cada paso dinero disponible podrá tomar 9 acciones. Estas
será la transición de un estado a otro a partir de acciones serán comprar utilizando el 25%,
una acción. Así, si en el momento T1 y el estado S1 50%,75% o 100% del presupuesto; o vender el
el agente toma la acción A1 este pasará a un 25%, 50%, 75% o 100% de las posiciones que
estado S2 en T2 a través de un paso. tiene en el mercado. Teniendo en cuenta que en
cada momento puede decidir mantener la
3.1.2.1 Estados posición que tiene desde el paso anterior. Cabe
Para la construcción del algoritmo se tienen en aclarar, que para tomar cada acción se tendrá en
cuenta 5 estados de los cuales en cada instante cuenta el presupuesto inicial que se le otorga a el
de tiempo se obtendrá la información. Estos agente.
estados son 𝑆1, 𝑆2 , 𝑆3 , 𝑆4 y 𝑆5 donde: Ahora bien, se llamará valor neto a la suma entre
𝑆1 : 𝑁𝑜 𝑡𝑒𝑛𝑒𝑟 𝑑𝑖𝑛𝑒𝑟𝑜 𝑖𝑛𝑣𝑒𝑟𝑡𝑖𝑑𝑜 el valor que tiene disponible en efectivo el agente
y el valor de las posiciones abiertas que tiene en
𝑆2 : 25% 𝑑𝑒𝑙 𝑑𝑖𝑛𝑒𝑟𝑜 𝑖𝑛𝑖𝑐𝑖𝑎𝑙 𝑖𝑛𝑣𝑒𝑟𝑡𝑖𝑑𝑜 el mercado. Así, cada una de las acciones va a
𝑆3 : 50% 𝑑𝑒𝑙 𝑑𝑖𝑛𝑒𝑟𝑜 𝑖𝑛𝑖𝑐𝑖𝑎𝑙 𝑖𝑛𝑣𝑒𝑟𝑡𝑖𝑑𝑜 estar condicionada y tendrá un resultado
diferente en el valor neto de nuestro agente.
𝑆4 : 75% 𝑑𝑒𝑙 𝑑𝑖𝑛𝑒𝑟𝑜 𝑖𝑛𝑖𝑐𝑖𝑎𝑙 𝑖𝑛𝑣𝑒𝑟𝑡𝑖𝑑𝑜 (Anexo 1)
𝑆5 : 100% 𝑑𝑒𝑙 𝑑𝑖𝑛𝑒𝑟𝑜 𝑖𝑛𝑖𝑐𝑖𝑎𝑙 𝑖𝑛𝑣𝑒𝑟𝑡𝑖𝑑𝑜 Cabe aclarar, que en esta cadena de Markov
Por otra parte, la información que se tiene en (Anexo 2) no se tiene en cuenta la matriz de
cuenta en los estados serán todos los datos que probabilidad ya que al tomar una acción la
se deben tener en cuenta al momento de tomar probabilidad de pasar a el otro estado será de 1.
una acción al momento de realizar Trading. Para
3.1.3 Reset
poder tener en cuenta toda esta información se
tendrá en cada estado la historia de las órdenes y La función de Reset es utilizada para reiniciar el
la historia del mercado. Como historia de las ambiente a un estado inicial y donde se calculan
ordenes se tendrá la información del balance, el las recompensas. En esta función parámetros
valor neto generado por las decisiones tomadas y como el dinero inicial, el Valor Neto generado por
la información de las acciones tomadas en los el agente y la historia del mercado vuelven a
últimos 50 pasos. Ahora bien, como historia del tomar los valores iniciales otorgados en la función
mercado se tendrá la información del precio para de iniciación.
los últimos 50 pasos. Así, la información de los
estados estaría contenida en un arreglo de 10
3.1.4 Render
columnas por 50 filas donde cada fila tiene la La función de Render será utilizada para imprimir
siguiente estructura: los resultados periódicamente. A través de esta
[𝐵𝑎𝑙𝑎𝑛𝑐𝑒, 𝑉𝑎𝑙𝑜𝑟, 𝐶𝑜𝑚𝑝𝑟𝑎, 𝑉𝑒𝑛𝑑𝑒, 𝑀𝑎𝑛𝑡𝑖𝑒𝑛𝑒, visualización se observará cómo el agente toma
las decisiones, qué tipo de acciones toma en cada
𝑂𝑝𝑒𝑛, 𝐻𝑖𝑔ℎ, 𝐿𝑜𝑤, 𝐶𝑙𝑜𝑠𝑒, 𝑉𝑜𝑙𝑢𝑚𝑒]
6
momento de tiempo y el profit o valor neto algoritmo de PPO, por lo que, es necesario
generado por las decisiones tomadas. plantear la estructura del modelo Actor-Critic
para el algoritmo.
3.1.5 Recompensa
En cuanto a la recompensa se busca que
promueva el valor neto o las ganancias a largo
plazo. Por esto para cada paso se calcula la
diferencia entre el valor neto del periodo actual
con respecto al periodo anterior.
4. Resultados
4.1 Entrenamiento del Agente
El dinero disponible debe ser mayor al 25% del • Acción 4: Vender el 50%
presupuesto inicial. Condición:
Resultado: El valor de la posición abierta debe ser mayor al
Se comprarán X acciones donde X es: 50% del presupuesto inicial.
El valor de la posición abierta debe ser mayor al • Acción 5: Comprar con el 75%
25% del presupuesto inicial. Condición:
Resultado: El dinero disponible debe ser mayor al 75% del
Se venderán X acciones donde X es: presupuesto inicial.
11
Se comprarán X acciones donde X es: El valor de la posición abierta debe ser mayor al
100% del presupuesto inicial.
𝑋 = 75% ∗ 𝑃𝑟𝑒𝑠𝑢𝑝𝑢𝑒𝑠𝑡𝑜0 /𝑃𝑟𝑒𝑐𝑖𝑜𝑡
Resultado:
El dinero en efectivo se disminuye en
Se venderán X acciones donde X es:
𝐷𝑖𝑛𝑒𝑟𝑜𝑡 = 𝐷𝑖𝑛𝑒𝑟𝑜𝑡−1 − 𝑋 ∗ 𝑃𝑟𝑒𝑐𝑖𝑜𝑡
𝑋 = # 𝐴𝑐𝑐𝑖𝑜𝑛𝑒𝑠𝑡−1 ∗ 100%
La posición en el número de acciones aumenta en
El dinero en efectivo se disminuye en
#𝐴𝑐𝑐𝑖𝑜𝑛𝑒𝑠𝑡 = #𝐴𝑐𝑐𝑖𝑜𝑛𝑒𝑠𝑡−1 + 𝑋
𝐷𝑖𝑛𝑒𝑟𝑜𝑡 = 𝐷𝑖𝑛𝑒𝑟𝑜𝑡−1 + 𝑋 ∗ 𝑃𝑟𝑒𝑐𝑖𝑜𝑡
• Acción 6: Vender el 75%
La posición en el número de acciones aumenta en
Condición:
#𝐴𝑐𝑐𝑖𝑜𝑛𝑒𝑠𝑡 = #𝐴𝑐𝑐𝑖𝑜𝑛𝑒𝑠𝑡−1 − 𝑋
El valor de la posición abierta debe ser mayor al
75% del presupuesto inicial. 7.2 Anexo 2. Cadena de Markov
Resultado:
𝑋 = # 𝐴𝑐𝑐𝑖𝑜𝑛𝑒𝑠𝑡−1 ∗ 75%
El dinero en efectivo se disminuye en
#𝐴𝑐𝑐𝑖𝑜𝑛𝑒𝑠𝑡 = #𝐴𝑐𝑐𝑖𝑜𝑛𝑒𝑠𝑡−1 − 𝑋
Condición:
Resultado:
#𝐴𝑐𝑐𝑖𝑜𝑛𝑒𝑠𝑡 = #𝐴𝑐𝑐𝑖𝑜𝑛𝑒𝑠𝑡−1 + 𝑋
Condición:
12