Skip to content

A1b3rt0M3rcad0/previsao_forex

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Previsão Forex com LSTM

Coleta de Dados

Inicialmente, realizamos a etapa de coleta de dados. Onde poderíamos coletar os dados necessários? Utilizamos a API do MetaTrader5, amplamente utilizada para operações no mercado forex ou B3. Por que essa API? A API do MetaTrader5 nos permite coletar todos os dados necessários em tempo real. Portanto, se precisarmos testar o modelo com operações ao vivo, é mais simples de implementar, já que tudo está disponível em uma única API.

Para iniciar a coleta de dados, primeiro baixamos o MetaTrader5 e, em seguida, demos início à coleta. Você pode visualizar todo o processo de coleta de dados neste notebook.

No mesmo notebook, também realizamos a etapa de Feature Engineering, onde criamos métricas que ajudarão em nossa previsão, como as médias móveis. O que são médias móveis? Basicamente, são as médias de um certo período N em nossos dados. Para calcular, pegamos o dado N em seu atributo X e calculamos a média de N até N-M, sendo M o número de períodos que desejamos calcular a média. Também foi criada uma métrica de variação percentual do dia anterior para o dia atual. O arquivo com as transformações realizadas está disponível aqui. Nossos dados ficaram assim:

image

Transformação dos Dados

Na próxima etapa, precisamos transformar os dados de maneira que nosso modelo LSTM consiga interpretar. Diferentemente de outros modelos de machine learning que aceitam vetores como entradas, o LSTM aceita matrizes de entradas, onde cada linha representa um período de tempo ou estado N e as colunas representam nossos atributos. O último registro dessa matriz representa o período N e cada registro N-1 representa um período no tempo ou estado anterior, e assim sucessivamente até o número de períodos desejados. Para isso, foi criada uma nova função que realiza esse processo para nós, disponível aqui.

Criação e Avaliação do Modelo

Na criação de nossa rede neural, utilizamos 3 camadas ocultas, cada uma contendo 50 neurônios LSTM com ativação relu e uma camada Dense de saída com ativação linear, que nos retorna o valor de previsão dos nossos dados. Como função de perda, utilizamos MAE (Mean Absolute Error), e como otimizador, o Adam. Após a compilação do nosso modelo, obtivemos os seguintes parâmetros:

image

Dividindo nossos dados em treino e teste, e treinando nosso modelo, avaliamos as épocas obtendo o seguinte:

image

Acima, temos a medida de perda em azul e a medida de perda dos nossos dados de validação em laranja. Analisando o gráfico, observamos que nosso modelo não sofreu de overfitting nem underfitting. Também podemos observar que a partir da 5ª época, não houve mudança significativa no MAE, tanto nos dados de treino como nos dados de validação.

Agora, vamos avaliar nosso modelo nos dados de teste:

Realizando as previsões:

image

Plotando um scatter plot entre nossas previsões e nossos valores reais, além de uma reta que indica onde os valores reais estão. Essa métrica gráfica é para avaliar o quanto nossos dados estão ajustados aos dados reais:

image

Após avaliarmos o modelo, obtivemos os seguintes erros:

image

Conclusão

Embora nossas previsões estejam muito próximas do real, ainda não são boas o suficiente para realizar operações em mercado real, visto que as variações são bem pequenas e nosso modelo não consegue identificar tão bem essas variações.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published