Criando um bot de negociação usando o aprendizado de máquina na análise de séries temporais

Este não é um artigo técnico, não há análise detalhada de métodos e teoria. É que, de alguma forma, eu me empolguei com o aprendizado de máquina e, como muitas pessoas que são novas neste tópico, decidi fazer um bot de negociação. No entanto, isso se tornou mais do que apenas um projeto de treinamento. É isso que quero contar sobre tudo isso.

Um pouco sobre o aprendizado de máquina


O aprendizado de máquina (aprendizado de máquina; doravante denominado MO), de uma maneira ou de outra, é parte integrante da indústria de inteligência artificial (inteligência artificial; doravante AI), ciência e tecnologia, que permite que sistemas de computadores “inteligentes” simulem o comportamento humano. Essa indústria também inclui o conceito de Deep Learning, que afeta redes neurais e imitação do pensamento humano.

A disciplina acadêmica da IA ​​é estudada como uma máquina, ou seja, computador, resolva problemas que estão sujeitos apenas à mente humana. Isso pode ser uma tarefa como entender o texto lido, determinar os movimentos em um jogo de damas ou resolver um quebra-cabeça. MO é desenvolver algoritmos que ajudem o computador a tirar conclusões com base nas informações recebidas. Combustível para tudo, neste caso, são dados.

imagem
(c) Oracle

Na era da informação, informações e dados são os mais valiosos. Tudo o que fazemos, offline ou online, gera novos dados: sejam de texto, áudio, dados de vídeo, medições sensoriais, gadgets “inteligentes” e a troca de dados entre eles. As oportunidades para coletar dados grandes e novos estão aumentando rapidamente devido à disponibilidade de dispositivos de hardware, ao desenvolvimento da infraestrutura em nuvem e, devido ao uso massivo dessas tecnologias, à queda de seus custos. Conhecimento ou informação é poder - o axioma é verdadeiro, mas existe um "mas".

A posse de grandes volumes de informações ainda não beneficia seu titular. Mas é através dos algoritmos e métodos do MO que o Big Data começa a fazer sentido e se beneficiar. Mais especificamente, os sistemas MO percebem padrões e constroem conclusões com base em muitos fatores no sistema de dados, sem serem programados para isso.

As principais aplicações do MO atualmente são reconhecimento de objetos, visão computacional, análise de dados, controle de qualidade (monitoramento) e análise preditiva.

Portanto, sabemos que o aprendizado de máquina depende de algoritmos de processamento de dados e dos próprios dados. Sobre os métodos MO, você pode mergulhar em uma série separada de artigos. Descrevê-los seria comparável à listagem de possíveis tecnologias no desenvolvimento da Web e sua aplicação se cada uma dessas tecnologias tiver suas vantagens e desvantagens.

Deve-se notar apenas que, com o tempo, os algoritmos e métodos de processamento de dados melhoram e os dados se tornam cada vez mais, assim a qualidade do processamento de dados se torna melhor.

Dos tipos de dados, gostaria de prestar atenção às séries temporais no exemplo de um projeto pessoal - negociação automatizada de criptomoedas.

Análise de Séries Temporais


Uma série temporal é um tipo de dados que pode ser representado como sequências de medidas ordenadas em instantes de tempo não aleatórios.

Existem dois objetivos principais de análise de séries temporais:
determinar a natureza de uma série e prever (prever valores futuros de uma série temporal a partir de valores presentes e passados). Isso envolve a identificação e descrição do modelo de série e a interpretação dos dados, o que nos permite derivar o valor futuro da série.

Usando métodos MO para esses dados, somos capazes de encontrar padrões mais profundos nos dados. Como resultado, obtemos uma previsão mais "inteligente" dos valores futuros.

Diferentemente da análise de amostras de dados aleatórios, a análise de séries temporais baseia-se no pressuposto de que valores seqüenciais no arquivo de dados são observados em intervalos regulares. Em outros métodos, não somos importantes e geralmente não estamos interessados ​​em vincular observações ao tempo.

Em outras palavras, para a análise, é importante que o evento X tenha ocorrido no momento Y. Por exemplo, a taxa de câmbio, somos importantes na seleção, onde o preço está vinculado a um momento específico. Se você interromper a ordem das datas em uma série de preço-data, ela ficará sem sentido.

Por exemplo, usando séries temporais financeiras, o algoritmo MO pode fazer uma previsão sobre crescimento ou declínio na lucratividade. Ao processar arquivos de áudio, onde as séries temporais serão expressas por alterações no tom em relação ao tempo, você pode analisar o significado do discurso. Dados dados meteorológicos, previsões meteorológicas complexas podem ser obtidas através do MO e das séries temporais.

Se os algoritmos do MO analisam, digamos, as imagens dos selos, não nos importamos com o tempo ou a ordem em que as imagens chegam.

Usando criptomoedas como um exemplo


No meu projeto, tentei responder à questão de saber se é possível criar um sistema de negociação totalmente automático com base em métodos de aprendizado de máquina. Para fazer isso, encontrei e coletei dados históricos sobre preços de bitcoin, volumes de transações e pedidos feitos e retirados.

Depois de algum tempo, por tentativa e erro, cheguei a um certo entendimento de como esses dados devem ser interpretados, qual arquitetura de rede neural usar, como rotular dados etc. Em particular, o treinamento é realizado com uma granularidade de 10 segundos e o preço no futuro é usado como valor resultante.

Agora, o algoritmo usa vários modelos treinados em momentos diferentes, porque Eu constantemente aprimorei o algoritmo de aprendizado e adicionei novos dados coletados a ele. Para a implementação, a linguagem de programação Python foi usada com as bibliotecas Keras, Scipy, Pandas.

O script para executar operações de negociação coloca pedidos na plataforma de negociação Bitmex o tempo todo. Quando um sinal aparecer para abrir uma posição e concluir a transação relevante, o script aguardará até que o preço atinja os níveis Take Profit ou Stop Loss, ou até que a transação expire (Time To Live).


O arquivo de log principal que exibe o processamento de dados em tempo real

O algoritmo de processamento de dados baseia-se na análise de dados técnicos, histórico de negociação, pedidos anteriores, pedidos e notícias relacionados à criptomoeda (por meio do processamento de linguagem natural ou Natural Language Processing - NLP).

A principal métrica de sucesso é a precisão com base no número de ordens Take profit em relação ao número total de ordens. No total, a previsão é considerada bem-sucedida quando a ordem Take Profit é atingida, enquanto Stop Loss e Time to Live são reconhecidos pelo modelo como malsucedidos.

Precisão = (Número de pedidos do tipo Obter lucro) / (Número total de pedidos)

A negociação é considerada lucrativa quando a precisão de 67% é alcançada.
MêsPrecisão
Janeiro 202072%
Fevereiro 202070%
Março 202060%
Abril 202070%

Abaixo estão as transações apresentadas visualmente, feitas usando essa solução de software.


Triângulos verdes são transações bem-sucedidas (lucro obtido), triângulos vermelhos não são bem-sucedidos (Stop loss, Time to Live). Triângulos olhando para cima estão comprando negócios, triângulos olhando para baixo estão vendendo negócios.

Em custódia


A negociação automatizada é apenas uma das aplicações mais óbvias possíveis da análise de séries temporais. Se falamos de negócios, a previsão de diferentes indicadores com base nos dados coletados pode ser extremamente importante. Com base nessas previsões, agora podem ser tomadas importantes decisões de negócios e, no futuro, o volume de decisões tomadas automaticamente aumentará.

A realização desses cálculos é um processo que consome bastante recursos. Felizmente, o poder computacional dos sistemas de computadores está aumentando constantemente. Além disso, o ramo moderno da ciência da computação que estuda a IA tem como objetivo criar algoritmos que mais efetivamente usam os recursos de computação disponíveis para identificar padrões nos dados acumulados.

A derivação e a construção de previsões são impossíveis sem o uso de séries temporais. É esse tipo de dado subjacente às previsões que ajuda os executivos a tomar decisões vitais para os negócios. Sem dúvida, a análise de séries temporais e seu processamento pelos algoritmos MO é parte integrante dos processos de negócios do futuro.

All Articles