Este documento es un ejemplo básico de informe en R Markdown para
publicar en RPubs.
Incluye texto, una tabla con formato y una gráfica generada con código
de R.
datos <- tibble(
Activo = c("KO", "AMZN", "INTC"),
Retorno_Anual = c(0.0554, 0.1927, 0.0303),
Volatilidad_Anual = c(0.1825, 0.3236, 0.4175),
Peso_Portafolio = c(0.30, 0.50, 0.20)
)
datosdatos %>%
mutate(
Retorno_Anual = percent(Retorno_Anual, accuracy = 0.01),
Volatilidad_Anual = percent(Volatilidad_Anual, accuracy = 0.01),
Peso_Portafolio = percent(Peso_Portafolio, accuracy = 0.01)
) %>%
kable(
col.names = c("Activo", "Retorno anual", "Volatilidad anual", "Peso en portafolio"),
align = "c",
caption = "Indicadores básicos del portafolio"
) %>%
kable_styling(
bootstrap_options = c("striped", "hover", "condensed", "responsive"),
full_width = FALSE,
position = "center"
) %>%
row_spec(0, bold = TRUE, color = "white", background = color_principal)| Activo | Retorno anual | Volatilidad anual | Peso en portafolio |
|---|---|---|---|
| KO | 5.54% | 18.25% | 30.00% |
| AMZN | 19.27% | 32.36% | 50.00% |
| INTC | 3.03% | 41.75% | 20.00% |
datos_largos <- datos %>%
pivot_longer(
cols = c(Retorno_Anual, Volatilidad_Anual),
names_to = "Metrica",
values_to = "Valor"
) %>%
mutate(
Metrica = recode(
Metrica,
Retorno_Anual = "Retorno anual",
Volatilidad_Anual = "Volatilidad anual"
)
)
ggplot(datos_largos, aes(x = Activo, y = Valor, fill = Metrica)) +
geom_col(position = "dodge", width = 0.7) +
scale_y_continuous(labels = percent_format(accuracy = 1)) +
scale_fill_manual(values = c(color_principal, color_secundario)) +
labs(
title = "Comparación de retorno y volatilidad anual",
x = "Activo",
y = "Porcentaje",
fill = "Métrica"
) +
theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold", hjust = 0.5, color = color_principal),
legend.position = "bottom",
panel.grid.minor = element_blank()
)retorno_portafolio <- sum(datos$Retorno_Anual * datos$Peso_Portafolio)
volatilidad_aproximada <- sqrt(sum((datos$Volatilidad_Anual * datos$Peso_Portafolio)^2))
tasa_libre_riesgo <- 0.04279
sharpe_aproximado <- (retorno_portafolio - tasa_libre_riesgo) / volatilidad_aproximada
resumen <- tibble(
Indicador = c("Retorno esperado", "Volatilidad aproximada", "Tasa libre de riesgo", "Sharpe aproximado"),
Valor = c(
percent(retorno_portafolio, accuracy = 0.01),
percent(volatilidad_aproximada, accuracy = 0.01),
percent(tasa_libre_riesgo, accuracy = 0.01),
round(sharpe_aproximado, 4)
)
)
resumen %>%
kable(
col.names = c("Indicador", "Valor"),
align = "c",
caption = "Resumen del portafolio"
) %>%
kable_styling(
bootstrap_options = c("striped", "hover", "responsive"),
full_width = FALSE,
position = "center"
) %>%
row_spec(0, bold = TRUE, color = "white", background = color_principal)| Indicador | Valor |
|---|---|
| Retorno esperado | 11.90% |
| Volatilidad aproximada | 19.01% |
| Tasa libre de riesgo | 4.28% |
| Sharpe aproximado | 0.401 |
El ejemplo muestra cómo estructurar un documento publicable en RPubs con secciones claras, tablas formateadas y gráficas generadas directamente desde R. Esta misma lógica se puede aplicar al trabajo completo, reemplazando los datos de ejemplo por los datos reales del Excel y el código del análisis final.