Solana

Solana es un proyecto de código abierto altamente funcional que se basa en la naturaleza sin permiso de la tecnología blockchain para proporcionar soluciones financieras descentralizadas (DeFi). Si bien la idea y el trabajo inicial en el proyecto comenzaron en 2017, Solana fue lanzada oficialmente en marzo de 2020 por la Fundación Solana con sede en Ginebra, Suiza. El protocolo Solana está diseñado para facilitar la creación de aplicaciones descentralizadas (DApp). Su objetivo es mejorar la escalabilidad introduciendo un consenso de prueba de historia (PoH) combinado con el consenso de prueba de participación (PoS) subyacente de la cadena de bloques.

Etapas

  1. Identificación del Modelo.
  2. Estacionariedad
  3. Ajustar el modelo.
  4. Diagnostico del modelo.
  5. Pronósticos.

Cargar los datos

datos <- read.csv("NOV_ABRIL.csv", header = TRUE)

Convertir los datos a una serie de tiempo

serie_tiempo <- ts(datos$Close, start = c(2022, 11), end = c(2023, 4), frequency = 365)

Paso 1: Identificación del Modelo

Realizar un gráfico de la serie de tiempo

plot(serie_tiempo, main = "Serie de Tiempo NOV-ABRIL")

Calcular la autocorrelación y la autocorrelación parcial

acf(serie_tiempo)

Paso 2: Estacionariedad

Realizar una prueba de Dickey-Fuller aumentada para verificar la estacionariedad

adf.test(serie_tiempo)
## Augmented Dickey-Fuller Test 
## alternative: stationary 
##  
## Type 1: no drift no trend 
##      lag    ADF p.value
## [1,]   0 -0.185   0.591
## [2,]   1 -0.175   0.593
## [3,]   2 -0.130   0.607
## [4,]   3 -0.168   0.595
## [5,]   4 -0.148   0.601
## [6,]   5 -0.216   0.582
## Type 2: with drift no trend 
##      lag   ADF p.value
## [1,]   0 -2.27  0.2207
## [2,]   1 -2.23  0.2358
## [3,]   2 -2.20  0.2487
## [4,]   3 -2.32  0.2031
## [5,]   4 -2.27  0.2213
## [6,]   5 -2.65  0.0882
## Type 3: with drift and trend 
##      lag   ADF p.value
## [1,]   0 -2.27   0.464
## [2,]   1 -2.23   0.480
## [3,]   2 -2.20   0.494
## [4,]   3 -2.31   0.445
## [5,]   4 -2.26   0.464
## [6,]   5 -2.64   0.306
## ---- 
## Note: in fact, p.value = 0.01 means p.value <= 0.01

p value : 0.1, es decir que hay estacionaridad

Paso 3: Ajustar el modelo

Ajustar un modelo ARIMA con los parámetros seleccionados por la función auto.arima()

nov_abril_arima <- auto.arima(serie_tiempo)
summary(nov_abril_arima)
## Series: serie_tiempo 
## ARIMA(2,0,1) with non-zero mean 
## 
## Coefficients:
##          ar1     ar2     ma1     mean
##       0.0609  0.8791  0.9859  18.4288
## s.e.  0.0302  0.0301  0.0108   1.8781
## 
## sigma^2 = 1.368:  log likelihood = -565.5
## AIC=1141   AICc=1141.17   BIC=1160.42
## 
## Training set error measures:
##                      ME     RMSE       MAE        MPE     MAPE MASE        ACF1
## Training set 0.01913789 1.163185 0.7608277 -0.3383808 4.151026  NaN -0.04445972

Paso 4: Diagnóstico del modelo

Realizar un gráfico de los residuos

checkresiduals(nov_abril_arima)

## 
##  Ljung-Box test
## 
## data:  Residuals from ARIMA(2,0,1) with non-zero mean
## Q* = 127.08, df = 69, p-value = 2.605e-05
## 
## Model df: 3.   Total lags used: 72

Paso 5: Pronósticos

Realizar pronósticos utilizando el modelo ajustado

# Realizar pronóstico para los precios de mayo de 2023
#forecast(nov_abril_arima, n.ahead = 31)

# Mostrar el pronóstico
#plot(forecast, main="Pronóstico de precios de SOL para mayo de 2023")