Calcular Médias Móveis em Python (sem usar Pandas)
Como calcular Médias Móveis em Python
Neste tutorial vamos mostrar como criar um script que permite calcular Médias Móveis em Python, sem o emprego da biblioteca de manipulação e análise de dados Pandas (o que faremos em outro tutorial).
Após calcular as médias móveis para um conjunto de valores (fornecido em uma lista), vamos plotar um gráfico usando a biblioteca Matplotlib para visualização dos resultados obtidos.
As Médias Móveis
As médias móveis são uma ferramenta muito utilizadas por comerciantes, investidores e traders como ferramenta de auxílio na análise de tendências de preços e em análise técnica.
Mas o que é uma média móvel?
Uma média móvel é um indicador que mostra o valor médio do preço de um ativo em um período de tempo determinado (série de dados). Conforme o preço do ativo muda ao longo do tempo, seu preço médio aumenta ou diminui, compondo um movimento de valores médios.
Na prática, existem diversos tipos de médias móveis, sendo as cinco mais comuns as seguintes:
- Média Móvel Simples (ou Aritmética)
- Média Móvel Exponencial
- Média Móvel Triangular
- Média Móvel Variável
- Média Móvel Ponderada
Neste tutorial vamos mostrar como criar um script em Python que receba uma série de dados como entrada, e calcule a média móvel simples desse conjunto de valores. As médias móveis simples atribuem peso igual aos valores (preços).
A média móvel mais comum (de longo prazo) leva em consideração um período de 200 dias de dados (39 semanas); para os propósitos deste artigo vamos trabalhar com um conjunto menor de dados, mas o algoritmos pode receber qualquer quantidade de dados como entrada, sem que haja necessidade de alterações no código.
Como calcular a média móvel simples
O cálculo da média móvel simples é exatamente o que se espera de m cálculo de médias: somamos os valores de cada dia, e dividimos o resultado da soma pelo número de dias (média aritmética). O valor é então plotado em um gráfico.
Na sequência, avançamos um dia e somamos o próximo intervalo de valores, calculando a média e plotando no gráfico, e assim sucessivamente, construindo o gráfico das médias móveis.
Por exemplo, para calcular as médias móveis usando intervalos de 50 dias, calculamos a média aritmética dos primeiros 50 dias, avançamos um dia, calculamos a média aritmética dos próximos 50 dias, e assim até atingirmos o intervalo mais recente possível.
Script para determinar médias móveis em Python
Vejamos um exemplo de script que permite calcular as médias móveis para um conjunto de valores fornecido. No caso, vamos passar valores usando uma lista comum em Python, mas os dados podem ser provenientes de qualquer outra fonte, como arquivos .csv, do Excel, de páginas Web, etc.
Vamos usar como intervalo para cálculo das médias o valor de 5 dias (médias de 5 valores), valor armazenado em uma variável que chamaremos de tam_grupo.
""" Created on Thu Dec 3 12:05:44 2020 @author: Fábio dos Reis """ import matplotlib.pyplot as plt valores = [21.95,21.84,21.9,21.98,21.65,22.11,22.50,22.75,23.21,23.1,23.20,22.78,22.30,23.17,23.24,23.26,23.23,23.13,23.27,23.38,23.42,23.68,23.20,22.84,23.01,23.00,23.11,23.24,23.46,23.27,23.02,22.82,23.31] # cotações diárias tam_grupo = 5 # deslocamento (uma semana útil) i = 0 medias_moveis=[] # Calcular as médias móveis e armazená-las em uma lista: while i < len(valores) - tam_grupo + 1: grupo = valores[i : i + tam_grupo] media_grupo = sum(grupo) / tam_grupo medias_moveis.append(media_grupo) i +=1 # Exibir a lista de médias móveis for valor in medias_moveis: print(round(valor,2)) # Gerar lista com dias do mês dia_mes = [] for dia in range(1,len(medias_moveis)+1): dia_mes.append(dia) # Visualizar gráfico de médias móveis plt.style.use('seaborn') plt.xlabel('Dia') plt.ylabel('Preço') plt.title('Médias Móveis') plt.axis(ymin=21,ymax=24,xmin=0,xmax=30) plt.plot(dia_mes,medias_moveis,marker='o') plt.show()
A figura a seguir mostra o gráfico plotado com as médias móveis calculadas a partir dos dados fornecidos na lista de valores:
Conclusão
Neste tutorial mostramos como criar um script simples em Python para o cálculo de médias móveis simples. Usamos técnicas de programação como listas, laços de repetição while e for, funções como round() e len(), além da biblioteca para plotagem de gráficos matplotlib / pyplot / seaborn.
Nos próximos tutoriais vamos mostrar como calcular ouros tipos de médias móveis em Python, como a média móvel exponencial e a média móvel ponderada, como adicionar uma linha de tendência ao gráfico de médias móveis, e também como determinar e plotar Bandas de Bollinger.
E também vamos mostrar como usar a biblioteca Pandas para realizar esses tipos de cálculos, de forma ainda mais simplificada.
Até!
Escreva um comentário