在 Python 中实现随机游走预测

在之前的帖子中,我介绍了非常简单(和幼稚)的预测方法,即基于 CAGR 的预测简单的移动平均预测。我在 R 中实现了此类预测方法并演示了基本用例。

在这篇文章中,我想介绍另一种简单的预测方法:随机游走预测。我将使用 Python 实现一个示例。

例如,随机游走预测可用于创建一个简单的基线模型,可以与其他预测进行比较。随机游走可以是一个很好的基准。例如,我在考虑金融市场分析,其中许多金融工程师试图创建可以针对随机游走进行测试的交易策略和预测模型。

下面我用Python实现了一个随机游走预测函数。该功能需要随机模块。

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

使用 random_walk_forecast 我们可以使用 pyplot 可视化随机游走预测,作为 Python 中matplotlib库的一部分:

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

我的简单示例到此结束。

You May Also Like

Leave a Reply

Leave a Reply

您的邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据