Prophet과 함께 구리 생산자 물가 지수 예측

Prophet을 사용하여 상품 가격 예측

출처 : Pixabay로부터 입수 된 papazachariasa 님의 이미지입니다.

면책 조항 :이 문서는 보증없이 "있는 그대로"작성되었습니다. 데이터 과학 개념에 대한 개요를 제공 할 목적으로 작성되었으며 투자 조언이나 기타 전문적인 조언으로 해석되어서는 안됩니다.

자산 가격을 예측하는 것은 최상의시기에 까다로운 비즈니스가 될 수 있습니다. 우선, 자산 가격은 높은 확률 (또는 임의의 영향)을 받기 때문에 미래 예측을 생성하기가 어렵습니다.

즉, Facebook 의 Prophet 시계열 모델 의 유용한 기능 중 하나 는 시계열에서 변화 지점 또는 중요한 구조적 변화 기간 을 식별하는 기능 입니다. 이러한 지점을 정확하게 식별하면 시계열 예측을 개선 할 수 있습니다. Prophet이 구리 생산자 가격 지수를 어떻게 예측하는지 살펴 보겠습니다. 데이터는 Quandl을 사용 하는 FRED Economic Data 에서 제공됩니다 .

배경

구리 생산자 물가 지수는 1985 년 9 월부터 2020 년 7 월까지 분석됩니다. 이것은 재무 시계열이므로 시리즈는 데이터를 평활화하고 백분율 기준 수익률이 모델에 의해 고려되도록하기 위해 로그 형식으로 변환됩니다.

다음은 데이터 플롯입니다.

출처 : FRED 경제 데이터

의 데이터 년 9 월 1985 년년 1 월 2017 데이터를 훈련으로 사용됩니다. 2020 년 7 월까지 남은 달 은 테스트 데이터로 사용됩니다.이 데이터는 정확도를 측정하기 위해 모델에서 만든 예측과 비교하는 데 사용됩니다.

다음은 시리즈를 구성 요소로 분해 한 것입니다.

출처 : Jupyter 노트북 출력

이 경우 시리즈의 상승 추세가 강하다는 것을 알 수 있습니다. 그러나 시리즈에서 계절성에 대한 증거는 없습니다.

즉, 데이터에 몇 가지 구조적 파손이있는 것으로 보입니다. 이러한 관점에서 Prophet 모델은 테스트 데이터에 대한 가격을 예측할 때 예측력을 높일 수 있습니다.

모델 구축

데이터 세트는 다음과 같이 정의됩니다.

train_dataset= pd.DataFrame()
train_dataset['ds'] = train_df['Date']
train_dataset['y']= train_df['Value']
train_dataset.head(10)

prophet_basic = Prophet()
prophet_basic.fit(train_dataset)

forecast=prophet_basic.predict(future)
fig1 =prophet_basic.plot(forecast)
Source: Prophet

from fbprophet.plot import add_changepoints_to_plot
fig = prophet_basic.plot(forecast)
a = add_changepoints_to_plot(fig.gca(), prophet_basic, forecast)
Source: Prophet

pro_change= Prophet(n_changepoints=12)
forecast = pro_change.fit(train_dataset).predict(future)
fig= pro_change.plot(forecast);
a = add_changepoints_to_plot(fig.gca(), pro_change, forecast)
future_data = pro_change.make_future_dataframe(periods=43, freq = 'm')
 
#forecast the data for future data
forecast_data = pro_change.predict(future_data)
pro_change.plot(forecast_data);
출처 : 예언자

정확성

이제 다음을 기준으로 모델의 정확성을 평가 해 보겠습니다.

  • 평균 방향 정확도 : 95 %
  • 제곱 평균 제곱근 오차 : 0.1948
  • 평균 예측 오류 : 0.1839
출처 : Jupyter 노트북 출력

테스트 세트 전체에서 평균 5.93 (로그 용어)을 사용하면 RMSE와 MAE가 비교하여 상당히 낮습니다 (평균 크기의 약 3 %). 이는 모델이 예측 용어에서 잘 수행됨을 나타냅니다. 월별 데이터를 사용하고 있기 때문에 더 짧은 기간 (예 : 매시간 또는 매일)을 사용할 때이 모델이 어떻게 작동하는지에 대해서는 불분명합니다. 이러한 관점에서 모델 예측은 단기 변동을 예측하는 측면에서 제한 될 수 있지만 전체적인 추세를 포착하는 데는 꽤 좋은 것 같습니다.

또한 MDA가 95 %이면 모델이 특정 달의 95 % 시간 동안 가격 방향을 예측할 수 있음을 나타냅니다. 이는 매우 좋습니다.

변경점 구성은 예측 정확도에 직접적인 영향을 미칩니다. 예를 들어, 예측의 변화 지점 수가 4 개로 낮아 졌을 때 RMSE는 0.2840 개였습니다 . 평균에 비해 여전히 상당히 낮지 만 12 개의 변경점으로 계산 된 RMSE의 거의 두 배입니다.

한계

일반적인 제한 사항으로 자산 가격 (또는 모든 종류의 경제 데이터)을 예측하는 것은 까다로울 수 있습니다.

이는 자산 가격이 본질적으로 피드백 루프의 영향을 받기 때문입니다. 예를 들어 Prophet 모델이 구리 가격 예측에 거의 완벽한 정확도를 제공한다고 가정합니다. 이 시나리오에서 더 넓은 시장은 궁극적으로 시장이 장기적으로 효율적으로 유지된다는 가정하에 모델을 사용하기 시작할 것입니다.이 시점에서 더 이상 예측 능력 측면에서 경쟁 우위를 얻을 수 없습니다.

예를 들어 날씨와 같은 시계열과 달리-사람의 개입을 통해 변경할 수없는-예측을 기반으로 한 후속 거래는 가격 자체를 이동시키는 효과가 있습니다. 이는 이전에 정확했을 예측이 더 이상 그렇지 않음을 의미합니다.

또한 재무 시계열은 잠재적으로 이전 데이터에서 캡처되지 않았을 수있는 개입의 대상이됩니다. 예를 들어, 연방 준비 은행에 의해 미국 금리를 0으로 낮추는 것은 2008 년 이전에 수집 된 시계열 데이터에서 포착되지 않았을 것이며, 그 결과 시계열 자체가 그러한 중대한 구조적 변화를 설명 할 수 없습니다.

구체적으로 모델링 개입과 관련하여 더 효과적인 방법은 인과 영향 패키지를 사용하는 것입니다 . 다음은 이러한 도구를 사용하여 환율 변동이 통화 변동에 미치는 영향을 모델링하는 방법에 대한 예 입니다.

결론

이 예에서 우리는 Prophet이 자산 가격에 대한 장기적인 추세를 예측할 때 매우 효과적 일 수 있으며, 그러한 예측을 알리기 위해 중요한 구조적 변화 지점을 식별하는 데 특히 효과적이라는 것을 확인했습니다.

읽어 주셔서 감사 드리며 질문이나 피드백은 대단히 감사합니다. 이 예제에 대한 Jupyter Notebook도 여기에서 찾을 수 있습니다 .

업데이트 : 관심이 있으시면 여기에 CNN (컨볼 루션 신경망)을 사용하여 구리 가격을 예측하는 방법에 대해 논의하는이 주제에 대한 업데이트 된 기사가 있습니다!

Suggested posts

개인 생활에 편향되는 것은 괜찮습니다

개인 생활에 편향되는 것은 괜찮습니다

“오, 당신은 건설 노동자와 데이트 했나요? 아, 맞다! — 그들이 존재한다는 것을 잊었습니다!” 내 친구 중 한 명이 몇 년 전 케임브리지 아파트에서 애프터눈 티를 마시 며 하버드 교수-룸메이트 졸업장과 다양한 칭찬을 마치 아무것도 아닌 것처럼 흩 뿌려서이 일을 엉망으로 만들었습니다. 우리는 데이트에 대해 이야기하고 있었고 누군가를 더 알고 싶어하기위한 개인의 전제 조건에 대해 이야기했습니다.

데이터 전략의 격차 (2 부)

격차를 극복하는 데이터 기반 솔루션

데이터 전략의 격차 (2 부)

이 글의 1 부에서 저는 기업이보다 효과적으로 데이터 중심이되기 위해 두 가지 핵심 질문을해야한다고 주장했습니다. 1.

Related posts

데이터 과학을위한 필수 수학 : 기초 및 기초 변경

데이터 과학을위한 필수 수학 : 기초 및 기초 변경

고유 분해 및 SVD에 유용한 기저의 선형 대수 개념 이해이 기사에서는 고유 분해 또는 특이 값 분해 (SVD)와 같은 행렬 분해 방법을 이해하는 흥미로운 방법 인 기저 개념에 대해 알아 봅니다. 정의 기본은 벡터 공간 (벡터 집합)을 설명하는 데 사용되는 좌표계입니다.

판다와 에라스무스 연구 교환 분석

판다와 에라스무스 연구 교환 분석

Erasmus 프로그램 2011-12에서 발생한 20 만 개의 연구 교환으로 데이터 세트를 분석 한 결과 1987 년 이후 Erasmus 프로그램은 매년 수십만 명의 유럽 학생들에게 한 학기 또는 1 년을 해외에서 보낼 기회를 다른 유럽에서 보낼 수있는 기회를 제공합니다. 경제적 인 지원뿐만 아니라 쉬운 교환 과정을 제공합니다. 유럽의 다양한 사람, 언어 및 문화에 대한 마음과 마음을 열어주는 정말 귀중한 경험입니다.

데이터 과학을위한 8 가지 기본 통계 개념

… 평범한 영어로 설명

데이터 과학을위한 8 가지 기본 통계 개념

통계는 "수량 데이터의 수집, 분석, 해석 및 표현을 다루는 수학의 한 분야"입니다. 프로그래밍과 기계 학습을 혼합하면 데이터 과학의 핵심 기술에 대해 꽤 잘 설명 할 수 있습니다.

데이터 과학의 9 가지 거리 측정

일반적인 거리 측정의 장점과 함정

데이터 과학의 9 가지 거리 측정

감독되거나 감독되지 않는 많은 알고리즘은 거리 측정을 사용합니다. 유클리드 거리 또는 코사인 유사성과 같은 이러한 측정은 종종 k-NN, UMAP, HDBSCAN 등과 같은 알고리즘에서 찾을 수 있습니다.