PREPARANDO DATOS

Los datos se obtienen de KAGGLE, una fuente libre de datos historicos de lo que deseen.

Trabajaremos con las siguientes monedas

## # A tibble: 1 x 13
##   slug  symbol name  date       ranknow  open  high   low close volume market
##   <chr> <chr>  <chr> <date>       <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>  <dbl>
## 1 bitc… BTC    Bitc… 2013-04-28       1  135.  136.  132.  134.      0 1.49e9
## # … with 2 more variables: close_ratio <dbl>, spread <dbl>
##      slug symbol    name       date ranknow   open   high    low  close volume
## 1 bitcoin    BTC Bitcoin 2013-04-28       1 135.30 135.98 132.10 134.21      0
## 2 bitcoin    BTC Bitcoin 2013-04-29       1 134.44 147.49 134.00 144.54      0
## 3 bitcoin    BTC Bitcoin 2013-04-30       1 144.00 146.93 134.05 139.00      0
##       market close_ratio spread
## 1 1488566728      0.5438   3.88
## 2 1603768865      0.7813  13.49
## 3 1542813125      0.3843  12.88
##   symbol       date ranknow  close
## 1    BTC 2013-04-28       1 134.21
## 2    BTC 2013-04-29       1 144.54
## 3    BTC 2013-04-30       1 139.00
## 4    BTC 2013-05-01       1 116.99
## 5    BTC 2013-05-02       1 105.21
## 6    BTC 2013-05-03       1  97.75
##   symbol    n
## 1    BCH  495
## 2    BTC 2042
## 3    EOS  517
## 4    ETH 1211
## 5    XLM 1578
## 6    XRP 1944

BTC

Bitcoin es una criptomoneda inventada en 2008 por una persona desconocida o un grupo de personas que usa el nombre Satoshi Nakamoto y comenzó en 2009 cuando se lanzó su implementación como software de código abierto

##         date    BTC
## 1 2015-12-31 430.57
## 2 2016-01-01 434.33
## 3 2016-01-02 433.44

ETH

ETH es una criptomoneda. Es escaso el dinero digital que puede usar en Internet, similar a Bitcoin.

##         date      ETH
## 1 2015-12-31 0.933542
## 2 2016-01-01 0.948024
## 3 2016-01-02 0.937124

XLM

Es el símbolo ticker de Stellar Lumens, una criptomoneda popular. Stellar es una infraestructura de pagos distribuidos que es completamente de código abierto.

Es como otras monedas digitales en la forma en que usa la tecnología blockchain pero se ejecuta en una red especialmente creada

##         date      XLM
## 1 2015-12-31 0.001751
## 2 2016-01-01 0.001748
## 3 2016-01-02 0.001741

XRP

Ripple es un sistema de liquidación bruta en tiempo real, cambio de moneda y red de remesas creado por Ripple Labs Inc., una compañía de tecnología con sede en los Estados Unidos. Lanzado en 2012,

Ripple se basa en un protocolo de código abierto distribuido y admite tokens que representan moneda fiduciaria, criptomoneda, productos u otras unidades de valor, como millas de viajero frecuente o dispositivos móviles.

##         date      XRP
## 1 2015-12-31 0.006040
## 2 2016-01-01 0.005955
## 3 2016-01-02 0.006065

UNION DE TABLAS

##         date      XRP      XLM      ETH    BTC
## 1 2015-12-31 0.006040 0.001751 0.933542 430.57
## 2 2016-01-01 0.005955 0.001748 0.948024 434.33
## 3 2016-01-02 0.006065 0.001741 0.937124 433.44
## [1] "data.frame"

CRYPTO-FOLIO

symbols1 <- c("XRP", "XLM", "ETH","BTC")

crypto_returns_tq_builtin <- CRYPTO_FOLIO_df %>%
  gather(asset, CRYPTO_FOLIO_df, -date) %>%
  group_by(asset) %>%
  tq_transmute(mutate_fun = periodReturn,
               period = "monthly",
               type = "log") %>%
  spread(asset, monthly.returns) %>%
  select(date, symbols1) %>%
  slice(-1)
## Note: Using an external vector in selections is ambiguous.
## ℹ Use `all_of(symbols1)` instead of `symbols1` to silence this message.
## ℹ See <https://tidyselect.r-lib.org/reference/faq-external-vector.html>.
## This message is displayed once per session.
head(crypto_returns_tq_builtin,3)
## # A tibble: 3 x 5
##   date           XRP    XLM   ETH     BTC
##   <date>       <dbl>  <dbl> <dbl>   <dbl>
## 1 2016-01-31  0.0577 0.0142 0.906 -0.155 
## 2 2016-02-29  0.214  0.0930 1.01   0.171 
## 3 2016-03-31 -0.0695 0.0392 0.587 -0.0491
highchart(type = "stock") %>%
  hc_title(text = "Monthly Log Returns") %>%
  hc_add_series(crypto_returns_tq_builtin$XRP,
                name = symbols1[1]) %>%
  hc_add_series(crypto_returns_tq_builtin$XLM,
                name = symbols1[2]) %>%
  hc_add_series(crypto_returns_tq_builtin$ETH,
                name = symbols1[3]) %>%
  hc_add_series(crypto_returns_tq_builtin$BTC,
                name = symbols1[4]) %>%
  hc_add_theme(hc_theme_flat()) %>%
  hc_navigator(enabled = FALSE) %>%
  hc_scrollbar(enabled = FALSE) %>%
  hc_exporting(enabled = TRUE) %>%
  hc_legend(enabled = TRUE)
hc_hist_XRP <- hist(crypto_returns_tq_builtin$XRP,
               breaks = 50,
               plot = TRUE)

hc_hist_XLM <- hist(crypto_returns_tq_builtin$XLM,
                     breaks = 50,
                     plot = TRUE)

hchart(hc_hist_XRP, color = "cornflowerblue")
asset1 <-crypto_returns_tq_builtin[2]
asset2 <-crypto_returns_tq_builtin[3]
asset3 <-crypto_returns_tq_builtin[4]
asset4 <-crypto_returns_tq_builtin[5]
##         date     returns
## 1 2016-01-31  0.20574860
## 2 2016-02-29  0.37189320
## 3 2016-03-31  0.12684324
## 4 2016-04-30 -0.08913130
## 5 2016-05-31  0.06978795
## 6 2016-06-30  0.14928779
RETORNO DE PORTAFOLIO
RETORNO DEL PORTAFOLIO EN EL TIEMPO

Con este graico vemos el comportamiento del portafolio elegido en el tiempo

highchart(type = "stock") %>%
  hc_title(text = "Portfolio Monthly Returns") %>%
  hc_add_series(crypto_portfolio_returns_byhand$returns,
                name = "Rebalanced Monthly",
                color = "cornflowerblue") %>%
  hc_add_theme(hc_theme_flat()) %>%
  hc_navigator(enabled = FALSE) %>%
  hc_scrollbar(enabled = FALSE) %>%
  hc_legend(enabled = TRUE) %>%
  hc_exporting(enabled = TRUE)

DISTRIBUCION DE LOS RETORNOS

hc_portfolio <-
  hist(crypto_portfolio_returns_byhand$returns,
       breaks = 50,
       plot = FALSE)
hchart(hc_portfolio,
       color = "cornflowerblue",
       name = "Portfolio") %>%
  hc_title(text = "Portfolio Returns Distribution") %>%
  hc_add_theme(hc_theme_flat()) %>%
  hc_exporting(enabled = TRUE)

DISPERCION DE LOS RETORNOS

crypto_portfolio_returns_byhand %>%
ggplot(aes(x = date, y = returns)) +
geom_point(colour = "cornflowerblue")+
xlab("date") +
ylab("monthly return") +
theme_update(plot.title = element_text(hjust = 0.5)) +
ggtitle("Portfolio Returns Scatter") +
scale_x_date(breaks = pretty_breaks(n=6))

crypto_portfolio_returns_byhand %>%
ggplot(aes(x = returns)) +
geom_histogram(binwidth = .005,
fill = "cornflowerblue",
color = "cornflowerblue") +
ggtitle("Portfolio Returns Distribution") +
theme_update(plot.title = element_text(hjust = 0.5))

RIESGO

El riesgo financiero, hace referencia a la posibilidad de pérdida o incertidumbre que se tiene sobre el rendimiento de una inversión

El riesgo, se calcula con la desviación estándar,asimetría y curtosis de los rendimientos de la cartera. La desviación estándar funciona como la medida principal del riesgo de cartera. selección de cartera y diversificación eficiente de inversiones,

En resumen, la desviación estándar mide como los retornos de una cartera se dispersan alrededor de su media. Si vuelve están más dispersos, la cartera tiene una desviación estándar más alta y se ve como más riesgoso o más volátil.

También veremos la asimetría y la curtosis, dos indicadores de cómo un portafolio se distribuyen los retornos.

Ambos se suman a la historia del riesgo y nos hacen saber sobre la dispersión de nuestros retornos. Los flujos de código para asimetría y curtosis son similares que para la desviación estándar.

STANDAR DESVIATION

La desviación estándar es una medida estadística que mide cuánto se dispersan los valores en torno a su promedio.

En el contexto de la teoría de la cartera moderna, la desviación estándar se ha convertido en sinónimo de riesgo. Un activo cuya rentabilidad tiene una desviación estándar más alta es más volátil, y se considera más arriesgado que un activo con una volatilidad más baja.

Dado que el mercado generalmente ofrece una remuneración según el riesgo soportado, una mayor volatilidad se traduce en un mayor rendimiento esperado.

crypto_portfolio_sd_builtin_percent <-
crypto_portfolio_returns_byhand %>%
tq_performance(Ra = returns,
Rb = NULL,
performance_fun = table.Stats) %>%
select(Stdev) %>%
mutate(tq_sd = round(Stdev, 4) * 100)

head(crypto_portfolio_sd_builtin_percent,3)
## # A tibble: 1 x 2
##   Stdev tq_sd
##   <dbl> <dbl>
## 1 0.398  39.8
sd_roll_24 <-
rollify(sd, window = window)