Licença

This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.

License: CC BY-SA 4.0

Citação

Sugestão de citação: FIGUEIREDO, Adriano Marcos Rodrigues. Séries Temporais: Estimação da série diária de ação GOOG. Campo Grande-MS,Brasil: RStudio/Rpubs, 2023. Disponível em <http://rpubs.com/amrofi/fable_GOOG_daily>.

1 Dados para exemplo

Neste exercício, usarei a série de preços da ação da Alphabet Inc. (GOOG).

Vou chamar os dados por uma função derivada do quantmod que está no tidyquant, tq_get. Veja que ele vem em tibble. Então geramos o tsibble. Depois preenchemos os gaps implicitos com o fill_gaps.

library(tidyquant)
x.tbl <- tq_get("GOOG")

# XTS PARA TSIBBLE
library(tsibble)
library(tsibbledata)
library(magrittr)
library(dplyr)
x_tbl_ts <- as_tsibble(x.tbl)
head(x_tbl_ts)
fabletools::autoplot(x_tbl_ts, close)

# fill gaps com ultimo valor ----------
library(tidyr)
dados.full2 <- x_tbl_ts[-1] %>%
    tsibble::fill_gaps() %>%
    tidyr::fill(c(open, high, low, close, volume, adjusted), .direction = "down")
print(dados.full2)
# A tsibble: 3,759 x 7 [1D]
   date        open  high   low close    volume adjusted
   <date>     <dbl> <dbl> <dbl> <dbl>     <dbl>    <dbl>
 1 2013-01-02  17.9  18.1  17.8  18.0 102033017     18.0
 2 2013-01-03  18.1  18.2  18.0  18.0  93075567     18.0
 3 2013-01-04  18.2  18.5  18.1  18.4 110954331     18.4
 4 2013-01-05  18.2  18.5  18.1  18.4 110954331     18.4
 5 2013-01-06  18.2  18.5  18.1  18.4 110954331     18.4
 6 2013-01-07  18.3  18.4  18.2  18.3  66476239     18.3
 7 2013-01-08  18.3  18.3  18.0  18.3  67295297     18.3
 8 2013-01-09  18.2  18.4  18.1  18.4  81291563     18.4
 9 2013-01-10  18.5  18.6  18.3  18.5  73703226     18.5
10 2013-01-11  18.5  18.5  18.3  18.4  51600690     18.4
# ℹ 3,749 more rows

O gráfico para o preço de fechamento (close) será:

fabletools::autoplot(dados.full2, close)

O leitor pode testar agora as ferramentas de forecast do fable e fabletools.

library(fpp3)
fit <- dados.full2 %>%
    model(arima = ARIMA(close), ets = ETS(close), theta = THETA(close))
fit_fc <- fit %>%
    forecast(h = 365)
fit_fc %>%
    autoplot(dados.full2, level = NULL) + labs(y = "valor de X", title = "Exemplo de forecast após fill_gaps")

2 Usando o pacote prophet

Agora farei um ajuste com o Facebook Prophet:

# Prophet model ------------------ seguindo
# https://rpubs.com/amrofi/prophet_bitcoin
library(prophet)
library(tidyverse)
dados.ph <- dados.full2[, c(1, 5)]  # peguei apenas a date e a close
colnames(dados.ph) <- c("ds", "y")  # o prophet requer esses nomes de colunas
Model1 <- prophet(dados.ph, daily.seasonality = TRUE)
class(Model1)  # objeto do prophet
[1] "prophet" "list"   
## Criar dataframe com mais 365 obs a frente (fora da amostra) ---------
Future1 <- make_future_dataframe(Model1, periods = 365)
tail(Future1)
## Previsao pelo Model1 para as datas de Future1 ------------
Forecast1 <- predict(Model1, Future1)
class(Forecast1)
[1] "data.frame"
## gráficos do forecast -------------
dyplot.prophet(Model1, Forecast1)

Fica a dica para o leitor avaliar a presença de efeitos ARCH.

3 Usando o pacote fable.prophet com split

Neste caso, conforme Hyndman e Athanasopoulos (2020), capítulo 12.2, o modelo Facebook (TAYLOR e LETHAM, 2018) é útil para estimar séries diárias, e principalmente aquelas com sazonalidades semanal e anual, além de efeitos de feriados. Ele pode ser considerado um modelo de regressão não linear da forma:

\[ y_t = g(t) + s(t) + h(t) + \varepsilon_t, \]

em que \(g(t)\) descreve a tendência linear (ou “termo de crescimento”), \(s(t)\) descreve os vários padrões sazonais, \(h(t)\) captura os efeitos do feriado, e \(\varepsilon_t\) é um termo de erro de ruído branco. A tendência linear é selecionada automaticamente se não for especificada explicitamente. O componente sazonal consiste em termos de Fourier dos períodos relevantes. Por padrão, a ordem 10 é usada para sazonalidade anual e a ordem 3 é usada para sazonalidade semanal, conforme Hyndman e Athanasopoulos (2020, tradução livre). Os efeitos de feriado são adicionados como variáveis ​​dummies simples. O modelo é estimado usando uma abordagem bayesiana para permitir a seleção automática dos pontos de mudança e outras características do modelo.

Estimaremos juntamente aos modelos ARIMA, ETS, THETA anteriormente estimados, dentro do ambiente fable e fable.prophet. Farei a regra 80-20 para amostras treino (3806*0.80 = 3044 dias = “2019-05-04”) e teste (3806-3044 = 762 dias = após “2019-05-05”), obtido a partir do dataset completo para os gaps implicitos.

library(fable.prophet)
library(fable)
train <- dados.full2 %>%
    filter_index(~"2021-03-26")  # 2591*0.80 = 2073 2021-03-26
h = length(dados.full2$close) - length(train$close)
h
[1] 753
fit.all <- train %>%
    model(arima = ARIMA(close, stepwise = FALSE, approximation = FALSE), ets = ETS(close),
        theta = THETA(close), prophet = prophet(close ~ growth("linear") + season(period = "day",
            order = 10) + season(period = "week", order = 5) + season(period = "year",
            order = 3))) %>%
    mutate(combination = (ets + arima + theta + prophet)/4)
fitall_fc <- fit.all %>%
    forecast(h = h)
fitall_fc %>%
    autoplot(dados.full2, level = NULL) + labs(y = "valor da ação", title = "Forecast com ARIMA, ETS, THETA e FABLE.PROPHET, para GOOG")

fc_accuracy <- fitall_fc %>%
    accuracy(dados.full2)
# acurácia ordenada pelo RMSE
fc_accuracy %>%
    group_by(.model) %>%
    summarise(RMSE = mean(RMSE), MAE = mean(MAE), MASE = mean(MASE)) %>%
    arrange(RMSE)

Forecasts:

library(fable)
library(fable.prophet)
fitall_fc2 <- fit.all %>%
    forecast(h = h + 60)
fitall_fc2 %>%
    autoplot(dados.full2, level = c(95)) + labs(y = "valor da ação", title = "Forecast com ARIMA, ETS, THETA e FABLE.PROPHET, para o GOOG")

Representarei apenas os forecasts do período de “2023-01-01” a “2023-06-17” para não ficar muito extenso.

fitall_fc2 %>%
    filter_index("2023-01-01" ~ "2023-06-17") %>%
    knitr::kable()
.model date close .mean
arima 2023-01-01 N(102, 262) 101.9362
arima 2023-01-02 N(102, 263) 101.9362
arima 2023-01-03 N(102, 263) 101.9362
arima 2023-01-04 N(102, 264) 101.9362
arima 2023-01-05 N(102, 264) 101.9362
arima 2023-01-06 N(102, 264) 101.9362
arima 2023-01-07 N(102, 265) 101.9362
arima 2023-01-08 N(102, 265) 101.9362
arima 2023-01-09 N(102, 266) 101.9362
arima 2023-01-10 N(102, 266) 101.9362
arima 2023-01-11 N(102, 266) 101.9362
arima 2023-01-12 N(102, 267) 101.9362
arima 2023-01-13 N(102, 267) 101.9362
arima 2023-01-14 N(102, 268) 101.9362
arima 2023-01-15 N(102, 268) 101.9362
arima 2023-01-16 N(102, 268) 101.9362
arima 2023-01-17 N(102, 269) 101.9362
arima 2023-01-18 N(102, 269) 101.9362
arima 2023-01-19 N(102, 270) 101.9362
arima 2023-01-20 N(102, 270) 101.9362
arima 2023-01-21 N(102, 270) 101.9362
arima 2023-01-22 N(102, 271) 101.9362
arima 2023-01-23 N(102, 271) 101.9362
arima 2023-01-24 N(102, 272) 101.9362
arima 2023-01-25 N(102, 272) 101.9362
arima 2023-01-26 N(102, 272) 101.9362
arima 2023-01-27 N(102, 273) 101.9362
arima 2023-01-28 N(102, 273) 101.9362
arima 2023-01-29 N(102, 274) 101.9362
arima 2023-01-30 N(102, 274) 101.9362
arima 2023-01-31 N(102, 275) 101.9362
arima 2023-02-01 N(102, 275) 101.9362
arima 2023-02-02 N(102, 275) 101.9362
arima 2023-02-03 N(102, 276) 101.9362
arima 2023-02-04 N(102, 276) 101.9362
arima 2023-02-05 N(102, 277) 101.9362
arima 2023-02-06 N(102, 277) 101.9362
arima 2023-02-07 N(102, 277) 101.9362
arima 2023-02-08 N(102, 278) 101.9362
arima 2023-02-09 N(102, 278) 101.9362
arima 2023-02-10 N(102, 279) 101.9362
arima 2023-02-11 N(102, 279) 101.9362
arima 2023-02-12 N(102, 279) 101.9362
arima 2023-02-13 N(102, 280) 101.9362
arima 2023-02-14 N(102, 280) 101.9362
arima 2023-02-15 N(102, 281) 101.9362
arima 2023-02-16 N(102, 281) 101.9362
arima 2023-02-17 N(102, 281) 101.9362
arima 2023-02-18 N(102, 282) 101.9362
arima 2023-02-19 N(102, 282) 101.9362
arima 2023-02-20 N(102, 283) 101.9362
arima 2023-02-21 N(102, 283) 101.9362
arima 2023-02-22 N(102, 283) 101.9362
arima 2023-02-23 N(102, 284) 101.9362
arima 2023-02-24 N(102, 284) 101.9362
arima 2023-02-25 N(102, 285) 101.9362
arima 2023-02-26 N(102, 285) 101.9362
arima 2023-02-27 N(102, 285) 101.9362
arima 2023-02-28 N(102, 286) 101.9362
arima 2023-03-01 N(102, 286) 101.9362
arima 2023-03-02 N(102, 287) 101.9362
arima 2023-03-03 N(102, 287) 101.9362
arima 2023-03-04 N(102, 287) 101.9362
arima 2023-03-05 N(102, 288) 101.9362
arima 2023-03-06 N(102, 288) 101.9362
arima 2023-03-07 N(102, 289) 101.9362
arima 2023-03-08 N(102, 289) 101.9362
arima 2023-03-09 N(102, 290) 101.9362
arima 2023-03-10 N(102, 290) 101.9362
arima 2023-03-11 N(102, 290) 101.9362
arima 2023-03-12 N(102, 291) 101.9362
arima 2023-03-13 N(102, 291) 101.9362
arima 2023-03-14 N(102, 292) 101.9362
arima 2023-03-15 N(102, 292) 101.9362
arima 2023-03-16 N(102, 292) 101.9362
arima 2023-03-17 N(102, 293) 101.9362
arima 2023-03-18 N(102, 293) 101.9362
arima 2023-03-19 N(102, 294) 101.9362
arima 2023-03-20 N(102, 294) 101.9362
arima 2023-03-21 N(102, 294) 101.9362
arima 2023-03-22 N(102, 295) 101.9362
arima 2023-03-23 N(102, 295) 101.9362
arima 2023-03-24 N(102, 296) 101.9362
arima 2023-03-25 N(102, 296) 101.9362
arima 2023-03-26 N(102, 296) 101.9362
arima 2023-03-27 N(102, 297) 101.9362
arima 2023-03-28 N(102, 297) 101.9362
arima 2023-03-29 N(102, 298) 101.9362
arima 2023-03-30 N(102, 298) 101.9362
arima 2023-03-31 N(102, 298) 101.9362
arima 2023-04-01 N(102, 299) 101.9362
arima 2023-04-02 N(102, 299) 101.9362
arima 2023-04-03 N(102, 300) 101.9362
arima 2023-04-04 N(102, 300) 101.9362
arima 2023-04-05 N(102, 300) 101.9362
arima 2023-04-06 N(102, 301) 101.9362
arima 2023-04-07 N(102, 301) 101.9362
arima 2023-04-08 N(102, 302) 101.9362
arima 2023-04-09 N(102, 302) 101.9362
arima 2023-04-10 N(102, 302) 101.9362
arima 2023-04-11 N(102, 303) 101.9362
arima 2023-04-12 N(102, 303) 101.9362
arima 2023-04-13 N(102, 304) 101.9362
arima 2023-04-14 N(102, 304) 101.9362
arima 2023-04-15 N(102, 305) 101.9362
arima 2023-04-16 N(102, 305) 101.9362
arima 2023-04-17 N(102, 305) 101.9362
arima 2023-04-18 N(102, 306) 101.9362
arima 2023-04-19 N(102, 306) 101.9362
arima 2023-04-20 N(102, 307) 101.9362
arima 2023-04-21 N(102, 307) 101.9362
arima 2023-04-22 N(102, 307) 101.9362
arima 2023-04-23 N(102, 308) 101.9362
arima 2023-04-24 N(102, 308) 101.9362
arima 2023-04-25 N(102, 309) 101.9362
arima 2023-04-26 N(102, 309) 101.9362
arima 2023-04-27 N(102, 309) 101.9362
arima 2023-04-28 N(102, 310) 101.9362
arima 2023-04-29 N(102, 310) 101.9362
arima 2023-04-30 N(102, 311) 101.9362
arima 2023-05-01 N(102, 311) 101.9362
arima 2023-05-02 N(102, 311) 101.9362
arima 2023-05-03 N(102, 312) 101.9362
arima 2023-05-04 N(102, 312) 101.9362
arima 2023-05-05 N(102, 313) 101.9362
arima 2023-05-06 N(102, 313) 101.9362
arima 2023-05-07 N(102, 313) 101.9362
arima 2023-05-08 N(102, 314) 101.9362
arima 2023-05-09 N(102, 314) 101.9362
arima 2023-05-10 N(102, 315) 101.9362
arima 2023-05-11 N(102, 315) 101.9362
arima 2023-05-12 N(102, 315) 101.9362
arima 2023-05-13 N(102, 316) 101.9362
arima 2023-05-14 N(102, 316) 101.9362
arima 2023-05-15 N(102, 317) 101.9362
arima 2023-05-16 N(102, 317) 101.9362
arima 2023-05-17 N(102, 317) 101.9362
arima 2023-05-18 N(102, 318) 101.9362
arima 2023-05-19 N(102, 318) 101.9362
arima 2023-05-20 N(102, 319) 101.9362
arima 2023-05-21 N(102, 319) 101.9362
arima 2023-05-22 N(102, 320) 101.9362
arima 2023-05-23 N(102, 320) 101.9362
arima 2023-05-24 N(102, 320) 101.9362
arima 2023-05-25 N(102, 321) 101.9362
arima 2023-05-26 N(102, 321) 101.9362
arima 2023-05-27 N(102, 322) 101.9362
arima 2023-05-28 N(102, 322) 101.9362
arima 2023-05-29 N(102, 322) 101.9362
arima 2023-05-30 N(102, 323) 101.9362
arima 2023-05-31 N(102, 323) 101.9362
arima 2023-06-01 N(102, 324) 101.9362
arima 2023-06-02 N(102, 324) 101.9362
arima 2023-06-03 N(102, 324) 101.9362
arima 2023-06-04 N(102, 325) 101.9362
arima 2023-06-05 N(102, 325) 101.9362
arima 2023-06-06 N(102, 326) 101.9362
arima 2023-06-07 N(102, 326) 101.9362
arima 2023-06-08 N(102, 326) 101.9362
arima 2023-06-09 N(102, 327) 101.9362
arima 2023-06-10 N(102, 327) 101.9362
arima 2023-06-11 N(102, 328) 101.9362
arima 2023-06-12 N(102, 328) 101.9362
arima 2023-06-13 N(102, 328) 101.9362
arima 2023-06-14 N(102, 329) 101.9362
arima 2023-06-15 N(102, 329) 101.9362
arima 2023-06-16 N(102, 330) 101.9362
arima 2023-06-17 N(102, 330) 101.9362
ets 2023-01-01 N(118, 1406) 117.6417
ets 2023-01-02 N(118, 1409) 117.6662
ets 2023-01-03 N(118, 1412) 117.6907
ets 2023-01-04 N(118, 1414) 117.7152
ets 2023-01-05 N(118, 1417) 117.7397
ets 2023-01-06 N(118, 1420) 117.7642
ets 2023-01-07 N(118, 1423) 117.7887
ets 2023-01-08 N(118, 1425) 117.8132
ets 2023-01-09 N(118, 1428) 117.8378
ets 2023-01-10 N(118, 1431) 117.8623
ets 2023-01-11 N(118, 1434) 117.8868
ets 2023-01-12 N(118, 1436) 117.9113
ets 2023-01-13 N(118, 1439) 117.9358
ets 2023-01-14 N(118, 1442) 117.9603
ets 2023-01-15 N(118, 1445) 117.9848
ets 2023-01-16 N(118, 1447) 118.0093
ets 2023-01-17 N(118, 1450) 118.0339
ets 2023-01-18 N(118, 1453) 118.0584
ets 2023-01-19 N(118, 1456) 118.0829
ets 2023-01-20 N(118, 1459) 118.1074
ets 2023-01-21 N(118, 1461) 118.1319
ets 2023-01-22 N(118, 1464) 118.1564
ets 2023-01-23 N(118, 1467) 118.1809
ets 2023-01-24 N(118, 1470) 118.2054
ets 2023-01-25 N(118, 1472) 118.2300
ets 2023-01-26 N(118, 1475) 118.2545
ets 2023-01-27 N(118, 1478) 118.2790
ets 2023-01-28 N(118, 1481) 118.3035
ets 2023-01-29 N(118, 1484) 118.3280
ets 2023-01-30 N(118, 1486) 118.3525
ets 2023-01-31 N(118, 1489) 118.3770
ets 2023-02-01 N(118, 1492) 118.4015
ets 2023-02-02 N(118, 1495) 118.4260
ets 2023-02-03 N(118, 1498) 118.4506
ets 2023-02-04 N(118, 1500) 118.4751
ets 2023-02-05 N(118, 1503) 118.4996
ets 2023-02-06 N(119, 1506) 118.5241
ets 2023-02-07 N(119, 1509) 118.5486
ets 2023-02-08 N(119, 1512) 118.5731
ets 2023-02-09 N(119, 1514) 118.5976
ets 2023-02-10 N(119, 1517) 118.6221
ets 2023-02-11 N(119, 1520) 118.6467
ets 2023-02-12 N(119, 1523) 118.6712
ets 2023-02-13 N(119, 1526) 118.6957
ets 2023-02-14 N(119, 1529) 118.7202
ets 2023-02-15 N(119, 1531) 118.7447
ets 2023-02-16 N(119, 1534) 118.7692
ets 2023-02-17 N(119, 1537) 118.7937
ets 2023-02-18 N(119, 1540) 118.8182
ets 2023-02-19 N(119, 1543) 118.8428
ets 2023-02-20 N(119, 1546) 118.8673
ets 2023-02-21 N(119, 1548) 118.8918
ets 2023-02-22 N(119, 1551) 118.9163
ets 2023-02-23 N(119, 1554) 118.9408
ets 2023-02-24 N(119, 1557) 118.9653
ets 2023-02-25 N(119, 1560) 118.9898
ets 2023-02-26 N(119, 1563) 119.0143
ets 2023-02-27 N(119, 1565) 119.0389
ets 2023-02-28 N(119, 1568) 119.0634
ets 2023-03-01 N(119, 1571) 119.0879
ets 2023-03-02 N(119, 1574) 119.1124
ets 2023-03-03 N(119, 1577) 119.1369
ets 2023-03-04 N(119, 1580) 119.1614
ets 2023-03-05 N(119, 1583) 119.1859
ets 2023-03-06 N(119, 1585) 119.2104
ets 2023-03-07 N(119, 1588) 119.2350
ets 2023-03-08 N(119, 1591) 119.2595
ets 2023-03-09 N(119, 1594) 119.2840
ets 2023-03-10 N(119, 1597) 119.3085
ets 2023-03-11 N(119, 1600) 119.3330
ets 2023-03-12 N(119, 1603) 119.3575
ets 2023-03-13 N(119, 1606) 119.3820
ets 2023-03-14 N(119, 1608) 119.4065
ets 2023-03-15 N(119, 1611) 119.4311
ets 2023-03-16 N(119, 1614) 119.4556
ets 2023-03-17 N(119, 1617) 119.4801
ets 2023-03-18 N(120, 1620) 119.5046
ets 2023-03-19 N(120, 1623) 119.5291
ets 2023-03-20 N(120, 1626) 119.5536
ets 2023-03-21 N(120, 1629) 119.5781
ets 2023-03-22 N(120, 1632) 119.6026
ets 2023-03-23 N(120, 1634) 119.6272
ets 2023-03-24 N(120, 1637) 119.6517
ets 2023-03-25 N(120, 1640) 119.6762
ets 2023-03-26 N(120, 1643) 119.7007
ets 2023-03-27 N(120, 1646) 119.7252
ets 2023-03-28 N(120, 1649) 119.7497
ets 2023-03-29 N(120, 1652) 119.7742
ets 2023-03-30 N(120, 1655) 119.7987
ets 2023-03-31 N(120, 1658) 119.8233
ets 2023-04-01 N(120, 1661) 119.8478
ets 2023-04-02 N(120, 1664) 119.8723
ets 2023-04-03 N(120, 1666) 119.8968
ets 2023-04-04 N(120, 1669) 119.9213
ets 2023-04-05 N(120, 1672) 119.9458
ets 2023-04-06 N(120, 1675) 119.9703
ets 2023-04-07 N(120, 1678) 119.9948
ets 2023-04-08 N(120, 1681) 120.0194
ets 2023-04-09 N(120, 1684) 120.0439
ets 2023-04-10 N(120, 1687) 120.0684
ets 2023-04-11 N(120, 1690) 120.0929
ets 2023-04-12 N(120, 1693) 120.1174
ets 2023-04-13 N(120, 1696) 120.1419
ets 2023-04-14 N(120, 1699) 120.1664
ets 2023-04-15 N(120, 1702) 120.1909
ets 2023-04-16 N(120, 1705) 120.2154
ets 2023-04-17 N(120, 1708) 120.2400
ets 2023-04-18 N(120, 1711) 120.2645
ets 2023-04-19 N(120, 1713) 120.2890
ets 2023-04-20 N(120, 1716) 120.3135
ets 2023-04-21 N(120, 1719) 120.3380
ets 2023-04-22 N(120, 1722) 120.3625
ets 2023-04-23 N(120, 1725) 120.3870
ets 2023-04-24 N(120, 1728) 120.4115
ets 2023-04-25 N(120, 1731) 120.4361
ets 2023-04-26 N(120, 1734) 120.4606
ets 2023-04-27 N(120, 1737) 120.4851
ets 2023-04-28 N(121, 1740) 120.5096
ets 2023-04-29 N(121, 1743) 120.5341
ets 2023-04-30 N(121, 1746) 120.5586
ets 2023-05-01 N(121, 1749) 120.5831
ets 2023-05-02 N(121, 1752) 120.6076
ets 2023-05-03 N(121, 1755) 120.6322
ets 2023-05-04 N(121, 1758) 120.6567
ets 2023-05-05 N(121, 1761) 120.6812
ets 2023-05-06 N(121, 1764) 120.7057
ets 2023-05-07 N(121, 1767) 120.7302
ets 2023-05-08 N(121, 1770) 120.7547
ets 2023-05-09 N(121, 1773) 120.7792
ets 2023-05-10 N(121, 1776) 120.8037
ets 2023-05-11 N(121, 1779) 120.8283
ets 2023-05-12 N(121, 1782) 120.8528
ets 2023-05-13 N(121, 1785) 120.8773
ets 2023-05-14 N(121, 1788) 120.9018
ets 2023-05-15 N(121, 1791) 120.9263
ets 2023-05-16 N(121, 1794) 120.9508
ets 2023-05-17 N(121, 1797) 120.9753
ets 2023-05-18 N(121, 1800) 120.9998
ets 2023-05-19 N(121, 1803) 121.0244
ets 2023-05-20 N(121, 1806) 121.0489
ets 2023-05-21 N(121, 1809) 121.0734
ets 2023-05-22 N(121, 1812) 121.0979
ets 2023-05-23 N(121, 1815) 121.1224
ets 2023-05-24 N(121, 1818) 121.1469
ets 2023-05-25 N(121, 1821) 121.1714
ets 2023-05-26 N(121, 1824) 121.1959
ets 2023-05-27 N(121, 1827) 121.2205
ets 2023-05-28 N(121, 1830) 121.2450
ets 2023-05-29 N(121, 1833) 121.2695
ets 2023-05-30 N(121, 1836) 121.2940
ets 2023-05-31 N(121, 1839) 121.3185
ets 2023-06-01 N(121, 1842) 121.3430
ets 2023-06-02 N(121, 1845) 121.3675
ets 2023-06-03 N(121, 1848) 121.3920
ets 2023-06-04 N(121, 1852) 121.4166
ets 2023-06-05 N(121, 1855) 121.4411
ets 2023-06-06 N(121, 1858) 121.4656
ets 2023-06-07 N(121, 1861) 121.4901
ets 2023-06-08 N(122, 1864) 121.5146
ets 2023-06-09 N(122, 1867) 121.5391
ets 2023-06-10 N(122, 1870) 121.5636
ets 2023-06-11 N(122, 1873) 121.5881
ets 2023-06-12 N(122, 1876) 121.6127
ets 2023-06-13 N(122, 1879) 121.6372
ets 2023-06-14 N(122, 1882) 121.6617
ets 2023-06-15 N(122, 1885) 121.6862
ets 2023-06-16 N(122, 1888) 121.7107
ets 2023-06-17 N(122, 1891) 121.7352
theta 2023-01-01 N(109, 275) 108.5512
theta 2023-01-02 N(108, 275) 108.4773
theta 2023-01-03 N(109, 276) 108.5842
theta 2023-01-04 N(109, 276) 108.7502
theta 2023-01-05 N(109, 277) 108.7121
theta 2023-01-06 N(109, 277) 108.7275
theta 2023-01-07 N(109, 278) 108.6767
theta 2023-01-08 N(109, 278) 108.6254
theta 2023-01-09 N(109, 278) 108.5514
theta 2023-01-10 N(109, 279) 108.6584
theta 2023-01-11 N(109, 279) 108.8246
theta 2023-01-12 N(109, 280) 108.7864
theta 2023-01-13 N(109, 280) 108.8018
theta 2023-01-14 N(109, 281) 108.7510
theta 2023-01-15 N(109, 281) 108.6996
theta 2023-01-16 N(109, 281) 108.6256
theta 2023-01-17 N(109, 282) 108.7326
theta 2023-01-18 N(109, 282) 108.8989
theta 2023-01-19 N(109, 283) 108.8607
theta 2023-01-20 N(109, 283) 108.8761
theta 2023-01-21 N(109, 284) 108.8252
theta 2023-01-22 N(109, 284) 108.7738
theta 2023-01-23 N(109, 284) 108.6997
theta 2023-01-24 N(109, 285) 108.8068
theta 2023-01-25 N(109, 285) 108.9732
theta 2023-01-26 N(109, 286) 108.9349
theta 2023-01-27 N(109, 286) 108.9504
theta 2023-01-28 N(109, 287) 108.8994
theta 2023-01-29 N(109, 287) 108.8480
theta 2023-01-30 N(109, 287) 108.7738
theta 2023-01-31 N(109, 288) 108.8810
theta 2023-02-01 N(109, 288) 109.0475
theta 2023-02-02 N(109, 289) 109.0092
theta 2023-02-03 N(109, 289) 109.0246
theta 2023-02-04 N(109, 290) 108.9737
theta 2023-02-05 N(109, 290) 108.9222
theta 2023-02-06 N(109, 290) 108.8480
theta 2023-02-07 N(109, 291) 108.9552
theta 2023-02-08 N(109, 291) 109.1218
theta 2023-02-09 N(109, 292) 109.0835
theta 2023-02-10 N(109, 292) 109.0989
theta 2023-02-11 N(109, 293) 109.0479
theta 2023-02-12 N(109, 293) 108.9964
theta 2023-02-13 N(109, 293) 108.9221
theta 2023-02-14 N(109, 294) 109.0294
theta 2023-02-15 N(109, 294) 109.1961
theta 2023-02-16 N(109, 295) 109.1578
theta 2023-02-17 N(109, 295) 109.1732
theta 2023-02-18 N(109, 295) 109.1221
theta 2023-02-19 N(109, 296) 109.0706
theta 2023-02-20 N(109, 296) 108.9962
theta 2023-02-21 N(109, 297) 109.1036
theta 2023-02-22 N(109, 297) 109.2704
theta 2023-02-23 N(109, 298) 109.2321
theta 2023-02-24 N(109, 298) 109.2475
theta 2023-02-25 N(109, 298) 109.1964
theta 2023-02-26 N(109, 299) 109.1448
theta 2023-02-27 N(109, 299) 109.0704
theta 2023-02-28 N(109, 300) 109.1778
theta 2023-03-01 N(109, 300) 109.3447
theta 2023-03-02 N(109, 301) 109.3063
theta 2023-03-03 N(109, 301) 109.3218
theta 2023-03-04 N(109, 301) 109.2706
theta 2023-03-05 N(109, 302) 109.2190
theta 2023-03-06 N(109, 302) 109.1445
theta 2023-03-07 N(109, 303) 109.2520
theta 2023-03-08 N(109, 303) 109.4190
theta 2023-03-09 N(109, 304) 109.3806
theta 2023-03-10 N(109, 304) 109.3960
theta 2023-03-11 N(109, 304) 109.3449
theta 2023-03-12 N(109, 305) 109.2932
theta 2023-03-13 N(109, 305) 109.2187
theta 2023-03-14 N(109, 306) 109.3262
theta 2023-03-15 N(109, 306) 109.4934
theta 2023-03-16 N(109, 307) 109.4549
theta 2023-03-17 N(109, 307) 109.4703
theta 2023-03-18 N(109, 307) 109.4191
theta 2023-03-19 N(109, 308) 109.3674
theta 2023-03-20 N(109, 308) 109.2928
theta 2023-03-21 N(109, 309) 109.4004
theta 2023-03-22 N(110, 309) 109.5677
theta 2023-03-23 N(110, 310) 109.5292
theta 2023-03-24 N(110, 310) 109.5446
theta 2023-03-25 N(109, 310) 109.4933
theta 2023-03-26 N(109, 311) 109.4416
theta 2023-03-27 N(109, 311) 109.3669
theta 2023-03-28 N(109, 312) 109.4746
theta 2023-03-29 N(110, 312) 109.6420
theta 2023-03-30 N(110, 313) 109.6034
theta 2023-03-31 N(110, 313) 109.6189
theta 2023-04-01 N(110, 313) 109.5676
theta 2023-04-02 N(110, 314) 109.5158
theta 2023-04-03 N(109, 314) 109.4411
theta 2023-04-04 N(110, 315) 109.5488
theta 2023-04-05 N(110, 315) 109.7163
theta 2023-04-06 N(110, 315) 109.6777
theta 2023-04-07 N(110, 316) 109.6932
theta 2023-04-08 N(110, 316) 109.6418
theta 2023-04-09 N(110, 317) 109.5900
theta 2023-04-10 N(110, 317) 109.5152
theta 2023-04-11 N(110, 318) 109.6230
theta 2023-04-12 N(110, 318) 109.7906
theta 2023-04-13 N(110, 318) 109.7520
theta 2023-04-14 N(110, 319) 109.7674
theta 2023-04-15 N(110, 319) 109.7161
theta 2023-04-16 N(110, 320) 109.6642
theta 2023-04-17 N(110, 320) 109.5894
theta 2023-04-18 N(110, 321) 109.6972
theta 2023-04-19 N(110, 321) 109.8649
theta 2023-04-20 N(110, 321) 109.8263
theta 2023-04-21 N(110, 322) 109.8417
theta 2023-04-22 N(110, 322) 109.7903
theta 2023-04-23 N(110, 323) 109.7384
theta 2023-04-24 N(110, 323) 109.6635
theta 2023-04-25 N(110, 324) 109.7714
theta 2023-04-26 N(110, 324) 109.9392
theta 2023-04-27 N(110, 324) 109.9006
theta 2023-04-28 N(110, 325) 109.9160
theta 2023-04-29 N(110, 325) 109.8645
theta 2023-04-30 N(110, 326) 109.8126
theta 2023-05-01 N(110, 326) 109.7376
theta 2023-05-02 N(110, 327) 109.8456
theta 2023-05-03 N(110, 327) 110.0135
theta 2023-05-04 N(110, 327) 109.9748
theta 2023-05-05 N(110, 328) 109.9903
theta 2023-05-06 N(110, 328) 109.9388
theta 2023-05-07 N(110, 329) 109.8868
theta 2023-05-08 N(110, 329) 109.8118
theta 2023-05-09 N(110, 330) 109.9198
theta 2023-05-10 N(110, 330) 110.0878
theta 2023-05-11 N(110, 330) 110.0491
theta 2023-05-12 N(110, 331) 110.0646
theta 2023-05-13 N(110, 331) 110.0130
theta 2023-05-14 N(110, 332) 109.9610
theta 2023-05-15 N(110, 332) 109.8859
theta 2023-05-16 N(110, 333) 109.9940
theta 2023-05-17 N(110, 333) 110.1622
theta 2023-05-18 N(110, 333) 110.1234
theta 2023-05-19 N(110, 334) 110.1388
theta 2023-05-20 N(110, 334) 110.0873
theta 2023-05-21 N(110, 335) 110.0352
theta 2023-05-22 N(110, 335) 109.9601
theta 2023-05-23 N(110, 335) 110.0682
theta 2023-05-24 N(110, 336) 110.2365
theta 2023-05-25 N(110, 336) 110.1977
theta 2023-05-26 N(110, 337) 110.2131
theta 2023-05-27 N(110, 337) 110.1615
theta 2023-05-28 N(110, 338) 110.1094
theta 2023-05-29 N(110, 338) 110.0342
theta 2023-05-30 N(110, 338) 110.1425
theta 2023-05-31 N(110, 339) 110.3108
theta 2023-06-01 N(110, 339) 110.2719
theta 2023-06-02 N(110, 340) 110.2874
theta 2023-06-03 N(110, 340) 110.2357
theta 2023-06-04 N(110, 341) 110.1836
theta 2023-06-05 N(110, 341) 110.1083
theta 2023-06-06 N(110, 341) 110.2167
theta 2023-06-07 N(110, 342) 110.3851
theta 2023-06-08 N(110, 342) 110.3462
theta 2023-06-09 N(110, 343) 110.3617
theta 2023-06-10 N(110, 343) 110.3100
theta 2023-06-11 N(110, 344) 110.2578
theta 2023-06-12 N(110, 344) 110.1825
theta 2023-06-13 N(110, 344) 110.2909
theta 2023-06-14 N(110, 345) 110.4594
theta 2023-06-15 N(110, 345) 110.4205
theta 2023-06-16 N(110, 346) 110.4360
theta 2023-06-17 N(110, 346) 110.3842
prophet 2023-01-01 sample[5000] 133.9426
prophet 2023-01-02 sample[5000] 134.0016
prophet 2023-01-03 sample[5000] 134.1712
prophet 2023-01-04 sample[5000] 134.2534
prophet 2023-01-05 sample[5000] 134.3518
prophet 2023-01-06 sample[5000] 134.5688
prophet 2023-01-07 sample[5000] 134.4825
prophet 2023-01-08 sample[5000] 134.6395
prophet 2023-01-09 sample[5000] 134.6902
prophet 2023-01-10 sample[5000] 134.7372
prophet 2023-01-11 sample[5000] 134.9181
prophet 2023-01-12 sample[5000] 135.0544
prophet 2023-01-13 sample[5000] 135.1283
prophet 2023-01-14 sample[5000] 135.1662
prophet 2023-01-15 sample[5000] 135.2978
prophet 2023-01-16 sample[5000] 135.2650
prophet 2023-01-17 sample[5000] 135.4431
prophet 2023-01-18 sample[5000] 135.6236
prophet 2023-01-19 sample[5000] 135.6365
prophet 2023-01-20 sample[5000] 135.7509
prophet 2023-01-21 sample[5000] 135.7353
prophet 2023-01-22 sample[5000] 135.8857
prophet 2023-01-23 sample[5000] 135.9015
prophet 2023-01-24 sample[5000] 136.0331
prophet 2023-01-25 sample[5000] 136.1227
prophet 2023-01-26 sample[5000] 136.2191
prophet 2023-01-27 sample[5000] 136.2108
prophet 2023-01-28 sample[5000] 136.3503
prophet 2023-01-29 sample[5000] 136.3335
prophet 2023-01-30 sample[5000] 136.4354
prophet 2023-01-31 sample[5000] 136.6209
prophet 2023-02-01 sample[5000] 136.7285
prophet 2023-02-02 sample[5000] 136.8210
prophet 2023-02-03 sample[5000] 136.7896
prophet 2023-02-04 sample[5000] 136.8592
prophet 2023-02-05 sample[5000] 136.8541
prophet 2023-02-06 sample[5000] 136.8689
prophet 2023-02-07 sample[5000] 136.9817
prophet 2023-02-08 sample[5000] 137.1444
prophet 2023-02-09 sample[5000] 137.2933
prophet 2023-02-10 sample[5000] 137.2172
prophet 2023-02-11 sample[5000] 137.3320
prophet 2023-02-12 sample[5000] 137.3524
prophet 2023-02-13 sample[5000] 137.3684
prophet 2023-02-14 sample[5000] 137.3846
prophet 2023-02-15 sample[5000] 137.5370
prophet 2023-02-16 sample[5000] 137.6459
prophet 2023-02-17 sample[5000] 137.5779
prophet 2023-02-18 sample[5000] 137.6793
prophet 2023-02-19 sample[5000] 137.6649
prophet 2023-02-20 sample[5000] 137.6628
prophet 2023-02-21 sample[5000] 137.6975
prophet 2023-02-22 sample[5000] 137.7981
prophet 2023-02-23 sample[5000] 137.8515
prophet 2023-02-24 sample[5000] 137.8958
prophet 2023-02-25 sample[5000] 137.8350
prophet 2023-02-26 sample[5000] 138.0057
prophet 2023-02-27 sample[5000] 137.9061
prophet 2023-02-28 sample[5000] 137.9553
prophet 2023-03-01 sample[5000] 138.0621
prophet 2023-03-02 sample[5000] 138.0208
prophet 2023-03-03 sample[5000] 138.0733
prophet 2023-03-04 sample[5000] 137.9707
prophet 2023-03-05 sample[5000] 138.0072
prophet 2023-03-06 sample[5000] 137.9368
prophet 2023-03-07 sample[5000] 138.0626
prophet 2023-03-08 sample[5000] 138.1346
prophet 2023-03-09 sample[5000] 138.1167
prophet 2023-03-10 sample[5000] 138.2178
prophet 2023-03-11 sample[5000] 138.1231
prophet 2023-03-12 sample[5000] 138.1338
prophet 2023-03-13 sample[5000] 138.1401
prophet 2023-03-14 sample[5000] 138.1449
prophet 2023-03-15 sample[5000] 138.2468
prophet 2023-03-16 sample[5000] 138.1849
prophet 2023-03-17 sample[5000] 138.1236
prophet 2023-03-18 sample[5000] 138.1891
prophet 2023-03-19 sample[5000] 138.1259
prophet 2023-03-20 sample[5000] 138.0922
prophet 2023-03-21 sample[5000] 138.1250
prophet 2023-03-22 sample[5000] 138.2018
prophet 2023-03-23 sample[5000] 138.1806
prophet 2023-03-24 sample[5000] 138.1792
prophet 2023-03-25 sample[5000] 138.1559
prophet 2023-03-26 sample[5000] 138.2106
prophet 2023-03-27 sample[5000] 138.0901
prophet 2023-03-28 sample[5000] 138.1516
prophet 2023-03-29 sample[5000] 138.1638
prophet 2023-03-30 sample[5000] 138.1956
prophet 2023-03-31 sample[5000] 138.1473
prophet 2023-04-01 sample[5000] 138.1571
prophet 2023-04-02 sample[5000] 138.0659
prophet 2023-04-03 sample[5000] 138.0783
prophet 2023-04-04 sample[5000] 138.0904
prophet 2023-04-05 sample[5000] 138.1790
prophet 2023-04-06 sample[5000] 138.1879
prophet 2023-04-07 sample[5000] 138.2062
prophet 2023-04-08 sample[5000] 138.1395
prophet 2023-04-09 sample[5000] 138.0964
prophet 2023-04-10 sample[5000] 138.0746
prophet 2023-04-11 sample[5000] 138.1588
prophet 2023-04-12 sample[5000] 138.1802
prophet 2023-04-13 sample[5000] 138.2050
prophet 2023-04-14 sample[5000] 138.3087
prophet 2023-04-15 sample[5000] 138.2213
prophet 2023-04-16 sample[5000] 138.1794
prophet 2023-04-17 sample[5000] 138.1237
prophet 2023-04-18 sample[5000] 138.2305
prophet 2023-04-19 sample[5000] 138.3004
prophet 2023-04-20 sample[5000] 138.3880
prophet 2023-04-21 sample[5000] 138.3291
prophet 2023-04-22 sample[5000] 138.3721
prophet 2023-04-23 sample[5000] 138.3453
prophet 2023-04-24 sample[5000] 138.2939
prophet 2023-04-25 sample[5000] 138.3871
prophet 2023-04-26 sample[5000] 138.5332
prophet 2023-04-27 sample[5000] 138.4319
prophet 2023-04-28 sample[5000] 138.4739
prophet 2023-04-29 sample[5000] 138.4840
prophet 2023-04-30 sample[5000] 138.5733
prophet 2023-05-01 sample[5000] 138.5726
prophet 2023-05-02 sample[5000] 138.6939
prophet 2023-05-03 sample[5000] 138.7573
prophet 2023-05-04 sample[5000] 138.8042
prophet 2023-05-05 sample[5000] 138.8435
prophet 2023-05-06 sample[5000] 138.8745
prophet 2023-05-07 sample[5000] 138.9709
prophet 2023-05-08 sample[5000] 138.8403
prophet 2023-05-09 sample[5000] 139.0029
prophet 2023-05-10 sample[5000] 139.1460
prophet 2023-05-11 sample[5000] 139.2255
prophet 2023-05-12 sample[5000] 139.2807
prophet 2023-05-13 sample[5000] 139.2174
prophet 2023-05-14 sample[5000] 139.3625
prophet 2023-05-15 sample[5000] 139.4536
prophet 2023-05-16 sample[5000] 139.4833
prophet 2023-05-17 sample[5000] 139.6864
prophet 2023-05-18 sample[5000] 139.6638
prophet 2023-05-19 sample[5000] 139.7856
prophet 2023-05-20 sample[5000] 139.8428
prophet 2023-05-21 sample[5000] 139.9285
prophet 2023-05-22 sample[5000] 139.9184
prophet 2023-05-23 sample[5000] 140.0367
prophet 2023-05-24 sample[5000] 140.2234
prophet 2023-05-25 sample[5000] 140.2312
prophet 2023-05-26 sample[5000] 140.2916
prophet 2023-05-27 sample[5000] 140.4511
prophet 2023-05-28 sample[5000] 140.5121
prophet 2023-05-29 sample[5000] 140.5725
prophet 2023-05-30 sample[5000] 140.7126
prophet 2023-05-31 sample[5000] 140.7722
prophet 2023-06-01 sample[5000] 140.8845
prophet 2023-06-02 sample[5000] 140.9207
prophet 2023-06-03 sample[5000] 141.0138
prophet 2023-06-04 sample[5000] 141.1022
prophet 2023-06-05 sample[5000] 141.2293
prophet 2023-06-06 sample[5000] 141.2634
prophet 2023-06-07 sample[5000] 141.4601
prophet 2023-06-08 sample[5000] 141.6138
prophet 2023-06-09 sample[5000] 141.6482
prophet 2023-06-10 sample[5000] 141.6935
prophet 2023-06-11 sample[5000] 141.7786
prophet 2023-06-12 sample[5000] 141.8766
prophet 2023-06-13 sample[5000] 141.9879
prophet 2023-06-14 sample[5000] 142.1427
prophet 2023-06-15 sample[5000] 142.3614
prophet 2023-06-16 sample[5000] 142.4078
prophet 2023-06-17 sample[5000] 142.4645
combination 2023-01-01 115.6058 115.6058
combination 2023-01-02 115.6361 115.6361
combination 2023-01-03 115.6824 115.6824
combination 2023-01-04 115.7456 115.7456
combination 2023-01-05 115.7998 115.7998
combination 2023-01-06 115.828 115.8280
combination 2023-01-07 115.8165 115.8165
combination 2023-01-08 115.8277 115.8277
combination 2023-01-09 115.8408 115.8408
combination 2023-01-10 115.9349 115.9349
combination 2023-01-11 115.9938 115.9938
combination 2023-01-12 116.0391 116.0391
combination 2023-01-13 116.0361 116.0361
combination 2023-01-14 116.066 116.0660
combination 2023-01-15 116.0694 116.0694
combination 2023-01-16 116.0542 116.0542
combination 2023-01-17 116.119 116.1190
combination 2023-01-18 116.221 116.2210
combination 2023-01-19 116.2445 116.2445
combination 2023-01-20 116.2664 116.2664
combination 2023-01-21 116.2756 116.2756
combination 2023-01-22 116.2835 116.2835
combination 2023-01-23 116.2746 116.2746
combination 2023-01-24 116.3436 116.3436
combination 2023-01-25 116.4375 116.4375
combination 2023-01-26 116.4449 116.4449
combination 2023-01-27 116.4706 116.4706
combination 2023-01-28 116.4781 116.4781
combination 2023-01-29 116.4962 116.4962
combination 2023-01-30 116.4848 116.4848
combination 2023-01-31 116.5336 116.5336
combination 2023-02-01 116.6251 116.6251
combination 2023-02-02 116.6545 116.6545
combination 2023-02-03 116.669 116.6690
combination 2023-02-04 116.682 116.6820
combination 2023-02-05 116.6527 116.6527
combination 2023-02-06 116.6595 116.6595
combination 2023-02-07 116.7335 116.7335
combination 2023-02-08 116.8046 116.8046
combination 2023-02-09 116.8105 116.8105
combination 2023-02-10 116.8302 116.8302
combination 2023-02-11 116.8574 116.8574
combination 2023-02-12 116.8483 116.8483
combination 2023-02-13 116.8293 116.8293
combination 2023-02-14 116.8632 116.8632
combination 2023-02-15 116.971 116.9710
combination 2023-02-16 116.9705 116.9705
combination 2023-02-17 117.001 117.0010
combination 2023-02-18 116.9831 116.9831
combination 2023-02-19 116.9742 116.9742
combination 2023-02-20 116.9554 116.9554
combination 2023-02-21 117.0399 117.0399
combination 2023-02-22 117.0934 117.0934
combination 2023-02-23 117.0982 117.0982
combination 2023-02-24 117.1267 117.1267
combination 2023-02-25 117.1304 117.1304
combination 2023-02-26 117.102 117.1020
combination 2023-02-27 117.0847 117.0847
combination 2023-02-28 117.1374 117.1374
combination 2023-03-01 117.2205 117.2205
combination 2023-03-02 117.2069 117.2069
combination 2023-03-03 117.2197 117.2197
combination 2023-03-04 117.2211 117.2211
combination 2023-03-05 117.2271 117.2271
combination 2023-03-06 117.1971 117.1971
combination 2023-03-07 117.2254 117.2254
combination 2023-03-08 117.3026 117.3026
combination 2023-03-09 117.3154 117.3154
combination 2023-03-10 117.2884 117.2884
combination 2023-03-11 117.2864 117.2864
combination 2023-03-12 117.2875 117.2875
combination 2023-03-13 117.2748 117.2748
combination 2023-03-14 117.3195 117.3195
combination 2023-03-15 117.3804 117.3804
combination 2023-03-16 117.3903 117.3903
combination 2023-03-17 117.3818 117.3818
combination 2023-03-18 117.3544 117.3544
combination 2023-03-19 117.3554 117.3554
combination 2023-03-20 117.3408 117.3408
combination 2023-03-21 117.3709 117.3709
combination 2023-03-22 117.442 117.4420
combination 2023-03-23 117.4648 117.4648
combination 2023-03-24 117.4595 117.4595
combination 2023-03-25 117.4217 117.4217
combination 2023-03-26 117.4216 117.4216
combination 2023-03-27 117.3852 117.3852
combination 2023-03-28 117.4277 117.4277
combination 2023-03-29 117.5228 117.5228
combination 2023-03-30 117.4932 117.4932
combination 2023-03-31 117.5122 117.5122
combination 2023-04-01 117.5253 117.5253
combination 2023-04-02 117.4543 117.4543
combination 2023-04-03 117.4251 117.4251
combination 2023-04-04 117.5282 117.5282
combination 2023-04-05 117.5852 117.5852
combination 2023-04-06 117.563 117.5630
combination 2023-04-07 117.5727 117.5727
combination 2023-04-08 117.5669 117.5669
combination 2023-04-09 117.5417 117.5417
combination 2023-04-10 117.5202 117.5202
combination 2023-04-11 117.5724 117.5724
combination 2023-04-12 117.6386 117.6386
combination 2023-04-13 117.6406 117.6406
combination 2023-04-14 117.6518 117.6518
combination 2023-04-15 117.6267 117.6267
combination 2023-04-16 117.6264 117.6264
combination 2023-04-17 117.5985 117.5985
combination 2023-04-18 117.6553 117.6553
combination 2023-04-19 117.7156 117.7156
combination 2023-04-20 117.7156 117.7156
combination 2023-04-21 117.7302 117.7302
combination 2023-04-22 117.7438 117.7438
combination 2023-04-23 117.7154 117.7154
combination 2023-04-24 117.707 117.7070
combination 2023-04-25 117.7545 117.7545
combination 2023-04-26 117.834 117.8340
combination 2023-04-27 117.8217 117.8217
combination 2023-04-28 117.8428 117.8428
combination 2023-04-29 117.8398 117.8398
combination 2023-04-30 117.8585 117.8585
combination 2023-05-01 117.8367 117.8367
combination 2023-05-02 117.8945 117.8945
combination 2023-05-03 117.9876 117.9876
combination 2023-05-04 117.9536 117.9536
combination 2023-05-05 117.9813 117.9813
combination 2023-05-06 117.9815 117.9815
combination 2023-05-07 117.9804 117.9804
combination 2023-05-08 117.964 117.9640
combination 2023-05-09 118.024 118.0240
combination 2023-05-10 118.1299 118.1299
combination 2023-05-11 118.1393 118.1393
combination 2023-05-12 118.1516 118.1516
combination 2023-05-13 118.1431 118.1431
combination 2023-05-14 118.1671 118.1671
combination 2023-05-15 118.1607 118.1607
combination 2023-05-16 118.218 118.2180
combination 2023-05-17 118.3256 118.3256
combination 2023-05-18 118.3294 118.3294
combination 2023-05-19 118.3357 118.3357
combination 2023-05-20 118.3364 118.3364
combination 2023-05-21 118.3404 118.3404
combination 2023-05-22 118.3381 118.3381
combination 2023-05-23 118.4453 118.4453
combination 2023-05-24 118.5035 118.5035
combination 2023-05-25 118.5206 118.5206
combination 2023-05-26 118.5497 118.5497
combination 2023-05-27 118.5579 118.5579
combination 2023-05-28 118.5695 118.5695
combination 2023-05-29 118.5784 118.5784
combination 2023-05-30 118.6295 118.6295
combination 2023-05-31 118.7183 118.7183
combination 2023-06-01 118.7322 118.7322
combination 2023-06-02 118.7821 118.7821
combination 2023-06-03 118.7784 118.7784
combination 2023-06-04 118.7822 118.7822
combination 2023-06-05 118.8142 118.8142
combination 2023-06-06 118.8734 118.8734
combination 2023-06-07 118.9588 118.9588
combination 2023-06-08 118.9681 118.9681
combination 2023-06-09 119.0107 119.0107
combination 2023-06-10 119.0136 119.0136
combination 2023-06-11 119.0524 119.0524
combination 2023-06-12 119.0346 119.0346
combination 2023-06-13 119.1068 119.1068
combination 2023-06-14 119.1929 119.1929
combination 2023-06-15 119.2236 119.2236
combination 2023-06-16 119.2475 119.2475
combination 2023-06-17 119.2475 119.2475

Como podemos ver, as previsões ainda podem ser melhores, e podemos preocupar com os valores atípicos ao final da série.

4 Modelo com a série completa

Neste caso, supondo a série completa, estimaremos tudo junto (ETS, ARIMA, THETA, PROPHET, Combination) sem fazer o split de treino e teste.

fit.semsplit <- dados.full2 %>%
    model(arima = ARIMA(close, stepwise = FALSE, approximation = FALSE), ets = ETS(close),
        theta = THETA(close), prophet = prophet(close ~ growth("linear") + season(period = "day",
            order = 10) + season(period = "week", order = 5) + season(period = "year",
            order = 3))) %>%
    mutate(combination = (ets + arima + theta + prophet)/4)

Colocarei um forecast de 150 dias a frente (para melhorar a visualização gráfica).

fitsem_fc <- fit.semsplit %>%
    forecast(h = 150)
fitsem_fc %>%
    autoplot(dados.full2, level = c(95)) + labs(y = "valor da ação", title = "Forecast com ARIMA, ETS, THETA e FABLE.PROPHET, para o GOOG")

Deixo ao leitor para investigar a estabilidade do modelo e propriedades dos resíduos.

Referências

HYNDMAN, Rob J. (2018). fpp2: Data for “Forecasting: Principles and Practice” (2nd Edition). R package version 2.3. Disponível em: https://CRAN.R-project.org/package=fpp2. Accessed on 20 May 2021.

HYNDMAN, Rob J. (2019). fpp3: Data for “Forecasting: Principles and Practice” (3rd Edition). R package. Disponível em: https://github.com/robjhyndman/fpp3-package, https://OTexts.org/fpp3/. Accessed on 20 May 2021.

HYNDMAN, R.J.; ATHANASOPOULOS, G. (2020) Forecasting: principles and practice, 3rd edition, OTexts: Melbourne, Australia. Disponível em: https://otexts.com/fpp3/. Accessed on 20 May 2021.

O’HARA-WILD, Mitchell; HYNDMAN, Rob J.; WANG, Earo. (2021). feasts: Feature Extraction and Statistics for Time Series. R package version 0.2.1. Disponível em: https://CRAN.R-project.org/package=feasts. Accessed on 20 May 2021.

TAYLOR, S. J.; LETHAM, B. (2018). Forecasting at scale. The American Statistician, 72(1), 37–45.

LS0tDQp0aXRsZTogIlPDqXJpZXMgVGVtcG9yYWlzOiBFc3RpbWHDp8OjbyBkYSBzw6lyaWUgZGnDoXJpYSBkZSBhw6fDo28gR09PRyINCmF1dGhvcjogIkFkcmlhbm8gTWFyY29zIFJvZHJpZ3VlcyBGaWd1ZWlyZWRvLCAqZS1tYWlsOiBhZHJpYW5vLmZpZ3VlaXJlZG9AdWZtcy5icioiDQpsaW5rY29sb3I6IGJsdWUNCmFic3RyYWN0OiANCiAgVGhpcyBpcyBhbiB1bmRlcmdyYWQgc3R1ZGVudCBsZXZlbCBpbnN0cnVjdGlvbiBmb3IgY2xhc3MgdXNlLiBUaGUgcmVhZGVyIGlzIGVuY291cmFnZWQgdG8gZW5oYW5jZSB0aGUgbW9kZWwgY2hhbmdpbmcgdGhlIHRyYWluIGRhdGEuICANCmRhdGU6ICJgciBmb3JtYXQoU3lzLkRhdGUoKSwgJyVkICVCICVZJylgIg0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50Og0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICB0aGVtZTogZGVmYXVsdA0KICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZQ0KICAgIHRvYzogeWVzDQogICAgdG9jX2Zsb2F0OiBubw0KICAgIGRmX3ByaW50OiBwYWdlZA0KICAgIGZpZ19jYXB0aW9uOiB0cnVlDQogIHBkZl9kb2N1bWVudDoNCiAgICB0b2M6IHllcw0KLS0tDQoNCmBgYHtyIGtuaXRyX2luaXQsIGVjaG89RkFMU0UsIGNhY2hlPUZBTFNFfQ0KbGlicmFyeShrbml0cikNCmxpYnJhcnkocm1hcmtkb3duKQ0KbGlicmFyeShybWRmb3JtYXRzKQ0KDQojIyBHbG9iYWwgb3B0aW9ucw0Kb3B0aW9ucyhtYXgucHJpbnQ9IjEwMCIpDQpvcHRzX2NodW5rJHNldChlY2hvPVRSVUUsDQoJICAgICAgICAgICAgIGNhY2hlPVQsDQogICAgICAgICAgICAgICBwcm9tcHQ9RkFMU0UsDQogICAgICAgICAgICAgICB0aWR5PVRSVUUsDQogICAgICAgICAgICAgICBjb21tZW50PU5BLA0KICAgICAgICAgICAgICAgbWVzc2FnZT1GQUxTRSwNCiAgICAgICAgICAgICAgIHdhcm5pbmc9RkFMU0UpDQpvcHRzX2tuaXQkc2V0KHdpZHRoPTEwMCkNCmBgYA0KDQojIExpY2Vuw6dhIHsjTGljZW7Dp2EgLnVubnVtYmVyZWR9DQoNClRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQ3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbi1TaGFyZUFsaWtlIDQuMCBJbnRlcm5hdGlvbmFsIExpY2Vuc2UuIFRvIHZpZXcgYSBjb3B5IG9mIHRoaXMgbGljZW5zZSwgdmlzaXQgPGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LXNhLzQuMC8+IG9yIHNlbmQgYSBsZXR0ZXIgdG8gQ3JlYXRpdmUgQ29tbW9ucywgUE8gQm94IDE4NjYsIE1vdW50YWluIFZpZXcsIENBIDk0MDQyLCBVU0EuDQoNCiFbTGljZW5zZTogQ0MgQlktU0EgNC4wXShodHRwczovL21pcnJvcnMuY3JlYXRpdmVjb21tb25zLm9yZy9wcmVzc2tpdC9idXR0b25zLzg4eDMxL3BuZy9ieS1zYS5wbmcpe3dpZHRoPSIyNSUifQ0KDQojIENpdGHDp8OjbyB7I0NpdGHDp8OjbyAudW5udW1iZXJlZH0NCg0KU3VnZXN0w6NvIGRlIGNpdGHDp8OjbzogRklHVUVJUkVETywgQWRyaWFubyBNYXJjb3MgUm9kcmlndWVzLiBTw6lyaWVzIFRlbXBvcmFpczogRXN0aW1hw6fDo28gZGEgc8OpcmllIGRpw6FyaWEgZGUgYcOnw6NvIEdPT0cuIENhbXBvIEdyYW5kZS1NUyxCcmFzaWw6IFJTdHVkaW8vUnB1YnMsIDIwMjMuIERpc3BvbsOtdmVsIGVtIFtcPGh0dHA6Ly9ycHVicy5jb20vYW1yb2ZpL2ZhYmxlX0dPT0dfZGFpbHlcPl0oaHR0cDovL3JwdWJzLmNvbS9hbXJvZmkvZmFibGVfR09PR19kYWlseSl7LnVyaX0uDQoNCiMgRGFkb3MgcGFyYSBleGVtcGxvDQoNCk5lc3RlIGV4ZXJjw61jaW8sIHVzYXJlaSBhIHPDqXJpZSBkZSBwcmXDp29zIGRhIGHDp8OjbyBkYSBBbHBoYWJldCBJbmMuIChHT09HKS4NCg0KVm91IGNoYW1hciBvcyBkYWRvcyBwb3IgdW1hIGZ1bsOnw6NvIGRlcml2YWRhIGRvIHF1YW50bW9kIHF1ZSBlc3TDoSBubyB0aWR5cXVhbnQsIGB0cV9nZXRgLiBWZWphIHF1ZSBlbGUgdmVtIGVtIHRpYmJsZS4gRW50w6NvIGdlcmFtb3MgbyBgdHNpYmJsZWAuIERlcG9pcyBwcmVlbmNoZW1vcyBvcyBnYXBzIGltcGxpY2l0b3MgY29tIG8gZmlsbF9nYXBzLg0KDQpgYGB7ciBkYWRvc30NCmxpYnJhcnkodGlkeXF1YW50KQ0KeC50Ymw8LXRxX2dldCgiR09PRyIpDQoNCiNYVFMgUEFSQSBUU0lCQkxFDQpsaWJyYXJ5KHRzaWJibGUpDQpsaWJyYXJ5KHRzaWJibGVkYXRhKQ0KbGlicmFyeShtYWdyaXR0cikNCmxpYnJhcnkoZHBseXIpDQp4X3RibF90czwtYXNfdHNpYmJsZSh4LnRibCkNCmhlYWQoeF90YmxfdHMpDQpmYWJsZXRvb2xzOjphdXRvcGxvdCh4X3RibF90cywgY2xvc2UpDQoNCg0KIyBmaWxsIGdhcHMgY29tIHVsdGltbyB2YWxvciAtLS0tLS0tLS0tDQpsaWJyYXJ5KHRpZHlyKQ0KZGFkb3MuZnVsbDIgPC0geF90YmxfdHNbLTFdICU+JSANCiAgdHNpYmJsZTo6ZmlsbF9nYXBzKCkgJT4lIA0KICB0aWR5cjo6ZmlsbChjKG9wZW4saGlnaCxsb3csY2xvc2Usdm9sdW1lLGFkanVzdGVkKSwgLmRpcmVjdGlvbiA9ICJkb3duIikNCnByaW50KGRhZG9zLmZ1bGwyKQ0KDQpgYGANCg0KTyBncsOhZmljbyBwYXJhIG8gcHJlw6dvIGRlIGZlY2hhbWVudG8gKGNsb3NlKSBzZXLDoToNCg0KYGBge3J9DQpmYWJsZXRvb2xzOjphdXRvcGxvdChkYWRvcy5mdWxsMiwgY2xvc2UpDQpgYGANCg0KTyBsZWl0b3IgcG9kZSB0ZXN0YXIgYWdvcmEgYXMgZmVycmFtZW50YXMgZGUgZm9yZWNhc3QgZG8gZmFibGUgZSBmYWJsZXRvb2xzLg0KDQpgYGB7ciBmb3JlY2FzdF9hcmltYV9ldHNfdGhldGF9DQpsaWJyYXJ5KGZwcDMpDQpmaXQgPC0gZGFkb3MuZnVsbDIgJT4lIA0KICBtb2RlbCgNCiAgICBhcmltYSA9IEFSSU1BKGNsb3NlKSwgDQogICAgZXRzID0gRVRTKGNsb3NlKSwNCiAgICB0aGV0YSA9IFRIRVRBKGNsb3NlKSkNCmZpdF9mYyA8LSBmaXQgJT4lIGZvcmVjYXN0KGggPSAzNjUpDQpmaXRfZmMgJT4lIGF1dG9wbG90KGRhZG9zLmZ1bGwyLCBsZXZlbCA9IE5VTEwpICsgDQogIGxhYnMoeSA9ICJ2YWxvciBkZSBYIiwgdGl0bGUgPSAiRXhlbXBsbyBkZSBmb3JlY2FzdCBhcMOzcyBmaWxsX2dhcHMiKQ0KDQpgYGANCg0KIyBVc2FuZG8gbyBwYWNvdGUgYHByb3BoZXRgDQoNCkFnb3JhIGZhcmVpIHVtIGFqdXN0ZSBjb20gbyBGYWNlYm9vayBQcm9waGV0Og0KDQpgYGB7ciBwcm9waGV0fQ0KIyBQcm9waGV0IG1vZGVsIC0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBzZWd1aW5kbyBodHRwczovL3JwdWJzLmNvbS9hbXJvZmkvcHJvcGhldF9iaXRjb2luDQpsaWJyYXJ5KHByb3BoZXQpDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmRhZG9zLnBoPC1kYWRvcy5mdWxsMlssYygxLDUpXSAjIHBlZ3VlaSBhcGVuYXMgYSBkYXRlIGUgYSBjbG9zZQ0KY29sbmFtZXMoZGFkb3MucGgpPC1jKCJkcyIsInkiKSAgIyBvIHByb3BoZXQgcmVxdWVyIGVzc2VzIG5vbWVzIGRlIGNvbHVuYXMNCk1vZGVsMSA8LSBwcm9waGV0KGRhZG9zLnBoLGRhaWx5LnNlYXNvbmFsaXR5PVRSVUUpDQpjbGFzcyhNb2RlbDEpICAjIG9iamV0byBkbyBwcm9waGV0DQojIyBDcmlhciBkYXRhZnJhbWUgY29tIG1haXMgMzY1IG9icyBhIGZyZW50ZSAoZm9yYSBkYSBhbW9zdHJhKSAtLS0tLS0tLS0NCkZ1dHVyZTEgPC0gbWFrZV9mdXR1cmVfZGF0YWZyYW1lKE1vZGVsMSwgcGVyaW9kcyA9IDM2NSkNCnRhaWwoRnV0dXJlMSkNCiMjIFByZXZpc2FvIHBlbG8gTW9kZWwxIHBhcmEgYXMgZGF0YXMgZGUgRnV0dXJlMSAtLS0tLS0tLS0tLS0NCkZvcmVjYXN0MSA8LSBwcmVkaWN0KE1vZGVsMSwgRnV0dXJlMSkNCmNsYXNzKEZvcmVjYXN0MSkNCiMjIGdyw6FmaWNvcyBkbyBmb3JlY2FzdCAtLS0tLS0tLS0tLS0tDQpkeXBsb3QucHJvcGhldChNb2RlbDEsIEZvcmVjYXN0MSkNCmBgYA0KDQpGaWNhIGEgZGljYSBwYXJhIG8gbGVpdG9yIGF2YWxpYXIgYSBwcmVzZW7Dp2EgZGUgZWZlaXRvcyBBUkNILg0KDQojIFVzYW5kbyBvIHBhY290ZSBgZmFibGUucHJvcGhldGAgY29tIHNwbGl0DQoNCk5lc3RlIGNhc28sIGNvbmZvcm1lIEh5bmRtYW4gZSBBdGhhbmFzb3BvdWxvcyAoMjAyMCksIGNhcMOtdHVsbyAxMi4yLCBvIG1vZGVsbyBGYWNlYm9vayAoVEFZTE9SIGUgTEVUSEFNLCAyMDE4KSDDqSDDunRpbCBwYXJhIGVzdGltYXIgc8OpcmllcyBkacOhcmlhcywgZSBwcmluY2lwYWxtZW50ZSBhcXVlbGFzIGNvbSBzYXpvbmFsaWRhZGVzIHNlbWFuYWwgZSBhbnVhbCwgYWzDqW0gZGUgZWZlaXRvcyBkZSBmZXJpYWRvcy4gRWxlIHBvZGUgc2VyIGNvbnNpZGVyYWRvIHVtIG1vZGVsbyBkZSByZWdyZXNzw6NvIG7Do28gbGluZWFyIGRhIGZvcm1hOg0KDQokJA0KeV90ID0gZyh0KSArIHModCkgKyBoKHQpICsgXHZhcmVwc2lsb25fdCwNCiQkDQoNCmVtIHF1ZSAkZyh0KSQgZGVzY3JldmUgYSB0ZW5kw6puY2lhIGxpbmVhciAob3UgInRlcm1vIGRlIGNyZXNjaW1lbnRvIiksICRzKHQpJCBkZXNjcmV2ZSBvcyB2w6FyaW9zIHBhZHLDtWVzIHNhem9uYWlzLCAkaCh0KSQgY2FwdHVyYSBvcyBlZmVpdG9zIGRvIGZlcmlhZG8sIGUgJFx2YXJlcHNpbG9uX3QkIMOpIHVtIHRlcm1vIGRlIGVycm8gZGUgcnXDrWRvIGJyYW5jby4gQSB0ZW5kw6puY2lhIGxpbmVhciDDqSBzZWxlY2lvbmFkYSBhdXRvbWF0aWNhbWVudGUgc2UgbsOjbyBmb3IgZXNwZWNpZmljYWRhIGV4cGxpY2l0YW1lbnRlLiBPIGNvbXBvbmVudGUgc2F6b25hbCBjb25zaXN0ZSBlbSB0ZXJtb3MgZGUgRm91cmllciBkb3MgcGVyw61vZG9zIHJlbGV2YW50ZXMuIFBvciBwYWRyw6NvLCBhIG9yZGVtIDEwIMOpIHVzYWRhIHBhcmEgc2F6b25hbGlkYWRlIGFudWFsIGUgYSBvcmRlbSAzIMOpIHVzYWRhIHBhcmEgc2F6b25hbGlkYWRlIHNlbWFuYWwsIGNvbmZvcm1lIEh5bmRtYW4gZSBBdGhhbmFzb3BvdWxvcyAoMjAyMCwgdHJhZHXDp8OjbyBsaXZyZSkuIE9zIGVmZWl0b3MgZGUgZmVyaWFkbyBzw6NvIGFkaWNpb25hZG9zIGNvbW8gdmFyacOhdmVpcyDigIvigItkdW1taWVzIHNpbXBsZXMuIE8gbW9kZWxvIMOpIGVzdGltYWRvIHVzYW5kbyB1bWEgYWJvcmRhZ2VtIGJheWVzaWFuYSBwYXJhIHBlcm1pdGlyIGEgc2VsZcOnw6NvIGF1dG9tw6F0aWNhIGRvcyBwb250b3MgZGUgbXVkYW7Dp2EgZSBvdXRyYXMgY2FyYWN0ZXLDrXN0aWNhcyBkbyBtb2RlbG8uDQoNCkVzdGltYXJlbW9zIGp1bnRhbWVudGUgYW9zIG1vZGVsb3MgYEFSSU1BYCwgYEVUU2AsIGBUSEVUQWAgYW50ZXJpb3JtZW50ZSBlc3RpbWFkb3MsIGRlbnRybyBkbyBhbWJpZW50ZSBgZmFibGVgIGUgYGZhYmxlLnByb3BoZXRgLiBGYXJlaSBhIHJlZ3JhIDgwLTIwIHBhcmEgYW1vc3RyYXMgdHJlaW5vICgzODA2XCowLjgwID0gMzA0NCBkaWFzID0gIjIwMTktMDUtMDQiKSBlIHRlc3RlICgzODA2LTMwNDQgPSA3NjIgZGlhcyA9IGFww7NzICIyMDE5LTA1LTA1IiksIG9idGlkbyBhIHBhcnRpciBkbyBkYXRhc2V0IGNvbXBsZXRvIHBhcmEgb3MgZ2FwcyBpbXBsaWNpdG9zLg0KDQpgYGB7ciBzcGxpdHNhbXBsZX0NCmxpYnJhcnkoZmFibGUucHJvcGhldCk7bGlicmFyeShmYWJsZSkNCnRyYWluIDwtIGRhZG9zLmZ1bGwyICU+JSBmaWx0ZXJfaW5kZXgofiIyMDIxLTAzLTI2IikgICMgMjU5MSowLjgwID0gMjA3MyAyMDIxLTAzLTI2DQpoPWxlbmd0aChkYWRvcy5mdWxsMiRjbG9zZSktbGVuZ3RoKHRyYWluJGNsb3NlKQ0KaA0KYGBgDQoNCmBgYHtyIGZpdGFsbH0NCmZpdC5hbGwgPC0gdHJhaW4gJT4lDQogIG1vZGVsKA0KICAgIGFyaW1hID0gQVJJTUEoY2xvc2Usc3RlcHdpc2U9RkFMU0UsYXBwcm94aW1hdGlvbiA9IEZBTFNFKSwNCiAgICBldHMgPSBFVFMoY2xvc2UpLA0KICAgIHRoZXRhID0gVEhFVEEoY2xvc2UpLA0KICAgIHByb3BoZXQgPSBwcm9waGV0KGNsb3NlIH4gIA0KICAgICAgICAgICAgICAgICAgICAgICAgZ3Jvd3RoKCJsaW5lYXIiKSArIA0KICAgICAgICAgICAgc2Vhc29uKHBlcmlvZCA9ICJkYXkiLCBvcmRlciA9IDEwKSArDQogICAgICAgICAgICBzZWFzb24ocGVyaW9kID0gIndlZWsiLCBvcmRlciA9IDUpICsNCiAgICAgICAgICAgIHNlYXNvbihwZXJpb2QgPSAieWVhciIsIG9yZGVyID0gMykpDQogICklPiUNCiAgbXV0YXRlKGNvbWJpbmF0aW9uID0gKGV0cyArIGFyaW1hK3RoZXRhK3Byb3BoZXQpIC8gNCkNCmBgYA0KDQpgYGB7cn0NCmZpdGFsbF9mYyA8LSBmaXQuYWxsICU+JSBmb3JlY2FzdChoID0gaCkNCmZpdGFsbF9mYyAlPiUgYXV0b3Bsb3QoZGFkb3MuZnVsbDIsIGxldmVsID0gTlVMTCkgKyANCiAgbGFicyh5ID0gInZhbG9yIGRhIGHDp8OjbyIsIHRpdGxlID0gIkZvcmVjYXN0IGNvbSBBUklNQSwgRVRTLCBUSEVUQSBlIEZBQkxFLlBST1BIRVQsIHBhcmEgR09PRyIpDQpgYGANCg0KYGBge3J9DQpmY19hY2N1cmFjeSA8LWZpdGFsbF9mYyAlPiUgYWNjdXJhY3koZGFkb3MuZnVsbDIpDQojIGFjdXLDoWNpYSBvcmRlbmFkYSBwZWxvIFJNU0UNCmZjX2FjY3VyYWN5ICU+JSBncm91cF9ieSgubW9kZWwpICU+JSBzdW1tYXJpc2UoUk1TRSA9IG1lYW4oUk1TRSksIE1BRSA9IG1lYW4oTUFFKSwgDQogICAgTUFTRSA9IG1lYW4oTUFTRSkpICU+JSBhcnJhbmdlKFJNU0UpDQpgYGANCg0KRm9yZWNhc3RzOg0KDQpgYGB7cn0NCmxpYnJhcnkoZmFibGUpO2xpYnJhcnkoZmFibGUucHJvcGhldCkNCmZpdGFsbF9mYzIgPC0gZml0LmFsbCAlPiUgZm9yZWNhc3QoaCA9IGgrNjApDQpmaXRhbGxfZmMyICU+JSBhdXRvcGxvdChkYWRvcy5mdWxsMiwgbGV2ZWwgPSBjKDk1KSkgKyANCiAgbGFicyh5ID0gInZhbG9yIGRhIGHDp8OjbyIsIHRpdGxlID0gIkZvcmVjYXN0IGNvbSBBUklNQSwgRVRTLCBUSEVUQSBlIEZBQkxFLlBST1BIRVQsIHBhcmEgbyBHT09HIikNCmBgYA0KDQpSZXByZXNlbnRhcmVpIGFwZW5hcyBvcyBmb3JlY2FzdHMgZG8gcGVyw61vZG8gZGUgIjIwMjMtMDEtMDEiIGEgIjIwMjMtMDYtMTciIHBhcmEgbsOjbyBmaWNhciBtdWl0byBleHRlbnNvLg0KDQpgYGB7cn0NCmZpdGFsbF9mYzIgJT4lDQogIGZpbHRlcl9pbmRleCgiMjAyMy0wMS0wMSIgfiAiMjAyMy0wNi0xNyIpICU+JSANCiAga25pdHI6OmthYmxlKCkNCmBgYA0KDQpDb21vIHBvZGVtb3MgdmVyLCBhcyBwcmV2aXPDtWVzIGFpbmRhIHBvZGVtIHNlciBtZWxob3JlcywgZSBwb2RlbW9zIHByZW9jdXBhciBjb20gb3MgdmFsb3JlcyBhdMOtcGljb3MgYW8gZmluYWwgZGEgc8OpcmllLg0KDQojIE1vZGVsbyBjb20gYSBzw6lyaWUgY29tcGxldGENCg0KTmVzdGUgY2Fzbywgc3Vwb25kbyBhIHPDqXJpZSBjb21wbGV0YSwgZXN0aW1hcmVtb3MgdHVkbyBqdW50byAoRVRTLCBBUklNQSwgVEhFVEEsIFBST1BIRVQsIENvbWJpbmF0aW9uKSBzZW0gZmF6ZXIgbyBzcGxpdCBkZSB0cmVpbm8gZSB0ZXN0ZS4NCg0KYGBge3Igc2Vtc3BsaXR9DQpmaXQuc2Vtc3BsaXQgPC0gZGFkb3MuZnVsbDIgJT4lDQogIG1vZGVsKA0KICAgIGFyaW1hID0gQVJJTUEoY2xvc2Usc3RlcHdpc2U9RkFMU0UsYXBwcm94aW1hdGlvbiA9IEZBTFNFKSwNCiAgICBldHMgPSBFVFMoY2xvc2UpLA0KICAgIHRoZXRhID0gVEhFVEEoY2xvc2UpLA0KICAgIHByb3BoZXQgPSBwcm9waGV0KGNsb3NlIH4gIA0KICAgICAgICAgICAgICAgICAgICAgICAgZ3Jvd3RoKCJsaW5lYXIiKSArIA0KICAgICAgICAgICAgc2Vhc29uKHBlcmlvZCA9ICJkYXkiLCBvcmRlciA9IDEwKSArDQogICAgICAgICAgICBzZWFzb24ocGVyaW9kID0gIndlZWsiLCBvcmRlciA9IDUpICsNCiAgICAgICAgICAgIHNlYXNvbihwZXJpb2QgPSAieWVhciIsIG9yZGVyID0gMykpDQogICklPiUNCiAgbXV0YXRlKGNvbWJpbmF0aW9uID0gKGV0cyArIGFyaW1hK3RoZXRhK3Byb3BoZXQpIC8gNCkNCmBgYA0KDQpDb2xvY2FyZWkgdW0gZm9yZWNhc3QgZGUgMTUwIGRpYXMgYSBmcmVudGUgKHBhcmEgbWVsaG9yYXIgYSB2aXN1YWxpemHDp8OjbyBncsOhZmljYSkuDQoNCmBgYHtyIGZjc3RzZW19DQpmaXRzZW1fZmMgPC0gZml0LnNlbXNwbGl0ICU+JSBmb3JlY2FzdChoID0gMTUwKQ0KZml0c2VtX2ZjICU+JSBhdXRvcGxvdChkYWRvcy5mdWxsMiwgbGV2ZWwgPSBjKDk1KSkgKyANCiAgbGFicyh5ID0gInZhbG9yIGRhIGHDp8OjbyIsIHRpdGxlID0gIkZvcmVjYXN0IGNvbSBBUklNQSwgRVRTLCBUSEVUQSBlIEZBQkxFLlBST1BIRVQsIHBhcmEgbyBHT09HIikNCmBgYA0KDQogIA0KRGVpeG8gYW8gbGVpdG9yIHBhcmEgaW52ZXN0aWdhciBhIGVzdGFiaWxpZGFkZSBkbyBtb2RlbG8gZSBwcm9wcmllZGFkZXMgZG9zIHJlc8OtZHVvcy4NCg0KIyBSZWZlcsOqbmNpYXMgeyNSZWZlcsOqbmNpYXMgLnVubnVtYmVyZWR9DQoNCkhZTkRNQU4sIFJvYiBKLiAoMjAxOCkuIGZwcDI6IERhdGEgZm9yICJGb3JlY2FzdGluZzogUHJpbmNpcGxlcyBhbmQgUHJhY3RpY2UiICgybmQgRWRpdGlvbikuIFIgcGFja2FnZSB2ZXJzaW9uIDIuMy4gRGlzcG9uw612ZWwgZW06IDxodHRwczovL0NSQU4uUi1wcm9qZWN0Lm9yZy9wYWNrYWdlPWZwcDI+LiBBY2Nlc3NlZCBvbiAyMCBNYXkgMjAyMS4NCg0KSFlORE1BTiwgUm9iIEouICgyMDE5KS4gZnBwMzogRGF0YSBmb3IgIkZvcmVjYXN0aW5nOiBQcmluY2lwbGVzIGFuZCBQcmFjdGljZSIgKDNyZCBFZGl0aW9uKS4gUiBwYWNrYWdlLiBEaXNwb27DrXZlbCBlbTogPGh0dHBzOi8vZ2l0aHViLmNvbS9yb2JqaHluZG1hbi9mcHAzLXBhY2thZ2U+LCA8aHR0cHM6Ly9PVGV4dHMub3JnL2ZwcDMvPi4gQWNjZXNzZWQgb24gMjAgTWF5IDIwMjEuDQoNCkhZTkRNQU4sIFIuSi47IEFUSEFOQVNPUE9VTE9TLCBHLiAoMjAyMCkgRm9yZWNhc3Rpbmc6IHByaW5jaXBsZXMgYW5kIHByYWN0aWNlLCAzcmQgZWRpdGlvbiwgT1RleHRzOiBNZWxib3VybmUsIEF1c3RyYWxpYS4gRGlzcG9uw612ZWwgZW06IDxodHRwczovL290ZXh0cy5jb20vZnBwMy8+LiBBY2Nlc3NlZCBvbiAyMCBNYXkgMjAyMS4NCg0KTydIQVJBLVdJTEQsIE1pdGNoZWxsOyBIWU5ETUFOLCBSb2IgSi47IFdBTkcsIEVhcm8uICgyMDIxKS4gZmVhc3RzOiBGZWF0dXJlIEV4dHJhY3Rpb24gYW5kIFN0YXRpc3RpY3MgZm9yIFRpbWUgU2VyaWVzLiBSIHBhY2thZ2UgdmVyc2lvbiAwLjIuMS4gRGlzcG9uw612ZWwgZW06IDxodHRwczovL0NSQU4uUi1wcm9qZWN0Lm9yZy9wYWNrYWdlPWZlYXN0cz4uIEFjY2Vzc2VkIG9uIDIwIE1heSAyMDIxLg0KDQpUQVlMT1IsIFMuIEouOyBMRVRIQU0sIEIuICgyMDE4KS4gRm9yZWNhc3RpbmcgYXQgc2NhbGUuIFRoZSBBbWVyaWNhbiBTdGF0aXN0aWNpYW4sIDcyKDEpLCAzNy0tNDUuDQo=