Indicadores de desempeño

Se utilizará una base de datos con los precios de cuatro acciones y los puntos del índice COLCAP con frecuencia diaria.

Importar datos

datos = read.csv("Cuatro acciones 2020 y COLCAP.csv", sep = ";", dec = ",", header = T)
head(datos)
tail(datos)
A data.frame: 6 × 6
FechaECOPFAVALISANUTRESACOLCAP
<fct><int><int><int><int><dbl>
126/03/20182775116513080257201469.04
227/03/20182645115513080257001450.00
328/03/20182615116513320259801455.52
42/04/2018 2690116513420259201470.88
53/04/2018 2730117513660259201492.84
64/04/2018 2740119013560258401497.59
A data.frame: 6 × 6
FechaECOPFAVALISANUTRESACOLCAP
<fct><int><int><int><int><dbl>
4953/04/2020 227090615500197001127.55
4966/04/2020 226095516140197201160.12
4977/04/2020 223093216680200201163.43
4988/04/2020 236093617200207001187.13
49913/04/2020225095117860213001193.98
50014/04/2020222095518000225001211.06

Matriz de precios

Se tendrá un objeto para los precios de las acciones precios y otro para el mercado COLCAP.

Los precios de las acciones están entre las columnas 2 y 5 de datos y el COLCAP está en la columna 6.

precios = datos[, 2:5]
precios = ts(precios)

COLCAP = datos[,6]
COLCAP = ts(COLCAP)

Nombres de las acciones

nombres = colnames(precios)
nombres
  1. 'ECO'
  2. 'PFAVAL'
  3. 'ISA'
  4. 'NUTRESA'

Matriz de rendimientos.

Matriz de rendimientos para las acciones rendimientos y matriz de rendimientos para el mercado rendimientos_mercado.

rendimientos = diff(log(precios))

rendimientos_mercado = diff(log(COLCAP))

Rendimientos esperado de cada acción y del mercado

Rendimientos esperados de las acciones rendimientos_esperados y rendimiento esperado del mercado rendimiento_esperado_mercado.

rendimientos_esperados = apply(rendimientos, 2, mean)
print(rendimientos_esperados)

rendimiento_esperado_mercado = mean(rendimientos_mercado)
rendimiento_esperado_mercado
          ECO        PFAVAL           ISA       NUTRESA
-0.0004471815 -0.0003983267  0.0006398545 -0.0002680433
-0.000387000234579747

Volatilidad de cada acción y del mercado

volatilidades para las acciones y volatilidad_mercado para el COLCAP.

volatilidades = apply(rendimientos, 2, sd)
print(volatilidades)

volatilidad_mercado = sd(rendimientos_mercado)
volatilidad_mercado
       ECO     PFAVAL        ISA    NUTRESA
0.03193244 0.02855772 0.02372920 0.01401047
0.0161376694676898

Proporciones de inversión

proporciones = c(0.10, 0.05, 0.75, 0.10)
proporciones
  1. 0.1
  2. 0.05
  3. 0.75
  4. 0.1

Rendimientos del portafolio de inversión

rendimientos_portafolio = vector()

for(i in 1:nrow(rendimientos)){

  rendimientos_portafolio[i] = sum(rendimientos[i,]*proporciones)

}

Rendimiento esperado del portafolio de inversión

rendimiento_esperado_portafolio = mean(rendimientos_portafolio)
rendimiento_esperado_portafolio
0.000388452091136383

Volatilidad del portafolio de inversión portafolio

volatilidad_portafolio = sd(rendimientos_portafolio)
volatilidad_portafolio
0.01982711424517

Tasa libre de riesgo

Tasa libre de riesgo de TES colombiano a 10 año con fecha del 14 de abril de 2020.

Esta tasa está expresada en E.A y como se está trabajando con rendimientos continuos, se debe utilizar la \(R_f\) en tiempo continuo.

Rf = 0.06916 #E.A.
Rf = log(1 + Rf)  #Continua anual
Rf_diario = Rf/250  #Continua diario
Rf_diario
0.000267493173737161

Beta de cada acción

Valores calculados con precios mensuales en otro código.

beta = c(1.23765583817092, 1.04762467584509, 0.696424844336778, 0.805687711895736)
beta
  1. 1.23765583817092
  2. 1.04762467584509
  3. 0.696424844336778
  4. 0.805687711895736
beta_portafolio = sum(proporciones*beta)
beta_portafolio
0.779034222051504

Indicadores de desempeño

* Ratio de Sharpe:

1

1

sharpe = (rendimiento_esperado_portafolio - Rf_diario)/volatilidad_portafolio
sharpe
0.00610068191989606

Por cada unidad de volatilidad, el portafolio tuvo un exceso de rentabilidad de 0,0061 unidades por día.

* Ratio de Treynor:

2

2

treynor =  (rendimiento_esperado_portafolio - Rf_diario)/beta_portafolio
treynor
0.000155267784104131

Por cada unidad de riesgo sistemático, el portafolio tuvo un exceso de rentabilidad de 0,02% diario.

Por cada unidad de riesgo sistemático, el portafolio entregó una prima de 0,02% diario.

Por cada unidad de riesgo sistemático, el portafolio generó 0,02% diario de rendimiento por encima de la tasa libre de riesgo.

* Alfa de Jensen:

3

3

jensen = (rendimiento_esperado_portafolio - Rf_diario) - (rendimiento_esperado_mercado - Rf_diario)*beta_portafolio
jensen
0.000630831680585222

El portafolio entregó un 0,06% diario de prima de rentabilidad por encima de la prima por riesgo del portafolio.

El rendimiento del portafolio está por encima del rendimiento estimado por CAPM en un 0,06% diario.

Indicadores de desempeño anualizados

* Ratio de Sharpe:

1

1

sharpe = (rendimiento_esperado_portafolio*250 - Rf)/(volatilidad_portafolio*sqrt(250))
sharpe
0.0964602507354023

Por cada unidad de volatilidad, el portafolio tuvo un exceso de rentabilidad de 0,0965 unidades por año.

* Ratio de Treynor:

2

2

treynor =  (rendimiento_esperado_portafolio*250 - Rf)/beta_portafolio
treynor
0.0388169460260326

Por cada unidad de riesgo sistemático, el portafolio tuvo un exceso de rentabilidad de 3,88% por año.

Por cada unidad de riesgo sistemático, el portafolio entregó una prima de 3,88% anual.

Por cada unidad de riesgo sistemático, el portafolio generó 3,88% anual de rendimiento por encima de la tasa libre de riesgo.

* Alfa de Jensen:

3

3

jensen = (rendimiento_esperado_portafolio*250 - Rf) - (rendimiento_esperado_mercado*250 - Rf)*beta_portafolio
jensen
0.157707920146305

El portafolio entregó un 15,77% anual de prima de rentabilidad por encima de la prima por riesgo del portafolio.

El rendimiento del portafolio está por encima del rendimiento estimado por CAPM en un 15,77% anual.