Python에서 임의 보행 예측 구현

이전 게시물에서 CAGR 기반 예측 및 단순 이동 평균 예측 이라는 매우 간단한(순진한) 예측 방법을 소개 했습니다. R에서 이러한 예측 방법을 구현하고 기본 사용 사례를 시연했습니다.

이 게시물에서는 또 다른 간단한 예측 방법인 랜덤 워크 예측을 소개하려고 합니다. Python을 사용하여 예제를 구현하겠습니다.

랜덤 워크 예측은 예를 들어 다른 예측을 비교할 수 있는 간단한 기본 모델을 만드는 데 사용할 수 있습니다. 랜덤 워크는 좋은 벤치마크가 될 수 있습니다. 여기서 저는 예를 들어 많은 금융 엔지니어가 랜덤 워크에 대해 테스트할 수 있는 거래 전략 및 예측 모델을 만들려고 시도하는 금융 시장 분석을 생각하고 있습니다.

아래에서는 Python에서 임의 보행 예측 기능을 구현합니다. 이 함수에는 random 모듈이 필요합니다.

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를 사용하여 Python에서 matplotlib 라이브러리 의 일부로 pyplot을 사용하여 랜덤 워크 예측을 시각화할 수 있습니다 .

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

이것으로 나의 간단한 예를 마칩니다.

Leave a Reply

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.

Close

메타