Como as empresas podem alavancar o aprendizado por reforço?
Entre outras coisas, Elon Musk quer criar robôs de autotreinamento que ponham fim ao trabalho doméstico. Os especialistas em aprendizado de máquina da OpenAI demonstraram que o reforço profundo por meio de observação e exploração pode ser decisivo para facilitar muitas tarefas. Isso está levando muitos robôs a fazer o trabalho de um humano, principalmente através da observação e exploração.
O que é aprendizado por reforço?
Ela se ramifica da Inteligência Artificial e é classificada como um tipo de aprendizado de máquina. Alavancando a aprendizagem de reforço, os agentes de software e as máquinas são feitos para determinar o comportamento ideal em um contexto específico com o objetivo de maximizar seu desempenho.
O modelo de aprendizagem por reforço profetiza a interação entre dois elementos & # 8211; Ambiente e agente de aprendizagem. O agente de aprendizagem utiliza dois mecanismos, a saber, exploração e exploração. Quando o agente de aprendizagem age por tentativa e erro, ele é denominado como exploração e, quando age com base no conhecimento adquirido do ambiente, é chamado de exploração. O ambiente recompensa o agente por ações corretas, que é o sinal de reforço. Aproveitando as recompensas obtidas, o agente melhora seu conhecimento ambiental para selecionar a próxima ação.
Como as empresas buscam valor na aprendizagem por reforço?
Agora, agentes artificiais estão sendo criados para realizar as tarefas como humanos. Esses agentes fizeram com que sua presença fosse percebida nos negócios, e o uso de agentes impulsionados pelo aprendizado de reforço é cortado em todos os setores.
Robôs impulsionados pelo aprendizado de reforço na fábrica.
Uma espiada em uma fábrica fornece informações privilegiadas sobre as tarefas que são realizadas aqui. Tomemos, por exemplo, a tarefa de escolher um dispositivo de uma caixa e colocá-lo em um contêiner. Os robôs agora estão se treinando para fazer esse trabalho com grande velocidade e precisão. A Fanuc, uma empresa japonesa, orgulha-se do robô industrial que é esperto o suficiente para se treinar para fazer esse trabalho.
Este robô usa o aprendizado de reforço profundo para ser treinado para aprender e executar uma nova tarefa. Enquanto ele escolhe um objeto, ele também captura o vídeo desse processo. Quer suceda ou falhe, memoriza o objeto e ganha conhecimento como parte do modelo de aprendizagem profunda que controla as ações do robô.
Aprendizado por reforço otimiza o gerenciamento de espaço no armazém.
Otimizar a utilização do espaço é um desafio que leva os gerentes de armazém a buscar as melhores soluções. Os altos volumes de estoques, as demandas flutuantes de estoques e as taxas lentas de reabastecimento de estoque são obstáculos a serem enfrentados antes de se utilizar o espaço do depósito da melhor maneira possível. Algoritmos de aprendizado de reforço podem ser construídos para reduzir o tempo de trânsito para estocagem, bem como recuperar produtos no armazém para otimizar a utilização do espaço e as operações do armazém.
Como o preço dinâmico é possível através do aprendizado por reforço.
O preço dinâmico é uma estratégia bem adequada para ajustar os preços, dependendo da oferta e da demanda para maximizar a receita dos produtos. Técnicas como o Q-learning podem ser aproveitadas para fornecer soluções que abordam problemas dinâmicos de preços. Os algoritmos de aprendizado por reforço servem às empresas para otimizar o preço durante as interações com os clientes.
Aprendizado de reforço para entrega ao cliente.
Um fabricante quer entregar produtos para clientes com uma frota de caminhões prontos para atender às demandas dos clientes. Com o objetivo de distribuir as entregas e obter economias no processo, o fabricante opta pelo Problema de Roteamento de Veículos de Entrega Dividida. O principal objetivo do fabricante é reduzir o custo total da frota e atender a todas as demandas dos clientes.
Para este fabricante, a abordagem de agente que depende da aprendizagem de reforço é boa para atingir os resultados desejados. Ao introduzir o sistema multi-agentes, os agentes são feitos para se comunicar e cooperar uns com os outros, aprender através do aprendizado por reforço. O Q-learning é então aproveitado para atender aos clientes apropriados com apenas um veículo. O fabricante obtém benefícios melhorando o tempo de execução e reduzindo o número de caminhões usados para atender às demandas dos clientes.
Personalização do eCommerce trazida pelo aprendizado por reforço.
Para os varejistas e comerciantes de e-commerce, tornou-se um imperativo absoluto para adaptar as comunicações e as promoções que se ajustam aos hábitos de compra dos clientes & # 8211; A personalização está no centro da promoção de experiências de compras relevantes para capturar a fidelidade do cliente. Algoritmos de aprendizagem de reforço estão provando seu valor, permitindo que os comerciantes de e-commerce aprendam e analisem o comportamento do cliente e adaptem produtos e serviços para atender aos interesses dos clientes.
Aprendizado de reforço que conduz decisões de investimento financeiro.
A Pit. ai está na linha de frente, alavancando o aprendizado de reforço para avaliar as estratégias de negociação. Está se tornando uma ferramenta robusta para sistemas de treinamento para otimizar objetivos financeiros. John Moody e Matthew Saffell demonstraram como o aprendizado por reforço pode ser usado para otimizar os sistemas de negociação criados para segurança única ou carteiras de negociação.
O hiHedge é a prova de como o aprendizado de reforço é aproveitado em cenários de negociação. Ele usa o operador de AI, que está envolvido no aprendizado contínuo para gerar estratégias de negociação para os usuários e ajudá-los a realizar suas metas de investimento.
Treinamento de reforço para a vantagem da indústria médica.
Um regime de tratamento dinâmico (DTR) é um assunto de regras de definição de pesquisa médica para encontrar tratamentos eficazes para os pacientes. Doenças como o câncer demandam tratamentos por um longo período em que os medicamentos e os níveis de tratamento são administrados por um longo período. O aprendizado por reforço aborda esse problema de RDD, em que algoritmos de RI ajudam no processamento de dados clínicos para criar uma estratégia de tratamento, usando vários indicadores clínicos coletados de pacientes como entradas.
Como a humanidade está procurando maneiras de fazer a máquina executar as tarefas humanas, a tecnologia emergiu como a força motriz que torna isso possível. Onde há uma grande lacuna entre a ideia e a realidade, o aprendizado por reforço deu esperança ao conduzir robôs e máquinas para executar tarefas que eram inimagináveis ao mesmo tempo. Isto é apenas o começo. Está emergindo como uma tecnologia inovadora que pode gerar valor comercial.
Introdução ao Aprendizado para o Comércio com Aprendizado por Reforço.
A comunidade acadêmica de pesquisa Deep Learning, em grande parte, ficou longe dos mercados financeiros. Talvez seja porque o setor financeiro 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, eu vou argumentar que o treinamento de agentes de Aprendizado de Reforço para o comércio nos mercados financeiros (e criptomoeda) pode ser um problema de pesquisa extremamente interessante. Acredito que não recebeu atenção suficiente 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.
Esta não é uma previsão de preço usando Deep Learning & # 8221; postar. Então, se você está procurando códigos e modelos de exemplo, pode ficar 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 desafios e onde eu acho que o Reinforcement Learning se encaixa. Se houver interesse suficiente nessa área, pode seguir com outro post que inclui exemplos concretos.
Eu espero que a maioria dos leitores não tenha experiência em negociações, assim como eu não fiz, então vou começar cobrindo alguns dos princípios básicos. Eu não sou um especialista, então por favor me avise nos comentários, então se você encontrar erros. Vou usar criptomoedas como um exemplo em execução neste post, mas os mesmos conceitos se aplicam à maioria dos mercados financeiros. O motivo para usar criptomoedas é que os dados são gratuitos, públicos e de fácil acesso. Qualquer um pode se inscrever para o comércio. As barreiras à negociação nos mercados financeiros são um pouco maiores e os dados podem ser caros. E bem, há mais hype por isso é mais divertido :)
Noções básicas de microestrutura de mercado.
Negociação nos mercados de criptomoeda (e mais financeiros) acontece no que é chamado de leilão duplo contínuo com uma carteira de pedidos aberta em uma bolsa. Isso é apenas uma maneira extravagante de dizer que existem compradores e vendedores que são correspondidos para que possam negociar entre si. A troca é responsável pela correspondência. Há dúzias de trocas e cada uma delas pode ter produtos ligeiramente diferentes (como o Bitcoin ou o Ethereum versus o 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. Suponhamos que você deseja negociar BTC-USD (Bitcoin para dólar americano). Você iria a esta página e veria algo assim:
Há muita informação aqui, por isso vamos ver o básico:
O preço atual é o preço do comércio mais recente. Isso varia dependendo se essa negociação foi uma compra ou uma venda (mais sobre isso abaixo). O gráfico de preços é normalmente exibido como um gráfico de velas que mostra os preços de Abertura / Início (O), Alto (H), 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áfico de preços mostram o Volume (V), que é o volume total de todos os negócios que ocorreram nesse período. O volume é importante porque lhe dá uma noção da liquidez do mercado. Se você quer comprar US $ 100.000 em Bitcoin, mas não há ninguém disposto a vender, o mercado é ilíquido. Você simplesmente não pode comprar. Um alto volume de negociações indica que muitas pessoas estão dispostas a fazer transações, o que significa 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 & # 8220; qualidade & # 8221; de uma tendência de preço. Alto volume significa que você pode confiar 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 tomador e um fabricante. 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: Pedidos (também chamados de ofertas) e Ofertas. As pessoas perguntam se estão dispostas a vender e os lances são pessoas dispostas a comprar. Por definição, o melhor pedir, o menor preço que alguém está disposto a vender, é maior do que o melhor lance, 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 spread.
Cada nível 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 significa 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 significa 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 este nível de informação, mas a maioria não oferece). Vamos ver um exemplo:
Então, o que acontece quando você envia um pedido para comprar 3 BTC? Você compraria (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 cerca de 1,003 * (0,08 * 12551 + 0,01 * 12551,6 + 2,91 * 12552) = $ 37.768,88 e 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 financeiros, e também muito mais do que as taxas de muitas outras bolsas de criptomoedas, que estão frequentemente entre 0% e 0,1%.
Observe também que o seu pedido de compra consumiu 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 é onde a última negociação aconteceu. A venda funciona de forma análoga, apenas que você agora está operando no lado do lance da carteira de encomendas 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 suficiente, você pode mudar o livro de pedidos em vários níveis. Na verdade, se você fizesse um pedido muito grande de alguns milhões de dólares, você mudaria a carteira de pedidos e o preço significativamente.
Como os pedidos entram no livro de pedidos? Essa é a diferença entre ordens de mercado e limite. No exemplo acima, você emitiu uma ordem de mercado, que basicamente significa "comprar / vender" a quantia de BTC pelo melhor preço possível, agora mesmo ". ############################################################# Se você não for cuidadoso com o que está na carteira de pedidos, poderá acabar pagando significativamente 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 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 pedido com limite, também chamado de pedido passivo, especifique o preço e a quantidade para os quais você está disposto a comprar ou vender. O pedido será colocado no livro e você poderá cancelá-lo, desde que não tenha sido correspondido. Por exemplo, digamos que o preço do Bitcoin é 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 ficará parado, não fará nada e nunca será correspondido. Você pode cancelar a qualquer momento. No entanto, se o preço subir, seu pedido será, em algum momento, o melhor preço do livro, e a próxima pessoa que enviar um pedido de mercado para uma quantidade suficiente corresponderá a ele.
Ordens de mercado tomam liquidez do mercado. Ao combinar com os pedidos do livro de pedidos, você está tirando a opção de negociar de outras pessoas & # 8211; há menos volume à esquerda! É também por isso que as ordens de mercado, ou os tomadores de mercado, muitas vezes precisam pagar taxas mais altas do que os criadores de mercado, que colocam ordens no livro. Limite de pedidos fornecendo liquidez 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 especificado 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 no mercado, que podem agir de determinada maneira com base nos pedidos 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ê defina 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. 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. Nós usaremos novamente o GDAX (Documentação da API) como exemplo, mas os dados de outras trocas são muito parecidos. Vamos analisar os tipos básicos de eventos que você usaria para criar um modelo de Aprendizado de Máquina.
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áfico de preços de um ativo, você simplesmente plotaria o preço de todos os negócios. Se você quisesse plotar o gráfico de velas, você poderia exibir os eventos de negociação por um determinado período, como cinco minutos, e depois plotar as janelas.
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. Note que estas são alterações, ou deltas, e você mesmo deve construir a carteira de pedidos completa mesclando-as.
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 eficiente usar os eventos BookUpdate. No entanto, ter um instantâneo ocasional pode ser útil.
Isso é tudo que você precisa em termos de dados de mercado. Um fluxo dos eventos acima contém todas as informações que você viu na interface da GUI. Você pode imaginar como você poderia fazer uma previsão com base em um fluxo dos eventos acima.
Algumas métricas da estratégia de negociação.
Ao desenvolver algoritmos de negociação, para que você otimiza? A resposta óbvia é lucro, mas isso 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 vou entrar em detalhes aqui, então sinta-se livre para seguir os links para mais informações.
Net PnL (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.
A Alpha define 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. A Beta está intimamente relacionada e informa a volatilidade da sua estratégia em comparação com o mercado. Por exemplo, uma versão beta de 0,5 significa que seu investimento é de $ 1 quando o mercado movimenta $ 2.
O Índice de Sharpe mede o excesso de retorno por unidade de risco que você está assumindo. É basicamente o seu 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.
O limite máximo é a diferença máxima entre um máximo local e o mínimo local subsequente, outra medida de risco. Por exemplo, um rebaixamento máximo de 50% significa que você perderá 50% do seu capital em algum momento. Você precisa então fazer um retorno de 100% para voltar ao seu valor original de capital. Claramente, um rebaixamento máximo menor é melhor.
Valor em risco (VaR)
Value at Risk é uma métrica de risco que quantifica 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% significa que há 5% de chance de você perder mais de 10% de um investimento em um dia.
Aprendizagem Supervisionada.
Antes de analisar o problema a partir de uma perspectiva de Aprimoramento por Reforço, vamos entender como poderíamos criar uma estratégia comercial lucrativa usando uma abordagem de aprendizado supervisionado. Então, vamos ver 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 vai 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 existe um & # 8220; single & # 8221; preço que estamos comprando. O preço final 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 preço médio, que é o ponto médio entre o melhor lance e o melhor pedido. Isso é 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 significativamente 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.
Vamos ver um exemplo. Suponhamos que o preço do BTC é de $ 10.000 e podemos prever com precisão que o preço & # 8220; price & # 8221; sobe de US $ 10.000 para US $ 10.050 no minuto seguinte. Então, isso significa que você pode ganhar US $ 50 de lucro comprando e vendendo? Vamos entender por que isso não acontece.
Nós compramos quando a melhor pedida é $ 10.000. Muito provavelmente, não conseguiremos que todos os nossos 1,0 BTC sejam 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%, o 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 forçados a vender 0,5 BTC a US $ 10.045 e a 0,5 BTC a US $ 10.040, por um preço médio de US $ 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 fizemos? -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 nossos honorários e gerenciamento de pedidos. E isso é 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: ele não implica uma política. 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 subisse um pouco e depois descesse 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 de 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 política baseada em regras que tome como base suas previsões de preço e decida o que realmente fazer: 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.
Um Fluxo de Trabalho de Desenvolvimento de Estratégia Típico.
Felizmente, existem soluções para muitos dos problemas acima. A má notícia é que as soluções não são muito eficazes. Vamos ver um fluxo de trabalho típico para o desenvolvimento de estratégias de negociação. Parece algo como isto:
Análise de dados: você realiza análise exploratória de dados para encontrar oportunidades de negociação. Você pode examinar vários gráficos, calcular estatísticas de dados e assim por diante. A saída deste passo é uma ideia & # 8220; & # 8221; para uma estratégia de negociação que deve ser validada. 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. Desenvolvimento de política: Você então cria uma política baseada em regras que determina quais ações tomar com base no estado atual do mercado e nas 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. 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 avançar e fazer a otimização de parâmetros. Otimização de Parâmetros: Agora você pode realizar uma pesquisa, por exemplo, uma pesquisa de grade, sobre possíveis valores de parâmetros de estratégia, como limites ou coeficiente, novamente usando o simulador e um conjunto de dados históricos. Aqui, overfitting para dados históricos é um grande risco, e você deve ter cuidado ao usar conjuntos de teste e validação apropriados. Simulação & # 038; Paper Trading: 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 overfitting. Somente se a estratégia for bem-sucedida na negociação de papéis, ela será implantada em um ambiente ao vivo. Live Trading: A estratégia está agora em exibição em uma troca.
Isso é 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 é eficaz? Existem algumas razões.
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. 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 da sua estratégia ou os parâmetros do seu modelo? 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? Políticas são simples. Eles estão limitados ao que os humanos podem inventar. A otimização de parâmetros é ineficiente. Por exemplo, digamos que você esteja otimizando para uma combinação de lucro e risco e deseja encontrar parâmetros que forneçam uma alta taxa de Sharpe. Em vez de usar uma abordagem eficiente baseada em gradiente, você está fazendo uma pesquisa de grade ineficiente e espera que encontre algo de bom (embora não seja superajuste).
Vamos ver como uma abordagem de Aprendizado por Reforço pode resolver a maioria desses problemas.
Aprendizado de Reforço Profundo para Negociação.
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 finito ou infinito.
Vamos tentar entender o que esses símbolos correspondem na configuração de negociação.
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.
Aqui fica 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 medidas 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, colocando outros agentes juntos 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 configuração de problema de Aprendizado de Reforço Multiagente (MARL), que é uma área de pesquisa ativa. Eu vou falar mais sobre isso abaixo. Para simplificar, vamos supor que não fazemos isso e presumamos que estamos interagindo com um único ambiente complexo que inclui o comportamento de todos os outros agentes.
No caso de negociação em bolsa, não observamos o estado completo do ambiente. Por exemplo, não sabemos se os outros agentes estão no ambiente, quantos são, quais são os saldos de suas contas ou quais são os pedidos com limites abertos. Isso significa que estamos lidando com um Processo de Decisão de Markov Parcialmente Observável (POMDP). O que o agente observa não é o estado real do ambiente, mas alguma derivação disso. Vamos chamar a 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 o nosso agente tome decisões, existem algumas outras coisas que a observação deve incluir, como o saldo da conta corrente e ordens de limite aberto, se houver.
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 costuma fazer 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. Because such an analysis typically requires an understanding of how the world works, it can be difficult to automate using Machine Learning techniques. On the opposite end, we have High Frequency Trading (HFT) techniques, where decisions are based almost entirely on market microstructure signals. Decisions are made on nanosecond timescales and trading strategies use dedicated connections to exchanges and extremely fast but simple algorithms running of FPGA hardware. Another way to think about these two extremes is in term of “humanness”. The former requires a big picture view and an understanding of how the world works, human intuition and high-level analysis, while the latter is all about simple, but extremely fast, pattern matching.
Neural Networks are popular because, given a lot of data, they can learn more complex representations than algorithms such as Linear Regression or Naive Bayes. But Deep Neural Nets are also slow, relatively speaking. They can’t make predictions on nanosecond time scales and thus cannot compete with the speed of HFT algorithms. That’s why I think the sweet spot is somewhere in the middle of these two extremes. We want to act on a time scale where we can analyze data faster than a human possibly could, but where being smarter allows us to beat the “fast but simple” algoritmos. My guess, and it really is just a guess, is that this corresponds to acting on timescales somewhere between a few milliseconds and a few minutes. Humans traders can act on these timescales as well, but not as quickly as algorithms. And they certainly cannot synthesize the same amount of information that an algorithm can in that same time period. That’s our advantage.
Another reason to act on relatively short timescales is that patterns in the data may be more apparent. For example, because most human traders look at the exact same (limited) graphical user interfaces which have pre-defined market signals (like the MACD signal that is built into many exchange GUIs), their actions are restricted to the information present in those signals, resulting in certain action patterns. Similarly, algorithms running in the market act based on certain patterns. Our hope is that Deep RL algorithms can pick up those patterns and exploit them.
Note that we could also act on variable time scales, based on some signal trigger. For example, we could decide to take an action whenever a large trade occurred in the market. Such as trigger-based agent would still roughly correspond to some time scale, depending on the frequency of the trigger event.
In Reinforcement Learning, we make a distinction between discrete (finite) and continuous (infinite) action spaces. Depending on how complex we want our agent to be, we have a couple of choices here. The simplest approach would be to have three actions: Buy, Hold, and Sell. That works, but it limits us to placing market orders and to invest a deterministic amount of money at each step. The next level of complexity would be to let our agent learn how much money to invest, for example, based on the uncertainty of our model. That would put us into a continuous action space, as we need to decide on both the (discrete) action and the (continuous) quantity. An even more complex scenario arises when we want our agent to be able to place limit orders. In that case our agent must decide the level (price) and the quantity of the order, both of which are continuous quantities. It must also be able to cancel open orders that have not yet been matched.
This is another tricky one. There are several possible reward functions we can pick from. An obvious one would the Realized PnL (Profit and Loss). The agent receives a reward whenever it closes a position, e. g. when it sells an asset it has previously bought, or buys an asset it has previously borrowed. The net profit from that trade can be positive or negative. That’s the reward signal. As the agent maximizes the total cumulative reward, it learns to trade profitably. This reward function is technically correct and leads to the optimal policy in the limit. However, rewards are sparse because buy and sell actions are relatively rare compared to doing nothing. Hence, it requires the agent to learn without receiving frequent feedback.
An alternative with more frequent feedback would be the Unrealized PnL , which the net profit the agent would get if it were to close all of its positions immediately. For example, if the price went down after the agent placed a buy order, it would receive a negative reward even though it hasn’t sold yet. Because the Unrealized PnL may change at each time step, it gives the agent more frequent feedback signals. However, the direct feedback may also bias the agent towards short-term actions when used in conjunction with a decay factor.
Both of these reward functions naively optimize for profit. In reality, a trader may want to minimize risk. A strategy with a slightly lower return but significantly lower volatility is preferably over a highly volatile but only slightly more profitable strategy. Using the Sharpe Ratio is one simple way to take risk into account, but there are many others. We may also want to take into account something like Maximum Drawdown, described above. One can image a wide range of complex reward function that trade-off between profit and risk.
The Case for Reinforcement Learning.
Now that we have an idea of how Reinforcement Learning can be used in trading, let’s understand why we want to use it over supervised techniques. Developing trading strategies using RL looks something like this. Much simpler, and more principled than the approach we saw in the previous section.
End-to-End Optimization of what we care about.
In the traditional strategy development approach we must go through several steps, a pipeline, before we get to the metric we actually care about. For example, if we want to find a strategy with a maximum drawdown of 25%, we need to train supervised model, come up with a rule-based policy using the model, backtest the policy and optimize its hyperparameters, and finally assess its performance through simulation.
Reinforcement Learning allows for end-to-end optimization and maximizes (potentially delayed) rewards. By adding a term to the reward function, we can for example directly optimize for this drawdown, without needing to go through separate stages. For example, you could imagine giving a large negative reward whenever a drawdown of more than 25% happens, forcing the agent to look for a different policy. Of course, we can combine drawdown with many other metrics you care about. This is not only easier, but also a much more powerful model.
Instead of needing to hand-code a rule-based policy, Reinforcement Learning directly learns a policy. There’s no need for us to specify rules and thresholds such as “buy when you are more than 75% sure that the market will move up”. That’s baked in the RL policy, which optimizes for the metric we care about. We’re removing a full step from the strategy development process! And because the policy can be parameterized by a complex model, such as a Deep Neural network, we can learn policies that are more complex and powerful than any rules a human trader could possibly come up with. And as we’ve seen above, the policies implicitly take into account metrics such as risk, if that’s something we’re optimizing for.
Trained directly in Simulation Environments.
We needed separate backtesting and parameter optimization steps because it was difficult for our strategies to take into account environmental factors, such as order book liquidity, fee structures, latencies, and others, when using a supervised approach. It is not uncommon to come up with a strategy, only to find out much later that it does not work, perhaps because the latencies are too high and the market is moving too quickly so that you cannot get the trades you expected to get.
Because Reinforcement Learning agents are trained in a simulation, and that simulation can be as complex as you want, taking into account latencies, liquidity and fees, we don’t have this problem! Getting around environmental limitations is part of the optimization process. For example, if we simulate the latency in the Reinforcement Learning environment, and this results in the agent making a mistake, the agent will get a negative reward, forcing it to learn to work around the latencies.
We could take this a step further and simulate the response of the other agents in the same environment, to model impact of our own orders, for example. If the agent’s actions move the price in a simulation that’s based on historical data, we don’t know how the real market would have responded to this. Typically, simulators ignore this and assume that orders do not have market impact. However, by learning a model of the environment and performing rollouts using techniques like a Monte Carlo Tree Search (MCTS), we could take into account potential reactions of the market (other agents). By being smart about the data we collect from the live environment, we can continuously improve our model. There exists an interesting exploration/exploitation tradeoff here: Do we act optimally in the live environment to generate profits, or do we act suboptimally to gather interesting information that we can use to improve the model of our environment and other agents?
That’s a very powerful concept. By building an increasingly complex simulation environment that models the real world you can train very sophisticated agents that learn to take environment constraints into account.
Learning to adapt to market conditions.
Intuitively, certain strategies and policies will work better in some market environments than others. For example, a strategy may work well in a bearish environment, but lose money in a bullish environment. Partly, this is due to the simplistic nature of the policy, which does not have a parameterization powerful enough to learn to adapt to changing market conditions.
Because RL agents are learning powerful policies parameterized by Neural Networks, they can also learn to adapt to various market conditions by seeing them in historical data, given that they are trained over a long time horizon and have sufficient memory. This allows them to be much more robust to changing markets. In facts, we can directly optimize them to become robust to changes in market conditions, by putting appropriate penalties into your reward function.
Ability to model other agents.
A unique ability of Reinforcement Learning is that we can explicitly take into account other agents. So far we’ve always talked about “how the market reacts”, ignoring that the market is really just a group of agents and algorithms, just like us. However, if we explicitly modeled the other agents in the environment, our agent could learn to exploit their strategies. In essence, we are reformulating the problem from “market prediction” to “agent exploitation”. This is much more similar to what we are doing in multiplayer games, like DotA.
The Case for Trading Agent Research.
My goal with this post is not only to give an introduction to Reinforcement Learning for Trading, but also to convince more researchers to take a look at the problem. Let’s take a look what makes Trading an interesting research problem.
Live Testing and Fast Iteration Cycle.
When training Reinforcement Learning agents, it is often difficult or expensive to deploy them in the real world and get feedback. For example, if you trained an agent to play Starcraft 2, how would you let it play against a larger number of human players? Same for Chess, Poker, or any other game that is popular in the RL community. You would probably need to somehow enter a tournament and let your agent play there.
Trading agents have characteristics very similar to those for multiplayer games. But you can easily test them live! You can deploy your agent on an exchange through their API and immediately get real-world market feedback. If your agent does not generalize and loses money you know that you have probably overfit to the training data. In other words, the iteration cycle can be extremely fast.
Large Multiplayer Environments.
The trading environment is essentially a multiplayer game with thousands of agents acting simultaneously. This is an active research area. We are now making progress at multiplayer games such as Poker, Dota2, and others, and many of the same techniques will apply here. In fact, the trading problem is a much more difficult one due to the sheer number of simultaneous agents who can leave or join the game at any time. Understanding how to build models of other agents is only one possible direction one can go into. As mentioned earlier, one could choose to perform actions in a live environment with the goal maximizing the information gain with respect to kind policies the other agents may be following.
Learning to Exploit other Agents & Manipulate the Market.
Closely related is the question of whether we can learn to exploit other agents acting in the environment. For example, if we knew exactly what algorithms were running in the market we can trick them into taking actions they should not take and profit from their mistakes. This also applies to human traders, who typically act based on a combination of well-known market signals, such as exponential moving averages or order book pressures.
Disclaimer: Don’t allow your agent to do anything illegal! Do comply with all applicable laws in your jurisdiction. And finally, past performance is no guarantee of future results.
Trading agents typically receive sparse rewards from the market. Most of the time you will do nothing. Buy and sell actions typically account for a tiny fraction of all actions you take. Naively applying “reward-hungry” Reinforcement Learning algorithms will fail. This opens up the possibility for new algorithms and techniques, especially model-based ones, that can efficiently deal with sparse rewards.
A similar argument can be made for exploration. Many of today’s standard algorithms, such as DQN or A3C, use a very naive approach to exploration, basically adding random noise to the policy. However, in the trading case, most states in the environment are bad, and there are only a few good ones. A naive random approach to exploration will almost never stumble upon those good state-actions pairs. A new approach is necessary here.
Similar to how self-play is applied to two-player games such as Chess or Go, one could apply self-play techniques to a multiplayer environment. For example, you could imagine simultaneously training a large number of competing agents, and investigate whether the resulting market dynamic somehow resembles the dynamics found in the real world. You could also mix the types of agents you are training, from different RL algorithms, the evolution-based ones, and deterministic ones. One could also use the real-world market data as a supervised feedback signal to “force” the agents in the simulation to collectively behave like the real world.
Because markets change on micro - to milliseconds times scales, the trading domain is a good approximation of a continuous time domain. In our example above we’ve fixed a time period and made that decision for the agent. However, you could imagine making this part of the agent training. Thus, the agent would not only decide what actions to take, but also when to take an action. Again, this is an active research area useful for many other domains, including robotics.
Nonstationary, Lifelong Learning, and Catastrophic Forgetting.
The trading environment is inherently nonstationary. Market conditions change and other agent join, leave, and constantly change their strategies. Can we train agents that learn to automatically adjust to changing market conditions, without “forgetting” what they have learned before? For example, can an agent successfully transition from a bear to a bull market and then back to a bear market, without needing to be re-trained? Can an agent adjust to other agent joining and learning to exploit them automatically?
Transfer Learning and Auxiliary Tasks.
Training Reinforcement Learning from scratch in complex domains can take a very long time because they not only need to learn to make good decisions, but they also need to learn the “rules of the game”. There are many ways to speed up the training of Reinforcement Learning agents, including transfer learning, and using auxiliary tasks. For example, we could imagine pre-training an agent with an expert policy, or adding auxiliary tasks, such as price prediction, to the agent’s training objective, to speed up the learning.
Conclusão.
The goal was to give an introduction to Reinforcement Learning based trading agents, make an argument for why they are superior to current trading strategy development models, and make an argument for why I believe more researcher should be working on this. I hope I achieved some this in this post. Please let me know in the comments what you think, and feel free to get in touch to ask questions.
Trading Bitcoin with Reinforcement Learning.
Introduction to Algorithmic Trading.
Algorithmic trading has been around for decades and has, for the most part, enjoyed a fair amount of success in its varied forms. Traditionally, algorithmic trading involves selecting trading rules that are carefully designed, optimized, and tested by humans. While these strategies have the advantage of being systematic and able to operate at speeds and frequencies beyond human traders, they are susceptible to all kinds of selection biases and are unable to adapt to changing market conditions.
Reinforcement learning (RL) on the other hand, is much more "hands off." In RL, an “agent” simply aims to maximize its reward in any given environment and tries to improve its decision making through trial and error as it experiences more examples. It can also learn to make decisions based not only on its beliefs of the environment one step ahead but on how the market plays out farther down the road. In most traditional trading algorithms, there are separate processes for prediction, turning that prediction into an action, and determining the frequency of the action based on transaction costs. RL supports an approach that integrates these processes. For all these reasons, RL may discover actions that humans normally would not find.
As a proof of concept, we designed and implemented a trading system for bitcoins as trade data is readily available. To evaluate the efficacy of our reinforcement learning agent, we compare the out of sample investment performance against a buy and hold strategy and a momentum strategy. We believe this framework could be easily expanded and could also be applied to other investment assets.
Reinforcement Learning Basics.
Reinforcement learning is appropriate when the state space (the quantitative description of the environment) is large or even continuous. It may be especially useful when it is impractical to obtain labels for supervised learning. Trading is a good example of this where the correct actions aren’t known and even if they were, would be nearly impossible to apply to every situation in which the agent has to act. RL is also appropriate when, as in trading, the actions have long term consequences and rewards may be delayed.
The essential ingredients to reinforcement learning are states, actions, rewards, and an action selection policy. In a given problem, an agent is supposed to select the best action given its current state. This action produces an observation of the new state as well as a reward, and this is repeated in what is known as a Markov Decision Process. In order for agent to learn its behavior or policy, the reward feedback for this sequence of actions is used to tune the parameters of the model.
There are two main ways of formulating the problem: value based and policy based. In a value based approach, the value of each state or state-action pair is estimated. The policy is generated by accurately estimating these values and then selecting the action with the highest value. In a policy based approach, which is our chosen method, we directly parametrize the policy and then find the parameters that maximizes expected rewards.
We downloaded price and respective volume for each transaction, from GDAX exchange (formerly Coinbase exchange) from December 1, 2014 to June 14, 2017 which we aggregated into 15 minute candles (or intervals). We then split this into a 70%/30% train/test set.
Each 15 minute candle is one step and an episode is defined as 96 steps or roughly 1 day of trading. During training, a random block of 96 contiguous candles is selected to be played as an episode and a random number of bitcoins between 0 and 4 is selected to start the sequence. The agent makes a decision to buy, sell, or hold at each step subject to an lower/upper limit of 0 and 4 bitcoins respectively. The bitcoin holdings at each step are calculated, as well as the returns based on those holdings. Returns is calculated as number of bitcoins*[p(t)/p(t-1)-1]. At the end of each episode, we collect all the inputs, actions taken, and returns.
In order for our RL agent to learn a proper policy, it needs inputs that are representative of the state of the market and are somewhat predictive in aggregate. We use 18 different technical indicators that express where the current price and volume is in relation to its past history, along with 5 state variables which represent the 5 possible bitcoin holdings between 0 and 4 bitcoins.
Heterogeneous trading strategies with adaptive fuzzy Actor–Critic reinforcement learning: A behavioral approach.
The present study addresses the learning mechanism of boundedly rational agents in the dynamic and noisy environment of financial markets. The main objective is the development of a system that “decodes” the knowledge-acquisition strategy and the decision-making process of technical analysts called “chartists”. It advances the literature on heterogeneous learning in speculative markets by introducing a trading system wherein market environment and agent beliefs are represented by fuzzy inference rules. The resulting functionality leads to the derivation of the parameters of the fuzzy rules by means of adaptive training. In technical terms, it expands the literature that has utilized Actor–Critic reinforcement learning and fuzzy systems in agent-based applications, by presenting an adaptive fuzzy reinforcement learning approach that provides with accurate and prompt identification of market turning points and thus higher predictability. The purpose of this paper is to illustrate this concretely through a comparative investigation against other well-established models. The results indicate that with the inclusion of transaction costs, the profitability of the novel system in case of NASDAQ Composite, FTSE100 and NIKKEI255 indices is consistently superior to that of a Recurrent Neural Network, a Markov-switching model and a Buy and Hold strategy. Overall, the proposed system via the reinforcement learning mechanism, the fuzzy rule-based state space modeling and the adaptive action selection policy, leads to superior predictions upon the direction-of-change of the market.
Classificação JEL.
Escolha uma opção para localizar / acessar este artigo:
Verifique se você tem acesso através de suas credenciais de login ou de sua instituição.
Forex Mecânico
Negociação no mercado de câmbio usando estratégias de negociação mecânicas.
Reforço Aprendizagem: Usando Q-learning com osciladores RSI.
O Índice de Força Relativa (RSI) é um dos indicadores que mais gosto por causa de sua capacidade de condensar quantidades significativas de informações importantes em uma única medida. Por causa disso, eu queria ver se eu poderia usar um grupo de medidas de RSI a fim de criar uma política ótima para negociar o câmbio no período diário. Hoje quero falar sobre alguns dos resultados obtidos e por que eles apontam para o fato de que sistemas simples e bem-sucedidos podem ser criados usando o aprendizado por reforço, desde que a informação correta seja usada para a geração de políticas. Você verá como eu poderia, de fato, gerar uma política ótima usando apenas mensurações de RSI em um número significativo de pares de Forex.
A ideia da aprendizagem por reforço é tratar o mercado como se fosse um jogo (você pode ler mais sobre isso aqui). Definimos um conjunto de estados de mercado usando um conjunto de variáveis para descrever o mercado e depois treinamos um algoritmo usando o Q-learning para obter uma política ótima para esses estados de mercado. Para este experimento, decidi usar osciladores RSI de diferentes períodos para criar uma tabela de valor Q que eu pudesse usar para aprendizado por reforço. Usando dados diários de 1986 a 2010 para gerar a política ótima e, em seguida, os dados de 2010 a 2017 para realizar um teste pseudo-fora da amostra para ver se o algoritmo foi ajustado à curva ou não. É claro que testes de todo o processo de treinamento / teste sobre dados aleatórios também são necessários para estabelecer viés de mineração de dados. Note que estes sistemas baseados em aprendizado por reforço não contêm absolutamente nenhum take profit, stop loss ou outros mecanismos de saída, a abordagem de aprendizado por reforço apenas decide no início de cada dia se é ideal ser longo, curto ou fora do mercado de acordo a sua política e comércios em conformidade.
A imagem acima (backtest EUR / USD) mostra a primeira tentativa que fiz usando 256 diferentes estados de mercado possíveis. With this amount of freedom the optimal policy for the training period achieves outstanding results in 1986-2010 but utterly fails when confronted with the pseudo out-of-sample conditions it didn’t see during the training phase. Em essência, 256 estados de mercado são muitos e o que alcançamos durante o período de treinamento é uma curva de ajuste aos dados usando os graus de liberdade excessivos dentro da tabela Q que não fornecem informações úteis adicionais.
Para aliviar este problema, mudei para uma tabela Q com apenas 64 diferentes estados de mercado, que foram alcançados usando 6 diferentes osciladores RSI. Os gráficos acima mostram os resultados na amostra e pseudo-fora-de-amostra de usar este algoritmo ao longo de 5 pares diferentes, incluindo o resultado de uma carteira de negociação usando todos os pares. Os resultados são muito mais bem-sucedidos, com todos os pares alcançando resultados lucrativos no pseudo-fora da amostra. It is however worth mentioning that many of them do become much flatter in their pseudo out-of-sample compared with their in-sample period, while others – mais notavelmente o EUR / USD & # 8211; basicamente continuam a mesma tendência que eles seguiram durante o período de treinamento na amostra.
Para o portfólio geral, há uma deterioração importante do período de treinamento & # 8211; o que é esperado & # 8211; como o índice anualizado de Sharpe cai quase 50%, com um valor de 3,49 no período in-sample caindo para 1,90 dentro do período pseudo-fora da amostra. É quase certo que isso cairia ainda mais dentro de um período real fora da amostra, com uma probabilidade razoável de Sharpe possivelmente entre 0,5 e 1,0, à medida que os efeitos totais do viés de mineração de dados, viés de ajuste de curva e decaimento alfa se tornam aparente no comércio ao vivo.
Com tudo isso dito, é bastante surpreendente que exatamente os mesmos descritores de mercado possam gerar políticas bem-sucedidas em 4 diferentes pares de moedas em seu período de tempo diário. Ainda mais considerando a simplicidade desses descritores. Dito isso, as políticas causam restrições importantes nas decisões dos algoritmos, com a carteira global ocupando cerca de 20 negócios por ano. Também vale ressaltar que este tipo de projeto de sistema de negociação de aprendizagem por reforço não é traduzido para coisas como GPU, mas isso pode não ser necessário, já que é realmente fácil adicionar e testar manualmente essas entradas complexas, já que toda a otimização da política é completamente automatizado pelos algoritmos de Q-learning. Pode não ser difícil gerar um portfólio de algumas dezenas de sistemas, derivando políticas ótimas a partir de descritores semelhantes.
Комментариев нет:
Отправить комментарий