Note that the echo = FALSE parameter was added to the
code chunk to prevent printing of the R code that generated the
plot.
library(quantmod) library(PerformanceAnalytics) library(PortfolioAnalytics) library(tidyverse)
tickers <- c("TSLA", "CSCO", "SBUX", "^NDX")
getSymbols(tickers, from = "2016-03-30", to = "2026-03-30", periodicity = "daily")
## [1] "TSLA" "CSCO" "SBUX" "NDX"
precios <- merge(Ad(TSLA), Ad(CSCO), Ad(SBUX), Ad(NDX))
colnames(precios) <- c("Tesla", "Cisco", "Starbucks", "Nasdaq100")
precios <- na.omit(precios)
head(precios)
## Tesla Cisco Starbucks Nasdaq100
## 2016-03-30 15.12600 20.84566 48.59707 4490.88
## 2016-03-31 15.31800 20.85299 48.34604 4483.66
## 2016-04-01 15.83933 21.01413 49.41499 4532.08
## 2016-04-04 16.46600 20.79978 48.79142 4511.70
## 2016-04-05 17.03133 20.38584 48.62137 4470.75
## 2016-04-06 17.69467 20.69629 49.26112 4543.78
La tesis de inversión de este portafolio de $20,000,000 USD se sitúa en un horizonte de tiempo que proyecta el cierre del primer trimestre de 2026. Tras un periodo de volatilidad marcado por el ajuste de las tasas de interés de la Reserva Federal, se asume un escenario de “soft landing” o aterrizaje suave, donde la inflación se ha estabilizado cerca del objetivo del 2%.
Este entorno favorece la selección de activos en el Nasdaq 100, ya que una política monetaria menos restrictiva reduce el costo de capital para empresas de alto crecimiento (Growth) y mejora el flujo de caja operativo para empresas de infraestructura tecnológica y consumo masivo. ## 1.2 Análisis de Acciones * Tesla Inc. (TSLA): Tesla ha dejado de ser evaluada bajo métricas puramente automotrices para ser analizada como una compañía de robótica e Inteligencia Artificial. Nuestra confianza en TSLA para marzo de 2026 se basa en la maduración de su sistema Full Self-Driving (FSD) y el despliegue de su unidad de negocio de almacenamiento de energía (Tesla Energy). Se proyecta una recuperación de márgenes operativos gracias a la optimización de las Gigafactories en Austin y Berlín, superando la presión de la competencia china y consolidándose como el activo de mayor Beta en nuestro portafolio. * Cisco (CSCO): Cisco actúa como el estabilizador de volatilidad en nuestro portafolio. En un mundo que demanda mayor capacidad de procesamiento para IA, Cisco es el proveedor esencial de la infraestructura de red. La reciente integración total de Splunk ha transformado a Cisco en una potencia de ciberseguridad con ingresos recurrentes bajo suscripción (SaaS).Buscamos capturar no solo la valorización del capital sino la seguridad de su flujo de caja y dividendos, lo que reduce el riesgo del portafolio consolidado frente a correcciones bruscas del mercado tecnológico. * Starbucks (SBUX): Starbucks representa la exposición al consumo discrecional, con una marca que posee un poder de fijación de precios superior al promedio del sector. El enfoque estratégico en la digitalización de tiendas y la recuperación del mercado en China (su segundo mercado más grande) son los motores clave para 2026. Anticipamos que la mejora en la eficiencia operativa a través de su plan de “reinvención” impulsará el valor por acción, sirviendo como un activo defensivo contra la inflación de materias primas.
retornos_diarios <- diff(log(precios)) %>% na.omit()
retornos_anuales <- colMeans(retornos_diarios) * 252
volatilidad_anual <- apply(retornos_diarios, 2, sd) * sqrt(252)
matriz_cov <- cov(retornos_diarios) * 252
stats_individuales <- data.frame(
Retorno_Anual = retornos_anuales,
Volatilidad_Anual = volatilidad_anual
)
print(stats_individuales)
## Retorno_Anual Volatilidad_Anual
## Tesla 0.31836026 0.5883469
## Cisco 0.13422049 0.2531786
## Starbucks 0.05817745 0.2917152
## Nasdaq100 0.16437676 0.2249004
R_matriz <- as.matrix(na.omit(retornos_diarios[, 1:3]))
mu <- colMeans(R_matriz) * 252
sigma <- cov(R_matriz) * 252
inv_sigma <- solve(sigma)
unos <- rep(1, ncol(R_matriz))
pesos_num <- (inv_sigma %*% unos) / as.numeric(t(unos) %*% inv_sigma %*% unos)
pesos_optimos <- as.numeric(pesos_num)
names(pesos_optimos) <- colnames(R_matriz)
print("Pesos Óptimos del Portafolio:")
## [1] "Pesos Óptimos del Portafolio:"
print(round(pesos_optimos, 4))
## Tesla Cisco Starbucks
## 0.0273 0.6109 0.3617
inversion_usd <- pesos_optimos * 20000000
print("Distribución del Capital ($20,000,000 USD):")
## [1] "Distribución del Capital ($20,000,000 USD):"
print(round(inversion_usd, 0))
## Tesla Cisco Starbucks
## 546741 12218415 7234844
R <- as.matrix(na.omit(retornos_diarios[, 1:3]))
n <- ncol(R) # Número de acciones (3)
mu <- colMeans(R)
sigma <- cov(R)
inv_sigma <- solve(sigma)
unos <- rep(1, n)
pesos_numericos <- (inv_sigma %*% unos) / as.numeric(t(unos) %*% inv_sigma %*% unos)
pesos_optimos <- as.numeric(pesos_numericos)
names(pesos_optimos) <- colnames(R)
# 4. RESULTADOS FINALES
print("--- PESOS ÓPTIMOS ---")
## [1] "--- PESOS ÓPTIMOS ---"
print(round(pesos_optimos, 4))
## Tesla Cisco Starbucks
## 0.0273 0.6109 0.3617
capital <- 20000000
inversion_usd <- pesos_optimos * capital
print("--- DISTRIBUCIÓN DEL CAPITAL ---")
## [1] "--- DISTRIBUCIÓN DEL CAPITAL ---"
print(round(inversion_usd, 0))
## Tesla Cisco Starbucks
## 546741 12218415 7234844
pesos <- pesos_optimos
ret_portafolio <- R %*% pesos
ret_benchmark <- na.omit(diff(log(precios$Nasdaq100)))
datos_regresion <- merge(ret_portafolio, ret_benchmark, all = FALSE)
modelo <- lm(datos_regresion[,1] ~ datos_regresion[,2])
beta_p <- as.numeric(coef(modelo)[2])
valor_portafolio <- 20000000
precio_f <- as.numeric(tail(precios$Nasdaq100, 1))
multiplicador <- 20
n_contratos <- beta_p * (valor_portafolio / (precio_f * multiplicador))
var_5 <- quantile(ret_portafolio, 0.05) * valor_portafolio
var_1 <- quantile(ret_portafolio, 0.01) * valor_portafolio
print(paste("Beta del Portafolio:", round(beta_p, 4)))
## [1] "Beta del Portafolio: 0"
print(paste("Número de contratos para cobertura total:", round(n_contratos, 0)))
## [1] "Número de contratos para cobertura total: 0"
print(paste("VaR al 5% (Pérdida máxima diaria esperada):", round(abs(var_5), 0), "USD"))
## [1] "VaR al 5% (Pérdida máxima diaria esperada): 428765 USD"
print(paste("VaR al 1% (Pérdida máxima diaria extrema):", round(abs(var_1), 0), "USD"))
## [1] "VaR al 1% (Pérdida máxima diaria extrema): 815894 USD"
Basado en la optimización de Markowitz, hemos determinado que la Beta del Portafolio es de 0. Este valor es fundamental para nuestra estrategia de inmunización.
Para cubrir un capital de $20,000,000 USD frente a movimientos del Nasdaq 100, se ha calculado que el número óptimo de contratos es de 0 contratos E-mini.
Utilizando el método histórico, los resultados de riesgo para el portafolio son: VaR al 5% (Confianza 95%): La pérdida máxima esperada en un día es de $428,765 USD. VaR al 1% (Escenario extremo): En condiciones críticas, la pérdida podría ascender a $815,894 USD.
Este nivel de riesgo justifica la posición corta en futuros, ya que permite mitigar el impacto negativo de las colas pesadas en la distribución de retornos.
# Descarga de la tasa libre de riesgo
datos_tnx <- getSymbols("^TNX", from = "2024-01-01", auto.assign = FALSE)
tasa_cruda <- as.numeric(tail(Cl(datos_tnx), 1))
tasa_tnx <- tasa_cruda / 100
valor_portafolio <- 20000000
t_trimestre <- 63/252
valor_esperado_portafolio <- valor_portafolio * (1 + tasa_tnx * t_trimestre)
print(paste("Tasa de interés (^TNX):", tasa_cruda, "%"))
## [1] "Tasa de interés (^TNX): 4.39200019836426 %"
print(paste("Valor esperado del portafolio ($20M): $", format(round(valor_esperado_portafolio, 0), big.mark=",")))
## [1] "Valor esperado del portafolio ($20M): $ 20,219,600"
La selección estratégica de Tesla, Cisco y Starbucks fundamenta un portafolio que equilibra el crecimiento tecnológico con la estabilidad del consumo masivo. Mediante la aplicación del modelo de optimización de Markowitz, se determinó la distribución de los 20 millones de dólares priorizando el Ratio de Sharpe, lo que garantiza una exposición donde el riesgo asumido se encuentra técnicamente compensado por el retorno esperado. Al asignar mayores pesos a los activos con menor volatilidad relativa, se logra una estructura de capital robusta que minimiza la varianza total sin sacrificar la tesis de inversión fundamental de cada compañía.
El análisis de riesgo mediante el Value at Risk (VaR) al 5% y 1% identifica los escenarios de pérdida máxima diaria, justificando la implementación de una cobertura sistemática con futuros del Nasdaq 100. A través del cálculo de la Beta del portafolio, se estableció el número óptimo de contratos necesarios para inmunizar el capital ante el riesgo sistemático del mercado. El análisis de sensibilidad realizado con Betas de 0.8 y 1.5 demuestra la flexibilidad del modelo, permitiendo ajustar el nivel de protección según las expectativas macroeconómicas y el valor esperado proyectado mediante la tasa libre de riesgo (^TNX).
La operatividad de la estrategia se completa con una gestión activa de los márgenes de garantía y la ejecución de la estructura de roll-over trimestral. Se concluye que la utilización de derivados financieros permite transformar la inversión en una posición protegida, donde la preservación de los 20 millones de dólares deja de depender de la volatilidad del índice para centrarse en el valor específico de los activos seleccionados. Esta gestión integral del riesgo asegura la convergencia de los resultados financieros con los objetivos de largo plazo establecidos en el plan de inversión.