1. Articulo sobre los FIC en Colombia

a) ¿Cual es el objetivo del trabajo?

El objetivo principal del artículo es evaluar si los Fondos de Inversión Colectiva (FIC) enfocados en acciones en Colombia generan valor para sus inversionistas. Para ello, los autores estiman el alfa de Jensen con el fin de determinar si los gestores logran obtener rendimientos anormales positivos, es decir, superiores a los explicados por el riesgo sistemático del mercado según el modelo CAPM.

b) Describa detalladamente la metodología y datos utilizados por los autores

El estudio utiliza información de 73 Fondos de Inversión Colectiva enfocados en renta variable, con datos provenientes de la Superintendencia Financiera de Colombia y Bloomberg. La variable dependiente corresponde al exceso de retorno de cada fondo respecto a la tasa libre de riesgo, mientras que la variable explicativa es el exceso de retorno del mercado, representado por el índice COLCAP.

La estimación se realiza mediante el modelo CAPM utilizando el método de Mínimos Cuadrados Ordinarios (MCO), con el objetivo de obtener el alfa de Jensen. Posteriormente, se evalúa la significancia estadística de dicho coeficiente a través del estadístico t y su respectivo p-value, lo que permite contrastar la hipótesis de que el alfa es igual a cero. En el caso de fondos menos diversificados, el retorno se contrasta frente al activo o índice que mejor represente su estructura de inversión. Todo el análisis econométrico fue desarrollado en el software EViews 9.

c) ¿Cuáles son los principales hallazgos del trabajo? ¿Qué limitaciones encuentra usted en el diseño metodológico?

Los principales hallazgos indican que la mayoría de los FIC enfocados en acciones no presentan un alfa de Jensen positivo y estadísticamente significativo. Esto implica que, en promedio, los fondos no generan retornos anormales ajustados por riesgo frente a su benchmark. En consecuencia, la gestión activa no evidencia una creación sistemática de valor, situación que los autores asocian principalmente a costos de administración y transacción.

En cuanto a las limitaciones, una de las principales radica en la utilización del modelo CAPM en el contexto del mercado colombiano. Este modelo se basa en supuestos como mercados eficientes, ausencia de fricciones, homogeneidad de expectativas y acceso libre a la tasa libre de riesgo, condiciones que difícilmente se cumplen en un mercado emergente caracterizado por baja profundidad, limitada liquidez y un número reducido de activos listados. Estas características pueden afectar la capacidad explicativa del modelo.

2. Análisis del desempeño de los FIC

La base de datos utilizada en este análisis fue obtenida a partir de Bloomberg e incluye información mensual de los fondos desde febrero de 2016 hasta diciembre de 2025. Para estimar el modelo CAPM, se utilizó como tasa libre de riesgo el rendimiento de los bonos del Gobierno colombiano a 10 años. En el caso de los fondos de renta variable, el rendimiento del mercado fue representado por el índice COLCAP, mientras que para los fondos de renta fija se empleó el índice COLTES como proxy del mercado de deuda pública. Todos los datos fueron descargados directamente de Bloomberg.

b) Realizar las graficas de precios y rendimientos para cada fondo

A continuación, se presentan las gráficas de precios y rendimientos para los fondos analizados. Estas permiten observar la evolución temporal de los valores y su volatilidad, así como identificar posibles cambios estructurales en el comportamiento de los activos a lo largo del periodo de estudio.

library(readxl)
library(dplyr)
library(lmtest)
library(tidyr)
library(ggplot2)
library(tseries)
library(forecast)
library(sandwich)
library(zoo)
library(plotly)
library(readxl)

Fondos <- read_excel("Fondos.xlsx")
View(Fondos)

RV <- read_excel("Fondos.xlsx", sheet = "RentaVariable")
RF <- read_excel("Fondos.xlsx", sheet = "RentaFija")
RV_precios <- RV
#Graficamos la serie de precios de forma indiviual para los fondos de RV
RV <- read_excel("Fondos.xlsx", sheet = "RentaVariable")
RF <- read_excel("Fondos.xlsx", sheet = "RentaFija")
RV_precios <- RV
#Graficamos la serie de precios de forma indiviual para los fondos de RV

RV_long <- RV_precios %>%
  pivot_longer(-Dates, names_to = "Fondo", values_to = "Precio")

p <- ggplot(RV_long, aes(x = Dates, y = Precio, color = Fondo)) +
  geom_line() +
  theme_minimal() +
  labs(title = "Precios Fondos de Renta Variable",
       x = "Fecha",
       y = "Precio")

ggplotly(p)

Ahora estas son las graficas de los fondos de renta varaible

# Convertimos a formato largo
RF_long <- RF %>%
  pivot_longer(-Dates, names_to = "Fondo", values_to = "Precio") %>%
  na.omit()

# Creamos el gráfico
p <- ggplot(RF_long, aes(x = Dates, y = Precio, color = Fondo)) +
  geom_line() +
  theme_minimal() +
  labs(title = "Precios Fondos de Renta Fija",
       x = "Fecha",
       y = "Precio")

# Lo volvemos interactivo
ggplotly(p)

Ahora para los rendimientos de los fondos

# ===============================
# RENDIMIENTOS
# ===============================

calc_returns <- function(data){
  
  returns <- data
  
  for(i in 2:ncol(data)){
    returns[[i]] <- c(NA, diff(log(data[[i]])))
  }
  
  return(returns)
}

RV_ret <- calc_returns(RV)
RF_ret <- calc_returns(RF)

# Convertimos a formato largo
RV_ret_long <- RV_ret %>%
  pivot_longer(-Dates, names_to = "Fondo", values_to = "Rendimiento") %>%
  filter(!Fondo %in% c("COLCAP Index", "D_COVID",
                       "COLTES",
                       "Dividend Yield of Market",
                       "GT10 Govt")) %>%
  na.omit()

# Graficamos
p_ret_RV <- ggplot(RV_ret_long, aes(x = Dates, y = Rendimiento, color = Fondo)) +
  geom_line() +
  theme_minimal() +
  labs(title = "Rendimientos Fondos de Renta Variable",
       x = "Fecha",
       y = "Rendimiento")

ggplotly(p_ret_RV)
#RENDIMIENTOS RENTA FIJA

RF_ret_long <- RF_ret %>%
  pivot_longer(-Dates, names_to = "Fondo", values_to = "Rendimiento") %>%
  filter(!Fondo %in% c("COLCAP Index",
                       "COLTES",
                       "Dividend Yield of Market",
                       "GT10 Govt")) %>%
  na.omit()

p_ret_RF <-ggplot(RF_ret_long, aes(x = Dates, y = Rendimiento, color = Fondo)) +
  geom_line() +
  theme_minimal() +
  labs(title = "Rendimientos Fondos de Renta Fija",
       x = "Fecha",
       y = "Rendimiento")

ggplotly(p_ret_RF)

A partir de las gráficas se observa que las series de precios presentan una tendencia marcada a lo largo del tiempo, lo que indica que no son estacionarias en niveles. Sin embargo, al transformar dichas series en rendimientos (mediante diferencias logarítmicas), la tendencia desaparece y las series se tornan estacionarias, condición fundamental para la correcta estimación de modelos econométricos como el CAPM.

De manera preliminar, también se evidencia que los fondos de renta variable exhiben una mayor volatilidad en comparación con los fondos de renta fija. Mientras los primeros presentan fluctuaciones más pronunciadas en sus rendimientos, los fondos de renta fija muestran un comportamiento más estable y menos disperso a lo largo del periodo analizado, consistente con su perfil de riesgo más conservador.

c) ¿Cual es el orden de integracion de las series y como podemos interpretarlo

Todas estas series son de orden de integración 1 ya que es neesario diferenciar la serie una vez (obtener los rendimientos) para que esta se vuelva estacionaria,

d) utilizr el modelo autoraima para estimar el mejor modelo para cada una de las series

Arima para Renta variable

# ===============================
# AUTO ARIMA Renta Variable (Resumen)
# ===============================

resultados_arima_RV <- data.frame()

for(i in 2:ncol(RV_ret)){
  
  nombre <- colnames(RV_ret)[i]
  
  # Excluir series que no queremos
  if(nombre %in% c("GT10 Govt",
                   "COLTES",
                   "COLCAP Index",
                   "Dividend Yield of Market")){
    next
  }
  
  serie <- na.omit(RV_ret[[i]])
  modelo <- auto.arima(serie)
  
  orden <- arimaorder(modelo)
  
  resultados_arima_RV <- rbind(resultados_arima_RV,
                                data.frame(
                                  Fondo = nombre,
                                  p = orden[1],
                                  d = orden[2],
                                  q = orden[3],
                                  AIC = modelo$aic,
                                  BIC = modelo$bic,
                                  Sigma2 = modelo$sigma2
                                ))
}

knitr::kable(resultados_arima_RV,
             digits = 4,
             caption = "Modelos ARIMA estimados - Fondos de Renta Variable")
Modelos ARIMA estimados - Fondos de Renta Variable
Fondo p d q AIC BIC Sigma2
p ALIACCA CB Equity 0 0 0 -286.6913 -284.1064 0.0031
p1 CAMACLA CB Equity 0 0 0 -172.6901 -170.7011 0.0023
p2 ACCCOLP CB Equity 0 0 0 -275.3330 -270.1835 0.0033
p3 ANACION CB Equity 0 0 0 -367.8288 -362.2874 0.0025
p4 FGDINRV CB Equity 0 0 0 -352.7872 -347.2458 0.0029
p5 ACPPLUS CB Equity 0 0 0 -218.9719 -216.5898 0.0037
p6 CAMAILA CB Equity 0 1 0 -89.9035 -88.3200 0.0046
p7 HCOLSEL CB Equity 0 0 0 -342.3131 -339.5424 0.0032
p8 SEGBOLI CB Equity 0 0 0 -359.1498 -353.8419 0.0019
p9 FACCION CB Equity 0 0 0 -367.3776 -364.6069 0.0026
p10 CAMACGA CB Equity 0 0 0 -426.8536 -421.3122 0.0015
p11 FCPAGUN CB Equity 0 0 0 -17.3732 -17.9869 0.0005
p12 FCEINDE CB Equity 0 0 0 -597.6702 -592.1288 0.0004

Autoarima para renta fija

# ===============================
# AUTO ARIMA Renta Fija (Resumen)
# ===============================

resultados_arima_RF <- data.frame()

for(i in 2:ncol(RF_ret)){
  
  nombre <- colnames(RF_ret)[i]
  
  # Excluir series que no queremos
  if(nombre %in% c("GT10 Govt",
                   "COLTES",
                   "COLCAP Index",
                   "Dividend Yield of Market")){
    next
  }
  
  serie <- na.omit(RF_ret[[i]])
  modelo <- auto.arima(serie)
  
  orden <- arimaorder(modelo)
  
  resultados_arima_RF <- rbind(resultados_arima_RF,
                                data.frame(
                                  Fondo = nombre,
                                  p = orden[1],
                                  d = orden[2],
                                  q = orden[3],
                                  AIC = modelo$aic,
                                  BIC = modelo$bic,
                                  Sigma2 = modelo$sigma2
                                ))
}

knitr::kable(resultados_arima_RF,
             digits = 4,
             caption = "Modelos ARIMA estimados - Fondos de Renta Fija")
Modelos ARIMA estimados - Fondos de Renta Fija
Fondo p d q AIC BIC Sigma2
p CAMDCTA CB Equity 0 0 0 -189.5430 -186.7723 0.0115
p1 RLVALBC CB Equity 0 0 0 -442.8361 -440.0654 0.0013
p2 FCABBPU CB Equity 0 0 0 -239.3035 -237.1926 0.0011
p3 FGLDEEM CB Equity 0 0 0 -596.0304 -590.4890 0.0004
p4 ALICXCA CB Equity 3 1 2 -1100.1998 -1083.6267 0.0000
p5 CRCCFEC CB Equity 0 0 0 -157.1312 -155.1059 0.0034
p6 ALIGODB CB Equity 0 1 1 -678.0318 -673.2678 0.0000
p7 ITCOPTC CB Equity 0 0 0 198.5221 201.2928 0.3096
p8 PENSIO4 CB Equity 1 1 0 -1237.3696 -1232.0809 0.0000
p9 ALT120A CB Equity 1 0 0 -339.1935 -332.8608 0.0002
p10 FAAPPM1 CB Equity 2 1 1 -1037.1354 -1026.0867 0.0000
p11 BBVEFEA CB Equity 0 1 1 -1058.1204 -1052.5961 0.0000
p12 CONSOLI CB Equity 0 1 2 -994.6221 -986.6890 0.0000
p13 FIDUCTA CB Equity 0 1 2 -1125.9699 -1117.6833 0.0000
p14 DEREC26 CB Equity 0 1 1 -879.2411 -874.4770 0.0000
p15 LIQBYRB CB Equity 0 1 1 -1005.5018 -999.9775 0.0000
p16 OMEFECF CB Equity 0 1 1 -659.4894 -654.2394 0.0001
p17 FINTERES CB Equity 0 1 2 -832.2350 -823.9485 0.0000
p18 ABIERCA CB Equity 0 1 1 -935.9161 -930.6082 0.0000
p19 ITMMKTC CB Equity 0 1 2 -1102.0212 -1093.7347 0.0000
p20 CAMFVG2 CB Equity 0 1 2 -447.8227 -441.9118 0.0000
p21 CCAPAIS CB Equity 0 1 2 -1091.6472 -1083.3606 0.0000
p22 PARF901 CB Equity 1 0 0 -798.7388 -790.7203 0.0000
p23 FIDUEXC CB Equity 0 1 2 -1106.6042 -1098.3176 0.0000
p24 RENTFIP CB Equity 2 0 0 -818.4732 -807.3904 0.0001
p25 COVPLT1 CB Equity 0 1 2 -958.3438 -950.2974 0.0000
p26 ACCIVAL CB Equity 0 1 2 -1093.4092 -1085.1227 0.0000
p27 BBVFAMA CB Equity 0 1 2 -1032.2324 -1023.9459 0.0000

e) Estime el modelo empírico del CAPM

Para la estimación del modelo empírico del CAPM para cada uno de los fondos se adoptaron los siguientes supuestos metodológicos:

  1. En el caso de los fondos de renta fija, el rendimiento del mercado (Rm) se aproximó mediante los rendimientos del índice COLTES, el cual refleja el comportamiento de los títulos de deuda pública en Colombia y constituye un benchmark representativo para este tipo de fondos.

  2. Para los fondos de renta variable, el rendimiento del mercado se representó a través del índice COLCAP, principal indicador del mercado accionario colombiano y proxy adecuada del portafolio de mercado en el contexto local.

  3. Como tasa libre de riesgo (Rf), se utilizó el primer dato disponible del rendimiento de los bonos del Gobierno colombiano a 10 años. Esta elección se justifica en la medida en que dicha tasa representa el retorno que habría obtenido un inversionista al inicio del periodo si hubiera optado por una alternativa libre de riesgo en lugar de invertir en un Fondo de Inversión Colectiva. Además, dado que el horizonte analizado abarca aproximadamente diez años, el uso de un bono soberano a 10 años resulta consistente con la duración del periodo de estudio.

# ===============================
# RENDIMIENTOS MERCADO
# ===============================

# ---- Renta Fija ----
COLTES_precio <- RF$`COLTES`
COLTES_ret <- c(NA, diff(log(COLTES_precio)))

Rm_RF <- COLTES_ret

# ---- Renta Variable ----
COLCAP_precio <- RV$`COLCAP Index`
COLCAP_ret <- c(NA, diff(log(COLCAP_precio)))

Rm_RV <- COLCAP_ret

# Tasa libre de riesgo
Rf <- RF$`GT10 Govt`[1]

Ahora desarollamos nuestro modelo CAPM para cada los fondos de renta variable

# ===============================
# CAPM RENTA FIJA LIMPIO
# ===============================

resultados_RF <- data.frame()

for(i in 2:ncol(RF_ret)){
  
  nombre <- colnames(RF_ret)[i]
  
  # Excluir variables que no son fondos
  if(nombre %in% c("COLCAP Index","COLTES",
                   "GT10 Govt",
                   "Dividend Yield of Market")) next
  
  Ri <- RF_ret[[i]]
  Rm <- Rm_RF
  
  # Unimos Ri y Rm
  datos <- data.frame(Ri, Rm)
  
  # Eliminamos NA conjuntos (el modelo empieza donde haya datos)
  datos <- na.omit(datos)
  
  # Excesos
  datos$Ri_exceso <- datos$Ri - Rf
  datos$Rm_exceso <- datos$Rm - Rf
  
  modelo <- lm(Ri_exceso ~ Rm_exceso, data = datos)
  resumen <- summary(modelo)
  
  # Guardamos resultados
  resultados_RF <- rbind(resultados_RF,
                         data.frame(
                           Fondo = nombre,
                           Observaciones = nrow(datos),
                           Alfa = coef(resumen)[1,1],
                           p_Alfa = coef(resumen)[1,4],
                           Beta = coef(resumen)[2,1],
                           p_Beta = coef(resumen)[2,4],
                           R2 = resumen$r.squared,
                           R2_Ajustado = resumen$adj.r.squared
                         ))
}

knitr::kable(resultados_RF, digits = 4, caption = "Resultados CAPM - Fondos de Renta Fija")
Resultados CAPM - Fondos de Renta Fija
Fondo Observaciones Alfa p_Alfa Beta p_Beta R2 R2_Ajustado
CAMDCTA CB Equity 118 -0.7744 0.4259 0.5563 0.3213 0.0085 -0.0001
RLVALBC CB Equity 118 -1.6644 0.0000 0.0403 0.8339 0.0004 -0.0082
FCABBPU CB Equity 61 -0.3223 0.4807 0.8129 0.0029 0.1410 0.1264
FGLDEEM CB Equity 118 -0.5670 0.0000 0.6712 0.0000 0.3931 0.3879
ALICXCA CB Equity 118 -1.6493 0.0000 0.0466 0.0024 0.0764 0.0685
CRCCFEC CB Equity 56 -0.4425 0.6266 0.7428 0.1592 0.0364 0.0185
ALIGODB CB Equity 81 -1.5773 0.0000 0.0881 0.0011 0.1268 0.1158
ITCOPTC CB Equity 118 -1.0601 0.8333 0.4160 0.8860 0.0002 -0.0084
PENSIO4 CB Equity 105 -1.6984 0.0000 0.0177 0.0806 0.0294 0.0199
ALT120A CB Equity 61 -1.7166 0.0000 0.0071 0.9554 0.0001 -0.0169
FAAPPM1 CB Equity 118 -1.5759 0.0000 0.0899 0.0000 0.1693 0.1621
BBVEFEA CB Equity 118 -1.6095 0.0000 0.0697 0.0001 0.1209 0.1133
CONSOLI CB Equity 105 -1.5721 0.0000 0.0917 0.0000 0.1871 0.1792
FIDUCTA CB Equity 118 -1.6033 0.0000 0.0735 0.0001 0.1286 0.1211
DEREC26 CB Equity 81 -1.6462 0.0000 0.0472 0.0013 0.1239 0.1128
LIQBYRB CB Equity 118 -1.5748 0.0000 0.0900 0.0000 0.1527 0.1454
OMEFECF CB Equity 103 -1.7374 0.0000 -0.0036 0.9487 0.0000 -0.0099
FINTERES CB Equity 118 -1.6149 0.0000 0.0670 0.0731 0.0274 0.0190
ABIERCA CB Equity 106 -1.5938 0.0000 0.0791 0.0001 0.1308 0.1225
ITMMKTC CB Equity 118 -1.5936 0.0000 0.0790 0.0000 0.1488 0.1415
CAMFVG2 CB Equity 54 -1.4224 0.0000 0.1765 0.0000 0.3294 0.3165
CCAPAIS CB Equity 118 -1.5652 0.0000 0.0955 0.0000 0.2166 0.2099
PARF901 CB Equity 107 -1.3987 0.0000 0.1917 0.0000 0.2532 0.2461
FIDUEXC CB Equity 118 -1.5929 0.0000 0.0795 0.0000 0.1473 0.1399
RENTFIP CB Equity 118 -1.3786 0.0000 0.2033 0.0000 0.2122 0.2054
COVPLT1 CB Equity 109 -1.5632 0.0000 0.0970 0.0000 0.1670 0.1593
ACCIVAL CB Equity 118 -1.5805 0.0000 0.0868 0.0000 0.1875 0.1805
BBVFAMA CB Equity 118 -1.5215 0.0000 0.1207 0.0000 0.2791 0.2729

Los resultados del modelo CAPM muestran que, para la mayoría de los fondos, el alfa estimado es negativo y estadísticamente significativo. En particular, más del 80% de los fondos presentan valores de p-value < 0.05 p-value<0.05 para el intercepto, lo que indica que el alfa es significativamente distinto de cero. Sin embargo, dado que el coeficiente es negativo en casi todos los casos (entre aproximadamente -1.3 y -1.7), esto sugiere que los fondos, en promedio, destruyen valor en relación con el rendimiento ajustado por riesgo del mercado.

En cuanto al beta, los resultados muestran una heterogeneidad importante. Algunos fondos presentan betas estadísticamente significativos y positivos, lo que indica sensibilidad frente al mercado. Por ejemplo, fondos como FGLDEEM CB Equity y BBVFAMA CB Equity presentan betas altamente significativos y valores de R² relativamente altos. Sin embargo, otros fondos tienen betas no significativos, lo que sugiere que su comportamiento no está explicado por el factor de mercado utilizado en el modelo.

Respecto a la bondad de ajuste (R²), la mayoría de los fondos presentan valores entre 0.10 y 0.25, aunque algunos alcanzan niveles cercanos a 0.39. Esto indica que el mercado explica entre el 10% y el 40% de la variabilidad de los rendimientos, lo cual representa un poder explicativo moderado. En consecuencia, aunque el factor de mercado tiene cierta relevancia, existen otros factores no incluidos en el CAPM que influyen en el desempeño de los fondos.

Ahora realizamos el mismo proceso pero para los fondos de renta variable

# ===============================
# CAPM RENTA VARIABLE COMPLETO
# ===============================

resultados_RV <- data.frame()

for(i in 2:ncol(RV_ret)){
  
  nombre <- colnames(RV_ret)[i]
  
  # Excluir variables que no son fondos
  if(nombre %in% c("COLCAP Index","COLTES",
                   "GT10 Govt",
                   "Dividend Yield of Market")) next
  
  Ri <- RV_ret[[i]]
  Rm <- Rm_RV
  
  # Unimos Ri y Rm
  datos <- data.frame(Ri, Rm)
  
  # Eliminamos NA conjuntos (el modelo empieza donde haya datos)
  datos <- na.omit(datos)
  
  # Excesos
  datos$Ri_exceso <- datos$Ri - Rf
  datos$Rm_exceso <- datos$Rm - Rf
  
  modelo <- lm(Ri_exceso ~ Rm_exceso, data = datos)
  resumen <- summary(modelo)
  
  # Guardamos resultados clave
  resultados_RV <- rbind(resultados_RV,
                         data.frame(
                           Fondo = nombre,
                           Observaciones = nrow(datos),
                           Alfa = coef(resumen)[1,1],
                           p_Alfa = coef(resumen)[1,4],
                           Beta = coef(resumen)[2,1],
                           p_Beta = coef(resumen)[2,4],
                           R2 = resumen$r.squared,
                           R2_Ajustado = resumen$adj.r.squared
                         ))
}

knitr::kable(resultados_RV, digits = 4, caption = "Resultados CAPM - Fondos de Renta Vriable")
Resultados CAPM - Fondos de Renta Vriable
Fondo Observaciones Alfa p_Alfa Beta p_Beta R2 R2_Ajustado
ALIACCA CB Equity 98 -0.1800 0.0002 0.8940 0.0000 0.9212 0.9203
CAMACLA CB Equity 54 -1.2494 0.0000 0.2814 0.0271 0.0904 0.0729
ACCCOLP CB Equity 97 -0.1090 0.0165 0.9336 0.0000 0.9325 0.9318
ANACION CB Equity 118 -0.1978 0.0000 0.8843 0.0000 0.9617 0.9613
FGDINRV CB Equity 118 -0.1199 0.0034 0.9281 0.0000 0.9326 0.9320
ACPPLUS CB Equity 80 -0.0638 0.0419 0.9614 0.0000 0.9740 0.9737
CAMAILA CB Equity 37 -1.6599 0.0025 0.0534 0.8575 0.0009 -0.0276
HCOLSEL CB Equity 118 -0.0987 0.0888 0.9421 0.0000 0.8742 0.8731
SEGBOLI CB Equity 105 -0.4539 0.0000 0.7363 0.0000 0.9688 0.9685
FACCION CB Equity 118 -0.4544 0.0000 0.7396 0.0000 0.6590 0.6561
CAMACGA CB Equity 118 -1.2422 0.0000 0.2802 0.0000 0.1592 0.1520
FCPAGUN CB Equity 4 -1.3497 0.3125 0.2231 0.7418 0.0666 -0.4000
FCEINDE CB Equity 118 -1.2895 0.0000 0.2544 0.0000 0.5582 0.5544

Distinto al observado en renta fija. En este caso, la mayoría de los fondos presentan un beta altamente significativo y cercano a 1, lo que indica una fuerte sensibilidad frente al mercado representado por el COLCAP. De hecho, varios fondos como ALIACCA CB Equity, ANACION CB Equity, FGDINRV CB Equity y ACPPLUS CB Equity presentan valores de R² superiores a 0.90, lo que implica que más del 90% de la variabilidad de sus rendimientos es explicada por el factor de mercado. Esto sugiere que estos fondos se comportan prácticamente como un portafolio que replica el índice, mostrando una alta dependencia del riesgo sistemático.

En cuanto al alfa, aunque en muchos casos resulta estadísticamente significativo (p-value < 0.05), el signo es predominantemente negativo. Esto indica que, aun después de ajustar por riesgo sistemático, los fondos no generan rendimientos anormales positivos. En otras palabras, no se evidencia creación de valor ajustada por riesgo. La significancia estadística del alfa negativo podría estar reflejando costos de administración, fricciones de mercado o diferencias en la estructura de los portafolios frente al índice.

Por otro lado, algunos fondos como CAMAILA CB Equity o FCPAGUN CB Equity presentan betas no significativos y bajos niveles de R², lo que indica que su comportamiento no está fuertemente explicado por el mercado. Sin embargo, estos casos son minoritarios dentro del conjunto analizado.

f) Realizar un analisis financiero

Analisis General

En el caso de los fondos de renta variable, el modelo CAPM presenta un alto poder explicativo, con valores de R² en muchos casos superiores al 90%. Esto indica que el comportamiento de los fondos está fuertemente determinado por el mercado accionario (COLCAP). En términos prácticos, muchos de estos fondos se comportan como réplicas del índice, es decir, asumen riesgo sistemático similar al del mercado. Sin embargo, el alfa estimado es predominantemente negativo, incluso cuando es estadísticamente significativo. Esto sugiere que, ajustando por riesgo, la gestión activa no está generando valor adicional y que los costos de administración podrían estar afectando el rendimiento neto del inversionista.

En los fondos de renta fija, el poder explicativo del modelo es menor y más heterogéneo. El mercado (COLTES) explica solo una fracción moderada de la variabilidad de los rendimientos, lo que indica que estos fondos pueden estar expuestos a otros factores como duración, riesgo crediticio o decisiones activas de portafolio. No obstante, también se observa una predominancia de alfas negativos, lo que sugiere que tampoco en este segmento se evidencia creación sistemática de valor ajustada por riesgo.

Descripcion del mercado

El mercado colombiano de fondos parece presentar características consistentes con un entorno relativamente eficiente:

En renta variable, el riesgo sistemático explica casi todo el rendimiento. Es difícil obtener retornos anormales positivos de forma persistente. La gestión activa no muestra evidencia clara de generación de alfa.

Esto sugiere que el mercado accionario colombiano refleja de manera relativamente eficiente la información disponible, al menos en el periodo estudiado. En renta fija, aunque el mercado explica menos, tampoco se observan retornos extraordinarios consistentes.

Recomendacion

Si el objetivo es exposición al mercado accionario, podría ser más eficiente invertir en fondos con bajo costo o estrategias pasivas que repliquen el índice, dado que la mayoría de los fondos activos no genera alfa positivo.

Sí, es conveniente participar, pero con expectativas realistas. El mercado colombiano permite obtener rendimientos acordes al riesgo asumido, especialmente en renta variable, donde el desempeño está fuertemente ligado al mercado general. Sin embargo, no parece ser un mercado donde la gestión activa genere retornos anormales sistemáticos.

En conclusión, el mercado colombiano de fondos durante el periodo analizado muestra eficiencia en términos de riesgo sistemático, limitada generación de alfa y una estructura donde la diversificación y el control de costos son determinantes para el desempeño del inversionista.

g) Controlar por el efecto de la pandemia

Para nuestro grupo de renta variable

RV_ret$Dates <- as.Date(RV_ret$Dates)

# Crear dummy COVID (desde marzo 2020)
RV_ret$D_COVID <- ifelse(RV_ret$Dates >= as.Date("2020-03-01"), 1, 0)

resultados_RV_covid <- data.frame()

for(i in 2:ncol(RV_ret)){
  
  nombre <- colnames(RV_ret)[i]
  
  if(nombre %in% c("COLCAP Index", "COLTES",
                   "GT10 Govt",
                   "Dividend Yield of Market",
                   "D_COVID")) next
  
  Ri <- RV_ret[[i]]
  Rm <- Rm_RV
  D  <- RV_ret$D_COVID
  
  datos <- data.frame(Ri, Rm, D)
  datos <- na.omit(datos)
  
  # Si no hay suficientes datos, saltar
  if(nrow(datos) < 10) next
  
  datos$Ri_exceso <- datos$Ri - Rf
  datos$Rm_exceso <- datos$Rm - Rf
  
  modelo <- lm(Ri_exceso ~ Rm_exceso + D, data = datos)
  resumen <- summary(modelo)
  
  coefs <- coef(resumen)
  
  # Verificar si la dummy existe en el modelo
  if("D" %in% rownames(coefs)){
    gamma <- coefs["D", 1]
    p_gamma <- coefs["D", 4]
  } else {
    gamma <- NA
    p_gamma <- NA
  }
  
  resultados_RV_covid <- rbind(resultados_RV_covid,
                                data.frame(
                                  Fondo = nombre,
                                  Alfa = coefs[1,1],
                                  Beta = coefs[2,1],
                                  Gamma_COVID = gamma,
                                  p_Gamma = p_gamma,
                                  R2 = resumen$r.squared
                                ))
}

knitr::kable(resultados_RV_covid, digits = 4, caption = "Resultados CAPM ajustado - Fondos de Renta Variable")
Resultados CAPM ajustado - Fondos de Renta Variable
Fondo Alfa Beta Gamma_COVID p_Gamma R2
ALIACCA CB Equity -0.1836 0.8937 0.0043 0.2149 0.9224
CAMACLA CB Equity -1.2494 0.2814 NA NA 0.0904
ACCCOLP CB Equity -0.1157 0.9329 0.0077 0.0230 0.9362
ANACION CB Equity -0.2016 0.8845 0.0070 0.0001 0.9664
FGDINRV CB Equity -0.1236 0.9284 0.0070 0.0071 0.9367
ACPPLUS CB Equity -0.0688 0.9607 0.0044 0.1924 0.9746
CAMAILA CB Equity -1.6599 0.0534 NA NA 0.0009
HCOLSEL CB Equity -0.1001 0.9422 0.0027 0.4817 0.8747
SEGBOLI CB Equity -0.4572 0.7362 0.0046 0.0036 0.9713
FACCION CB Equity -0.4517 0.7394 -0.0052 0.3538 0.6616
CAMACGA CB Equity -1.2423 0.2802 0.0002 0.9720 0.1593
FCEINDE CB Equity -1.2902 0.2545 0.0012 0.6068 0.5593

Al incluir la variable dummy de pandemia, los resultados muestran que el riesgo sistemático (beta) sigue siendo el principal determinante del desempeño de los fondos de renta variable, con valores altos y R² elevados en la mayoría de los casos. Esto confirma que el comportamiento de los fondos está fuertemente ligado al mercado accionario.

El alfa continúa siendo mayoritariamente negativo, lo que indica que no hay evidencia de generación sostenida de valor ajustado por riesgo. En cuanto al efecto de la pandemia, solo algunos fondos presentan un coeficiente positivo y significativo, lo que sugiere que lograron un desempeño adicional durante ese periodo. Sin embargo, en la mayoría de los casos el efecto no es significativo, lo que implica que el impacto del COVID-19 fue principalmente absorbido por el mercado en su conjunto.

Ahora para nuestros fondos de renta fija

RF_ret$Dates <- as.Date(RF_ret$Dates)
RF_ret$D_COVID <- ifelse(RF_ret$Dates >= as.Date("2020-03-01"), 1, 0)

# ===============================
# CAPM RENTA FIJA CON DUMMY COVID
# ===============================

resultados_RF_covid <- data.frame()

for(i in 2:ncol(RF_ret)){
  
  nombre <- colnames(RF_ret)[i]
  
  # Excluir variables que no son fondos
  if(nombre %in% c("COLTES", "Dividend Yield of Market", "COLCAP Index",
                   "GT10 Govt",
                   "D_COVID")) next
  
  Ri <- RF_ret[[i]]
  Rm <- Rm_RF
  D  <- RF_ret$D_COVID
  
  datos <- data.frame(Ri, Rm, D)
  datos <- na.omit(datos)
  
  # Si hay muy pocos datos, saltar
  if(nrow(datos) < 10) next
  
  datos$Ri_exceso <- datos$Ri - Rf
  datos$Rm_exceso <- datos$Rm - Rf
  
  modelo <- lm(Ri_exceso ~ Rm_exceso + D, data = datos)
  resumen <- summary(modelo)
  
  coefs <- coef(resumen)
  
  # Verificar si la dummy fue incluida
  if("D" %in% rownames(coefs)){
    gamma <- coefs["D", 1]
    p_gamma <- coefs["D", 4]
  } else {
    gamma <- NA
    p_gamma <- NA
  }
  
  resultados_RF_covid <- rbind(resultados_RF_covid,
                                data.frame(
                                  Fondo = nombre,
                                  Alfa = coefs[1,1],
                                  Beta = coefs[2,1],
                                  Gamma_COVID = gamma,
                                  p_Gamma = p_gamma,
                                  R2 = resumen$r.squared
                                ))
}

knitr::kable(resultados_RF_covid, digits = 4, caption = "Resultados CAPM ajustado - Fondos de Renta Fija")
Resultados CAPM ajustado - Fondos de Renta Fija
Fondo Alfa Beta Gamma_COVID p_Gamma R2
CAMDCTA CB Equity -0.8568 0.5048 -0.0117 0.5714 0.0113
RLVALBC CB Equity -1.6924 0.0228 -0.0040 0.5756 0.0031
FCABBPU CB Equity -0.3223 0.8129 NA NA 0.1410
FGLDEEM CB Equity -0.5632 0.6736 0.0005 0.8521 0.3933
ALICXCA CB Equity -1.6452 0.0491 0.0006 0.3010 0.0850
CRCCFEC CB Equity -0.4425 0.7428 NA NA 0.0364
ALIGODB CB Equity -1.5712 0.0938 0.0044 0.0011 0.2383
ITCOPTC CB Equity -0.1128 1.0078 0.1340 0.2083 0.0139
PENSIO4 CB Equity -1.6974 0.0184 0.0003 0.3617 0.0373
ALT120A CB Equity -1.7166 0.0071 NA NA 0.0001
FAAPPM1 CB Equity -1.5633 0.0978 0.0018 0.0078 0.2191
BBVEFEA CB Equity -1.5940 0.0794 0.0022 0.0005 0.2092
CONSOLI CB Equity -1.5647 0.0968 0.0024 0.0003 0.2857
FIDUCTA CB Equity -1.5877 0.0833 0.0022 0.0006 0.2148
DEREC26 CB Equity -1.6435 0.0497 0.0019 0.0093 0.1971
LIQBYRB CB Equity -1.5600 0.0992 0.0021 0.0034 0.2137
OMEFECF CB Equity -1.7270 0.0044 0.0052 0.0100 0.0646
FINTERES CB Equity -1.6053 0.0730 0.0014 0.3190 0.0358
ABIERCA CB Equity -1.5843 0.0855 0.0025 0.0005 0.2268
ITMMKTC CB Equity -1.5758 0.0901 0.0025 0.0001 0.2618
CAMFVG2 CB Equity -1.4224 0.1765 NA NA 0.3294
CCAPAIS CB Equity -1.5506 0.1046 0.0021 0.0007 0.2916
PARF901 CB Equity -1.3929 0.1957 0.0017 0.1500 0.2680
FIDUEXC CB Equity -1.5766 0.0897 0.0023 0.0003 0.2396
RENTFIP CB Equity -1.3769 0.2043 0.0002 0.8618 0.2124
COVPLT1 CB Equity -1.5515 0.1047 0.0026 0.0004 0.2606
ACCIVAL CB Equity -1.5655 0.0962 0.0021 0.0004 0.2710
BBVFAMA CB Equity -1.5076 0.1294 0.0020 0.0025 0.3344

Al incluir la variable dummy de pandemia en los fondos de renta fija, se observa que la mayoría presenta betas bajas, cercanas a cero, lo que confirma su reducida exposición al riesgo sistemático del mercado accionario. Además, los valores de R² son en general bajos o moderados, indicando que el mercado explica una parte limitada del comportamiento de estos fondos, como es consistente con su naturaleza conservadora.

El alfa es negativo en prácticamente todos los casos, lo que sugiere ausencia de generación de retornos anormales positivos ajustados por riesgo. En cuanto al efecto de la pandemia, varios fondos presentan un coeficiente Gamma_COVID positivo y estadísticamente significativo, lo que indica que durante ese periodo algunos fondos de renta fija tuvieron un rendimiento adicional promedio. Sin embargo, el impacto no fue generalizado, sino específico a ciertos portafolios.

En conjunto, los resultados reflejan que el mercado de renta fija colombiano es menos sensible a choques sistemáticos y que la pandemia tuvo efectos diferenciados, pero limitados, sobre su desempeño.