Extract data from Crypto Compare using API
CRV <- jsonlite::fromJSON(“https://min-api.cryptocompare.com/data/v2/histoday?fsym=CRV&tsym=USD&limit=740 {YOUR API KEY}”)
Then,
save as a data frame, log10 transform the price data, and prep for Prophet
CRV1 <- as.data.frame(CRV$Data)
Curve <- CRV1 %>% select(Data.time,Data.low) %>% filter(Data.low>0)
Curve$Data.time <- as.Date(as.POSIXct(Curve$Data.time, origin="1970-01-01"))
#Create Log of Price
Curve$LogPrice <- log10(Curve$Data.low)
#Prep for Prophet
crv.forecast <- as.data.frame(Curve) %>% select(Data.time,LogPrice) %>% filter(Data.time>="2021-01-01")
colnames(crv.forecast)<-c("ds","y")
Next I run the data through Prophet
m_crv <- prophet(crv.forecast)
future_crv <- make_future_dataframe(m_crv, periods = 90)
forecast_crv <- predict(m_crv, future_crv)
Then create a new forecast data set with data transformed back from log10 (using 10^x)
forecast_crv2 <- forecast_crv %>%
select(ds,yhat_lower,yhat_upper,yhat) %>%
mutate(lower=10^yhat_lower,
upper=10^yhat_upper,
predicted=10^yhat)
forecast_crv2 <- left_join(forecast_crv2,Curve, by=c("ds"="Data.time"))
And here’s the forecast!:
And now to evaluate the model:
crv.cv <- cross_validation(m_crv,initial=245,period=30,horizon=60,units='days')
crv.p <- performance_metrics(crv.cv)
print(crv.p)
## horizon mse rmse mae mape mdape smape
## 1 6 days 0.01469176 0.1212096 0.1129751 0.2455314 0.2341723 0.2754206
## 2 7 days 0.01536328 0.1239487 0.1167667 0.2521185 0.2401079 0.2814825
## 3 8 days 0.01439033 0.1199597 0.1130616 0.2444656 0.2401079 0.2728623
## 4 9 days 0.01413642 0.1188967 0.1119486 0.2432621 0.2557037 0.2691497
## 5 10 days 0.01450946 0.1204552 0.1157844 0.2551859 0.2557037 0.2848454
## 6 11 days 0.01621749 0.1273479 0.1232481 0.2721054 0.3094236 0.3049506
## 7 12 days 0.01861555 0.1364388 0.1319244 0.2907362 0.3149169 0.3283678
## 8 13 days 0.02112583 0.1453473 0.1387971 0.3028702 0.3189708 0.3447159
## 9 14 days 0.02265363 0.1505112 0.1410687 0.3050485 0.3261992 0.3527463
## 10 15 days 0.02348529 0.1532491 0.1423636 0.3052082 0.3358770 0.3577375
## 11 16 days 0.02467771 0.1570914 0.1440959 0.3068483 0.3393718 0.3645082
## 12 17 days 0.02392971 0.1546923 0.1406124 0.2999221 0.3393718 0.3596002
## 13 18 days 0.02171088 0.1473461 0.1327871 0.2865813 0.3393718 0.3433544
## 14 19 days 0.01892335 0.1375622 0.1233448 0.2713938 0.2809763 0.3258130
## 15 20 days 0.01813667 0.1346725 0.1209024 0.2667391 0.2882235 0.3208369
## 16 21 days 0.01849654 0.1360020 0.1197977 0.2633213 0.2833730 0.3193833
## 17 22 days 0.01968576 0.1403059 0.1221658 0.2648338 0.2844657 0.3226143
## 18 23 days 0.02517073 0.1586529 0.1314318 0.2710325 0.3155957 0.3346512
## 19 24 days 0.02946612 0.1716570 0.1406017 0.2807373 0.3155957 0.3536424
## 20 25 days 0.03402332 0.1844541 0.1486189 0.2880753 0.3155957 0.3685019
## 21 26 days 0.03835865 0.1958536 0.1570961 0.2972127 0.3155957 0.3829891
## 22 27 days 0.04172952 0.2042780 0.1644667 0.3042358 0.3155957 0.3931103
## 23 28 days 0.04420624 0.2102528 0.1707021 0.3119060 0.3155957 0.4039384
## 24 29 days 0.04323070 0.2079199 0.1705213 0.3141775 0.3160543 0.4074072
## 25 30 days 0.04369086 0.2090236 0.1707067 0.3141350 0.3146603 0.4084054
## 26 31 days 0.04382723 0.2093495 0.1712665 0.3161759 0.3146603 0.4134873
## 27 32 days 0.04313463 0.2076888 0.1709573 0.3192496 0.3146603 0.4181546
## 28 33 days 0.04269387 0.2066249 0.1686637 0.3181165 0.3328591 0.4197223
## 29 34 days 0.04187443 0.2046324 0.1659588 0.3154322 0.3401979 0.4172685
## 30 35 days 0.04194791 0.2048119 0.1634646 0.3120167 0.3428259 0.4156611
## 31 36 days 0.04349028 0.2085432 0.1653883 0.3132922 0.3444234 0.4189032
## 32 37 days 0.04568512 0.2137408 0.1708792 0.3204589 0.3640615 0.4267151
## 33 38 days 0.04585616 0.2141405 0.1732330 0.3242563 0.3640615 0.4307199
## 34 39 days 0.04679875 0.2163302 0.1792288 0.3358781 0.3934289 0.4406428
## 35 40 days 0.04807125 0.2192516 0.1830158 0.3422182 0.3989696 0.4485046
## 36 41 days 0.04865177 0.2205715 0.1879441 0.3507164 0.3989696 0.4562283
## 37 42 days 0.04816388 0.2194627 0.1900354 0.3566696 0.3989696 0.4616627
## 38 43 days 0.04713970 0.2171168 0.1903227 0.3589816 0.3989696 0.4633941
## 39 44 days 0.04598843 0.2144491 0.1863872 0.3529800 0.3830257 0.4571961
## 40 45 days 0.04512022 0.2124152 0.1817171 0.3443998 0.3576537 0.4517764
## 41 46 days 0.04426317 0.2103881 0.1793475 0.3412190 0.3428013 0.4487763
## 42 47 days 0.04454617 0.2110596 0.1789187 0.3410210 0.3624461 0.4499208
## 43 48 days 0.04453642 0.2110365 0.1784808 0.3405032 0.3904870 0.4478379
## 44 49 days 0.04537367 0.2130110 0.1796156 0.3435794 0.4285422 0.4502030
## 45 50 days 0.05187740 0.2277661 0.1955398 0.3703370 0.5095552 0.4756050
## 46 51 days 0.06317228 0.2513410 0.2182416 0.4156979 0.5209560 0.5128558
## 47 52 days 0.07495526 0.2737796 0.2417814 0.4549148 0.5430999 0.5519191
## 48 53 days 0.09420188 0.3069232 0.2721361 0.5079236 0.5865517 0.5991539
## 49 54 days 0.10790650 0.3284912 0.2971443 0.5482854 0.6018534 0.6401757
## 50 55 days 0.12086676 0.3476590 0.3195017 0.5805397 0.6173002 0.6730647
## 51 56 days 0.13128974 0.3623393 0.3327419 0.6011940 0.6570327 0.6935175
## 52 57 days 0.13650745 0.3694691 0.3382211 0.6003097 0.6674088 0.6987416
## 53 58 days 0.14016215 0.3743824 0.3406868 0.6000599 0.6797019 0.7006329
## 54 59 days 0.13511250 0.3675765 0.3344706 0.5832364 0.6718954 0.6916518
## 55 60 days 0.13448020 0.3667154 0.3320967 0.5768285 0.6751433 0.6877130
## coverage
## 1 0.9166667
## 2 0.8750000
## 3 0.8750000
## 4 0.8333333
## 5 0.8750000
## 6 0.8333333
## 7 0.7500000
## 8 0.7083333
## 9 0.7083333
## 10 0.6666667
## 11 0.6250000
## 12 0.6250000
## 13 0.7083333
## 14 0.7500000
## 15 0.7500000
## 16 0.7916667
## 17 0.7916667
## 18 0.7500000
## 19 0.6666667
## 20 0.6666667
## 21 0.6666667
## 22 0.6666667
## 23 0.6666667
## 24 0.6666667
## 25 0.6666667
## 26 0.6250000
## 27 0.5833333
## 28 0.5416667
## 29 0.5000000
## 30 0.5000000
## 31 0.5000000
## 32 0.4583333
## 33 0.4583333
## 34 0.4166667
## 35 0.4166667
## 36 0.4166667
## 37 0.4166667
## 38 0.4583333
## 39 0.4583333
## 40 0.5000000
## 41 0.5000000
## 42 0.4583333
## 43 0.4166667
## 44 0.3750000
## 45 0.3333333
## 46 0.2916667
## 47 0.2500000
## 48 0.2500000
## 49 0.2500000
## 50 0.2500000
## 51 0.2500000
## 52 0.2500000
## 53 0.2500000
## 54 0.2500000
## 55 0.2500000
Mean Absolute Percent Error chart: