Saturday, 7 April 2018

Qlearning forex


Forex Mecânico.
Negociação no mercado FX usando estratégias mecânicas de negociação.
Aprendizagem de reforço e graus de liberdade no comércio de Forex.
Ontem falei sobre alguns dos meus desenvolvimentos iniciais na aprendizagem de reforço usando o Q-learning no comércio de Forex e quão importante é controlar o ajuste de curva no Q-learning para garantir que você não tenha algoritmos que se encaixem no ruído dentro do dados. Na publicação de hoje, quero dar uma olhada mais profunda nisso usando o modelo que desenvolvi para o gráfico diário que usa informações binárias sobre velas de baixa e alta para definir estados e, em seguida, executa um exercício Q-learning com base nessas informações . Com este exemplo, poderemos ver o efeito de mudar a quantidade de graus de liberdade dentro da aprendizagem de reforço e como isto afeta nossa capacidade de ajustar a curva ao sistema para os dados. Veremos como isso afeta os resultados de fazer testes pseudo fora da amostra e como o Q-learning nos dá uma habilidade bastante única para controlar o quão bem o nosso sistema é capaz de aprender com os dados em mãos.
No meu exemplo inicial de Q-learning, temos um sistema que aprende como negociar usando informações de barras anteriores e podemos controlar a quantidade de informações que fornecemos e, portanto, o quão bem o sistema pode distinguir entre dois estados de mercado diferentes. Imagine que trocamos um sistema que só vê os últimos dois bares e se ambos eram de baixa, tanto otimistas, um mais baixista ou um otimista de baixa; nosso sistema seria capaz de ver apenas 4 estados de mercado diferentes e teria que aprender com milhares de barras como negociar dentro dessas quatro circunstâncias diferentes. É claro que o nosso sistema não é obrigado a fazer bem, a menos que exista uma relação extremamente óbvia entre a direção das duas últimas barras e a direção de uma barra subseqüente, uma vez que isso não é o caso & # 8211; Como tal, uma ineficiência seria simplesmente óbvia demais. esperamos que o nosso Q-learning não consiga aprender nada de substância.
O número de estados possíveis que nosso algoritmo de aprendizagem de reforço pode distinguir evolui como 2 ^ N onde N é o número de barras no passado que estamos olhando para definir cada estado. No exemplo acima, temos 2 barras para 2² = 4, se usarmos 3 então é 2² = 8 e assim por diante. Em vez disso, alcançaremos um ponto em que podemos definir centenas de estados como por exemplo 2вЃ№ = 512. Quando você adiciona mais e mais graus de liberdade dessa maneira, você está dando ao algoritmo a chance de distinguir dois estados de mercado devido a algo que pode não ser relevante (ruído), mas essa diferença é suficiente para obter lucro como o algoritmo é capaz de derivar decisões longas / curtas / escocesas de tal configuração. É aqui que o ajuste da curva começa a dar errado, você não está aprendendo os fundamentos do jogo, mas você está aprendendo algo irrelevante para o futuro. No entanto, adicionar mais graus de liberdade também significa que você pode fazer melhores distinções nos testes, o que significa maiores lucros históricos.
A primeira imagem nesta publicação mostra como os lucros históricos evoluem, pois usamos os algoritmos Q-learning com mais barras e, portanto, estados mais possíveis. Como você pode ver abaixo de 7 barras (128 estados possíveis), não fazemos um lucro histórico porque simplesmente não temos liberdade suficiente para aprender o suficiente dos dados, enquanto acima deste ponto vemos um aumento acentuado no lucro histórico à medida que adicionamos mais barras, nós começamos a melhorar a capacidade do algoritmo de aprender com os dados históricos de forma muito significativa. Uma vez que o crescimento do número de estados é exponencial, o mesmo é o lucro histórico que pode ser obtido a partir deles. Se você soubesse apenas dados históricos, ficaria claro que queremos o melhor ajuste possível. maior número de barras e # 8211; mas dado que queremos testar a capacidade do algoritmo de Q-learning de realmente generalizar, podemos realizar um teste pseudo-fora-de-amostra dividindo os dados de 1986-2018 para treinar o algoritmo (execute vários backtests usando isso dados até a aprendizagem convergem) e, em seguida, use o período 2018-2018 para executar um único backtest e veja como as tarifas do algoritmo.
O segundo gráfico na publicação revela o que acontece quando você faz isso por 7, 8 e 9 barras. É evidente que os resultados no espaço de teste pseudo fora da amostra são bastante semelhantes para todos eles (veja os gráficos subjacentes à equidade). Isso ocorre porque o algoritmo Q-learning aprende quando se troca por esse período, apenas que não pode aprender várias vezes, mas apenas a partir da informação que obtém enquanto negocia. O algoritmo de 9 bar funciona melhor do que o resto em alguns sentidos # 8211; por exemplo, a volatilidade é menor e # 8211; mas é o algoritmo que decepciona o mais relativo aos resultados dentro do período de treinamento. Se você tivesse visto apenas dados de 1986-2018 e tentou o algoritmo de 7 barras, você não teria decepcionado com os resultados no período 2018-2018 e # 8211; eles parecem normais mas quando você vai para complexidades mais altas, os resultados históricos se tornam muito melhores do que o que realmente estamos recebendo no pseudo fora da amostra. Um caso clássico de sobreposição.

Forex Mecânico.
Negociação no mercado FX usando estratégias mecânicas de negociação.
Aprendizagem de reforço: usando Q-learning com osciladores RSI.
O índice de força relativa (RSI) é um dos indicadores que eu mais gosto devido à sua capacidade de condensar quantidades significativas de informações importantes em uma única medida. Por isso, eu queria ver se eu poderia usar um grupo de medidas de RSI, a fim de dispor uma política ótima para a negociação do câmbio no prazo diário. Hoje eu quero falar sobre alguns dos resultados obtidos e por isso que eles apontam para o fato de que os sistemas simples bem-sucedidos podem ser criados usando aprendizagem de reforço, desde que a informação certa seja utilizada para geração de políticas. Você verá como eu poderia de fato gerar uma política ótima usando apenas medidas RSI em um número significativo de pares Forex.
A idéia de aprendizagem de reforço é tratar o mercado como se fosse um jogo (você pode ler mais sobre isso aqui). Nós definimos um conjunto de estados de mercado usando algum conjunto de variáveis ​​para descrever o mercado e, em seguida, formamos um algoritmo usando Q-learning para derivar uma política ótima para esses estados de mercado. Para essa experiência, decidi usar os osciladores RSI de diferentes períodos para criar uma tabela de valor Q que eu poderia usar para a aprendizagem de reforço. Usando dados diários de 1986 a 2018 para gerar a política ótima e, em seguida, os dados de 2018 a 2017 para realizar um teste pseudo fora de amostra para ver se o algoritmo foi ajustado à curva ou não. Naturalmente, os 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-se que esses sistemas baseados em aprendizagem de reforço não têm absolutamente nenhum lucro, interromper a perda ou outros mecanismos de saída, a abordagem de aprendizado de reforço simplesmente decide no início de cada dia se o ótimo é longo, curto ou fora do mercado de acordo com para a sua política e negociações em conformidade.
A imagem acima (EUR / USD backtest) mostra a primeira tentativa que fiz usando 256 diferentes estados de mercado possíveis. Com essa quantidade de liberdade, a política ótima para o período de treinamento atinge resultados notáveis ​​em 1986-2018, mas falha completamente quando confrontado com as condições pseudo-out-of-sample que não viu durante a fase de treinamento. Em essência, os 256 estados de mercado são muitos e o que conseguimos durante o período de treinamento é um ajuste de curva para os dados usando o excesso de graus de liberdade dentro da tabela Q que não fornecem informações úteis adicionais.
Para aliviar esse problema, mudei para uma tabela Q com apenas 64 estados de mercado diferentes, que foram alcançados usando 6 osciladores RSI diferentes. Os gráficos acima mostram os resultados na amostra e pseudo fora da amostra de usar este algoritmo em 5 pares diferentes, incluindo o resultado de um portfólio de negociação usando todos os pares. Os resultados são muito mais bem sucedidos, com todos os pares alcançando resultados rentáveis ​​no pseudo fora da amostra. No entanto, vale a pena mencionar que muitos deles se tornam muito mais lisos em sua pseudo fora da amostra, em comparação com o período da amostra, enquanto outros. mais notavelmente o EUR / USD & # 8211; basicamente continuam a mesma tendência que seguiram durante o período de treinamento na amostra.
Para o portfólio global há uma deterioração importante do período de treinamento # 8211; o que é esperado & # 8211; uma vez que a relação Sharpe anualizada decai quase 50% com um valor de 3,49 no período da amostra caindo para 1,90 dentro do período pseudo fora da amostra. É quase certo que isso iria cair ainda mais dentro de um período real fora da amostra, com um Sharpe razoável que se espera possivelmente entre 0,5 e 1,0, já que os efeitos completos do viés de mineração de dados, tendência de ajuste de curva e decaimento alfa tornam-se aparente na negociação ao vivo.
Com tudo isso, é bastante surpreendente que os mesmos descritores de mercado possam gerar políticas bem sucedidas em 4 diferentes pares de moedas em seus prazos diários. Ainda mais, considerando o quão simples são esses descritores. Dito isto, as políticas causam restrições importantes nas decisões dos algoritmos com o portfólio global levando cerca de 20 negócios por ano. Vale ressaltar também que esse tipo de design de sistema de comércio de aprendizado de reforço não é traduzido trivialmente para coisas como a mineração de GPU, porém isso pode não ser necessário, pois é realmente fácil adicionar e testar essas entradas complexas manualmente, pois toda otimização de políticas é completamente automatizado pelos algoritmos Q-learning. Pode não ser difícil gerar um portfólio de algumas dúzias de sistemas que derivem políticas ótimas de descritores similares.

Qlearning forex
Puxe pedidos 0.
Participe do GitHub hoje.
O GitHub é o lar de mais de 20 milhões de desenvolvedores que trabalham juntos para hospedar e rever o código, gerenciar projetos e criar software juntos.
Clone com HTTPS.
Use o Git ou o check-out com o SVN usando o URL da web.
Python Deep CNN Q-Learner para previsões FOREX Atualmente, o código no GitHub é apenas uma versão de teste para timeseries de sinus. Tudo funciona perfeitamente: a rede aprende a comprar / vender com base nos valores dos indicadores atuais.
Se estiver interessado entre em contato comigo para obter o código completo para trabalhar no mercado Forex.
&cópia de; 2018 GitHub, Inc. Termos Privacidade Segurança Status Ajuda.
Você não pode executar essa ação neste momento.
Você fez login com outra guia ou janela. Recarregue para atualizar sua sessão. Você se separou em outra guia ou janela. Recarregue para atualizar sua sessão.

Qlearning forex
Recomendamos atualizar para o mais recente Safari, Google Chrome ou Firefox.
Puxe pedidos 0.
Participe do GitHub hoje.
O GitHub é o lar de mais de 20 milhões de desenvolvedores que trabalham juntos para hospedar e rever o código, gerenciar projetos e criar software juntos.
Clone com HTTPS.
Use o Git ou o check-out com o SVN usando o URL da web.
Este projeto é construído para trocar forex automaticamente. É construído sobre o conceito de DQN (Deep Q Network) e projetos abaixo.
Suporte o tensorboard.
Você deve criar seu próprio config train / config. py. Para verificar o formato da configuração, você pode dar uma olhada em train / config-tmpl. py.
&cópia de; 2018 GitHub, Inc. Termos Privacidade Segurança Status Ajuda.
Você não pode executar essa ação neste momento.
Você fez login com outra guia ou janela. Recarregue para atualizar sua sessão. Você se separou em outra guia ou janela. Recarregue para atualizar sua sessão.

Momentum.
Esta publicação é baseada no meu artigo anterior escrito em japonês. (Nekopuni. holy. jp/?p=1231)
& # 8211; Aplicando reforço aprendendo a estratégia de negociação no mercado fx.
& # 8211; Estimando o valor Q pela simulação Monte Carlo (MC).
& # 8211; Empregando MC de primeira visita por simplicidade.
& # 8211; Usando curto-prazo e longo prazo Sharpe-ratio da estratégia em si como uma variável de estado, para testar estratégia de impulso.
& # 8211; Usando o método epsilon-ganancioso para decidir a ação.
Primeiro visita MC.
1. Calcule o estado no dia t (estado = taxa de Sharpe um dia antes do dia t)
2. Decida a ação de acordo com o estado (posição longa, sem posição ou posição curta)
3. Atualize a matriz de recompensas com base na recompensa obtida na próxima etapa de tempo t + 1.
4. Atualize a matriz Q uma vez que t é igual ao último passo T.
Faça o loop acima do procedimento até sentir-se feliz.
Código Python.
Desta vez, o USDJPY diário da FRED é usado para simulação.
O chamado ponto de troca e os custos de transação não estão incluídos neste código até agora.
Ainda assim, este código leva um enorme tempo de computação para mim, então os resultados (matriz Q) abaixo são feitos por apenas 1000 iterações.
Para posição longa (ação = 0)
Para posição plana (ação = 1)
Para posição curta (ação = 2)
Conforme observado nas figuras acima, o valor Q é menor se tivermos proporção relativamente alta de Sharpe de médio prazo (inferior a -1 e superior a 1)
Para uma posição longa, o valor Q é mais alto se o Sharpe de curto prazo estiver em algum lugar entre 0,5 e 1,0, enquanto que entre -0,5 e -1,0 é a área mais alta para posição curta.
Presumivelmente, esse código pode ser visto como uma estratégia de momento modesto, embora eu pense que isso depende do período de amostra.
A figura acima é a média do retorno cumulativo para cada episódio com janela em expansão.
Isso parece estar convergindo para um certo level. idk ..
Mais tarefa.
Veja se isso reforça a aprendizagem tem poder explicativo.
& # 8211; outros dados de mercado, como outros pares de moedas.

No comments:

Post a Comment