Académique Documents
Professionnel Documents
Culture Documents
WILDML
Inteligência Arti cial, Aprendizagem Profunda e PNL
A comunidade acadêmica de pesquisa Deep Learning, em grande parte, cou longe dos
mercados nanceiros. Talvez seja porque a indústria nanceira tem uma má reputação, o
problema não parece interessante do ponto de vista da pesquisa, ou porque os dados são
difíceis e caros de obter.
Neste post, vou argumentar que treinar agentes de Aprendizado de Reforço para negociar
nos mercados nanceiro (e criptomoeda) pode ser um problema de pesquisa extremamente
interessante. Acredito que não recebeu atenção su ciente da comunidade de pesquisa, mas
tem potencial para impulsionar o estado da arte de muitos campos relacionados. É bastante
similar aos agentes de treinamento para jogos multiplayer como o DotA, e muitos dos
mesmos problemas de pesquisa são transferidos. Sabendo praticamente nada sobre
negociação, passei os últimos meses trabalhando em um projeto neste campo.
Este não é um post de previsão de preço usando Deep Learning. Então, se você está
procurando exemplos de códigos e modelos, pode car desapontado. Em vez disso, quero
falar em um nível mais alto sobre por que aprender a negociar usando Machine Learning é
difícil, quais são alguns dos desa os e onde eu acho que o Reinforcement Learning se
encaixa. Se houver interesse su ciente nessa área, posso acompanhar outro post que inclui
exemplos concretos.
Espero que a maioria dos leitores não tenha experiência em negociações, assim como eu não
z, então vou começar cobrindo alguns dos princípios básicos. Eu não sou de modo algum
um especialista, então por favor me avise nos comentários, então se você encontrar erros.
Eu vou usar criptomoedas como um exemplo em execução neste post, mas os mesmos
conceitos se aplicam à maioria dos mercados nanceiros. O motivo para usar criptomoedas
é que os dados são gratuitos, públicos e de fácil acesso. Qualquer um pode se inscrever para
www.wildml.com/2018/02/introduction-to-learning-to-trade-with-reinforcement-learning/ 1/28
12/06/2019 Introdução ao Aprendizado do Comércio com Aprendizado por Reforço - WildML
Vamos dar uma olhada no GDAX, uma das mais populares bolsas baseadas nos EUA. Vamos
supor que você queira negociar o BTC-USD (Bitcoin para o dólar americano). Você iria a esta
página e veria algo assim:
O preço atual é o preço do comércio mais recente. Isso varia dependendo se o comércio foi
uma compra ou uma venda (mais sobre isso abaixo). O grá co de preços é normalmente
exibido como um grá co de velas que mostra os preços de Abertura / Início (O), Alto (H),
www.wildml.com/2018/02/introduction-to-learning-to-trade-with-reinforcement-learning/ 2/28
12/06/2019 Introdução ao Aprendizado do Comércio com Aprendizado por Reforço - WildML
Baixo (L) e Fechar / Fim (C) para uma determinada janela de tempo. Na foto acima, esse
período é de 5 minutos, mas você pode alterá-lo usando o menu suspenso. As barras abaixo
do grá co de preços mostram o Volume (V), que é o volume total de todas as negociações
que ocorreram nesse período. O volume é importante porque lhe dá uma noção da do
mercado. Se você quer comprar 100.000 dólares se Bitcoin, mas não há ninguém disposto a
vender, o mercado é . Você simplesmente não pode comprar. Um alto volume de
negociações indica que muitas pessoas estão dispostas a negociar, o que signi ca que você
provavelmente poderá comprar ou vender quando quiser. De um modo geral, quanto mais
dinheiro você quiser investir, mais volume de comércio você deseja. O volume também indica
a "qualidade" de uma tendência de preço. Alto volume signi ca que você pode con ar no
movimento do preço mais do que se houvesse volume baixo. Alto volume é frequentemente
(mas nem sempre, como no caso da manipulação de mercado) o consenso de um grande
número de participantes do mercado.
O lado direito mostra um histórico de todos os negócios recentes. Cada negociação tem um
tamanho, preço, registro de data e hora e direção (compra ou venda). Um comércio é um jogo
entre duas partes, um e um . Mais sobre isso abaixo.
O lado esquerdo mostra o livro de ofertas, que contém informações sobre quem está
disposto a comprar e vender a que preço. O livro de ofertas é composto de dois lados:
(também chamados de ofertas) e . Pergunta: pessoas estão dispostas a
vender, e as ofertas são pessoas dispostas a comprar. Por de nição, o , o menor
preço que alguém está disposto a vender, é maior do que o , o preço mais alto
que alguém está disposto a comprar. Se este não fosse o caso, um comércio entre essas
duas partes já teria acontecido. A diferença entre o melhor e o melhor lance é chamado de
.
Cada do livro de ofertas tem um preço e um volume. Por exemplo, um volume de 2,0 a
um nível de preço de US $ 10.000 signi ca que você pode comprar 2 BTC por US $ 10.000.
Se você quiser comprar mais, precisará pagar um preço mais alto pelo valor que exceder 2
BTC. O volume em cada nível é cumulativo, o que signi ca que você não sabe quantas
pessoas, ou ordens, são constituídas por 2 BTCs. Pode haver uma pessoa vendendo 2 BTC,
ou pode haver 100 pessoas vendendo 0,02 BTC cada (algumas trocas fornecem esse nível
de informação, mas a maioria não). Vamos ver um exemplo:
www.wildml.com/2018/02/introduction-to-learning-to-trade-with-reinforcement-learning/ 3/28
12/06/2019 Introdução ao Aprendizado do Comércio com Aprendizado por Reforço - WildML
Então, o que acontece quando você envia um pedido para comprar 3 BTC? Você estaria
comprando (arredondando para cima) 0,08 BTC em $ 12,551.00, 0,01BTC em $ 12,551.6 e
2,91 BTC em $ 12,552.00. No GDAX, você também pagaria uma taxa de pagamento de 0,3%,
para um total de aproximadamente 1.003 * (0.08 * 12551 + 0.01 * 12551.6 + 2.91 *
12552) = $37,768.88e um preço médio por BTC de 37768.88 / 3 = $12,589.62. É
importante notar que o que você está realmente pagando é muito maior do que $ 12.551,00,
que era o preço atual! A taxa de 0,3% no GDAX é extremamente alta em comparação com as
taxas nos mercados nanceiros, e também muito maior do que as taxas de muitas outras
trocas de criptomoeda, que geralmente estão entre 0% e 0,1%.
Observe também que o seu pedido de compra todo o volume disponível nos níveis
de US $ 12.551,00 e US $ 12.551,60. Assim, a carteira de encomendas irá "subir", e a melhor
pedida será $ 12,552.00. O preço atual também se tornará US $ 12.552,00, porque é aí que o
último negócio aconteceu. A venda funciona de forma análoga, apenas que você está
operando no lado do lance da carteira de pedidos e potencialmente movendo a carteira de
encomendas (e preço) para baixo. Em outras palavras, ao colocar ordens de compra e venda,
você está removendo o volume do livro de pedidos. Se os seus pedidos forem grandes o
su ciente, você pode mudar o livro de pedidos em vários níveis. Na verdade, se você zesse
um pedido muito grande de alguns milhões de dólares, você mudaria a carteira de pedidos e
o preço signi cativamente.
www.wildml.com/2018/02/introduction-to-learning-to-trade-with-reinforcement-learning/ 4/28
12/06/2019 Introdução ao Aprendizado do Comércio com Aprendizado por Reforço - WildML
maior parte do seu volume de compra seria então compensada com um nível de preço muito
mais alto e mais caro. Se você enviar um , também chamado de pedido
passivo, você especi ca o preço e a quantidade que deseja comprar ou vender. O pedido será
colocado no livro e você poderá cancelá-lo, desde que não tenha sido correspondido. Por
exemplo, vamos supor que o preço do Bitcoin seja de US $ 10.000, mas você quer vender a
US $ 10.010. Você coloca um pedido de limite. Primeiro, nada acontece. Se o preço continuar
se movendo para baixo, seu pedido cará parado, não fará nada e nunca será correspondido.
Você pode cancelar a qualquer momento. No entanto, se o preço sobe, seu pedido será, em
algum momento, o melhor preço do livro, e a próxima pessoa que enviar um pedido de
mercado por uma quantidade su ciente corresponderá a ele.
Esta foi uma breve introdução sobre como os livros de pedidos funcionam e as obras
correspondentes. Há muito mais sutilezas e outros tipos de pedidos, muito mais complexos.
www.wildml.com/2018/02/introduction-to-learning-to-trade-with-reinforcement-learning/ 5/28
12/06/2019 Introdução ao Aprendizado do Comércio com Aprendizado por Reforço - WildML
Se o acima não foi claro, você pode encontrar uma grande variedade de informações sobre
mecânica de pedidos e pesquisas nessa área, através do Google.
As principais razões pelas quais estou usando criptomoedas neste post é porque os dados
são públicos, gratuitos e fáceis de obter. A maioria das trocas tem APIs de streaming que
permitem receber atualizações de mercado em tempo real. Usaremos novamente o GDAX (
Documentação da API ) como exemplo, mas os dados de outras trocas são muito
semelhantes. Vamos repassar os tipos básicos de eventos que você usaria para construir um
modelo de Aprendizado de Máquina.
Comércio
1 {
2 "time": "2014-11-07T22:19:28.578544Z",
3 "trade_id": 74,
4 "price": "10.00000000",
5 "size": "0.01000000",
6 "side": "buy"
7
}
BookUpdate
Um ou mais níveis no livro de pedidos foram atualizados. Cada nível é composto pelo lado
(Compra = Compra, Venda = Venda), o preço / nível e a nova quantidade nesse nível. Observe
que estas são alterações, ou deltas, e você mesmo deve construir a carteira de pedidos
completa mesclando-as.
1 {
2 "type": "l2update",
3 "product_id": "BTC-USD",
4 "changes": [
5 ["buy", "10000.00", "3"],
6 ["sell", "10000.03", "1"],
7 ["sell", "10000.04", "2"],
8
["sell", "10000.07", "0"]
9
]
10
}
BookSnapshot
www.wildml.com/2018/02/introduction-to-learning-to-trade-with-reinforcement-learning/ 6/28
12/06/2019 Introdução ao Aprendizado do Comércio com Aprendizado por Reforço - WildML
1 {
2 "type": "snapshot",
3 "product_id": "BTC-EUR",
4 "bids": [["10000.00", "2"]],
5 "asks": [["10000.02", "3"]]
6 }
Isso é praticamente tudo que você precisa em termos de dados de mercado. Um uxo dos
eventos acima contém todas as informações que você viu na interface grá ca. Você pode
imaginar como você poderia fazer uma previsão com base em um uxo dos eventos acima.
Ao desenvolver algoritmos de negociação, para que você otimiza? A resposta óbvia é o lucro,
mas essa não é toda a história. Você também precisa comparar sua estratégia de negociação
com as linhas de base e comparar seu risco e volatilidade com outros investimentos. Aqui
estão algumas das métricas mais básicas que os traders estão usando. Eu não entrarei em
detalhes aqui, então que à vontade para seguir os links para mais informações.
Simplesmente quanto dinheiro um algoritmo faz (positivo) ou perde (negativo) durante algum
período de tempo, menos as taxas de negociação.
Alfa e Beta
Relação de Sharpe
O Índice de Sharpe mede o excesso de retorno por unidade de risco que você está
assumindo. É basicamente o retorno do capital sobre o desvio padrão, ajustado para o risco.
Assim, quanto maior, melhor. Leva em conta tanto a volatilidade de sua estratégia quanto um
investimento alternativo sem risco.
www.wildml.com/2018/02/introduction-to-learning-to-trade-with-reinforcement-learning/ 7/28
12/06/2019 Introdução ao Aprendizado do Comércio com Aprendizado por Reforço - WildML
Rebaixamento máximo
O empuxo máximo é a diferença máxima entre uma máxima local e do subsequente mínimo
local, uma outra medida de risco. Por exemplo, um rebaixamento máximo de 50% signi ca
que você perderá 50% do seu capital em algum momento. Então você precisa fazer um
retorno de 100% para voltar ao seu valor original de capital. Claramente, um rebaixamento
máximo menor é melhor.
Valor em risco é uma métrica de risco que quanti ca quanto capital você pode perder em um
determinado período de tempo com alguma probabilidade, assumindo condições normais de
mercado. Por exemplo, um VaR de 5% em 1 dia de 10% signi ca que há 5% de chance de
você perder mais de 10% de um investimento em um dia.
A abordagem mais óbvia que podemos tomar é a previsão de preços. Se pudermos prever
que o mercado irá subir, podemos comprar agora e vender uma vez que o mercado se moveu.
Ou, de forma equivalente, se previrmos que o mercado desce, podemos ir em baixa (tomar
emprestado um ativo que não possuímos) e depois comprar uma vez que o mercado se
moveu. No entanto, existem alguns problemas com isso.
Primeiro de tudo, que preço previmos? Como vimos acima, não há um preço “único” para o
qual estamos comprando. O preço nal que pagamos depende do volume disponível em
diferentes níveis do livro de pedidos e das taxas que precisamos pagar. Uma coisa ingênua a
fazer é prever o , que é o ponto médio entre o eo .Éo
que a maioria dos pesquisadores faz. No entanto, este é apenas um preço teórico, não algo
em que podemos realmente executar ordens, e pode diferir signi cativamente do preço real
que estamos pagando.
www.wildml.com/2018/02/introduction-to-learning-to-trade-with-reinforcement-learning/ 8/28
12/06/2019 Introdução ao Aprendizado do Comércio com Aprendizado por Reforço - WildML
Vamos ver um exemplo. Vamos supor que o preço do BTC seja de US $ 10.000 e podemos
prever com precisão que o "preço" subirá de US $ 10.000 para US $ 10.050 no próximo
minuto. Então, isso signi ca que você pode ganhar US $ 50 de lucro comprando e vendendo?
Vamos entender porque isso não acontece.
Qual é a lição aqui? Para ganhar dinheiro com uma estratégia simples de previsão de preços,
devemos prever movimentos de preços relativamente grandes em períodos de tempo mais
longos ou ser muito inteligentes com relação a nossas taxas e gerenciamento de pedidos. E
esse é um problema de previsão muito difícil. Poderíamos ter economizado nas taxas usando
limite em vez de ordens de mercado, mas não teríamos garantias de que nossas ordens
fossem correspondidas e precisaríamos construir um sistema complexo para o
gerenciamento e o cancelamento de pedidos.
Mas há outro problema com o aprendizado supervisionado: isso não implica uma . No
exemplo acima, compramos porque previmos que o preço sobe, e na verdade subiu. Tudo
correu conforme o planejado. Mas e se o preço tivesse caído? Você teria vendido? Manteve a
posição e esperou? E se o preço subir um pouco e depois descer novamente? E se
tivéssemos sido incertos sobre a previsão, por exemplo, 65% para cima e 35% para baixo?
Você ainda compraria? Como você escolhe o limite para fazer um pedido?
Assim, você precisa mais do que apenas um modelo de previsão de preço (a menos que seu
modelo seja extremamente preciso e robusto). Também precisamos de uma
que tome como base suas previsões de preço e decida o que realmente fazer:
www.wildml.com/2018/02/introduction-to-learning-to-trade-with-reinforcement-learning/ 9/28
12/06/2019 Introdução ao Aprendizado do Comércio com Aprendizado por Reforço - WildML
fazer um pedido, não fazer nada, cancelar um pedido e assim por diante. Como chegamos a
tal política? Como podemos otimizar os parâmetros da política e os limites de decisão? A
resposta para isso não é óbvia, e muitas pessoas usam heurística simples ou intuição
humana.
Felizmente, existem soluções para muitos dos problemas acima. A má notícia é que as
soluções não são muito e cazes. Vamos ver um uxo de trabalho típico para o
desenvolvimento de estratégias de negociação. Parece algo como isto:
1. Análise de Dados : Você realiza análise exploratória de dados para encontrar oportunidades
de negociação. Você pode examinar vários grá cos, calcular estatísticas de dados e assim
por diante. A saída desta etapa é uma “ideia” para uma estratégia de negociação que deve
ser validada.
2. Treinamento de Modelo Supervisionado: Se necessário, você pode treinar um ou mais
modelos de aprendizagem supervisionada para prever as quantidades de interesse
necessárias para que a estratégia funcione. Por exemplo, previsão de preço, previsão de
quantidade, etc.
3. Desenvolvimento de Políticas : Você então cria uma política baseada em regras que
determina quais ações tomar com base no estado atual do mercado e as saídas dos modelos
supervisionados. Observe que essa política também pode ter parâmetros, como limites de
decisão, que precisam ser otimizados. Essa otimização é feita depois.
4. Backtesting de estratégia: você usa um simulador para testar uma versão inicial da
estratégia em relação a um conjunto de dados históricos. O simulador pode levar em conta
coisas como liquidez do livro de ordens, latências de rede, taxas, etc. Se a estratégia se
comportar razoavelmente bem em backtesting, podemos seguir em frente e fazer a
otimização de parâmetros.
5. Otimização de Parâmetros: Agora você pode realizar uma pesquisa, por exemplo, uma
pesquisa de grade, sobre possíveis valores de parâmetros estratégicos, como limites ou
coe ciente, novamente usando o simulador e um conjunto de dados históricos. Aqui,
over tting para dados históricos é um grande risco, e você deve ter cuidado ao usar
conjuntos de teste e validação apropriados.
www.wildml.com/2018/02/introduction-to-learning-to-trade-with-reinforcement-learning/ 10/28
12/06/2019 Introdução ao Aprendizado do Comércio com Aprendizado por Reforço - WildML
1. Ciclos de iteração são lentos. Os passos 1-3 baseiam-se em grande parte na intuição e você
não sabe se sua estratégia funciona até que a otimização na etapa 4-5 seja feita,
possivelmente forçando você a começar do zero. Na verdade, cada passo vem com o risco de
fracassar e forçá-lo a começar do zero.
2. A simulação chega tarde demais. Você não considera explicitamente os fatores ambientais,
como latências, taxas e liquidez, até o passo 4. Essas informações não devem informar
diretamente o desenvolvimento de sua estratégia ou os parâmetros de seu modelo?
3. As políticas são desenvolvidas independentemente dos modelos supervisionados, embora
eles interajam de perto. As previsões supervisionadas são uma entrada para a política. Não
faria sentido otimizá-los em conjunto?
4. Políticas são simples. Eles estão limitados ao que os humanos podem inventar.
5. A otimização de parâmetros é ine ciente. Por exemplo, suponhamos que você esteja
otimizando para uma combinação de lucro e risco e deseja encontrar parâmetros que
forneçam um alto Índice de Sharpe . Em vez de usar uma abordagem e ciente baseada em
gradiente, você está fazendo uma pesquisa de grade ine ciente e espera que encontre algo
bom (embora não seja superajuste).
Vamos dar uma olhada em como uma abordagem de Aprendizado por Reforço pode resolver
a maioria desses problemas.
www.wildml.com/2018/02/introduction-to-learning-to-trade-with-reinforcement-learning/ 11/28
12/06/2019 Introdução ao Aprendizado do Comércio com Aprendizado por Reforço - WildML
Vamos tentar entender o que esses símbolos correspondem na con guração de negociação.
Agente
Vamos começar com a parte fácil. O agente é nosso agente comercial. Você pode pensar no
agente como um operador humano que abre a GUI de uma troca e toma uma decisão de
negociação com base no estado atual da troca e em sua conta.
Meio Ambiente
Aqui ca um pouco peludo. A resposta óbvia seria que a troca é o nosso ambiente. Mas o
importante é notar que existem muitos outros agentes, tanto humanos quanto algorítmicos,
negociando na mesma bolsa. Vamos supor por um momento que estamos tomando ações
em uma escala minuciosa (mais sobre isso abaixo). Tomamos alguma ação, esperamos um
minuto, obtemos um novo estado, tomamos outra ação e assim por diante. Quando
observamos um novo estado, será a resposta do ambiente de mercado, que inclui a resposta
dos outros agentes. Assim, da perspectiva do nosso agente, esses agentes também fazem
parte do ambiente. Eles não são algo que podemos controlar.
Estado
Escala de tempo
Precisamos decidir em qual escala de tempo queremos atuar. Dias? Horas? Minutos?
Segundos? Milissegundos? Nanossegundos? Escalas de variáveis? Todos estes exigem
abordagens diferentes. Alguém que compra um ativo e o mantém por vários dias, semanas
ou meses, geralmente faz uma aposta de longo prazo com base em análises, como "O Bitcoin
será bem-sucedido?". Muitas vezes, essas decisões são conduzidas por eventos externos,
notícias ou um entendimento fundamental do valor ou potencial dos ativos. Como essa
análise normalmente requer um entendimento de como o mundo funciona, pode ser difícil
automatizar o uso de técnicas de Aprendizado de Máquina. No extremo oposto, temos as
técnicas de negociação de alta frequência (High Frequency Trading - HFT), nas quais as
decisões são quase inteiramente baseadas em sinais de mercado da microestrutura. As
decisões são feitas em cronogramas de nanosegundos e as estratégias de negociação usam
conexões dedicadas a trocas e algoritmos extremamente rápidos, mas simples, que
executam hardware FPGA. Outra maneira de pensar sobre esses dois extremos é em termos
de “humanidade”. O primeiro requer uma visão ampla e um entendimento de como o mundo
funciona, a intuição humana e a análise de alto nível, enquanto o segundo é uma combinação
de padrões simples, mas extremamente rápida.
As Redes Neurais são populares porque, dados muitos dados, podem aprender
representações mais complexas do que algoritmos como Regressão Linear ou Naive Bayes.
Mas Deep Neural Nets também são lentos, relativamente falando. Eles não podem fazer
previsões em escalas de tempo de nanossegundos e, portanto, não podem competir com a
velocidade dos algoritmos HFT. É por isso que acho que o ponto ideal está em algum lugar no
meio desses dois extremos. Queremos agir em uma escala de tempo em que possamos
analisar os dados mais rapidamente do que um ser humano poderia, mas onde ser mais
inteligente nos permite vencer os algoritmos “rápidos, mas simples”. Meu palpite, e
realmente é apenas um palpite, é que isso corresponde a atuar em escalas de tempo entre
alguns milissegundos e alguns minutos. Comerciantes de seres humanos também podem
atuar nesses cronogramas, mas não tão rapidamente quanto os algoritmos. E eles
certamente não podem sintetizar a mesma quantidade de informação que um algoritmo
pode no mesmo período de tempo. Essa é a nossa vantagem.
www.wildml.com/2018/02/introduction-to-learning-to-trade-with-reinforcement-learning/ 13/28
12/06/2019 Introdução ao Aprendizado do Comércio com Aprendizado por Reforço - WildML
Outra razão para agir em escalas de tempo relativamente curtas é que os padrões nos dados
podem ser mais aparentes. Por exemplo, como a maioria dos comerciantes humanos
observa exatamente as mesmas interfaces de usuário grá cas (limitadas) que possuem
sinais de mercado prede nidos (como o sinal MACD embutido em muitas GUIs de troca),
suas ações são restritas às informações presentes nesses sinais. , resultando em certos
padrões de ação. Da mesma forma, os algoritmos em execução no mercado atuam com base
em determinados padrões. Nossa esperança é que os algoritmos do Deep RL possam pegar
esses padrões e explorá-los.
Observe que também podemos atuar em escalas de tempo variáveis, com base em algum
acionador de sinal. Por exemplo, poderíamos decidir tomar uma ação sempre que ocorresse
um grande comércio no mercado. Tal como o agente baseado em gatilho ainda
corresponderia aproximadamente a alguma escala de tempo, dependendo da frequência do
evento de gatilho.
Espaço de ação
Na Aprendizagem por Reforço, fazemos uma distinção entre espaços de ação discretos
( nitos) e contínuos (in nitos). Dependendo de quão complexo queremos que nosso agente
seja, temos algumas escolhas aqui. A abordagem mais simples seria ter três ações: comprar,
manter e vender. Isso funciona, mas nos limita a colocar ordens de mercado e a investir uma
quantia determinista de dinheiro em cada etapa. O próximo nível de complexidade seria
deixar nosso agente saber quanto dinheiro investir, por exemplo, com base na incerteza do
nosso modelo. Isso nos colocaria em um espaço contínuo de ação, já que precisamos decidir
tanto a ação (discreta) quanto a quantidade (contínua). Um cenário ainda mais complexo
surge quando queremos que nosso agente seja capaz de colocar ordens de limite. Nesse
caso, nosso agente deve decidir o nível (preço) e a quantidade do pedido, ambos são
quantidades contínuas. Também deve ser capaz de cancelar pedidos em aberto que ainda
não foram correspondidos.
Função de recompensa
Este é outro complicado. Existem várias funções possíveis de recompensa que podemos
escolher. Um óbvio seria o (Lucro e Perda). O agente recebe uma recompensa
sempre que uma posição, por exemplo, quando vende um ativo que comprou
anteriormente ou compra um ativo anteriormente emprestado. O desse
comércio pode ser positivo ou negativo. Esse é o sinal de recompensa. À medida que o
agente maximiza a recompensa cumulativa total, aprende a negociar com lucro. Esta função
de recompensa é tecnicamente correta e leva à política ótima no limite. No entanto, as
recompensas são escassas porque as ações de compra e venda são relativamente raras em
comparação a não fazer nada. Assim, requer que o agente aprenda sem receber feedback
frequente.
www.wildml.com/2018/02/introduction-to-learning-to-trade-with-reinforcement-learning/ 14/28
12/06/2019 Introdução ao Aprendizado do Comércio com Aprendizado por Reforço - WildML
Uma alternativa com feedback mais frequente seria o , que o lucro líquido
obtido pelo agente se fechasse todas as suas posições imediatamente. Por exemplo, se o
preço cair depois que o agente zer um pedido de compra, ele receberá uma recompensa
negativa, mesmo que ainda não tenha sido vendido. Como o PnL não realizado pode mudar a
cada passo de tempo, ele fornece ao agente sinais de feedback mais frequentes. No entanto,
o feedback direto também pode in uenciar o agente em ações de curto prazo quando usado
em conjunto com um fator de decaimento.
Agora que temos uma ideia de como o Reinforcement Learning pode ser usado na
negociação, vamos entender por que queremos usá-lo sobre técnicas supervisionadas.
Desenvolver estratégias de negociação usando RL é algo como isso. Muito mais simples e
mais princípios do que a abordagem que vimos na seção anterior.
www.wildml.com/2018/02/introduction-to-learning-to-trade-with-reinforcement-learning/ 15/28
12/06/2019 Introdução ao Aprendizado do Comércio com Aprendizado por Reforço - WildML
podemos, por exemplo, otimizar para esse levantamento, sem precisar passar
por estágios separados. Por exemplo, você poderia imaginar dar uma grande recompensa
negativa sempre que ocorrer um rebaixamento de mais de 25%, forçando o agente a
procurar uma política diferente. É claro que podemos combinar o rebaixamento com muitas
outras métricas importantes para você. Isso não é apenas mais fácil, mas também um
modelo muito mais poderoso.
Políticas Aprendidas
Poderíamos levar isso um passo adiante e simular a resposta dos outros agentes no mesmo
ambiente, para modelar o impacto de nossos próprios pedidos, por exemplo. Se as ações do
agente transferem o preço em uma simulação baseada em dados históricos, não sabemos
como o mercado real teria respondido a isso. Normalmente, os simuladores ignoram isso e
presumem que os pedidos não têm impacto no mercado. No entanto, aprendendo um
modelo do ambiente e realizando rollouts usando técnicas como a Pesquisa de Árvore de
Monte Carlo (MCTS), poderíamos levar em consideração as possíveis reações do mercado
(outros agentes). Por ser inteligente sobre os dados que coletamos do ambiente ao vivo,
www.wildml.com/2018/02/introduction-to-learning-to-trade-with-reinforcement-learning/ 16/28
12/06/2019 Introdução ao Aprendizado do Comércio com Aprendizado por Reforço - WildML
Uma habilidade única do Aprendizado por Reforço é que podemos explicitamente levar em
consideração outros agentes. Até agora nós sempre falamos sobre “como o mercado reage”,
ignorando que o mercado é realmente apenas um grupo de agentes e algoritmos, assim
como nós. No entanto, se explicitamente modelarmos os outros agentes no ambiente, nosso
agente poderá aprender a explorar suas estratégias. Em essência, estamos reformulando o
problema de “previsão de mercado” para “exploração de agente”. Isso é muito mais parecido
com o que estamos fazendo em jogos multiplayer, como o DotA.
Meu objetivo com este post não é apenas dar uma introdução ao Aprendizado de Reforço
para o Comércio, mas também convencer mais pesquisadores a dar uma olhada no
problema. Vamos dar uma olhada no que faz da Trading um interessante problema de
pesquisa.
www.wildml.com/2018/02/introduction-to-learning-to-trade-with-reinforcement-learning/ 17/28
12/06/2019 Introdução ao Aprendizado do Comércio com Aprendizado por Reforço - WildML
Ao treinar agentes de Aprendizado por Reforço, muitas vezes é difícil ou caro implantá-los no
mundo real e obter feedback. Por exemplo, se você treinou um agente para jogar StarCraft 2,
como você o deixaria jogar contra um número maior de jogadores humanos? O mesmo para
Xadrez, Poker ou qualquer outro jogo que seja popular na comunidade de RL. Você
provavelmente precisaria de alguma forma entrar em um torneio e deixar seu agente jogar lá.
Agentes de negociação têm características muito semelhantes às dos jogos multiplayer. Mas
você pode facilmente testá-los ao vivo! Você pode implantar seu agente em uma troca por
meio de sua API e obter imediatamente o feedback do mercado real. Se o seu agente não
generalizar e perder dinheiro, você sabe que você provavelmente se adaptou aos dados de
treinamento. Em outras palavras, o ciclo de iteração pode ser extremamente rápido.
Isenção de responsabilidade: não permita que seu agente faça nada ilegal! Cumpra todas as leis aplicáveis em sua
www.wildml.com/2018/02/introduction-to-learning-to-trade-with-reinforcement-learning/ 18/28
12/06/2019 Introdução ao Aprendizado do Comércio com Aprendizado por Reforço - WildML
Um argumento similar pode ser feito para exploração. Muitos dos algoritmos padrão de hoje,
como DQN ou A3C, usam uma abordagem muito ingênua para a exploração, basicamente
adicionando ruído aleatório à política. No entanto, no caso de negociação, a maioria dos
estados do ambiente é ruim e há apenas alguns bons. Uma abordagem aleatória ingênua à
exploração quase nunca tropeçará nesses bons pares de ações estatais. Uma nova
abordagem é necessária aqui.
Multi-Agent Self-Play
Da mesma forma que o auto-jogo é aplicado a jogos de dois jogadores, como o Xadrez ou o
Go, pode-se aplicar técnicas de auto-jogo a um ambiente multiplayer. Por exemplo, você
pode imaginar simultaneamente treinar um grande número de agentes concorrentes e
investigar se a dinâmica de mercado resultante se parece de alguma forma com a dinâmica
encontrada no mundo real. Você também pode misturar os tipos de agentes que está
treinando, de diferentes algoritmos de RL, os baseados em evolução e os determinísticos.
Pode-se também usar os dados do mercado do mundo real como um sinal de feedback
supervisionado para "forçar" os agentes na simulação a se comportarem coletivamente
como o mundo real.
Tempo Contínuo
www.wildml.com/2018/02/introduction-to-learning-to-trade-with-reinforcement-learning/ 19/28
12/06/2019 Introdução ao Aprendizado do Comércio com Aprendizado por Reforço - WildML
Treinamento Reforço Aprender do zero em domínios complexos pode levar muito tempo,
porque eles não precisam apenas aprender a tomar boas decisões, mas também precisam
aprender as “regras do jogo”. Há muitas maneiras de acelerar o treinamento de agentes de
Aprendizado por Reforço, incluindo a transferência de aprendizado e o uso de tarefas
auxiliares. Por exemplo, poderíamos imaginar o pré-treinamento de um agente com uma
política especializada ou a adição de tarefas auxiliares , como previsão de preço, ao objetivo
de treinamento do agente, para acelerar o aprendizado.
O objetivo era dar uma introdução aos agentes de negociação baseados no Aprendizado de
Reforço, argumentar por que eles são superiores aos atuais modelos de desenvolvimento de
estratégias de negociação e argumentar por que acredito que mais pesquisadores deveriam
trabalhar nisso. Espero ter conseguido isso neste post. Por favor, deixe-me saber nos
comentários o que você pensa, e que à vontade para entrar em contato para fazer
perguntas.
A P R E N D I Z A D O P R O F U N D O , R E D E S N E U R A I S , A P R E N D I Z A D O P O R R E FO R Ç O , T R A D I N G
I have been eying this paper: "A Deep Reinforcement Learning Framework for the Financial
Portfolio" that you may enjoy, my hope is to build my own December 2018. Here is the authors
accompanying Github repo for the project as well:
1. https://arxiv.org/abs/1706....
2. https://github.com/Zhengyao...
thank you very much for the great and very interesting post!
With a small group of like-minded individuals who met on a NN user group, I have spent some
time trying RL in trading.
But we were not successful. The systems only were profitable when not
considering the spread and trading fees, or the net only managed to use
the long term trend in the data: when the stock was on a long-term
upward trend, the RL - policy would go long continously for a whole day,
and vice versa.
4△ ▽ • Reply • Share ›
Have you already tried it with an LSTM RNN? And perhaps looked into Q learning
rainbow(See Link below)? in a non stochastic environment they were able to
significantly improve their succes combining several Q learning improvements. CNN
networks are better for images and non sequential environments as far as i
understand. Where the strength of RNN lies in sequential environment. CNN are most
often used for image recognition where RNN are used for language processing.
RNN(LSTM) might have quite a different outcome on a stochastic sequential
environment like stocks, forex and cryptocurrencies.
I believe that if there is any truth in technical analysis than an AI can definitely find it
out. If it however turns out that technical analysis is useless as some people claim then
I think an nn AI is going to have a hard time as well.
Please let me know if you'd like to get in contact. Perhaps we can share knowledge
and help each other out as well.
https://arxiv.org/pdf/1710....
1△ ▽ • Reply • Share ›
Having said that, I do feel some more work on the POMDP problems would make it
easier to apply RL to trading setups.
1△ ▽ • Reply • Share ›
Question: Do you think that same approach would be applied with respect of "Portfolio
Optimization" problem? I think Reinforcement Learning would also be more suitable in solving
this problem than supervised ML one. Moreover, it doesn't need to consider the other agents
(or consider less) so it would be more easier to modeling than that of the HFT problem. What
do you think?
p.s I'm currently doing research on this field personally and want to work for the company
covering financial field and A.I. field. Does Google work on this financial field too?
1△ ▽ • Reply • Share ›
I'm also trying to build a trade agant. It make me feel excited. I also think RL can work better
than traditional approach.
I want to know is there any paper or algorithm is working on Sparse Rewards? I think you point
out a significant issue which RL trading bot will encounter.
Thanks.
1△ ▽ • Reply • Share ›
www.wildml.com/2018/02/introduction-to-learning-to-trade-with-reinforcement-learning/ 22/28
12/06/2019 Introdução ao Aprendizado do Comércio com Aprendizado por Reforço - WildML
1. Animal spirits, the perturbations caused by unanticipated events, for example the Secretary
of the Treasury announcing that he sought assurances from the largest financial institutions of
their liquidity for no obvious reason in a time of robust economic conditions. A model can
observe the perturbation reflected in the market and adjust, but has no way of predicting when
the effects will subside without some means of what many traders call getting color. in human
trading this consists to tapping the trading social network through Bloomberg messaging,
telephone calls, reading bulletins and consulting their inner genie.
I am an equity portfolio manager with a few years’ experience. And I have a strong
background on quant and AI. I am also thinking to apply Deep Reinforcement Learning to the
Financial Markets.
Question: What algorithm will find the optimal policy and maximise rewards along the way to
balance the exploration vs exploitation tradeoff?
thanks.
△ ▽ • Reply • Share ›
Sure the predictions are useful, but only when combined with some other analytics and entry /
exit strategies which is why I want to add additional Q-Learning Predictions (corresponding
buy/sell states) to layer on top of price prediction + strategy triggers.
I have the c# code for a fantastic CNTK implementation of Q-Learning however it has no
reward mechanisms and must be trained manually.
I have thought about writing a self learning reward system - but will need an initial model to
start from otherwise it will take forever to even start learning. For this I'm hoping to create
some 'successful data / trade' combined dataset for the initial modelling.
I am extremely devoted to this 'state of the art' platform development and welcome
www.wildml.com/2018/02/introduction-to-learning-to-trade-with-reinforcement-learning/ 24/28
12/06/2019 Introdução ao Aprendizado do Comércio com Aprendizado por Reforço - WildML
I am extremely devoted to this state of the art platform development and welcome
collaboration so please get in touch if you feel you could contribute.
see more
△ ▽ • Reply • Share ›
My concern would be that DL is already too complex and a lot of the time you will overfit.
Is there a way to do RL with simpler models?
Also DL might need a TPU for effectively trade on that mentioned time frames. Although I think
ML is aslo applicable to 1d, 1w time frames as well.
△ ▽ • Reply • Share ›
Ernst , Me, Dmitry and Stefan have been working on applying Deep Learning on the Financial
Markets domain but as Ernst stated we have not been successful in Actual market. The Deep
Learning developers have essentially stayed away from financial markets but i believe that's
should not be the case. Should all the Developers interested form a group to work together to
tackle financial markets . I also believe Reinforcement Learning offers a much better option
with some flexibility
Guys let's form a group and work together . Who wants to lead this and set up a GITHUB
private or public Repo ? Denny ? Ernst ? Anyone ?
- Denny
- Ernst
- DeveloperAlgo222
- Dmitry
- Stefan
- Nick
- Redlum
- hardikp0
- Jacques Joubert
+ those willing to join and work on it
△ ▽ • Reply • Share ›
Such a nice and respectful posting! I really like it. Thank YOU. That helps a lot.
Could you recommend any advanced topic or courses that you wanted to study, but somehow
you did not, for me to do so to design a framework of algo trading, please? In fact, I am going
www.wildml.com/2018/02/introduction-to-learning-to-trade-with-reinforcement-learning/ 25/28
12/06/2019 Introdução ao Aprendizado do Comércio com Aprendizado por Reforço - WildML
y , g g g, p , g g
to go study data science at Columbia University in this Fall and I am currently a portfolio
manager in Korea.
My current plan is to take electives such as probabilistic graphical model, multi-bandit and
reinforcement learning, algo trading and argueably optimization apart from core courses. Also I
want to write a comprehensive investment model based on reinforcement learning.
I will pursue my degree in order to learn how to incorporate advanced machine learning
algorithms into financial investments. Although I have never been a quant portfolio manager,
but qualitative one, I guess that I might be good at algorithmic trading if I go further into this
field during my study. I studied compute science at college long time ago before I joined in the
asset management company I am currently working for.
△ ▽ • Reply • Share ›
Stock prices can not be predicted. Really??? They can! You can predict them but of course it
is going to be probability. I am predicting tomorrow's stock prices at 99%. But think about it. Is
it really good, great or bad?
Let's say Bitcoin. Yesterday it was 7.000 USD. My prediction will be let's say 7300 USD. So
there is 99% chance of the price? Or 99% range from the actual closing price? That 1% is
going to be 7227 USD. So there is HUGE difference. The best and the only way to make
money is to use RL. So this post is a great approach!
△ ▽ • Reply • Share ›
M H • a year ago
This is a really inspiring article and I think it explained perfectly why all my past attempts on
supervised learning trading algorithms failed. I would love to see in the future if there is more
you can share on this subject.
△ ▽ • Reply • Share ›
In many cases different financial assets are very correlated with one another. If we're trading
multiple assets, a RL method could learn that in certain situations, having asset A + 2 * B - C
tends to be profitable, even if we can't predict whether the individual assets will go up or down.
△ ▽ • Reply • Share ›
I decided to commit my team for both, so I would love to read about your experiments and
share some ideas. Looking forward!
△ ▽ • Reply • Share ›
Overall, on cryptocurrency I have found more valuable to trade the hashing power instead of
the cryptocurrency itself. Nicehash is a sort of hashing power exchange and you can easily
calculate if a currency is profitable or not. The biggest problem was that Nicehash is probably
the worst website ever.
Moreover, I wanted to know your opinion about applying TD-based algorithm in finance. What
I'm concerned is that all the DQN-like algorithm works really well for games with a large (but
finite) number of state, to the other side I'm wandering if they can manage a continuous infinite
state space. For this reason I'm more into policy gradient algorithms (TRPO?).
△ ▽ • Reply • Share ›
www.wildml.com/2018/02/introduction-to-learning-to-trade-with-reinforcement-learning/ 27/28
12/06/2019 Introdução ao Aprendizado do Comércio com Aprendizado por Reforço - WildML
www.wildml.com/2018/02/introduction-to-learning-to-trade-with-reinforcement-learning/ 28/28