Vous êtes sur la page 1sur 28

12/06/2019 Introdução ao Aprendizado do Comércio com Aprendizado por Reforço - WildML

WILDML
Inteligência Arti cial, Aprendizagem Profunda e PNL

10 DE FEVEREIRO DE 2018DE DENNY BRITZ

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

o comércio. As barreiras à negociação nos mercados nanceiros são um pouco maiores e os


dados podem ser caros. E bem, há mais hype, então é mais divertido :)

Negociação nos mercados de criptomoeda (e mais nanceiros) acontece no que é chamado


de leilão duplo contínuo com uma carteira de pedidos aberta em uma bolsa. Essa é apenas
uma maneira extravagante de dizer que há compradores e vendedores que são
correspondidos para que possam negociar entre si. A troca é responsável pela
correspondência. Existem dúzias de trocas e cada uma pode levar produtos ligeiramente
diferentes (como Bitcoin ou Ethereum versus Dólar americano). Em termos de interface, e
em termos dos dados que eles fornecem, todos parecem praticamente os mesmos.

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:

Há muita informação aqui, então vamos ao básico:

Tabela de preços (meio)

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.

História do Comércio (Direita)

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.

Encomendar Livro (Esquerda)

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.

Como os pedidos entram no livro de pedidos? Essa é a diferença entre ordens de e


. No exemplo acima, você emitiu uma , que basicamente signi ca
"Comprar / vender X quantidade de BTC pelo melhor preço possível, ". Se você não
tiver cuidado com o que está na carteira de encomendas, poderá acabar pagando
signi cativamente mais do que o preço atual mostra. Por exemplo, imagine que a maioria dos
níveis mais baixos no livro de pedidos tenha apenas um volume disponível em 0.001 BTC. A

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.

Ordens de mercado do mercado. Ao combinar com os pedidos do livro de


pedidos, você está tirando a opção de trocar de outras pessoas - há menos volume
sobrando! É também por isso que os pedidos de mercado, ou ,
muitas vezes precisam pagar taxas mais altas do que , que colocam
pedidos no livro. Limitar pedidos  porque eles estão dando aos outros a
opção de negociar. Ao mesmo tempo, as ordens limitadas garantem que você não pagará
mais do que o preço especi cado na ordem de limite. No entanto, você não sabe quando ou
se alguém corresponderá ao seu pedido. Você também está dando informações ao mercado
sobre o que você acredita que o preço deveria ser. Isso também pode ser usado para
manipular os outros participantes do mercado, que podem agir de determinada maneira com
base nas ordens que você está executando ou colocando no livro. Como eles fornecem a
opção de negociar e distribuir informações, os criadores de mercado geralmente pagam
taxas mais baixas do que os tomadores de mercado. Algumas trocas também fornecem
ordens stop, que permitem que você de na um preço máximo para suas ordens de mercado.

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

Um novo comércio aconteceu. Cada negociação tem um timestamp, um ID exclusivo


atribuído pela troca, um preço, tamanho e lado, como discutido acima. Se você quisesse
plotar o grá co de preços de um ativo, você simplesmente plotaria o preço de todos os
negócios. Se você quisesse plotar o grá co de velas, você poderia exibir os eventos de
negociação por um determinado período, como cinco minutos, e depois plotar as janelas.

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

Semelhante a um BookUpdate, mas um instantâneo do livro de ofertas completo. Como o


livro de pedidos completo pode ser muito grande, é mais rápido e e ciente usar os eventos
BookUpdate. No entanto, ter um instantâneo ocasional pode ser útil.

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.

PnL Líquido (Lucro Líquido e Prejuízo)

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

A Alpha de ne quanto melhor, em termos de lucro, sua estratégia é quando comparada a um


investimento alternativo, relativamente livre de risco, como um título do governo. Mesmo
que sua estratégia seja lucrativa, seria melhor investir em uma alternativa sem risco. Beta
está intimamente relacionado e mostra a volatilidade da sua estratégia em relação ao
mercado. Por exemplo, um beta de 0,5 signi ca que seu investimento se move em $ 1
quando o mercado movimenta $ 2.

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 (VaR)

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.

Antes de analisar o problema a partir de uma perspectiva de Aprendizado de Reforço, vamos


entender como criar uma estratégia de negociação lucrativa usando uma abordagem de
aprendizado supervisionado. Então, veremos o que é problemático sobre isso e por que
podemos usar as técnicas de Aprendizado por Reforço.

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.

A próxima pergunta é a escala de tempo. Nós prevemos o preço do próximo negócio? O


preço no segundo seguinte? Minuto? Hora? Dia? Intuitivamente, quanto mais longe no futuro
quisermos prever, mais incerteza haverá e mais difícil será o problema de previsão.

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.

Nós compramos quando a melhor pedida é $ 10.000. Muito provavelmente, não


poderemos obter todos os nossos 1,0 BTC preenchidos a esse preço porque o livro de
pedidos não tem o volume necessário. Podemos ser forçados a comprar 0,5 BTC a US $
10.000 e 0,5 BTC a US $ 10.010, por um preço médio de US $ 10.005. No GDAX,
também pagamos uma taxa de pagamento de 0,3%, que corresponde a cerca de US $
30.
O preço está agora em US $ 10.050, como previsto. Nós colocamos a ordem de venda.
Porque o mercado se move muito rápido, no momento em que o pedido é entregue
através da rede, o preço já caiu. Digamos que agora seja de US $ 10.045. Semelhante ao
acima, provavelmente não podemos vender todo o seu 1 BTC a esse preço. Talvez
sejamos obrigados a vender 0,5 BTC a $ 10,045 e 0,5 BTC a $ 10,040, por um preço
médio de $ 10,042.5. Então pagamos outra taxa de pagamento de 0,3%, que
corresponde a cerca de US $ 30.

Então, quanto dinheiro nós zemos? -10005 - 30 - 30 + 10,042.5 = -$22.5. Em vez de


ganhar US $ 50, perdemos US $ 22,5, embora tenhamos previsto com precisão um grande
movimento de preços no próximo minuto! No exemplo acima, havia três razões para isso: não
haver liquidez nos melhores níveis de carteira de pedidos, latências de rede e taxas,
nenhuma das quais o modelo supervisionado poderia levar em conta.

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

6. Simulação e negociação de papel: Antes de a estratégia entrar em operação, a simulação é


feita em novos dados de mercado, em tempo real. Isso é chamado de negociação de papel e
ajuda a prevenir o over tting. Somente se a estratégia for bem sucedida no comércio de
papel, ela será implantada em um ambiente ativo.
7. Live Trading:  A estratégia está agora em exibição em uma troca.

Esse é um processo complexo. Pode variar um pouco dependendo da empresa ou


pesquisador, mas algo nesse sentido normalmente acontece quando novas estratégias de
negociação são desenvolvidas. Agora, por que eu acho que esse processo não é e caz?
Existem algumas razões.

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.

Lembre-se de que o problema tradicional do Aprendizado de Reforço pode ser formulado


como um Processo de Decisão de Markov (MDP). Nós temos um agente atuando em um
ambiente. Cada vez que o agente recebe como entrada o estado atual , executa uma ação
e recebe uma recompensa e o próximo estado . O agente escolhe a ação com base
em alguma política : . É nosso objetivo encontrar uma política que maximize a
recompensa cumulativa em algum horizonte de tempo nito ou in nito.

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.

No entanto, ao juntar outros agentes em um ambiente complexo grande, perdemos a


capacidade de modelá-los explicitamente. Por exemplo, pode-se imaginar que poderíamos
aprender a fazer engenharia reversa dos algoritmos e estratégias que outros operadores
estão executando e depois aprender a explorá-los. Isso nos colocaria em uma con guração
de problema de Aprendizado de Reforço Multiagente (MARL), que é uma área de pesquisa
ativa. Eu falarei mais sobre isso abaixo. Por simplicidade, vamos supor que não fazemos isso
e presuma que estamos interagindo com um único ambiente complexo que inclui o
comportamento de todos os outros agentes.

Estado

No caso de negociação em bolsa, não observamos o estado completo do ambiente. Por


exemplo, não sabemos sobre os outros agentes que estão no ambiente, quantos são, quais
são os saldos de suas contas ou quais são seus pedidos de limite aberto. Isso signi ca que
www.wildml.com/2018/02/introduction-to-learning-to-trade-with-reinforcement-learning/ 12/28
12/06/2019 Introdução ao Aprendizado do Comércio com Aprendizado por Reforço - WildML

estamos lidando com um Processo de Decisão de Markov Parcialmente Observável


(POMDP). O que o agente observa não é o estado atual do ambiente, mas alguma
derivação disso. Vamos chamar isso de observação , que é calculada usando alguma
função do estado completo .

No nosso caso, a observação em cada timestep  é simplesmente o histórico de todos os


eventos de troca (descritos na seção de dados acima) recebidos até o momento . Este
histórico de eventos pode ser usado para construir o atual estado de troca. No entanto, para
que nosso agente tome decisões, há algumas outras coisas que a observação deve incluir,
como o saldo atual da conta e ordens de limite aberto, se houver.

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.

Ambas as funções de recompensa ingenuamente otimizam o lucro. Na realidade, um


comerciante pode querer minimizar o risco. Uma estratégia com um retorno ligeiramente
inferior, mas com uma volatilidade signi cativamente menor, é preferível a uma estratégia
altamente volátil, mas apenas ligeiramente mais lucrativa. Usar o  Índice de Sharpe é uma
maneira simples de levar o risco em consideração, mas há muitos outros. Também podemos
querer considerar algo como Maximum Drawdown , descrito acima. Pode-se imaginar uma
ampla gama de funções complexas de recompensa que compensem o lucro e o risco.

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.

Otimização End-to-End do que nos preocupamos

Na abordagem tradicional de desenvolvimento de estratégia, precisamos passar por várias


etapas, um pipeline, antes de chegarmos à métrica que realmente nos interessa. Por
exemplo, se quisermos encontrar uma estratégia com uma redução máxima de 25%,
precisamos treinar o modelo supervisionado, criar uma política baseada em regras usando o
modelo, fazer o backtest da política e otimizar seus hiperparâmetros e, nalmente, avaliar
seu desempenho através de simulação.

A Aprendizagem por Reforço permite a otimização de ponta a ponta e maximiza as


recompensas (potencialmente atrasadas). Ao adicionar um termo à função de recompensa,

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

Em vez de precisar codi car manualmente uma política baseada em regras, o


Aprimoramento por Reforço aprende diretamente uma política. Não é necessário especi car
regras e limites como “compre quando tiver mais de 75% de certeza de que o mercado vai
subir”. Isso é feito na política de RL, que otimiza para a métrica que nos interessa. Estamos
removendo um passo inteiro do processo de desenvolvimento da estratégia! E como a
política pode ser parametrizada por um modelo complexo, como uma rede Deep Neural,
podemos aprender políticas que são mais complexas e poderosas do que qualquer regra que
um operador humano possa criar. E, como vimos acima, as políticas implicitamente levam em
consideração métricas como risco, para as quais estamos otimizando.

Treinado diretamente em ambientes de simulação

Precisávamos de etapas de backtesting e de otimização de parâmetros separadas porque


era difícil para as nossas estratégias levar em conta fatores ambientais, como liquidez do
pedido, estruturas de taxas, latências e outros, ao usar uma abordagem supervisionada. Não
é incomum encontrar uma estratégia, apenas para descobrir, muito mais tarde, que ela não
funciona, talvez porque as latências sejam muito altas e o mercado esteja se movendo rápido
demais, de modo que você não consiga obter os negócios que esperava obter.

Como os agentes de Reforço Aprendizado são treinados em uma simulação, e que a


simulação pode ser tão complexa quanto você quiser, levando em conta latências, liquidez e
taxas, não temos esse problema! Contornar limitações ambientais é parte do processo de
otimização. Por exemplo, se simularmos a latência no ambiente de Aprimoramento por
Reforço, e isso resultar no erro do agente, o agente receberá uma recompensa negativa,
forçando-o a aprender a contornar as latências.

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

podemos melhorar continuamente nosso modelo. Existe uma troca interessante de


exploração / exploração aqui: Nós agimos otimamente no ambiente ao vivo para gerar lucros,

Aprendendo a se adaptar às condições do mercado

Intuitivamente, certas estratégias e políticas funcionarão melhor em alguns ambientes de


mercado do que outras. Por exemplo, uma estratégia pode funcionar bem em um ambiente
de baixa, mas perder dinheiro em um ambiente de alta. Em parte, isso se deve à natureza
simplista da política, que não possui uma parametrização poderosa o su ciente para
aprender a se adaptar às mudanças nas condições do mercado.

Como os agentes de RL estão aprendendo políticas poderosas parametrizadas por Redes


Neurais, eles também podem aprender a se adaptar a várias condições de mercado, vendo-
os em dados históricos, uma vez que são treinados ao longo de um longo horizonte de tempo
e possuem memória su ciente. Isso permite que eles sejam muito mais robustos para
mercados em mudança. Em fatos, podemos otimizá-los diretamente para se tornarem
robustos a mudanças nas condições de mercado, colocando penalidades apropriadas em sua
função de recompensa.

Capacidade de modelar outros agentes

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.

Teste ao Vivo e Ciclo Rápido de Iteração

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.

Ambientes multijogador grandes

O ambiente de negociação é essencialmente um jogo multiplayer com milhares de agentes


atuando simultaneamente. Esta é uma área de pesquisa ativa. Estamos agora progredindo
em jogos multiplayer como Poker, Dota2 e outros, e muitas das mesmas técnicas serão
aplicadas aqui. Na verdade, o problema comercial é muito mais difícil devido ao grande
número de agentes simultâneos que podem sair ou entrar no jogo a qualquer momento.
Entender como construir modelos de outros agentes é apenas uma direção possível para a
qual se pode entrar. Como mencionado anteriormente, pode-se optar por executar ações em
um ambiente ao vivo com o objetivo de maximizar o ganho de informações com relação a
políticas de tipo que os outros agentes podem estar seguindo.

Aprender a explorar outros agentes e manipular o mercado

Intimamente relacionado é a questão de saber se podemos aprender a explorar outros


agentes que atuam no ambiente. Por exemplo, se soubéssemos exatamente quais
algoritmos estavam sendo executados no mercado, podemos induzi-los a tomar ações que
eles não deveriam tomar e aproveitar seus erros. Isso também se aplica aos comerciantes
humanos, que normalmente agem com base em uma combinação de sinais de mercado
conhecidos, como médias móveis exponenciais ou pressões de pedidos.

Isenção de responsabilidade: não permita que seu agente faça nada ilegal! Cumpra todas as leis aplicáveis em sua

jurisdição. E, nalmente, o desempenho passado não é garantia de resultados futuros.

Recompensas escassas e exploração

Os agentes de negociação geralmente recebem recompensas esparsas do mercado. Na


maioria das vezes você não fará nada. As ações de compra e venda normalmente
representam uma pequena fração de todas as ações realizadas. A aplicação inédita de
algoritmos de Aprendizado de Reforço “com fome de recompensa” falhará. Isso abre a

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

possibilidade de novos algoritmos e técnicas, especialmente os baseados em modelos, que


podem lidar e cientemente com recompensas esparsas.

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

Como os mercados mudam em escalas de tempo de micro a milissegundos, o domínio de


negociação é uma boa aproximação de um domínio de tempo contínuo. Em nosso exemplo
acima, xamos um período de tempo e tomamos essa decisão para o agente. No entanto,
você pode imaginar fazer essa parte do treinamento do agente. Assim, o agente não apenas
decidiria quais ações tomar, mas também realizar uma ação. Novamente, esta é uma
área de pesquisa ativa útil para muitos outros domínios, incluindo a robótica.

Aprendizagem não-estacionária, ao longo da vida e esquecimento catastró co

O ambiente de negociação é inerentemente não-estacionário. As condições do mercado


mudam e outros agentes entram, saem e mudam constantemente de estratégia. Podemos
treinar agentes que aprendem a se ajustar automaticamente às mudanças nas condições de
mercado, sem “esquecer” o que aprenderam antes? Por exemplo, um agente pode fazer a
transição com sucesso de um urso para um mercado em alta e depois voltar para um
mercado de baixa, sem precisar ser treinado novamente? Um agente pode se ajustar à
participação de outros agentes e aprender a explorá-los automaticamente?

Transferir Tarefas de Aprendizagem e Auxiliares

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.

Obrigado por ler todo o caminho até o m :)

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

41 Comments WildML  Thoth Dwight

 Recommend 32 t Tweet f Share Sort by Best

Join the discussion…

Jacques Joubert • a year ago


This is fantastic thanks Denny!

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...

I really hope to see more posts like this on your blog!


37 △ ▽ • Reply • Share ›

Nick Poulos • a year ago


Wow this was an awesome article, absolutely loved it. Nice and long and in-depth. It described
th bl i f ll f th b l t b i i ith GDAX d h
www.wildml.com/2018/02/introduction-to-learning-to-trade-with-reinforcement-learning/
it k d t th 20/28
12/06/2019 Introdução ao Aprendizado do Comércio com Aprendizado por Reforço - WildML
the problem in full, from the absolute beginning with GDAX and how it works, down to the
actual problems and question we would have to ask ourselves if we were attempting this from
scratch on our own. I really hope to see more stuff like this or the next article in this series.
Thank you!
19 △ ▽ • Reply • Share ›

Ernst • a year ago


Hi Denny,

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.

We used Q-learning, 2 variants of A3C and some of @hardmaru's ES to tackle trading US


Stocks with minute bars.

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.

We came to the conclusion this might be because the nets we used


(CNN, Dilated Conv, UFCNN, ...) where not finding structure in the data.

Reasons can be:


see more

4△ ▽ • Reply • Share ›

redlum > Ernst • a year ago


Hi Ernst,

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 ›

Ernst > redlum • a year ago


Hi Redlum, did not receive any mail, I am sorry.
Kind regards
E t
www.wildml.com/2018/02/introduction-to-learning-to-trade-with-reinforcement-learning/ 21/28
12/06/2019 Introdução ao Aprendizado do Comércio com Aprendizado por Reforço - WildML
Ernst
△ ▽ • Reply • Share ›

Show more replies

Show more replies

hardikp0 > Ernst • a year ago


Based on my experiences with applying RL to trading, I feel the main reason is the
POMDP nature of the problem - there is just not enough information available at that
point in time.
If you use more granular data than minute bars, you will likely run into another problem:
There is usually a huge gap between when the action is taken and when the reward is
materialized. This makes it hard to attribute the reward to specific actions.

I also tried to highlight this point my post here - https://www.hardikp.com/201...

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 ›

Ernst > hardikp0 • a year ago


Thanks, your post is very interesting - your POMDP explanation seems to be
very reasonable!
△ ▽ • Reply • Share ›

Show more replies

Show more replies

rightx2 • a year ago


Nice article, Denny!

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 ›

Jimlin Wu • a year ago


Excellent post!

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

Karen Chaltikian > Jimlin Wu • a year ago


I found one:
https://arxiv.org/abs/1709....
However, they use demonstration policy for supervised part - it is not immediately
obvious what would one use for trading in this case.
1△ ▽ • Reply • Share ›

Jimlin Wu > Karen Chaltikian • a year ago


Thanks you! Very helpful!
△ ▽ • Reply • Share ›

Jae Duk Seo • a year ago


Very novel and great post! Thank you for the concrete example!
1△ ▽ • Reply • Share ›

Irikefe Aniboh • 5 months ago


Hi Denny,
Really insightful piece I must confess. I recently delved into using RL techniques in algorithmic
trading and believe the Partially Observable nature of the learning problem makes the initial
parameterization of the policy nontrivial. To which end I'm currently exploring using stateful
LSTM along with some initial guidances on certain microstructures. I also plan on using
PolicySearch technique as it suits well to continuous statespace problems. The
dynamic/continuous reward approach gave some real insight which I also will explore..
△ ▽ • Reply • Share ›

Richard Careaga • 6 months ago


As a lawyer, advising on regulatory aspects of finance, it took me 10 years to come up to
speed on trading in a different market (mortgage backed securities), so color me impressed.

Three meta-thoughts come to mind.

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.

2. Taleb's "skin in the game." Is re-enforcement equivalent?

3. Is it a better goal to achieve or to avoid a Nash equilibrium solution?

I'll follow your project with interest


△ ▽ • Reply • Share ›

Ying LEE • 7 months ago


A good kick off for applying RL in financial market.

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.

I can add some color from the finance side.


www.wildml.com/2018/02/introduction-to-learning-to-trade-with-reinforcement-learning/ 23/28
12/06/2019 Introdução ao Aprendizado do Comércio com Aprendizado por Reforço - WildML

1. In theory, to make money by AI is to challenge EMH (Efficient-market hypothesis)


(https://en.wikipedia.org/wi... ). EMH is the corner stone of modern finance. So that the task is
very tough.
2. In practice, there are some more specific challenges:
A. Limited data. There is only one copy of data. History doesn’t repeat itself simply.
B. The information is hard to normalized. The information from the market, the company, the
industry and the regulation authorities.
C. To balance the return and risk. Maybe the predication is 90% accurate. But 1% long tail
event can make you bankrupt. In other words, the percent of accuracy is not as important as in
other applications.
D. Regarding microstructure, there are a lot of thing that is hard to digitize, such as shorting,
up stick and so on.
3. If someone finds something useful, maybe he will keep it confident and use it to make real
money instead to publish it.

I am still in my early days to implement my ideas. I have drafted my initial idea on


https://github.com/MRYingLE... .Feel free to discuss it with me. If anyone has interest, we may
cooperate. You can reach at me by gmail, Mr.Ying.Lee.
△ ▽ • Reply • Share ›

Hamza Rajnalvee • 8 months ago


this is brilliant! I have decided to base my third year university project on learning to trade via
reinforcement learning and could really do with some guidance into how to go about solving
the problem.

Question: What algorithm will find the optimal policy and maximise rewards along the way to
balance the exploration vs exploitation tradeoff?

thanks.
△ ▽ • Reply • Share ›

David Barnitt • 8 months ago


Nice .Thank you
△ ▽ • Reply • Share ›

Owen Williams • 9 months ago


Having tackled many of these challenges myself, this article was very insightful.
I have created a stateful LSTM model time series prediction service for 45 instruments over
multiple time frames. ( https://www.10thdimensionso... ) It is a very easy framework for me to
work with and includes data / trading services and LSTM services hosted on separate boxes
and SQL in the middle.

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 ›

Rounak Mohanty • 9 months ago


Very good and descriptive post. Thank You very much.
△ ▽ • Reply • Share ›

Emin Temiz • a year ago


This is a very good post. Thanks.

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 ›

Network Guru • a year ago


Thanks Denny for a great post ,

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 ?

Email me at networkguru4444 at gmail .

Initial Group suggestion:

- Denny
- Ernst
- DeveloperAlgo222
- Dmitry
- Stefan
- Nick
- Redlum
- hardikp0
- Jacques Joubert
+ those willing to join and work on it
△ ▽ • Reply • Share ›

Minsu Yeom • a year ago


Hi Denny,

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 ›

Ati • a year ago


I strongly believe that RL is the only way to make money in trading. The problem is the data
you fed. It must be exactly the same data. Otherwise it is going to be something like this:
You are teaching how to play half-life and you are putting it in a doom game...

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 ›

Franco • a year ago


One cheap-dataset-idea might be to create a synthetic dataset. How do we know that works in
financial markets? Because that's the way many financial derivatives are priced. Those
products are not priced based on historical data. By the same logic, this should work for
trading algorithms as well.
△ ▽ • 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 ›

Tony Stark • a year ago


Are there any open source repositories I can look into? I've already gone through the 'Portfolio
optimization using deep reinforcement learning' paper and code available on github. Any other
open source projects working along the same lines?
△ ▽ • Reply • Share ›

disqus_oL6S0gUVn2 • a year ago


Hi Denny, great post! I agree with almost all of what you wrote :)
We work for almost a year now to explore how RL can be applied to financial problems,
trading including.
We also work with an university and may be able to collaborate on PhD. Hopefully we also will
www.wildml.com/2018/02/introduction-to-learning-to-trade-with-reinforcement-learning/ 26/28
12/06/2019 Introdução ao Aprendizado do Comércio com Aprendizado por Reforço - WildML

have a few job opening soon again.


Interested? Send CV to de612@gmx.net and a motivation letter why you.
△ ▽ • Reply • Share ›

Kaio Oiak • a year ago


Fantastic. Congratulations
△ ▽ • Reply • Share ›

xpeuler • a year ago


Thank you Denny for one more piece of nice work! It's well thought and nicely presented.
Practically I think the convergence of the learning requires good envs with well designed
reward mechanism and with informative state features. Two often seen convergence traps are:
1), not to trade for not being able to overcome the loss and get into profit; 2). Always buy or
always sell so that to realize the overall trend of the data/env. Good luck with your
experiments. We'd enjoy reading your results post.
△ ▽ • Reply • Share ›

Michael • a year ago


Another reason I had in mind why learning policies is better than predicting prices:

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 ›

Max • a year ago


Thanks a lot for this article, it is coming at the right time for me. Two weeks ago I started to
think about the connection between RL for SC2 and trading.

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 ›

Алексей Литвинов • a year ago


It would be nice to see some working example of your research! Thank you for the post!)
△ ▽ • Reply • Share ›

Andino Cavallari • a year ago


Nice introduction to the problem.
At the beginning of my PhD I was looking at this topic, but after reviewing the latest work I
realized that the academic interest in this area dropped massively after 2013.
Good to see that others find some value in it.

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

Max • a year ago


Oh, boy! You just read my mind! Many thanks for your excellent post and sharing ideas! Can't
wait to "hands on" on yours example code and models.
△ ▽ • Reply • Share ›

Clark Peng • a year ago


Thanks Denny for such a subtle post. I'm working on applying RL on trading recently. I did
have some progress, although not stable enough, but I think most bright sides on RL you
mentioned are too ideal. In my experience, many RL methods are unstable, as you may
observe that you can't easily re-produce improvement mentioned in RL papers, especially on
the trading task.
So, it would be exciting if we can hear your good news about applying RL on trading. Look
forward to your next sharing. Thanks!!
△ ▽ • Reply • Share ›

Jeremy • a year ago


Really interesting. I'm hoping you follow through with follow up pieces!
△ ▽ • Reply • Share ›

German • a year ago


Hi Denny, you have been very clear with the concepts. My experience working with a bitcoin
trading bot was not good, we cant win to buy and hold yet. But our strategy is based 100% in
financial indicators. I will try with RL buy ill work with more financial indicators as part of the
enviroment. For example, Fibonacci is in 50% or 78%, The previus low price is high to the
actual low price.. (like a candle analysis)
i hope find good news in the next months
△ ▽ • Reply • Share ›

www.wildml.com/2018/02/introduction-to-learning-to-trade-with-reinforcement-learning/ 28/28

Vous aimerez peut-être aussi