Introducción: Asset Allocation y la Importancia de Incluir Criptomonedas en la Gestión de Riesgo de Cartera

El asset allocation es uno de los pilares fundamentales en la gestión de carteras, ya que consiste en distribuir los activos de inversión en diferentes clases para maximizar el retorno ajustado al riesgo, según los objetivos y el perfil de riesgo del inversor. Tradicionalmente, los portafolios han estado compuestos por acciones, bonos, efectivo y otros activos tangibles, pero en la última década, las criptomonedas han surgido como una nueva clase de activo que presenta tanto oportunidades como desafíos.

Incluir criptomonedas en la gestión de una cartera puede diversificar el riesgo, ya que su comportamiento no siempre sigue los patrones de los activos tradicionales, como las acciones o los bonos. Esta baja correlación histórica con los mercados financieros convencionales sugiere que las criptomonedas pueden actuar como una herramienta útil de diversificación, lo que potencialmente mejora el perfil de riesgo-retorno de la cartera.

No obstante, las criptomonedas también están sujetas a una mayor volatilidad, lo que hace necesario un enfoque estratégico en su asignación dentro de una cartera diversificada. La inclusión de activos como Bitcoin y Ethereum permite a los gestores de portafolio aprovechar las ganancias potenciales de este mercado emergente, pero al mismo tiempo exige una rigurosa gestión del riesgo para mitigar el impacto de sus fluctuaciones extremas.

1. Descarga de los datos

Para este ejemplo, puedes usar Yahoo Finance para descargar datos históricos de las Criptomonedas: Bitcoin (BTC-USD) y Ethereum (ETH-USD). Las acciones: Apple (AAPL), Microsoft (MSFT), Home Depot (HD), Visa (V), Tesla (TSLA), Nvidia (NVDA), NIO (NIO), y Dick’s Sporting Goods (DKS). y los Fondos: Vanguard FTSE Emerging Markets ETF (VWO), iShares 20+ Year Treasury Bond ETF (TLT), e iShares iBoxx $ Investment Grade Corporate Bond ETF (LQD).

Aquí se descargan los precios de cierre ajustados.

# Descargar los datos desde Yahoo Finance
symbols <- c("BTC-USD", "ETH-USD", "AAPL", "MSFT", "HD", "V", "TSLA", "V", "NVDA", "NIO", "DKS", 
             "VWO", "TLT", "LQD")
getSymbols(symbols, src = "yahoo", from = "2020-01-01",
           to = "2023-01-01")
##  [1] "BTC-USD" "ETH-USD" "AAPL"    "MSFT"    "HD"      "V"       "TSLA"   
##  [8] "NVDA"    "NIO"     "DKS"     "VWO"     "TLT"     "LQD"
# Obtener los retornos logarítmicos
retornos <- na.omit(cbind(
  dailyReturn(Cl(`BTC-USD`[1:756])),
  dailyReturn(Cl(`ETH-USD`[1:756])),
  dailyReturn(Cl(AAPL)),
  dailyReturn(Cl(MSFT)),
  dailyReturn(Cl(HD)),
  dailyReturn(Cl(TSLA)),
  dailyReturn(Cl(V)),
  dailyReturn(Cl(NVDA)),
  dailyReturn(Cl(NIO)),
  dailyReturn(Cl(DKS)),
  dailyReturn(Cl(VWO)),
  dailyReturn(Cl(TLT)),
  dailyReturn(Cl(LQD))
))

# Renombrar las columnas
colnames(retornos) <- c("Bitcoin", "Ethereum", "Apple", "Microsoft", "HD", "TSLA", "V", "NVDA", "NIO",
                        "DKS", "VWO", "TLT", "LQD")

2. Definición del portafolio

Define dos portafolios: uno que incluye las criptomonedas y otro que no.

# Portafolio con criptomonedas
portafolio_cripto <- portfolio.spec(assets = colnames(retornos))
portafolio_cripto <- add.constraint(portafolio_cripto, type = "weight_sum", min_sum = 1, max_sum = 1)
# Pesos entre 5% y 50%
portafolio_cripto <- add.constraint(portafolio_cripto, type = "box", min = 0.05, max = 0.5) 
portafolio_cripto <- add.objective(portafolio_cripto, type = "return", name = "mean")
portafolio_cripto <- add.objective(portafolio_cripto, type = "risk", name = "StdDev")

# Portafolio sin criptomonedas (solo acciones)
portafolio_sin_cripto <- portfolio.spec(assets = c("Apple", "Microsoft", "HD", 
                                                   "TSLA", "V", "NVDA", "NIO",
                                                   "DKS", "VWO", "TLT", "LQD"))
portafolio_sin_cripto <- add.constraint(portafolio_sin_cripto, type = "weight_sum", min_sum = 1, max_sum = 1)
# Pesos entre 5% y 50%
portafolio_sin_cripto <- add.constraint(portafolio_sin_cripto, type = "box", min = 0.05, max = 0.5) 
portafolio_sin_cripto <- add.objective(portafolio_sin_cripto, type = "return", name = "mean")
portafolio_sin_cripto <- add.objective(portafolio_sin_cripto, type = "risk", name = "StdDev")

3. Optimización del portafolio

Utilizamos un algoritmo de optimización para encontrar las asignaciones óptimas de activos en ambos portafolios:

# Optimización del portafolio con criptomonedas
opt_portafolio_cripto <- optimize.portfolio(retornos, portfolio = portafolio_cripto, 
                                            optimize_method = "ROI", trace = TRUE)

# Optimización del portafolio sin criptomonedas
opt_portafolio_sin_cripto <- optimize.portfolio(retornos, portfolio = portafolio_sin_cripto, 
                                                optimize_method = "ROI", trace = TRUE)

Resultados

Portafolio de Cripto

opt_portafolio_cripto
## ***********************************
## PortfolioAnalytics Optimization
## ***********************************
## 
## Call:
## optimize.portfolio(R = retornos, portfolio = portafolio_cripto, 
##     optimize_method = "ROI", trace = TRUE)
## 
## Optimal Weights:
##   Bitcoin  Ethereum     Apple Microsoft        HD      TSLA         V      NVDA 
##    0.0500    0.1116    0.0500    0.0500    0.0500    0.3373    0.0500    0.0500 
##       NIO       DKS       VWO       TLT       LQD 
##    0.0511    0.0500    0.0500    0.0500    0.0500 
## 
## Objective Measure:
##     mean 
## 0.003457 
## 
## 
##  StdDev 
## 0.02537

Portafolio sin Cripto

opt_portafolio_sin_cripto
## ***********************************
## PortfolioAnalytics Optimization
## ***********************************
## 
## Call:
## optimize.portfolio(R = retornos, portfolio = portafolio_sin_cripto, 
##     optimize_method = "ROI", trace = TRUE)
## 
## Optimal Weights:
##     Apple Microsoft        HD      TSLA         V      NVDA       NIO       DKS 
##    0.0500    0.0500    0.0500    0.4478    0.0500    0.0500    0.1022    0.0500 
##       VWO       TLT       LQD 
##    0.0500    0.0500    0.0500 
## 
## Objective Measure:
##     mean 
## 0.003563 
## 
## 
##  StdDev 
## 0.02826

5. Análisis adicional

Puedes calcular otras métricas de rendimiento como el retorno esperado, la volatilidad y el ratio de Sharpe para cada portafolio.

# Retorno esperado y riesgo del portafolio con criptomonedas
retorno_esperado_cripto <- sum(opt_portafolio_cripto$weights * colMeans(retornos))
riesgo_cripto <- sqrt(t(opt_portafolio_cripto$weights) %*% cov(retornos) %*% opt_portafolio_cripto$weights)

# Retorno esperado y riesgo del portafolio sin criptomonedas
retorno_esperado_sin_cripto <- sum(opt_portafolio_sin_cripto$weights * colMeans(retornos[
  , c("Apple", "Microsoft", 
      "HD", "TSLA", "V",
      "NVDA", "NIO",
      "DKS", "VWO", "TLT","LQD")]))
riesgo_sin_cripto <- sqrt(t(opt_portafolio_sin_cripto$weights) %*% cov(retornos[,c("Apple", "Microsoft", 
                                                                                             "HD", "TSLA", "V",
                                                                                             "NVDA", "NIO",
                                                                                             "DKS", "VWO", "TLT",
                                                                                             "LQD")])%*%opt_portafolio_sin_cripto$weights)

# Imprimir resultados
cat("Portafolio con criptomonedas: Retorno esperado:", retorno_esperado_cripto, "Riesgo:", riesgo_cripto, "\n")
## Portafolio con criptomonedas: Retorno esperado: 0.003457135 Riesgo: 0.02537066
cat("Portafolio sin criptomonedas: Retorno esperado:", retorno_esperado_sin_cripto, "Riesgo:", 
    riesgo_sin_cripto, "\n")
## Portafolio sin criptomonedas: Retorno esperado: 0.003563164 Riesgo: 0.02826468

Conclusión

Al comparar los dos portafolios, uno que incluye criptomonedas y otro que no, observamos diferencias significativas en sus características de rendimiento y riesgo.

Retorno Esperado:

  • Portafolio con Criptomonedas: 0.003457135
  • Portafolio sin Criptomonedas: 0.003563164
  • Aunque el portafolio sin criptomonedas presenta un retorno esperado ligeramente superior (0.003563164 frente a 0.003457135), la diferencia es mínima y podría no justificar el aumento de riesgo asociado con la inclusión de activos más volátiles como las criptomonedas.

Riesgo:

  • Portafolio con Criptomonedas: 0.02537066
  • Portafolio sin Criptomonedas: 0.02826468
  • El portafolio que incluye criptomonedas presenta un riesgo menor (0.02537066) en comparación con el portafolio sin criptomonedas (0.02826468). Esto es significativo, ya que sugiere que la inclusión de criptomonedas, a pesar de su naturaleza volátil, ha logrado mejorar el perfil de riesgo del portafolio general. Esto puede atribuirse a la diversificación que ofrecen las criptomonedas en relación con los activos tradicionales.

Implicaciones

La inclusión de criptomonedas en un portafolio puede ser beneficiosa desde el punto de vista de la diversificación, ya que contribuye a reducir el riesgo total sin sacrificar el rendimiento esperado de manera notable. Esto sugiere que, para los inversores dispuestos a aceptar un cierto nivel de volatilidad, las criptomonedas pueden ser un complemento valioso que no solo diversifica, sino que también puede contribuir a un rendimiento general más equilibrado.

Sin embargo, es fundamental considerar la tolerancia al riesgo y los objetivos de inversión individuales, dado que la naturaleza volátil de las criptomonedas puede no ser adecuada para todos los inversores. La decisión de incluir criptomonedas en un portafolio debe ser cuidadosamente evaluada dentro del contexto de la estrategia de inversión global.