Desative o bloqueador de anúncios para ativar a hora.

Análise Preditiva com Machine Learning

Framework:

Redes neurais artificiais podem revelar tendências do mercado financeiro e demonstrar a capacidade da previsão de séries temporais de prever os preços futuros dos ativos financeiros com base em dados históricos anteriores.

A análise é feita em 4 etapas:

  • Obter dados históricos dos preços;
  • Preparar dados de treinamento para nosso modelo de rede neural;
  • Treinar a rede neural;
  • Fazer alguma previsão.
  • Adquirir dados

    Antes de podermos treinar a rede neural e fazer previsões, primeiro precisaremos de dados. O tipo de dados que procuramos são séries temporais: uma sequência de números em ordem cronológica. Um bom lugar para buscar esses dados é o Alpha Vantage Stock API. Esta API nos permite recuperar dados cronológicos sobre preços de ações de empresas específicas, criptomoedas e Forex dos últimos 20 anos. Você também pode se referir a este artigo. isso explica os preços ajustados, que é um conceito técnico importante para trabalhar com dados históricos de mercado.

    Você pode escolher ajustado diariamente ou ajustado semanalmente, valores de abertura/alta/baixa/fechamento/volume, valores de fechamento ajustados diariamente, cobrindo mais de 20 anos de dados históricos. Como sugerido por desduvauchelle , usar o preço de fechamento ajustado é mais robusto para o desdobramento em comparação com o uso do preço de fechamento.

    A API produz os seguintes campos:

  • Preço de abertura
  • Preço mais alto daquele dia
  • Preço mais baixo daquele dia
  • Preço de fechamento
  • Preço de fechamento ajustado (isso é usado neste projeto)
  • Volume
  • Para preparar o conjunto de dados de treinamento para nossa rede neural, usaremos o preço de ações de fechamento ajustado; o que também significa que teremos como objetivo prever o preço de fechamento futuro.

    Símbolo Forex
    Você pode reivindicar sua chave de API de alphavantage.co
    Média Móvel Simples

    Para este experimento, estamos usando aprendizagem supervisionada, o que significa alimentar dados para a rede neural e aprende mapeando os dados de entrada para o rótulo de saída. Uma maneira de preparar o conjunto de dados de treinamento é extrair a média móvel simples dos dados da série temporal.

    Média Móvel Simples (SMA) é um método para identificar a direção das tendências para um determinado período de tempo, observando a média de todos os valores dentro dessa janela de tempo. O número de preços em uma janela de tempo é selecionado experimentalmente. Por exemplo, vamos supor que os preços de fechamento dos últimos 5 dias foram 13, 15, 14, 16, 17, o SMA seria (13 + 15 + 14 + 16 + 17) / 5 = 15. Assim, a entrada para nosso conjunto de dados de treinamento é o conjunto de preços em uma única janela de tempo e rótulo é a média móvel calculada desses preços.

    Mas primeiro, buscar dados da etapa anterior.

    Treinar Rede Neural

    Agora que você tem os dados de treinamento, é hora de criar um modelo para previsão de série temporal. Para isso, usaremos TensorFlow.js framework.

    Modelo sequencial é selecionado, o que simplesmente conecta cada camada e passa os dados da entrada para a saída durante o processo de treinamento. Para que o modelo aprenda dados de série temporal que são sequenciais, camada de rede neural recorrente (RNN) camada é criada e uma série de LSTM cells são adicionados ao RNN.

    O modelo será treinado usando Adam (consulte Mais informação), um algoritmo de otimização popular para aprendizado de máquina. Erro de raiz quadrada média que determinam a diferença entre os valores previstos e os valores reais, de forma que o modelo seja capaz de aprender, minimizando o erro durante o processo de treinamento.

    Estes são os hiperparâmetros (parâmetros usados no processo de treinamento) disponíveis para ajustes:

  • Tamanho do conjunto de dados de treinamento (%): a quantidade de dados usados para o treinamento e os dados restantes serão usados para a previsão
  • Epochs: número de vezes que o conjunto de dados é usado para treinar o modelo(Saber mais)
  • Learning Rate: quantidade de mudança nos pesos durante o treinamento em cada etapa (Saber mais)
  • Hidden LSTM Layers:para aumentar a complexidade do modelo para aprender no espaço dimensional superior (Saber mais)
  • Você pode ajustar os hiperparâmetros e clicar no botão Iniciar modelo de treinamento para treinar o modelo.

    Precisa de dados de treinamento? Explore a seção anterior para preparar dados de treinamento.

    Validação

    Agora que você treinou seu modelo, é hora de usar a função model.predict do TFJS para prever valores futuros. Dividimos os dados em 2 conjuntos, um subconjunto dos dados é o treinamento e o resto é o conjunto de validação. O conjunto de treinamento foi usado para treinar o modelo, portanto, usaremos o conjunto de validação para validar o modelo. Como o modelo não viu os dados no conjunto de validação antes, será bom se o modelo for capaz de prever valores que estão próximos dos valores exatos.

    Portanto, vamos usar os dados restantes para previsão, o que nos permite ver o quão próximo nossos valores previstos são comparados aos valores reais.

    Mas se o modelo não previu valores que mapeiam próximos aos seus valores reais, verifique o gráfico de perda de treinamento. Geralmente, este modelo deve convergir com a perda para ser menor que 1. Você pode aumentar o número de épocas ou ajustar os outros hiperparâmetros de aprendizagem.

    Não tem um modelo para realizar a previsão? Treine seu modelo.>

    Fazer previsão

    Finalmente, o modelo foi validado e os valores previstos mapeiam de forma próxima aos seus verdadeiros valores, devemos usá-lo para prever o futuro. Aplicaremos a mesma função model.predict e usaremos os últimos pontos de dados {{input_windowsize}} como entrada, porque esse é o tamanho da nossa janela. Isso significa que, se nossos dados de treinamento forem incrementados diariamente, usaremos os últimos {{input_windowsize}} dias como entrada, para prever o dia seguinte.

    Não tem um modelo para realizar a previsão? Treinar seu modelo.

    Conclusão

    Por que meu modelo não está funcionando?
    O modelo nunca viu dados semelhantes no passado. Em março de 2020, quando o mercado despencou e se recuperou em um ou dois meses, isso nunca aconteceu na história. É provável que o modelo não consiga prever mudanças drásticas nos preços das ações durante esses períodos.
    Podemos adicionar mais recursos. Em um sentido geral, mais recursos tendem a fazer o modelo funcionar melhor. Podemos incluir indicadores de negociação, como divergência de convergência da média móvel (MACD), índice de força relativa (RSI) ou bandas de Bollinger.
    Adicione ainda mais recursos. Uma coisa incrível que a API Alpha Vantage fornece são os dados fundamentais. Isso significa que você também pode incluir demonstrações de resultados anuais e trimestrais e fluxos de caixa para a empresa de interesse. Quem sabe esses recursos podem ser úteis.
    Pode haver muitos outros motivos pelos quais o modelo falha em aprender e prever. Esse é o desafio do aprendizado de máquina; é uma arte e ciência construir modelos de bom desempenho.

    Existem muitas maneiras de fazer previsões de séries temporais além de usar uma média móvel simples. Possível trabalho futuro é implementar isso com mais dados de várias fontes.
    Com o TensorFlow.js, o aprendizado de máquina em um navegador da Web é possível e, na verdade, muito legal.
    Explore a demonstração no Github, esta experiência é 100% educacional e de forma alguma uma ferramenta de previsão de negociação.

    Contato

    Entre em contato conosco