Pronóstico de caminata aleatoria en Python

En publicaciones anteriores, introduje métodos de pronóstico muy simples (e ingenuos), a saber, el pronóstico basado en CAGR y el pronóstico de promedio móvil simple . Implementé dichos métodos de pronóstico en R y demostré casos de uso básicos.

En esta publicación, quiero presentar otro método de pronóstico simple: pronóstico de paseo aleatorio. Implementaré un ejemplo usando Python.

El pronóstico de paseo aleatorio puede usarse, por ejemplo, para crear un modelo de línea de base simple contra el cual se pueden comparar otros pronósticos. Una caminata aleatoria puede ser un buen punto de referencia. Aquí estoy, por ejemplo, pensando en el análisis del mercado financiero en el que muchos ingenieros financieros intentan crear estrategias comerciales y modelos de pronóstico que se pueden probar con caminatas aleatorias.

A continuación, implemento una función de pronóstico de recorrido aleatorio en Python. La función requiere el módulo aleatorio.

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 random_walk_forecast podemos visualizar un pronóstico de caminata aleatoria usando pyplot, como parte de la biblioteca matplotlib en 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()

Esto concluye mi ejemplo simple.

You May Also Like

Leave a Reply

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.