Random-Walk Prognose in Python

In früheren Beiträgen habe ich sehr einfache (und naive) Prognosemethoden vorgestellt, nämlich CAGR-basierte Prognosen und einfache gleitende Durchschnittsprognosen . Ich habe solche Prognosemethoden in R implementiert und grundlegende Anwendungsfälle demonstriert.

In diesem Beitrag möchte ich eine weitere einfache Prognosemethode vorstellen: Random-Walk-Prognose. Ich werde ein Beispiel mit Python implementieren.

Random-Walk-Prognose kann z.B. verwendet werden, um ein einfaches Basismodell zu erstellen, mit dem andere Vorhersagen verglichen werden können. Ein Random Walk kann ein guter Maßstab sein. Ich denke hier z.B. an die Finanzmarktanalyse, wo viele Finanzingenieure versuchen, Handelsstrategien und Prognosemodelle zu entwickeln, die gegen Irrfahrten getestet werden können.

Unten implementiere ich eine Random-Walk-Prognosefunktion in Python. Die Funktion benötigt das Zufallsmodul.

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

Mit random_walk_forecast können wir eine Random-Walk-Prognose mit pyplot als Teil der matplotlib- Bibliothek in Python visualisieren:

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()

Damit ist mein einfaches Beispiel beendet.

You May Also Like

Leave a Reply

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.