Previsão de taxas de câmbio usando o ARIMA em Python

Farhad Malik Blocked Unblock Seguir Seguindo 29 de setembro de 2018

Quase todos os setores usam dados de séries temporais para prever pontos de tempo futuros. A previsão futura pode ajudar os analistas e a administração a tomar decisões mais bem calculadas para maximizar os retornos e minimizar os riscos. Estarei demonstrando como podemos prever as taxas de câmbio neste artigo. Se você é novo em finanças e quer entender quais são as taxas de câmbio, leia o meu artigo “ Melhor maneira de aprender finanças? Entenda os dados do mercado ”. Ele fornece uma visão geral básica dos dados de mercado. As taxas de câmbio dependem de uma série de fatores, como oferta e demanda, políticas governamentais, taxas de crescimento do país, etc. Para mais informações sobre indicadores econômicos que podem afetar as taxas de câmbio, consulte meu artigo “ Tudo o que você precisa saber para avaliar E comparar países ”.

Taxas de câmbio de previsão

Recentemente, foram introduzidos vários avanços tecnológicos que podem prever pontos de tempo futuros com rapidez, eficiência e precisão. Uma delas é a introdução de modelos estatísticos e de aprendizado de máquina (ML) em Python. Eu forneci uma visão geral dos fundamentos do python no meu artigo “ Python From Scratch ”.

Neste artigo, vou usar o modelo ARIMA para prever as taxas de câmbio.

No meu blog “ Como faço para prever séries temporais? ”E“ Understanding Auto Regressive Moving Average Model – ARIMA ”, delineei o conceito de séries temporais e como funciona o ARIMA. Neste blog, estarei usando a linguagem de programação Python com o Jupyter para explicar como usar o ARIMA em Python para prever as taxas de câmbio.

Por favor, leia o aviso de isenção da FinTechExplained .

Usando pandas para carregar dados de taxas de câmbio

Pandas é uma das bibliotecas mais populares do Python. É construído sobre o tipo de biblioteca python Numpy e oferece uma gama de recursos, incluindo:

Criação de Objetos, Análise de Dados e Carregamento de Dados. Possui funções estatísticas embutidas, pode mesclar / juntar / unir múltiplas coleções. Ele também pode nos ajudar a agrupar, girar e plotar os dados. Adicionalmente o Pandas é uma biblioteca muito eficiente para carregar dados de csv, HDF5 e excel. Por fim, uma gama de estilo e formatação pode ser aplicada aos dados.

Nós estaremos usando pandas para:

1. Carregue as taxas de câmbio de séries temporais de um arquivo csv (separado por vírgulas)

2. Veja os primeiros 10 registros

3. Visualizar informações estatísticas básicas sobre os dados

Carregar taxas de câmbio de séries temporais de um arquivo csv

Eu preparei um arquivo que inclui o fechamento diário das taxas de câmbio GBP / USD desde 31/12/1998. O arquivo é armazenado aqui . Este arquivo contém dados com duas colunas: Dados e GBP / USD Fechar

Assegure-se de que o arquivo seja salvo no mesmo local do seu bloco de anotações do Python.

Digite as seguintes linhas para carregar o arquivo e visualizar os 10 primeiros registros:

Para importar uma biblioteca, faça: Import <nome da biblioteca> como <alias >

Nota: GetData (fileName) é um método que aceita o nome do arquivo como um argumento.

Pressione Alt + Enter para visualizar informações estatísticas básicas sobre os dados.

A imagem abaixo mostra os primeiros 10 registros do arquivo csv chamando o método GetData (fileName):

Vamos obter estatísticas úteis e traçar as taxas de câmbio

Digite: exchangeRatesSeries.describe () para ver as estatísticas como mostrado abaixo:

describe () mostra várias métricas úteis, incluindo:

count – Número de registros, média – valor esperado, std – Desvio padrão nos dizendo dispersão de dados em torno da média, min – Valor mínimo no conjunto, max – Valor máximo no conjunto junto com um intervalo de percentis. Percentis podem nos ajudar a entender a distribuição de probabilidade de nossos dados.

Plotando os dados carregados

O estilo HTML pode ser adicionado para alterar a aparência e a aparência do Python. Eu estou definindo a cor da plotagem para verde:

#plot os dados da série temporal

exchangeRatesSeries.plot (color = 'green')

Observe que a cor de passagem = 'verde' cria um gráfico de linha verde.

Digite: exchangeRatesSeries.hist () para mostrar o historgram.

Histogramas podem nos ajudar a entender a distribuição de dados que, em troca, nos ajuda a prever uma variável:

O matplotlib pode nos ajudar com a plotagem de dados. Nós também podemos importar o matplotlib escrevendo:

de pyplot de importação de matplotlib

Em seguida, traçar séries temporais escrevendo:

pyplot.plot (exchangeRateSeries)

ARIMA Com Pacote StatsModels

StatsModels é uma poderosa biblioteca python rica em modelos estatísticos. A biblioteca StatsModels contém vários modelos que podem ser usados para prever e prever dados. Esta biblioteca também possui várias ferramentas de diagnóstico. Vamos usar o modelo ARIMA no pacote StatsModels para prever as taxas de câmbio.

ARIMA Introdução

O modelo ARIMA possui 3 parâmetros:

P – Recurso auto regressivo do modelo

D – ordem de diferenciação

Q – recurso de média móvel do modelo

Uma vez que importamos statsmodels, use o tsa.arima_model e dê um alias de ARIMA:

de statsmodels.tsa.arima_model import ARIMA

Para detalhes detalhados dos parâmetros, visite: http://www.statsmodels.org/dev/generated/statsmodels.tsa.arima_model.ARIMA.html

Os parâmetros ARIMA podem ser alterados para atingir diferentes comportamentos de previsão. Eu defini um método definido pelo usuário que leva no conjunto de treinamento e valor para cada um dos três parâmetros. A função primeiro cria o modelo ARIMA. Em seguida, executa fit () e, em seguida, forecast () no modelo. Forecast () retorna um valor previsto.

Copie e cole estas linhas no seu notebook:

ARIMA (…) cria o modelo ARIMA. Fits () ajusta o modelo ARIMA (p, d, q) por máxima verossimilhança máxima via filtro de Kalman e Forecast () retorna um valor estimado baseado no modelo ARIMA ajustado.

Podemos pensar em Fit () como um processo que gera a melhor curva de linha que dá menos erro. Mais sobre este tópico é abordado no meu blog: Como é bom o meu modelo previsto – Análise de regressão?

Os parâmetros p, q, d podem ser modificados para obter melhores resultados.

Este é um exemplo de como podemos passar dados de séries temporais e usar o ARIMA para prever um valor com base nos dados reais observados:

Ao executar o script, vemos o valor previsto:

Nós passamos em valores aleatórios como conjunto de treinamento. O modelo ARIMA então se ajustou e previu o próximo valor como 15.219305

Também podemos passar variáveis exógenas, datas, frequência de séries temporais, etc, para o modelo ARIMA.

Por fim, vamos usar o ARIMA em Python para prever as taxas de câmbio

Agora que entendemos como usar o Pandas python para carregar dados csv e como usar StatsModels para prever o valor, vamos combinar todo o conhecimento adquirido neste blog para prever nossas taxas de câmbio de amostra.

Copie e cole este código. É uma combinação de todos os conceitos que aprendemos neste blog.

Pressione Alt + Enter. O Python começará a chamar o modelo ARIMA em um loop com os dados reais. 70% dos dados são usados para treinar o modelo e o restante 30% é usado para testar a precisão. Cada vez que um valor recém-previsto é produzido.

Os valores reais e previstos serão impressos no notebook.

Por fim, os valores reais e previstos serão plotados no gráfico

Exibir erro médio quadrático

Eu também importei uma biblioteca adicional sklearn que eu vou usar nos meus futuros blogs.

Copie e cole esta linha:

"From sklearn.metrics import mean_squared_error" para importar a biblioteca.

Finalmente imprimir erro médio quadrada:

O erro quadrático médio calcula uma média da diferença entre os dados reais e os previstos e informa a qualidade do seu modelo. Mais informações podem ser encontradas em meu blog: Como é o meu modelo preditivo – Análise de regressão

Ao executar o código abaixo, podemos visualizar os valores reais e previstos juntamente com um gráfico de linhas e um erro total de quadrados médios:

Como você pode ver, imprimimos valores reais e previstos. Além disso, plotamos os valores previstos em vermelho com MSE de 1.551.

Para o caderno completo, por favor visite aqui .

Melhorias adicionais

As taxas de câmbio de previsão podem ser melhoradas por:

  • Atualizando constantemente os parâmetros do modelo
  • Ao introduzir fatores adicionais que afetam as taxas de câmbio e suas correlações
  • Os parâmetros do modelo também podem ser atualizados por meio de técnicas de aprendizado de máquina e otimização.
  • Por fim, fatores e suas correlações podem ser enfatizados para garantir que as taxas de câmbio previstas levem em conta cenários extremos.

Notas Finais

Este artigo demonstrou como usar python para prever as taxas de câmbio usando o modelo ARIMA. Os mercados financeiros podem se mover em qualquer direção e isso torna muito difícil, se não impossível, prever com precisão as taxas de câmbio. Dito isto, o único propósito de prever as taxas de câmbio via ARIMA é ajudar-nos a tomar decisões calculadas que maximizem os retornos e minimizem os riscos. As taxas de câmbio previstas dependem das premissas impostas pelo modelo ARIMA, que são baseadas em conceitos de regressão automática, integrada e média móvel.

O ARIMA é um modelo simples, mas poderoso. Assume que os valores históricos ditam o comportamento do presente. Ele também assume que os dados não contêm anomalias, são estacionários e os parâmetros do modelo, juntamente com o termo de erro, são constantes.

Embora o ARIMA não tome as tensões nos dados de mercado como insumo, condições econômicas e políticas, ou correlações de todos os fatores de risco para prever taxas de câmbio, mas o exemplo simples demonstrado acima pode ser útil para prever movimentos de moedas estáveis em condições normais nas quais dita o comportamento passado presente e valores.

Por favor, deixe-me saber se você tem algum feedback.