Equipo de trabajo:
Luz Elena Castrillón Castro
Erika Cristin Corrales
Luis Felipe Tuberquia
# Análisis basado en proyecciones de BanRep y BBVA
# Ver texto en markdown (sin código)
if (!require(citmre)) install.packages("citmre")
library(citmre)
library(dplyr)
library(lubridate)
library(ggplot2)
trm_diaria <- get_trm_range(start_date = "2015-01-01", end_date = Sys.Date())
trm_mensual <- trm_diaria %>%
mutate(mes = floor_date(fecha, "month")) %>%
group_by(mes) %>%
summarise(TRM = mean(valor, na.rm = TRUE)) %>%
arrange(mes)
trm_mensual <- trm_mensual %>%
mutate(retornos = log(TRM / lag(TRM)))
mu_trm <- mean(trm_mensual$retornos, na.rm = TRUE)
sigma_trm <- sd(trm_mensual$retornos, na.rm = TRUE)
# Gráfico
ggplot(trm_mensual, aes(x = mes, y = TRM)) +
geom_line(color = "darkblue") +
labs(title = "Evolución de la TRM mensual",
x = "Fecha", y = "TRM promedio mensual (COP/USD)") +
theme_minimal()
set.seed(123)
S0 <- tail(trm_mensual$TRM, 1)
mu <- mu_trm
sigma <- sigma_trm
n <- 120
dt <- 1
Z <- rnorm(n)
S <- numeric(n)
S[1] <- S0 * exp((mu - 0.5 * sigma^2) * dt + sigma * sqrt(dt) * Z[1])
for (t in 2:n) {
S[t] <- S[t - 1] * exp((mu - 0.5 * sigma^2) * dt + sigma * sqrt(dt) * Z[t])
}
sim_trm <- data.frame(Mes = 1:n, TRM_simulada = S)
# Gráfico
ggplot(sim_trm, aes(x = Mes, y = TRM_simulada)) +
geom_line(color = "darkblue") +
labs(title = "Simulación de la TRM - BMG (10 años)",
x = "Mes", y = "TRM estimada") +
theme_minimal()
valor_maquinaria_COP <- 300000000
trm_actual <- S0
valor_maquinaria_USD <- valor_maquinaria_COP / trm_actual
credito_usd <- valor_maquinaria_USD * 0.90
plazo_meses <- 120
tasa_anual_usd <- 0.1149
tasa_mensual <- tasa_anual_usd / 12
cuota_usd <- credito_usd * (tasa_mensual * (1 + tasa_mensual)^plazo_meses) /
((1 + tasa_mensual)^plazo_meses - 1)
amortizacion <- data.frame(
Mes = 1:plazo_meses,
Cuota = rep(cuota_usd, plazo_meses),
Interés = NA,
Abono_Capital = NA,
Saldo = NA
)
saldo <- credito_usd
for (t in 1:plazo_meses) {
interes <- saldo * tasa_mensual
abono <- cuota_usd - interes
saldo <- saldo - abono
amortizacion$Interés[t] <- interes
amortizacion$Abono_Capital[t] <- abono
amortizacion$Saldo[t] <- saldo
}
amortizacion$TRM_simulada <- sim_trm$TRM_simulada
amortizacion$Cuota_COP <- amortizacion$Cuota * amortizacion$TRM_simulada
amortizacion$Interes_COP <- amortizacion$Interés * amortizacion$TRM_simulada
amortizacion$Abono_Capital_COP <- amortizacion$Abono_Capital * amortizacion$TRM_simulada
r_COP <- 0.1830
r_USD <- 0.1149
t <- 1 / 12
F0 <- S0 * exp((r_COP - r_USD) * t)
set.seed(456)
mu_futuro <- mu_trm
sigma_futuro <- sigma_trm
n_futuro <- 120
Zf <- rnorm(n_futuro)
F <- numeric(n_futuro)
F[1] <- F0
for (t in 2:n_futuro) {
F[t] <- F[t - 1] * exp((mu_futuro - 0.5 * sigma_futuro^2) + sigma_futuro * Zf[t])
}
sim_futuro <- data.frame(Mes = 1:n_futuro, Precio_Futuro = F)
```r valor_cubierto_COP <- 0.70 * valor_maquinaria_COP valor_cubierto_USD <- valor_cubierto_COP / S0 usd_por_contrato <- 1000 n_contratos <- ceiling(valor_cubierto_USD / usd_por_contrato)
futuros_6_10 <- sim_futuro %>% filter(Mes >= 61) %>% mutate(Diferencia = Precio_Futuro - lag(Precio_Futuro), Liquidacion = Diferencia * usd_por_contrato * n_contratos)
margen_inicial <- 700000 margen_mant <- 500000 futuros_6_10\(Flujo_Margen <- cumsum(replace_na(futuros_6_10\)Liquidacion, 0))