Проблемы с ARIMA в RStudio - ARIMA для акций - PullRequest
1 голос
/ 08 мая 2020

Это мой первый пост на этой платформе. Я изучаю бизнес-администрирование, поэтому, пожалуйста, проявите милосердие к моим новаторским вопросам.

В настоящее время я создаю модели ARIMA для некоторых акций, соответственно, их цены закрытия. Однако при построении прогнозов все, что я получаю, - это прямая линия с небольшим отклонением. Но это все. Например, у меня нет четких закономерностей, никаких взлетов и падений в прогнозе, просто прямая линия с дрейфом.

Не уверен, что я сделал какую-то ошибку.

install.packages(quantmod)
install.packages(tseries)
install.packages(timeSeries)
install.packages(forecast)
install.packages(MASS)
install.packages(ggplot2)
install.packages(zoo)
install.packages(xts)

library(quantmod)
library(tseries)
library(timeSeries)
library(forecast)
library(MASS)
library(ggplot2)
library(zoo)
library(xts)


# load data
energy = getSymbols(Symbols = "XLES.L", auto.assign = F, from = "2015-01-01", to = "2020-01-01")

# remove NAs
energy <- na.omit(energy$XLES.L.Close)
plot(energy)

# create TS
ts <- ts(energy, start = c(2015,01), frequency = 252)
plot(ts) #does not seem stationary

# check for stationarity
adf.test(ts) # --> not stationariy, differencing required

#Create Arima Model
arima <- auto.arima(ts, d = 1)
arima

# Create Forecast (Out-Of-Sample for 20days/1month)
forecast_energy <- forecast(arima, h = 20)
plot(forecast_energy)
plot(forecast_energy, include = 50)





Мои вопросы:

  • Почему это прямая линия?
  • Необходимо ли создавать временной ряд с ts-функцией, поскольку импортированные данные уже находятся в a ts (или нет?)
  • Это правильно, что я сделал?

ЗДЕСЬ УЧАСТКИ: Forecast ARIMA Forecast ARIMA zoomed in

ЗДЕСЬ ПЕЧАТЬ


> print(arima)
Series: ts 
ARIMA(2,1,0) 

Coefficients:
         ar1      ar2
      0.0125  -0.0502
s.e.  0.0283   0.0283

sigma^2 estimated as 20.19:  log likelihood=-3682.99
AIC=7371.98   AICc=7372   BIC=7387.4

Кто-нибудь может мне помочь:)

С уважением, Нуб

Ответы [ 2 ]

0 голосов
/ 15 мая 2020

Вы получаете прогноз в виде прямой линии, потому что ваша модель не может найти сезонность в данных, когда это происходит, модель просто берет среднее значение ваших исторических данных и генерирует прогноз, поэтому вы получаете прямую линию.

Модели очень сложно точно прогнозировать без хорошей сезонности и тенденций, присутствующих в исторических данных.

0 голосов
/ 08 мая 2020

Пример простого сигнала, который может нарушить автоариму

library(forecast)
set.seed(1)

mynoise <- rnorm(252*5,0,sd = 100) # high short term noise, non integrated
mytrend <- 1:(252*5) # long term trend
mysignal <- mynoise+mytrend
library(forecast)
mymodel <- auto.arima(mysignal)
plot(forecast(mymodel,50))

разница сигнала u = 1 + e-lag (e) и lag (u) = 1 + lag (e) -lag2 (e) пусть epsilon будет e-lag (e) это ar1 с epsilon = -lag (epsilon) + e Таким образом, процесс, вероятно, будет рассматриваться как стационарный 011, с 1 не очень значимым, а затем автоарима оценивает ариму (0,1,1) со значением скользящего среднего около -1.

Что не является полным провалом: это приемлемо для краткосрочных прогнозов, но делает глупые долгосрочные прогнозы .

...