Conformación portafolio de inversión#
Importar datos.#
datos = read.csv("Cuatro acciones 2020.csv", sep=";", dec=",", header = T)
Matriz de precios.#
precios = datos[,-1]
nombres = colnames(precios)
nombres
- 'ECO'
- 'PFVAVAL'
- 'ISA'
- 'NUTRESA'
acciones = ncol(precios)
acciones
precios = ts(precios)
Matriz de rendimientos.#
rendimientos = diff(log(precios))
Coeficientes de correlación#
correlacion = cor(rendimientos)
correlacion
ECO | PFVAVAL | ISA | NUTRESA | |
---|---|---|---|---|
ECO | 1.0000000 | 0.6513161 | 0.1531317 | 0.3337626 |
PFVAVAL | 0.6513161 | 1.0000000 | 0.2308501 | 0.3305836 |
ISA | 0.1531317 | 0.2308501 | 1.0000000 | 0.4572004 |
NUTRESA | 0.3337626 | 0.3305836 | 0.4572004 | 1.0000000 |
Rendimientos esperado de cada acción.#
rendimientos_esperados = apply(rendimientos, 2, mean)
rendimientos_esperados
- ECO
- -0.000447181465559539
- PFVAVAL
- -0.000398326704447035
- ISA
- 0.000639854532799824
- NUTRESA
- -0.000268043266851791
Gráfico comparación rendimientos esperados de las acciones#
barplot(rendimientos_esperados, horiz = T, main="Rendimientos esperados de las acciones")
Volatilidad de cada acción.#
volatilidades = apply(rendimientos, 2, sd)
volatilidades
- ECO
- 0.0319324424190137
- PFVAVAL
- 0.0285577211893029
- ISA
- 0.0237292026947701
- NUTRESA
- 0.0140104740592151
Gráfico comparación volatilidades de las acciones#
barplot(volatilidades,horiz = T, main="Volatilidades de las acciones")
Portafolio N° 1#
Los portafolios de inversión se conforman con la compra de acciones. Los inversionistas invierten su dinero en adquirir cierta cantidad de acciones. Se tendrá el supuesto que sólo se realizan operaciones de compra y no operaciones de venta en corto.
Para determinar la composición exacta del portafolio de inversión se debe multiplicar la cantidad de acciones compradas por el último precio de mercado.
El número de acciones por cada activo financiera está representado por
el vector numero_acciones
y el último precio de mercado por s
.
La letra viene del nombre precio spot. Para determinar el valor de
mercado de cada una de las acciones se hará la multiplicación:
numero_acciones*s
, lo cual se llamará valor_mercado_acciones
.
De esta manera, el valor de mercado del portafolio,
valor_portafolio
, será la suma del valor de mercado de cada una de
las acciones. Por último, la conformación del portafolio de inversión
estará representada por las proporciones de inversión que tenga cada una
de las acciones.
Último precio de las acciones#
s = tail(precios, 1)
s = as.numeric(s)
s
- 2220
- 955
- 18000
- 22500
La acción de ECO tiene un precio 2.220 COP, PFAVAL de 955 COP, ISA de 18.000 COP y NUTRESA de 22.500 COP.
Número de acciones portafolio N° 1#
Supongamos que se en el portafolio de inversión se realizaron las siguientes compras:
ECO: 150.000 acciones.
PFAVAL: 300.000 acciones.
ISA: 40.000 acciones.
NUTRESA: 70.000 acciones.
numero_acciones = c(150000,300000,40000,70000)
numero_acciones
- 150000
- 3e+05
- 40000
- 70000
Valor de mercado de las acciones portafolio N° 1#
valor_mercado_acciones = numero_acciones*s
valor_mercado_acciones
- 3.33e+08
- 286500000
- 7.2e+08
- 1.575e+09
Lo invertido en ECO tiene un valor de 333.000.000 COP, en PFAVAL de 286.500.000 COP, en ISA de 720.000.000 COP y NUTRESA de 157.500.000
Valor de mercado portafolio de inversión portafolio N° 1#
valor_portafolio = sum(valor_mercado_acciones)
valor_portafolio
El portafolio de inversión tiene un valor de mercado de 2.914.500.000 COP.
Proporciones de inversión portafolio N° 1#
proporciones = valor_mercado_acciones/valor_portafolio
proporciones
- 0.114256304683479
- 0.0983015954709213
- 0.24704065877509
- 0.540401441070509
La conformación del portafolio de inversión es la siguiente, aproximadamente:
ECO: 11,43%
PFAVAL: 9,83%
ISA: 24,70%
NUTRESA: 54,04%
La suma de las proporciones de inversión debe dar 100% porque se tiene el supuesto que se invierte todo el dinero disponible y no se realizan ventas en corto. Con las ventas en corto el porcentaje sería más del 100% porque se estaría apalancado.
sum(proporciones)
Gráfica de proporciones de inversión portafolio N° 1#
pie(proporciones, nombres, main="Proporciones de inversión portafolio N° 1", col=c("darkgreen","darkblue","darkgray","darkred"))
Rendimientos del portafolio de inversión N° 1#
El rendimiento del portafolio de inversión es el promedio ponderado de cada uno de los rendimientos de las acciones por los porcentajes de las proporciones de inversión.
rendimientos_portafolio = vector()
for(i in 1:nrow(rendimientos)){
rendimientos_portafolio[i] = sum(rendimientos[i,]*proporciones)
}
head(rendimientos_portafolio, 10)
- -0.00674979626464658
- 0.00989168735951183
- 0.00382908516429467
- 0.00690563441971709
- -0.00182090582806878
- 0.0161071689440197
- 0.00338501947733235
- 0.014328020875826
- 0.00356937173801299
- 0.0071767045753624
Rendimiento esperado del portafolio de inversión N° 1#
rendimiento_esperado_portafolio = mean(rendimientos_portafolio)
rendimiento_esperado_portafolio
El rendimiento esperado del portafolio de inversión es de -0,00007703% diario.
Volatilidad del portafolio de inversión portafolio N° 1#
volatilidad_portafolio = sd(rendimientos_portafolio)
volatilidad_portafolio
La volatilidad del portafolio de inversión es de 1,46% diaria.
Gráfico comparación rendimientos esperados con portafolio N° 1#
barplot(c(rendimientos_esperados, rendimiento_esperado_portafolio), horiz = T, main = "Rendimientos esperados de las acciones\n y del portafolio de inversión N° 1")
Gráfico comparación volatilidades con portafolio N° 1#
barplot(c(volatilidades,volatilidad_portafolio), horiz = T, main = "Volatilidades de las acciones\n y del portafolio de inversión N° 1")
Portafolio N° 2#
Por practicidad, se hace análisis de los portafolios de inversión a partir de las proporciones de inversión sin tener en cuenta la cantidad de acciones en cada activo. Esto se hace como una aproximación a los porcentajes de inversión reales.
proporciones = c(0.20,0.30,0.15,0.35)
proporciones
- 0.2
- 0.3
- 0.15
- 0.35
sum(proporciones)
Gráfica de proporciones de inversión portafolio N° 2#
pie(proporciones, nombres, main="Proporciones de inversión", col = c("darkgreen","darkblue","darkgray","darkred"))
Rendimientos del portafolio de inversión portafolio N° 2#
rendimientos_portafolio=vector()
for(i in 1:nrow(rendimientos)){
rendimientos_portafolio[i] = sum(rendimientos[i,]*proporciones)
}
Rendimiento esperado del portafolio de inversión N° 2#
rendimiento_esperado_portafolio = mean(rendimientos_portafolio)
rendimiento_esperado_portafolio
El rendimiento esperado del portafolio de inversión es de -0,0207% diario.
Volatilidad del portafolio de inversión portafolio N° 1#
volatilidad_portafolio = sd(rendimientos_portafolio)
volatilidad_portafolio
La volatilidad del portafolio de inversión es de 1,75% diaria.
Gráfico comparación rendimientos esperados con portafolio N° 2#
barplot(c(rendimientos_esperados,rendimiento_esperado_portafolio), horiz = T, main="Rendimientos esperados de las acciones\n y del portafolio de inversión N° 2")
Gráfico comparación volatilidades con portafolio N° 2#
barplot(c(volatilidades,volatilidad_portafolio), horiz = T, main="Volatilidades de las acciones\n y del portafolio de inversión N° 2")