##         date Compra Venta Precio_Medio  Retorno_Log
## 1 2023-09-21   7.40  7.55        7.475           NA
## 2 2023-09-22   7.40  7.55        7.475 0.0000000000
## 3 2023-11-18   7.41  7.56        7.485 0.0013368986
## 4 2023-12-12   7.55  7.65        7.600 0.0152472294
## 5 2024-02-22   8.12  8.40        8.260 0.0832763402
## 6 2024-02-26   8.12  8.41        8.265 0.0006051437

1 Analisis evolucion de la serie USDT-BOB

##   Precio_Medio     Retorno_Log       
##  Min.   : 7.475   Min.   :-0.139355  
##  1st Qu.:10.537   1st Qu.: 0.000000  
##  Median :10.822   Median : 0.000000  
##  Mean   :10.684   Mean   : 0.001736  
##  3rd Qu.:11.150   3rd Qu.: 0.004484  
##  Max.   :13.450   Max.   : 0.143412  
##                   NA's   :1

2 Modelo de Volatilidad de los retornos GARCH

# Instalar y cargar librerías necesarias
# install.packages(c("ggplot2", "dplyr", "plotly", "TTR", "zoo"))
library(ggplot2)
library(dplyr)
library(plotly)
library(TTR)  # Para Bandas de Bollinger y EMAs
library(zoo)

# Cargar datos desde el archivo CSV
df <- read.csv("cotiza_modified.csv", stringsAsFactors = FALSE)

# Convertir la columna de fecha a formato Date y ordenar
df$date <- as.Date(df$date, format="%m/%d/%Y")
df <- df %>% arrange(date)

# Calcular Bandas de Bollinger y EMAs para **Compra**
bbands_compra <- BBands(df$Compra, n = 10, sd = 2)
df$BB_Upper_Compra  <- bbands_compra[, "up"]
df$BB_Lower_Compra  <- bbands_compra[, "dn"]
df$BB_Middle_Compra <- bbands_compra[, "mavg"]
df$EMA_20_Compra <- EMA(df$Compra, n = 20)
df$EMA_10_Compra <- EMA(df$Compra, n = 10)

# Calcular Bandas de Bollinger y EMAs para **Venta**
bbands_venta <- BBands(df$Venta, n = 10, sd = 2)
df$BB_Upper_Venta  <- bbands_venta[, "up"]
df$BB_Lower_Venta  <- bbands_venta[, "dn"]
df$BB_Middle_Venta <- bbands_venta[, "mavg"]
df$EMA_20_Venta <- EMA(df$Venta, n = 20)
df$EMA_10_Venta <- EMA(df$Venta, n = 10)

# Filtrar datos desde una fecha específica para mejorar visualización
df_plot <- df %>% filter(date >= as.Date("2024-03-01"))

# 📈 **Gráfico de Compra (Objeto Separado)**
p_compra <- plot_ly(df_plot, x = ~date) %>%
  add_ribbons(ymin = ~BB_Lower_Compra, ymax = ~BB_Upper_Compra, 
              fillcolor = 'rgba(255, 0, 0, 0.2)', name = "Bollinger Bandas") %>%
  add_lines(y = ~Compra, name = "Precio Compra", line = list(color = "black")) %>%
  add_lines(y = ~BB_Middle_Compra, name = "Bollinger Media", line = list(color = "blue")) %>%
  add_lines(y = ~EMA_20_Compra, name = "EMA 20", line = list(color = "green")) %>%
  add_lines(y = ~EMA_10_Compra, name = "EMA 10", line = list(color = "orange", dash = "dot")) %>%
  layout(title = "Cotización USDT-BOB (Compra) con Bollinger Bands y EMAs",
         xaxis = list(title = "Fecha"), 
         yaxis = list(title = "Precio Compra (BOB)"))

# 📉 **Gráfico de Venta (Objeto Separado)**
p_venta <- plot_ly(df_plot, x = ~date) %>%
  add_ribbons(ymin = ~BB_Lower_Venta, ymax = ~BB_Upper_Venta, 
              fillcolor = 'rgba(255, 0, 0, 0.2)', name = "Bollinger Bandas") %>%
  add_lines(y = ~Venta, name = "Precio Venta", line = list(color = "black")) %>%
  add_lines(y = ~BB_Middle_Venta, name = "Bollinger Media", line = list(color = "blue")) %>%
  add_lines(y = ~EMA_20_Venta, name = "EMA 20", line = list(color = "green")) %>%
  add_lines(y = ~EMA_10_Venta, name = "EMA 10", line = list(color = "orange", dash = "dot")) %>%
  layout(title = "Cotización USDT-BOB (Venta) con Bollinger Bands y EMAs",
         xaxis = list(title = "Fecha"), 
         yaxis = list(title = "Precio Venta (BOB)"))

# **Mostrar gráficos separados**
p_compra  # Ejecuta para visualizar el gráfico de COMPRA
p_venta   # Ejecuta para visualizar el gráfico de VENTA
# Instalar y cargar librerías necesarias
# install.packages("quantmod")
library(quantmod)

# Cargar datos desde el archivo CSV
df <- read.csv("cotiza_modified.csv", stringsAsFactors = FALSE)

# Convertir la columna de fecha a formato Date y ordenar
df$date <- as.Date(df$date, format="%m/%d/%Y")
df <- df[order(df$date), ]

# **Calcular el Spread (Venta - Compra)**
df$Spread <- df$Venta - df$Compra

# **Crear objeto xts con Compra, Venta y Spread**
data_xts <- xts(df[, c("Compra", "Venta", "Spread")], order.by = df$date)

# 📈 **Gráfico de COMPRA con Bollinger y EMAs**
chartSeries(data_xts$Compra, 
            theme = chartTheme("white"),
            name = "Cotización USDT-BOB (Compra)",  
            TA = list("addBBands(n = 10)",   # Bandas de Bollinger (10 días)
                      "addVo()",            # Volumen (si se tiene)
                      "addEMA(20)",         # Media Móvil Exponencial de 20 días
                      "addEMA(10, col = 2)"))  # Media Móvil Exponencial de 10 días en rojo

# 📉 **Gráfico de VENTA con Bollinger y EMAs**
chartSeries(data_xts$Venta, 
            theme = chartTheme("white"),
            name = "Cotización USDT-BOB (Venta)",  
            TA = list("addBBands(n = 10)",   # Bandas de Bollinger (10 días)
                      "addVo()",            # Volumen (si se tiene)
                      "addEMA(20)",         # Media Móvil Exponencial de 20 días
                      "addEMA(10, col = 2)"))  # Media Móvil Exponencial de 10 días en rojo

# 📊 **Gráfico del SPREAD con Bollinger y EMAs**
chartSeries(data_xts$Spread, 
            theme = chartTheme("white"),
            name = "Evolución del Spread (Venta - Compra)",  
            TA = list("addBBands(n = 10)",   # Bandas de Bollinger (10 días)
                      "addVo()",            # Volumen (si se tiene)
                      "addEMA(20)",         # Media Móvil Exponencial de 20 días
                      "addEMA(10, col = 2)"))  # Media Móvil Exponencial de 10 días en rojo