---
title: "VAN Montecarlo"
author: "Ricardo R. Palma"
date: "13/4/2024"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

## Aplicación de montecarlo al flujo de fondos

**Definciónes**

El valor actual neto de un proyecto de inversión (VAN) es un criterio de selección de inversiones. Este representa el valor actual de los flujos de fondos netos (ingresos menos egresos periódicos) valor actual de los flujos de fondos netos (ingresos menos egresos periódicos) que puede generar la inversión en un determinado tiempo..

Si el VAN es mayor a cero, es decir positivo, se dice que el proyecto crea riqueza para los inversionistas.

Para hallar el valor presente neto hay que descontar sus flujos de efectivo futuros a una tasa de descuento aceptable, conocida también como costo de de capital; es decir aquella tasa de rendimiento estándar de otros activos de riesgo similar o la dispuesta por el Banco Central. Por ejemplo, si el flujo de efectivo futuro es seguro, entonces la tasa de descuento a que se puede tomar como referencia es la tasa de interés sobre títulos de deuda sin riesgo (por ejemplo: bonos de deuda pública de un país).

Según expertos financieros, los flujos de efectivos se descuentan por 2 motivos:

- Porque un dólar hoy vale más que un dólar mañana (se puede re invertir hoy para empezar a recibir intereses de inmediato).

- Porque un dólar seguro vale más que uno con riesgo.

La fórmula para calcular el VAN es la siguiente:

$VAN = -I_0 + \sum_{t=1}^{n} \frac{F_t}{(1+k)^n}$

$VAN = -i_0 + \frac{F_1}{(1+k)^1} +...+\frac{F_t}{(1+k)^n}$



Donde:

- I₀: inversión inicial.
- Fₜ: flujos de efectivo netos.
- Fₙ: flujos de efectivos netos del período «n».
- k: tasa de descuento o coste de capital.


El modelo que construiremos tiene dos variables sobre las que tenemos que tomar dos decisiones. Una es arbitraria, corresponde al lapso de tiempo durante el que analizaremos la inversión. En general para evitar incertidumbre y tener puntos de vistas comparables, utilizamos **10 años**.

El segundo parámetro es la tasa de interés, que por definición corresponde a períodos del futuro, es decir que aún no está calculada. Esto nos abre la posiblidad de utilizar la estadística para predecirla.




**Inversiones anuales**

Armaremos un vector de inversiones que represente en cada componente la inversión en cada año de vida del proyecto.



```{r}
INVersion <- c(5000,0,0,0,0,0,0,0,0,0)
length(INVersion)
```

como sabemos este vector de inversiones podemos importarlo de una table csv, xls, SAP, e incluso de la Bolda de Valores.

para randomizar este vector lo repetiremos 14 veces a efectos de poder aplicar Montecarlo.

```{r}
INVersion <- c(INVersion,INVersion ,INVersion,INVersion,INVersion,INVersion,INVersion,INVersion,INVersion,INVersion,INVersion,INVersion,INVersion,INVersion)
length(INVersion)
```


Costos operativos

Supondremos que los costos durante los 3 primeros años serán de \$700 y luego de \$1350. Admás de ello tenemos una certeza que la variabilidad entre el año 1 al 3 iniciará en 2% y terminará 4%. En tanto que para el periodo del 4to al 10mo año se invermentará en 0.015%.

Generación de flujo de costos
```{r}
CO <- c(700,700,700,1350,1350,1350,1350,1350,1350,1350)
plot(CO)
```

Intervalo de incertidumbre

- 
```{r}
V4inicial <- 0.04

V1_al_3 <- c(0.02,0.03,0.04)

V4_al_10 <- c(0,0,0,0,0,0)
incremento <- 0.015



for (i in 1:7) {
V4_al_10[i] <- V4inicial *(1+incremento)
  incremento <- incremento + incremento
}

V1_al_3
V4_al_10

 

```

Concatenar dos vectores

```{r}
Noise_CO <- c(V1_al_3 ,V4_al_10)
Noise_CO
plot(Noise_CO, main="incremento de la incertidumbre", ylab= "% de ruido",xlab="año")
```

Como podemos observar en el gráfico tenémos una hipótesis de incremente inicial constante durante los años 1 al 3 y luego suponemos una estabilidad política económica (cambio de gobierno), y luego presagiamos nuevamente inestabilidad sumada a incertidumbre más por desconocimiento del futuro que por falta de certeza de lo que puede ocurrir.  

## Costos Operativos Estocasticos

Generaremos 12 flujos anuales de fondos aleatorios (equivalen a 144 muestras) en los que la incertidumbre será tomada como varianza de los costos esperados para cada año.

```{r}
COAleatorios <- rnorm(144,CO[1:10],Noise_CO[1:10]*10000)
# Flujos recortados para imprimir
COArecortados <- rnorm(144,CO[1:12],Noise_CO[1:12]*10000)
plot(COArecortados,type="l")
```
Repetiremos ahora este trabajo para los ingresos, utilizando la misma incertidumbre.


## Generación de flujo de Ingresos

Nuevamente utilizaremos valores sencillo para familiarizarnos con el método. Recomendamos que estos valores los ajustes con los datos de tu caso particular.
A efectos de ver las posibilidades, agregaremos al comando **plot** que utilizamos antes, una opción que es para trazar una línea (roja) que representa un valor de alguna cantidad que nos interese tener como referencia. Se podría implementar una línea que represente el punto de equilibri, la media de impuestos previstos, o como en este caso, una media de las cuentas a pagar (crédito de proveedores) que deberíamos cubrir y que están conteplandos en los costos que ya hemos calculado.


```{r}
INcome <- c(2700,1700,2700,4350,4350,4350,4350,4350,4350,4350)
plot(INcome,type="l")
# Línea roja indica promedio de cuentas por pagar
abline(a=3000, b=0, col="red", lty=2)
```


## Flujo de Ingresos

Procederemos a generar el ruido de entrada que demanda Montecarlo

```{r}
V4inicial <- 0.045

V1_al_3 <- c(0.025,0.035,0.045)

V4_al_10 <- c(0,0,0,0,0,0)
incremento <- 0.025



for (i in 1:7) {
V4_al_10[i] <- V4inicial *(1+incremento)
  incremento <- incremento + incremento
}

V1_al_3
V4_al_10

 

```
Concatenar dos vectores de ingresos

```{r}
Noise_IN <- c(V1_al_3 ,V4_al_10)
Noise_IN
eje_X <- seq(1:10)
# genereremos una curva de suavizaso exponencial para superponer a los datos
lo <- loess(Noise_IN~eje_X)
plot(Noise_IN, main="incremento de la incertidumbre", ylab= "% de ruido",xlab="año")
lines(predict(lo),col="red")

```

Ejemplo de otro suavizado exponencial

```{r}
scatter.smooth(eje_X, Noise_IN)
```

Banda de flotación al 30%

```{r}

library(ggplot2)
qplot(eje_X,Noise_IN, geom='smooth', span =1.3)
```

## Flujo de Ingresos Estocásticos

```{r}
INAleatorios <- rnorm(144,INcome[1:10],Noise_IN[1:10]*10000)
## Flujo recortado para imprimir
INArecortado <- rnorm(144,INcome[1:12],Noise_IN[1:12]*10000)
plot(INArecortado,type="l", xlab="Año")
```

## Construcción del flujo neto



```{r}
length(INAleatorios)
length(INVersion)
length(COAleatorios)
FF <- INAleatorios -INVersion -COAleatorios
plot(FF)
```

## Cálculo de 12 muestras del VAN

Para realizar esta operación utilizaremos la biblioteca de matemática financiera **FinCal**.

El comando ls("nombre de la biblioteca") nos muestra los nuevos comandos que una biblioteca nos agrega a R. 

```{r}
library(FinCal)
ls("package:FinCal")
```

Esta biblioteca tiene una enorme cantidad de comandos que te serán de suma utilidad, incluso puedes capturar datos en tiempo real de la cotización de bonos y acciones, precio del oro, etc.

En este caso de estudio trabajaremos con la función npv
Utiliza este comando para ver la ayuda de la síntaxis.

```{r}
?npv
```

Por el momento utilizaremos la misma tasa de descuento, aún cuando para realizar el análisis Montecralo también deberíamos aleatorizar este valor.
Supondremos una tasa del 12%.

Construiremos los 12 flujos de fondos

```{r}
CF1 <- FF[1:10]
CF2 <- FF[11:20]
CF3 <- FF[21:30]
CF4 <- FF[31:40]
CF5 <- FF[41:50]
CF5 <- FF[51:60]
CF6 <- FF[61:70]
CF7 <- FF[71:80]
CF8 <- FF[81:90]
CF9 <- FF[91:100]
CF10<- FF[101:110]
CF11<- FF[111:120]
CF12<- FF[121:130]
```


## Calculo de los VANs


```{r}
Vector_VANS <- c(0,0,0,0,0,0,0,0,0,0,0,0)
Vector_VANS[1] <- npv(0.12,CF1)
Vector_VANS[2] <- npv(0.12,CF2)
Vector_VANS[3] <- npv(0.12,CF3)
Vector_VANS[4] <- npv(0.12,CF4)
Vector_VANS[5] <- npv(0.12,CF5)
Vector_VANS[6] <- npv(0.12,CF6)
Vector_VANS[7] <- npv(0.12,CF7)
Vector_VANS[8] <- npv(0.12,CF8)
Vector_VANS[9] <- npv(0.12,CF9)
Vector_VANS[10] <- npv(0.12,CF10)
Vector_VANS[11] <- npv(0.12,CF11)
Vector_VANS[12] <- npv(0.12,CF12)

boxplot(Vector_VANS)
```

## Análisis montecarlo


Calcularemos el VAN promedio del experimento

```{r}
VAN_Promedio <- mean(Vector_VANS)
VAN_Promedio
```

Desvio estandar del VAN

```{r}
VAN_Desvio <- sd(Vector_VANS)
VAN_Desvio
```

# ¿Qué probabilidad tenemos de cubrir la inversión inicial de $50.000 ?

Generaremos una muestra de 500 valores con media VAN_Promedio y Desvio Standard VAN_Desvio

```{r}
muestra <- rnorm(500,VAN_Promedio,VAN_Desvio)
plot(density(muestra))
```

Probabilidad de cubrir la inversión de $84.000

```{r}
(1 - pnorm(8400,VAN_Promedio,VAN_Desvio))*100
```


