Previsão de caminhada aleatória em Python

Em postagens anteriores, apresentei métodos de previsão muito simples (e ingênuos), ou seja, previsão baseada em CAGR e previsão de média móvel simples . Implementei esses métodos de previsão em R e demonstrei casos de uso básicos.

Neste post, quero apresentar outro método simples de previsão: a previsão de passeio aleatório. Vou implementar um exemplo usando Python.

A previsão de caminhada aleatória pode, por exemplo, ser usada para criar um modelo de linha de base simples com o qual outras previsões podem ser comparadas. Um passeio aleatório pode ser uma boa referência. Aqui estou, por exemplo, pensando na análise do mercado financeiro, onde muitos engenheiros financeiros tentam criar estratégias de negociação e modelos de previsão que podem ser testados em passeios aleatórios.

Abaixo, implemento uma função de previsão de passeio aleatório em Python. A função requer o módulo aleatório.

import random

def random_walk_forecast(annualGrowth,
                         startPoint,
                         forecastLength,
                         productiveDaysPerYear,
                         standardDeviationRelativeToMeanGrowth):
    
    prediction = []
    
    g = (1+annualGrowth)**(1/productiveDaysPerYear)-1
    
    for i in range(0,forecastLength):
        
        if i == 0:
            prediction.append(startPoint*random.normalvariate(mu=1+g,
                                                              sigma=g*standardDeviationRelativeToMeanGrowth))
        else:
            prediction.append(prediction[i-1]*random.normalvariate(mu=1+g,
                                                                   sigma=g*standardDeviationRelativeToMeanGrowth))
    
    return prediction

Usando o random_walk_forecast podemos visualizar uma previsão de passeio aleatório usando pyplot, como parte da biblioteca matplotlib em Python:

historicals = [800,1000,874,945,1121,1245,1020]

growth_rate = 0.03

predictions = random_walk_forecast(annualGrowth = growth_rate,
                                  startPoint = historicals[-1],
                                  forecastLength=10,
                                  productiveDaysPerYear=220,
                                  standardDeviationRelativeToMeanGrowth = 500)

import matplotlib.pyplot as plt

plt.figure(figsize = (20,5))

historicals.extend(predictions)

plt.bar(range(1,len(historicals)+1),
        historicals,
        color = "#229900")

plt.title("time series wrandom walk: result of simple forecasting appraoch",size=20)

plt.xlabel("days",size=14)
plt.ylabel("values of interest",size=14)

plt.show()

Isso conclui meu exemplo simples.

Leave a Reply

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Close

Meta