# Configuracion inicial y carga de librerias
knitr::opts_chunk$set(echo = TRUE, message = FALSE, warning = FALSE)
library(readxl)
## Warning: package 'readxl' was built under R version 4.3.3
library(ggplot2)
library(knitr)
# --- Parametros Iniciales ---
monto_cop <- 350000000
trm_hoy <- 3950
monto_usd <- monto_cop / trm_hoy

# Financiamiento (90% del valor total)
cuota_inicial_usd <- monto_usd * 0.10
credito_usd <- monto_usd - cuota_inicial_usd

# Condiciones del Credito
plazo_anos <- 10
n_cuotas <- plazo_anos * 4
tasa_ea_usd <- 0.065
tasa_trimestral <- (1 + tasa_ea_usd)^(1/4) - 1

# Calculo de la cuota trimestral fija
cuota_trim_usd <- credito_usd * (tasa_trimestral / (1 - (1 + tasa_trimestral)^-n_cuotas))

resultados_credito <- data.frame(
  Concepto = c("Inversion Total (USD)", "Credito a Financiar (USD)", "Cuota Trimestral (USD)"),
  Valor = c(round(monto_usd, 2), round(credito_usd, 2), round(cuota_trim_usd, 2))
)

kable(resultados_credito, caption = "Resumen del Credito Externo")
Resumen del Credito Externo
Concepto Valor
Inversion Total (USD) 88607.59
Credito a Financiar (USD) 79746.84
Cuota Trimestral (USD) 2708.14
# Tasas comerciales supuestas (Diferencial de tasas)
tasa_col <- 0.12  # 12% EA en Colombia
tasa_usa <- 0.05  # 5% EA en EE.UU.

# Proyeccion de Precios Forward
anos <- 6:9
precios_fwd <- trm_hoy * ((1 + tasa_col) / (1 + tasa_usa))^anos

# Construccion de la tabla de cobertura
tabla_cobertura <- data.frame(
  Periodo_Anual = anos,
  Tasa_Forward_COP = round(precios_fwd, 2),
  USD_Asegurados = round(cuota_trim_usd * 4 * 0.75, 2)
)

# Costo total asegurado en pesos colombianos
tabla_cobertura$Costo_Asegurado_COP <- round(tabla_cobertura$USD_Asegurados * tabla_cobertura$Tasa_Forward_COP, 0)

kable(tabla_cobertura, caption = "Cronograma de Cobertura (Anos 6-9)")
Cronograma de Cobertura (Anos 6-9)
Periodo_Anual Tasa_Forward_COP USD_Asegurados Costo_Asegurado_COP
6 5817.94 8124.43 47267446
7 6205.81 8124.43 50418669
8 6619.53 8124.43 53779908
9 7060.83 8124.43 57365219
# Se ejecuta el bloque completo para evitar errores de sintaxis en la consola
plot(anos, precios_fwd, type="b", pch=19, col="darkblue",
     main="Estructura de Plazos: Curva de Precios Forward",
     xlab="Años de la Inversión", ylab="Precio Forward (COP)",
     ylim=c(trm_hoy * 0.9, max(precios_fwd) * 1.1))

grid()
abline(h=trm_hoy, col="red", lty=2)

legend("bottomright", 
       legend=c("Precio Forward", "TRM Hoy (Spot)"), 
       col=c("darkblue", "red"), 
       lty=c(1,2), 
       pch=c(19, NA))

# Generar periodos
periodos <- 1:n_cuotas

# Simulación simple de TRM proyectada (solo como ejemplo lineal para el punto 3)
trm_proyectada <- trm_hoy * (1 + 0.015)^periodos # Asumiendo devaluación trimestral del 1.5%

cuotas_cop <- cuota_trim_usd * trm_proyectada

# Esto te permite analizar el "comportamiento del crédito transformado a pesos"
analisis_pesos <- data.frame(
  Trimestre = periodos,
  Cuota_USD = round(cuota_trim_usd, 2),
  TRM_Estimada = round(trm_proyectada, 2),
  Cuota_COP = round(cuotas_cop, 0)
)

# --- Simulación BMG (Punto 4 del Taller) ---

# Parámetros estadísticos (Basados en histórica hipotética o real)
mu <- 0.005  # Retorno esperado mensual
sigma <- 0.04 # Volatilidad mensual (Desviación estándar)
n_sim <- 1000 # Número de simulaciones
t_meses <- 12 # Horizonte a un año

# Simulación BMG con Distribución Normal
set.seed(123)
matriz_normal <- matrix(ncol = n_sim, nrow = t_meses)
for(i in 1:n_sim) {
  retornos <- rnorm(t_meses, mean = mu, sd = sigma)
  matriz_normal[,i] <- trm_hoy * exp(cumsum(retornos))
}

# Simulación con T-Student (Colas pesadas)
# Usamos df = 3 para representar mayor probabilidad de eventos extremos
matriz_t <- matrix(ncol = n_sim, nrow = t_meses)
for(i in 1:n_sim) {
  retornos_t <- rt(t_meses, df = 3) * sigma + mu 
  matriz_t[,i] <- trm_hoy * exp(cumsum(retornos_t))
}

# Visualización de una simulación (Primeros 10 caminos)
matplot(matriz_normal[,1:10], type = "l", lty = 1, 
        main = "Simulación BMG - Trayectorias TRM (Normal)",
        xlab = "Meses", ylab = "TRM Proyectada")

library(readxl)
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.3.3
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(knitr)

trm_xlsx <- read_excel("C:/Analisis/trm.xlsx.xlsx")

trm_xlsx <- trm_xlsx %>%
  mutate(
    Fecha = as.Date(Fecha),
    TRM = as.numeric(TRM)
  ) %>%
  filter(!is.na(TRM)) %>%
  arrange(Fecha)

kable(head(trm_xlsx), caption = "Histórico de TRM cargado para Simulación")
Histórico de TRM cargado para Simulación
Fecha TRM
2011-03-23 1866.34
2011-03-24 1867.74
2011-03-25 1865.11
2011-03-26 1871.37
2011-03-27 1871.37
2011-03-28 1871.37
library(ggplot2)
library(tseries)
## Warning: package 'tseries' was built under R version 4.3.3
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(scales)

# CÁLCULO DE RENDIMIENTOS LOGARÍTMICOS
# Permite comparar variaciones porcentuales

trm_xlsx <- trm_xlsx %>%
  arrange(Fecha) %>%
  mutate(Retorno = log(TRM / lag(TRM))) %>%
  filter(!is.na(Retorno))

# ESTADÍSTICAS DESCRIPTIVAS (Metricas de Riesgo)
mu <- mean(trm_xlsx$Retorno)         # Retorno promedio diario
sigma_diaria <- sd(trm_xlsx$Retorno)  # Volatilidad diaria
sigma_anual <- sigma_diaria * sqrt(252) # Volatilidad anualizada (252 días hábiles)

# VISUALIZACION: EVOLUCION HISTORICA
p1 <- ggplot(trm_xlsx, aes(x = Fecha, y = TRM)) +
  geom_line(color = "darkblue", size = 0.8) +
  labs(title = "Evolución Histórica de la TRM (Colombia)",
       subtitle = paste("Volatilidad Anualizada:", percent(sigma_anual)),
       x = "Año", y = "Pesos (COP)") +
  theme_minimal() +
  scale_y_continuous(labels = comma)
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
# VISUALIZACION: VOLATILIDAD (CLUSTER DE VOLATILIDAD)
p2 <- ggplot(trm_xlsx, aes(x = Fecha, y = Retorno)) +
  geom_line(color = "darkred", alpha = 0.6) +
  labs(title = "Rendimientos Logarítmicos Diarios",
       subtitle = "Visualización de la variabilidad y clusters de riesgo",
       x = "Fecha", y = "Log-Retornos") +
  theme_light()

# Mostrar gráficas
print(p1)

print(p2)

# RESUMEN EJECUTIVO PARA REPORTE
resumen <- data.frame(
  Metrica = c("TRM Actual", "Retorno Promedio Diario", "Volatilidad Diaria", "Volatilidad Anual (252d)"),
  Valor = c(tail(trm_xlsx$TRM, 1), percent(mu, 0.001), percent(sigma_diaria, 0.01), percent(sigma_anual, 0.01))
)

kable(resumen, caption = "Resumen de Métricas Financieras del Activo")
Resumen de Métricas Financieras del Activo
Metrica Valor
TRM Actual 3668.89
Retorno Promedio Diario 0.012%
Volatilidad Diaria 0.62%
Volatilidad Anual (252d) 9.87%
# Caldulos de apoyo para toma de decisiones

trm_cierre <- tail(trm_xlsx$TRM, 1)
valor_fwd_max <- max(precios_fwd)
escenario_riesgo_t <- quantile(matriz_t[t_meses, ], 0.95) # Valor en Riesgo (VaR) al 95%

# Matriz de decision

matriz_resumen <- data.frame(
  Pilar_Estrategico = c(
    "1. Estructura de Capital", "", 
    "2. Analisis de Sensibilidad", "", 
    "3. Gestion de Riesgo (Hedging)", "",
    "4. Diagnostico de Viabilidad"
  ),
  Indicador_Clave = c(
    "Apalancamiento Externo (USD)", 
    "Servicio de Deuda Trimestral",
    "Volatilidad Real vs. Supuesta",
    "Peor Escenario TRM (12 meses)",
    "Eficiencia de Cobertura (Fwd)",
    "Presupuesto Maximo COP (Año 9)",
    "Recomendacion Final"
  ),
  Resultado = c(
    paste("USD", format(round(credito_usd, 0), big.mark = ",")),
    paste("USD", format(round(cuota_trim_usd, 2), big.mark = ",")),
    paste(round(sigma_anual*100, 2), "% (Historica)"),
    paste("$", format(round(escenario_riesgo_t, 0), big.mark = ".")),
    "75% de la Exposicion (Años 6-9)",
    paste("$", format(round(tabla_cobertura$Costo_Asegurado_COP[4], 0), big.mark = ".")),
    "PROCEDER CON COBERTURA"
  ),
  Impacto_en_Decision = c(
    "Exposicion cambiaria directa.",
    "Flujo de caja fijo en USD.",
    "Alta volatilidad: requiere seguro.",
    "Riesgo de cola detectado (T-Student).",
    "Mitigacion de volatilidad extrema.",
    "Costo maximo conocido y acotado.",
    "Proteccion del margen operativo."
  )
)
## Warning in prettyNum(.Internal(format(x, trim, digits, nsmall, width, 3L, :
## 'big.mark' and 'decimal.mark' are both '.', which could be confusing
## Warning in prettyNum(.Internal(format(x, trim, digits, nsmall, width, 3L, :
## 'big.mark' and 'decimal.mark' are both '.', which could be confusing
# 3. Formato de Tabla Profesional
kable(matriz_resumen, 
      align = "llll",
      caption = "MATRIZ DE SOPORTE PARA LA TOMA DE DECISIONES FINANCIERAS (PROYECCION 2026-2036)")
MATRIZ DE SOPORTE PARA LA TOMA DE DECISIONES FINANCIERAS (PROYECCION 2026-2036)
Pilar_Estrategico Indicador_Clave Resultado Impacto_en_Decision
1. Estructura de Capital Apalancamiento Externo (USD) USD 79,747 Exposicion cambiaria directa.
Servicio de Deuda Trimestral USD 2,708.14 Flujo de caja fijo en USD.
2. Analisis de Sensibilidad Volatilidad Real vs. Supuesta 9.87 % (Historica) Alta volatilidad: requiere seguro.
Peor Escenario TRM (12 meses) $ 6.120 Riesgo de cola detectado (T-Student).
3. Gestion de Riesgo (Hedging) Eficiencia de Cobertura (Fwd) 75% de la Exposicion (Años 6-9) Mitigacion de volatilidad extrema.
Presupuesto Maximo COP (Año 9) $ 57.365.219 Costo maximo conocido y acotado.
4. Diagnostico de Viabilidad Recomendacion Final PROCEDER CON COBERTURA Proteccion del margen operativo.
# Analisis conjunto para crédito de maquinaria

knitr::opts_chunk$set(echo = TRUE, message = FALSE, warning = FALSE)
library(readxl)
library(dplyr)
library(ggplot2)
library(knitr)
library(scales)

# Parámetros iniciales
trm_hoy <- 3950
monto_cop <- 350000000
monto_usd <- monto_cop / trm_hoy

# Crédito (90%)
cuota_inicial_usd <- monto_usd * 0.10
credito_usd <- monto_usd - cuota_inicial_usd
tasa_ea_usd <- 0.065
tasa_mensual <- (1 + tasa_ea_usd)^(1/12) - 1
plazo_meses <- 120 # 10 años

# Cuota Fija USD
cuota_usd <- credito_usd * (tasa_mensual / (1 - (1 + tasa_mensual)^-plazo_meses))

resumen_credito <- data.frame(
  Concepto = c("Inversion Total (USD)", "Financiamiento (90% en USD)", "Cuota Mensual (USD)"),
  Valor = c(round(monto_usd, 2), round(credito_usd, 2), round(cuota_usd, 2))
)

kable(resumen_credito, caption = "Punto 2: Resumen del Credito Externo")
Punto 2: Resumen del Credito Externo
Concepto Valor
Inversion Total (USD) 88607.59
Financiamiento (90% en USD) 79746.84
Cuota Mensual (USD) 897.98
meses <- 1:plazo_meses
trm_proy <- trm_hoy * (1 + 0.005)^meses
cuotas_cop <- cuota_usd * trm_proy

plot(meses, cuotas_cop/1e6, type="l", col="darkblue", lwd=2,
     main="Evolucion de la Cuota en Millones de Pesos",
     xlab="Mes", ylab="Millones de COP")
grid()

# Carga y Limpieza
trm_xlsx <- read_excel("C:/Analisis/trm.xlsx.xlsx")
trm_xlsx <- trm_xlsx %>%
  mutate(Fecha = as.Date(Fecha), TRM = as.numeric(TRM)) %>%
  arrange(Fecha) %>%
  mutate(Retorno = log(TRM / lag(TRM))) %>%
  filter(!is.na(Retorno))

# Estadísticas Mensuales
mu_m <- mean(trm_xlsx$Retorno) * 30
sigma_m <- sd(trm_xlsx$Retorno) * sqrt(30)

# Simulación 12 meses
n_sim <- 1000
t_horizonte <- 12
set.seed(123)
sim_normal <- matrix(ncol = n_sim, nrow = t_horizonte)
sim_t <- matrix(ncol = n_sim, nrow = t_horizonte)

for(i in 1:n_sim) {
  sim_normal[,i] <- trm_hoy * exp(cumsum(rnorm(t_horizonte, mu_m, sigma_m)))
  sim_t[,i] <- trm_hoy * exp(cumsum((rt(t_horizonte, df=3) * sigma_m) + mu_m))
}

# Visualización T-Student (Colas Pesadas)
matplot(sim_t[,1:20], type="l", lty=1, 
        main="Trayectorias TRM: Distribucion T-Student",
        xlab="Meses", ylab="TRM Proyectada")

# Matriz de decision estrategica

var_95 <- quantile(sim_t[t_horizonte,], 0.95)
matriz <- data.frame(
  Metrica = c("Volatilidad Anual Real", "Peor Escenario TRM (12m)", "Recomendacion"),
  Resultado = c(percent(sd(trm_xlsx$Retorno)*sqrt(252)), 
                paste("$", round(var_95,0)), 
                "IMPLEMENTAR COBERTURA")
)
kable(matriz, caption = "Conclusion Profesional para Toma de Decisiones")
Conclusion Profesional para Toma de Decisiones
Metrica Resultado
Volatilidad Anual Real 10%
Peor Escenario TRM (12m) $ 5580
Recomendacion IMPLEMENTAR COBERTURA