## Cargando paquete requerido: tinylabels

1.Proceso del crédito

1.1 Análisis Fundamental de la TRM

La Tasa Representativa del Mercado (TRM), que indica el valor del dolar estadounidense frente al peso colombiano, es un indicador clave para la economía del país, ya que afecta el costo de las importaciones, la inflación, la inversión extranjera, entre otros aspectos económicos relevantes. Comprender su dinámica resulta esencial para anticipar escenarios y tomar decisiones tanto a nivel empresarial como de política económica. Durante el año 2024, la TRm mostro una clara tendencia alcista, registrando un promedio anual de COP 4.329 por dólar, lo que represento una depreciación del 15,36% del peso colombiano. Esta evolución se vio influenciada por múltiples factores. En primer lugar, la incertidumbre política interna y la salida de capitales extranjeros afectaron negativamente la percepción de riesgo país. Asimismo, las decisiones de política monetaria de la Reserva Federal de EE. UU, orientadas a combatir la inflación mediante aumentos de las tasas de interés, fortaleciendo el dólar frente a la mayoría de las monedas emergentes, incluido el peso colombiano.

knitr::include_graphics("C:/Users/usuario/Downloads/1.jpeg")

Imagen 1.

knitr::include_graphics("C:/Users/usuario/Downloads/5.jpeg")

Imagen 2.

En agosto de 2025, la inflación anual en Colombia se ubicó en 5,10%, lo que representa un incremento respecto al 4,90% registrado en julio del mismo año. Esta aceleración se debe principalmente al aumento en los precios de alimentos, salud, restaurantes y hoteles, y educación. En respuesta a esta presión inflacionaria, el Banco de la República ha mantenido una política monetaria restrictiva. Aunque en diciembre de 2024 se redujo la tasa de interés en 25 puntos básicos hasta el 9%, esta medida ha permanecido sin cambios en los primeros meses de 2025.

Al analizar los factores que inciden en la TRM, es necesario considerar tanto elementos internos como externos. En el plano internacional, las decisiones de la Reserva Federal continúan teniendo un impacto significativo, ya que el aumento de tasas en EE. UU. atrae capitales hacia ese país, reduciendo la disponibilidad de divisas en economías emergentes como Colombia y, en consecuencia, presionando al alza la TRM. Además, el comportamiento del precio del petróleo, que es uno de los principales productos de exportación de Colombia, influye directamente en el flujo de divisas: cuando los precios del crudo son altos, ingresan más dólares a la economía nacional, lo que tiende a fortalecer el peso. Por el contrario, una caída en los precios puede reducir los ingresos externos y debilitar la moneda local.

knitr::include_graphics("C:/Users/usuario/Downloads/3.jpeg")

Imagen 3.

Internamente, la política monetaria del Banco de la República, el nivel de inflación, la evolución de la cuenta corriente y los flujos de inversión extranjera directa son variables determinantes. Una política fiscal expansiva o un deterioro en la balanza comercial puede reducir la confianza en la economía y aumentar la demanda de dólares, ejerciendo presión sobre la TRM. Asimismo, una disminución en los flujos de inversión extranjera ya sea por motivos de riesgo político o cambios en las condiciones globales, también puede debilitar el peso colombiano.

knitr::include_graphics("C:/Users/usuario/Downloads/4.jpeg")

Imagen 4.

En cuanto a las expectativas para la TRM en el corto y mediano plazo, tanto el Banco de la República como el Ministerio de Hacienda coinciden en proyectar una relativa estabilidad para el cierre de 2025. La primera entidad estima una tasa promedio de COP 4.209, mientras que el Ministerio proyecta un promedio de COP 4.266, diferencias que obedecen a los distintos supuestos sobre los choques externos y el comportamiento de los precios del petróleo. Estas proyecciones indican que, si bien no se espera una depreciación abrupta, sí persiste un entorno de alta sensibilidad ante factores externos.

No obstante, al observar los pronósticos a más largo plazo, como los presentados por Bancolombia y otras entidades financieras, se proyecta una tendencia al alza moderada en los próximos 12 a 18 meses, alcanzando un techo cercano a los COP 4.700 por dólar. Esta evolución responde a la posibilidad de que la Reserva Federal de Estados Unidos mantenga sus tasas elevadas durante más tiempo, a las incertidumbres fiscales locales, y a un crecimiento económico que, aunque positivo, sigue siendo insuficiente para generar flujos de divisas robustos.

knitr::include_graphics("C:/Users/usuario/Downloads/2.jpeg")

Imagen 5.

Además, es importante tener en cuenta que la depreciación del peso frente al dólar tiene un efecto directo sobre la inflación, especialmente en un país con una alta proporción de bienes importados. Este fenómeno, conocido como pass-through cambiario, implica que una TRM elevada tiende a traducirse rápidamente en mayores precios para los consumidores, lo que refuerza aún más las presiones inflacionarias.

Por otra parte, desde una perspectiva teórica, la paridad del poder adquisitivo (PPA) sugiere que, si la TRM se mantiene por encima de su valor de equilibrio a largo plazo, podría ajustarse a la baja eventualmente. Sin embargo, este ajuste depende de múltiples condiciones estructurales, entre ellas el diferencial de inflación entre Colombia y EE. UU., la competitividad de las exportaciones colombianas y la estabilidad política.

En este escenario, si bien las proyecciones oficiales indican una relativa estabilidad en torno a los COP 4.200 - 4.300, la posibilidad de alcanzar los COP 4.700 no debe descartarse, especialmente si se presentan choques externos adversos, caídas en el precio del petróleo o deterioro en la percepción de riesgo del país.

knitr::include_graphics("C:/Users/usuario/Downloads/6.jpeg")

Imagen 6.

1. 2 Y 1.3 Calcule los retornos mensuales y la desviación estándar mensual de la TRM histórica

options(warn = -1)

##install.packages("readr")
##install.packages("ggplot2")
#install.packages("dplyr")

library(readr)
library(ggplot2) 

#Calculo de los Retornos 

TRM <- read.csv("C:/Users/usuario/Downloads/TRM.CSV", sep = ";", dec = ",", header = TRUE)

TRM$retorno <- c(NA, diff(log(TRM$TRM)))

TRM$retorno[is.na(TRM$retorno)] <- 0

delta<-12

#Promedio 

promedio <- exp(mean(TRM$retorno, na.rm = TRUE) * delta) - 1

#Desviacion estandar

var_poblacional <- sum((TRM$retorno - mean(TRM$retorno))^2) / length(TRM$retorno)

desv<-sqrt(var_poblacional*delta)

#Simulacion BMG mensuales de la TRM

S0 <- tail(TRM$TRM, 1) 

dt<-1/delta

n<-120

simulaciones<-10000

set.seed(123)
bmg <- matrix(0, nrow = n, ncol = simulaciones)
for (j in 1:simulaciones) {
  bmg[1, j] <- S0 * exp((promedio - 0.5 * desv^2)*dt + desv * sqrt(dt)*rnorm(1))
  for (i in 2:n) {
    bmg[i, j] <- bmg [i - 1, j] * exp((promedio - 0.5 * desv^2)*dt + desv * sqrt(dt)*rnorm(1))
  }
}

# Grafica de simulaciones
matplot(bmg, type = "l", lty = 1, col = rainbow(simulaciones),
        main = "Simulacion BMG de la TRM", xlab = "Mes", ylab = "TRM simulada")

Identificar las trayectorias mas maxima, minima y promedio

valores_finales <- bmg[n, ]

# 

idx_max <- which.max(valores_finales)
idx_min <- which.min(valores_finales)

# Trayectorias completas
trayectoria_max <- bmg[, idx_max]
trayectoria_min <- bmg[, idx_min]

# Trayectoria promedio: la que mas se parece al promedio fila a fila
promedio_path <- rowMeans(bmg)   # promedio en cada tiempo
distancias <- colSums((bmg - promedio_path)^2)  # distancia cuadratica
idx_promedio <- which.min(distancias)
trayectoria_prom <- bmg[, idx_promedio]

# --- Graficar trayectorias representativas ---
matplot(bmg, type = "l", lty = 1, col = "grey80",
        main = "Trayectorias representativas de la TRM simulada",
        xlab = "Mes", ylab = "TRM simulada")

lines(trayectoria_max, col = "blue", lwd = 2)
lines(trayectoria_min, col = "red", lwd = 2)
lines(trayectoria_prom, col = "darkgreen", lwd = 2)

legend("topleft",
       legend = c("Maxima", "Minima", "Promedio"),
       col = c("blue", "red", "darkgreen"),
       lwd = 2, bty = "n")

Con las trayectorias ya identificadas podemos continuar con la simulación de los créditos en TRM.

1.4.Establezca una simulacion de credito de la maquinaria con la tasa extranjera, con pago de inicial del 10% del credito. (En dolares)


``` r
#Parametros iniciales
nper<-120
monto_pesos<-500000000
monto_usd<-monto_pesos/S0
tasa<-0.065/12 # tasa nominal anual
inicial<-monto_usd*0.10
saldo<-monto_usd-inicial

# Calculo de la cuota mensual (metodo frances)
cuota <- saldo * (tasa * (1 + tasa)^nper) / ((1 + tasa)^nper - 1)

# Inicializacion de la tabla de amortizacion
amortizacion <- data.frame(
  Mes = 1:nper,
  Cuota = rep(cuota, nper),
  Interes = NA,
  Abono = NA,
  Saldo = NA
)

# Calculo mes a mes
saldo_actual <- saldo
for (i in 1:nper) {
  interes <- saldo_actual * tasa
  abono <- cuota - interes
  saldo_actual <- saldo_actual - abono
  
  amortizacion$Interes[i] <- round(interes, 2)
  amortizacion$Abono[i] <- round(abono, 2)
  amortizacion$Saldo[i] <- round(saldo_actual, 2)
}

# Mostrar la tabla
###print(amortizacion)

head(amortizacion, 12) #solo los doce primeros meses para que no sea tan extenso el archivo
##    Mes    Cuota Interes  Abono    Saldo
## 1    1 1308.076  624.00 684.07 114516.2
## 2    2 1308.076  620.30 687.78 113828.4
## 3    3 1308.076  616.57 691.51 113136.9
## 4    4 1308.076  612.83 695.25 112441.7
## 5    5 1308.076  609.06 699.02 111742.7
## 6    6 1308.076  605.27 702.80 111039.9
## 7    7 1308.076  601.47 706.61 110333.2
## 8    8 1308.076  597.64 710.44 109622.8
## 9    9 1308.076  593.79 714.29 108908.5
## 10  10 1308.076  589.92 718.15 108190.4
## 11  11 1308.076  586.03 722.04 107468.3
## 12  12 1308.076  582.12 725.96 106742.4

1.5 Amortizacion en COP siguiendo las 3 trayectorias anteriormente escogidas

amortizacion_cop <- data.frame(
  Mes = 1:nper,
  
  # Trayectoria maxima
  Interes_Max = round(amortizacion$Interes * trayectoria_max[1:nper], 2),
  Abono_Max   = round(amortizacion$Abono   * trayectoria_max[1:nper], 2),
  Cuota_Max   = round(amortizacion$Cuota   * trayectoria_max[1:nper], 2),
  Saldo_Max   = round(amortizacion$Saldo   * trayectoria_max[1:nper], 2),
  
  # Trayectoria minima
  Interes_Min = round(amortizacion$Interes * trayectoria_min[1:nper], 2),
  Abono_Min   = round(amortizacion$Abono   * trayectoria_min[1:nper], 2),
  Cuota_Min   = round(amortizacion$Cuota   * trayectoria_min[1:nper], 2),
  Saldo_Min   = round(amortizacion$Saldo   * trayectoria_min[1:nper], 2),
  
  # Trayectoria promedio
  Interes_Prom = round(amortizacion$Interes * trayectoria_prom[1:nper], 2),
  Abono_Prom   = round(amortizacion$Abono   * trayectoria_prom[1:nper], 2),
  Cuota_Prom   = round(amortizacion$Cuota   * trayectoria_prom[1:nper], 2),
  Saldo_Prom   = round(amortizacion$Saldo   * trayectoria_prom[1:nper], 2)
)

# --- Resultados ---
cat("Tabla de amortizacion en USD:\n")
## Tabla de amortizacion en USD:
print(head(amortizacion, 12))     # primeros 12 meses en USD
##    Mes    Cuota Interes  Abono    Saldo
## 1    1 1308.076  624.00 684.07 114516.2
## 2    2 1308.076  620.30 687.78 113828.4
## 3    3 1308.076  616.57 691.51 113136.9
## 4    4 1308.076  612.83 695.25 112441.7
## 5    5 1308.076  609.06 699.02 111742.7
## 6    6 1308.076  605.27 702.80 111039.9
## 7    7 1308.076  601.47 706.61 110333.2
## 8    8 1308.076  597.64 710.44 109622.8
## 9    9 1308.076  593.79 714.29 108908.5
## 10  10 1308.076  589.92 718.15 108190.4
## 11  11 1308.076  586.03 722.04 107468.3
## 12  12 1308.076  582.12 725.96 106742.4
cat("\nTabla de amortizacion en COP (3 trayectorias):\n")
## 
## Tabla de amortizacion en COP (3 trayectorias):
print(head(amortizacion_cop, 12)) # primeros 12 meses en COP
##    Mes Interes_Max Abono_Max Cuota_Max Saldo_Max Interes_Min Abono_Min
## 1    1     2429376   2663243   5092642 445838111     2414169   2646571
## 2    2     2413516   2676073   5089573 442893305     2394305   2654772
## 3    3     2388147   2678410   5066542 438210785     2369315   2657290
## 4    4     2374425   2693764   5068173 435658102     2319413   2631353
## 5    5     2347413   2694132   5041530 430673740     2279730   2616453
## 6    6     2363340   2744156   5107520 433566790     2244553   2606228
## 7    7     2317825   2722993   5040803 425180304     2208546   2594611
## 8    8     2311145   2747356   5058487 423924557     2211421   2628810
## 9    9     2296644   2762710   5059338 421233217     2201536   2648302
## 10  10     2285953   2782847   5068823 419240095     2195191   2672356
## 11  11     2267738   2794051   5061812 415866085     2174922   2679693
## 12  12     2272644   2834208   5106837 416731037     2163973   2698683
##    Cuota_Min Saldo_Min Interes_Prom Abono_Prom Cuota_Prom Saldo_Prom
## 1    5060763 443047249      2439053    2673851    5112928  447614058
## 2    5049063 439368117      2432925    2697593    5130502  446454988
## 3    5026590 434755327      2411058    2704106    5115148  442414796
## 4    4950751 425564554      2415112    2739922    5155019  443123280
## 5    4896168 418256184      2405384    2760666    5166034  441309534
## 6    4850804 411774668      2377105    2760139    5137268  436091989
## 7    4803143 405134227      2342925    2752480    5095390  429784581
## 8    4840216 405632496      2345336    2788000    5133321  430196035
## 9    4849823 403789299      2317599    2787918    5105502  425076724
## 10   4867569 402594450      2307068    2808552    5115644  423112603
## 11   4854638 398845170      2275824    2804014    5079862  417349030
## 12   4862641 396804060      2278740    2841809    5120533  417848716

Análisis

Dado que el crédito fue otorgado en dólares, cualquier variación en la TRM afecta directamente el valor en pesos de la deuda. Las tablas del documento presentan tres trayectorias simuladas de la TRM: una alta, una baja y una intermedia. En el escenario de TRM alta, el peso se deprecia frente al dólar, lo que incrementa el valor en pesos de las cuotas, los intereses y el saldo pendiente. Esto representa un riesgo financiero para el inversionista, ya que el costo total del crédito se eleva y puede comprometer la rentabilidad del proyecto. En contraste, la trayectoria baja refleja una apreciación del peso, lo que reduce el valor en pesos de la deuda y facilita el cumplimiento de las obligaciones crediticias.

Para un inversionista que recibió un préstamo equivalente a 500 millones de pesos, estas simulaciones permiten anticipar el impacto que tendría la volatilidad cambiaria sobre su flujo de caja. La trayectoria intermedia ofrece un punto de referencia más estable, útil para la planificación financiera. Evaluar estos tres escenarios es fundamental para tomar decisiones estratégicas, como implementar coberturas cambiarias, ajustar el modelo de negocio o renegociar condiciones crediticias. En resumen, el comportamiento de la TRM tiene un efecto directo sobre la carga financiera del crédito, y su análisis permite gestionar mejor el riesgo asociado a la deuda en moneda extranjera.

2. Proceso de futuros

2.1 Se tomó como referencia los futuros de la TRM, obtenidos por medio de la bolsa de valores de colmbia (BVC)

2.2 Simulación de BGM de comportamiento del futuro de la TRM

FRO <- read.csv("FUTUROS.csv", sep = ";", dec = ",", header = TRUE)
FRO$retorno <- c(NA, diff(log(FRO$trm)))
FRO$retorno[is.na(FRO$retorno)] <- 0

tasacol <- (1 + 0.11)^(1/12) - 1

delta<-12

#Promedio 

promediofro<- exp(mean(FRO$retorno, na.rm = TRUE) * delta) - 1

#Desviacion estandar

var_poblacionalfro <- sum((FRO$retorno - mean(FRO$retorno))^2) / length(FRO$retorno)

desvfro<-sqrt(var_poblacionalfro*delta)

#Realice simulacion BMG mensuales del futuro de la TRM

FO<- tail(FRO$trm, 1) 
F70 <- FO * ((1 + tasacol) / (1 + tasa)) # esta es la tasa como si el periodo 70 fuera el primero
F70_1 <- FO * (((1 + tasacol) / (1 + tasa))^(70/120)) # esta sabiendo que estamos en el periodo 70

dt<-1/delta

nfro<-48

simulacionesfro<-10000

set.seed(123)
bmgfro <- matrix(0, nrow = nfro, ncol = simulacionesfro)
for (j in 1:simulacionesfro) {
  bmgfro[1, j] <- F70_1 * exp((promediofro - 0.5 * desvfro^2)*dt + desvfro * sqrt(dt)*rnorm(1))
  for (i in 2:nfro) {
    bmgfro[i, j] <- bmg [i - 1, j] * exp((promediofro - 0.5 * desvfro^2)*dt + desvfro * sqrt(dt)*rnorm(1))
  }
}

# Graficar simulaciones
matplot(bmgfro, type = "l", lty = 1, col = rainbow(simulacionesfro),
        main = "Simulacion BMG de futuros de la TRM", xlab = "Mes", ylab = "FRO TRM simulada")

Identificar las trayectorias, altas , medias y bajas

valores_finalesfro <- bmgfro[nfro, ]

# indices de la trayectoria mas alta y mas baja
idx_maxfro <- which.max(valores_finalesfro)
idx_minfro <- which.min(valores_finalesfro)

# Trayectorias completas
trayectoria_maxfro <- bmgfro[, idx_maxfro]
trayectoria_minfro <- bmgfro[, idx_minfro]

# Trayectoria promedio: la que mas se parece al promedio fila a fila
promedio_pathfro <- rowMeans(bmgfro)   # promedio en cada tiempo
distanciasfro <- colSums((bmgfro - promedio_pathfro)^2)  # distancia cuadratica
idx_promediofro <- which.min(distanciasfro)
trayectoria_promfro <- bmgfro[, idx_promediofro]

# --- Graficar trayectorias representativas ---
matplot(bmgfro, type = "l", lty = 1, col = "grey80",
        main = "Trayectorias Futuro TRM simulada",
        xlab = "Mes", ylab = "TRM simulada")

lines(trayectoria_maxfro, col = "blue", lwd = 2)
lines(trayectoria_minfro, col = "red", lwd = 2)
lines(trayectoria_promfro, col = "darkgreen", lwd = 2)

legend("topleft",
       legend = c("Maxima", "Minima", "Promedio"),
       col = c("blue", "red", "darkgreen"),
       lwd = 2, bty = "n")

2.3 Establezca los criterios de exposicion total, margen inicial, margen de mantenimiento según la informacion de la BVC.

Precio_inicial<-FO
garantia<- 6.3/100
valorcontrato<-50000
nrocontratos<-2 
expototal<-valorcontrato*Precio_inicial*nrocontratos
garantia_inicia<-expototal*garantia
margen_mantenimiento<-garantia_inicia*0.5

Trayectoria maxima:

modelo AR(1) para establecer correctamente el margen, se hace un modelo para cada trayectoria, máxima, mínima y promedio.

if (!require(forecast)) install.packages("forecast")
## Cargando paquete requerido: forecast
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(forecast)

# Ajustar modelo AR(1)
modelo_ar1 <- Arima(trayectoria_maxfro, order = c(1, 0, 0))

# Mostrar coeficientes
coeficientes <- modelo_ar1$coef
print(coeficientes)
##         ar1   intercept 
##    0.993402 4740.530179
# Extraer beta (coeficiente AR1)
beta <- coeficientes["ar1"]
alpha <- coeficientes["intercept"]

cat("Beta estimado:", round(beta, 4), "\n")
## Beta estimado: 0.9934
cat("Alpha estimado:", round(alpha, 2), "\n")
## Alpha estimado: 4740.53

2.4 Rollover cada 3 meses, y analizando si se cambia de posición, o se continua con la que esta actualmente. También se indica la posición largo o corto.

# Parametros base
meses <- 48
trimestres <- ceiling(meses / 3)

# Simulacion de TRM mensual (puedes reemplazar con datos reales)
TRMFROMAX <- trayectoria_maxfro

# Modelo AR(1) calibrado

epsilon <- rnorm(meses, mean = 0, sd = 100)

# Parametros del contrato
valorcontrato <- 50000
nrocontratos <- 2
garantia <- 6.3 / 100

# Inicializar vectores
Precio_inicial <- numeric(meses)
expototal <- numeric(meses)
garantia_inicia <- numeric(meses)
margen_requerido <- numeric(meses)
margen_mantenimiento <- numeric(meses)
margen_call <- numeric(meses)
ajuste_posicion <- numeric(meses)
posicion <- character(meses)

# Simulacion mensual con rollover cada 3 meses
for (t in 1:meses) {
  
  # --- Apertura de trimestre (mes 1, 4, 7, ...) ---
  if (t %% 3 == 1) {
    Precio_inicial[t] <- TRMFROMAX[t]
    
    # Definir posicion según la variacion TRM del trimestre anterior
    if (t > 3) {
      delta_trm <- TRMFROMAX[t] - TRMFROMAX[t - 3]
      posicion[t] <- ifelse(delta_trm > 0, "Largo", "Corto")
    } else {
      posicion[t] <- "Largo"  # posicion inicial
    }
    
  # --- Meses intermedios (2, 3, 5, 6, ...) ---
  } else {
    Precio_inicial[t] <- Precio_inicial[t - 1]
    posicion[t] <- posicion[t - 1]
  }
  
  # --- Exposicion y garantias ---
  expototal[t] <- valorcontrato * Precio_inicial[t] * nrocontratos
  garantia_inicia[t] <- expototal[t] * garantia
  margen_requerido[t] <- garantia_inicia[t] * 0.5
  
  # Modelo AR(1) para margen de mantenimiento
  if (t == 1) {
    margen_mantenimiento[t] <- margen_requerido[t]
  } else {
    margen_mantenimiento[t] <- alpha + beta * margen_mantenimiento[t - 1] + epsilon[t]
  }
  
  # Margen call
  margen_call[t] <- ifelse(margen_mantenimiento[t] < margen_requerido[t],
                           margen_requerido[t] - margen_mantenimiento[t],
                           0)
  
  # --- Liquidacion de posicion al cierre de trimestre (mes 3, 6, 9, ...) ---
  if (t %% 3 == 0) {
    delta_trm <- TRMFROMAX[t] - TRMFROMAX[t - 3]
    ajuste <- delta_trm * valorcontrato * nrocontratos
    ajuste_posicion[t] <- ifelse(posicion[t] == "Largo", ajuste, -ajuste)
  } else {
    ajuste_posicion[t] <- 0
  }
}

tabla <- data.frame(
  Mes = 1:meses,
  TRM = TRMFROMAX,
  Precio_inicial,
  Posicion = posicion,
  Exposicion_Total = expototal,
  Garantia_Inicial = garantia_inicia,
  Margen_Requerido = margen_requerido,
  Margen_Mantenimiento = margen_mantenimiento,
  Margen_Call = margen_call,
  Ajuste_Posicion = ajuste_posicion
)

# Tabla solo con cierres trimestrales
tabla_trimestre <- tabla[tabla$Mes %% 3 == 0, ]

# Mostrar tablas
print(tabla)
##    Mes      TRM Precio_inicial Posicion Exposicion_Total Garantia_Inicial
## 1    1 3801.851       3801.851    Largo        380185135         23951664
## 2    2 3843.309       3801.851    Largo        380185135         23951664
## 3    3 3849.365       3801.851    Largo        380185135         23951664
## 4    4 3919.534       3919.534    Largo        391953417         24693065
## 5    5 4001.657       3919.534    Largo        391953417         24693065
## 6    6 4012.234       3919.534    Largo        391953417         24693065
## 7    7 4003.674       4003.674    Largo        400367430         25223148
## 8    8 3931.259       4003.674    Largo        400367430         25223148
## 9    9 3922.206       4003.674    Largo        400367430         25223148
## 10  10 3909.008       3909.008    Corto        390900753         24626747
## 11  11 3963.505       3909.008    Corto        390900753         24626747
## 12  12 4006.437       3909.008    Corto        390900753         24626747
## 13  13 3957.214       3957.214    Largo        395721365         24930446
## 14  14 3935.144       3957.214    Largo        395721365         24930446
## 15  15 3994.214       3957.214    Largo        395721365         24930446
## 16  16 3874.905       3874.905    Corto        387490527         24411903
## 17  17 4013.811       3874.905    Corto        387490527         24411903
## 18  18 4007.189       3874.905    Corto        387490527         24411903
## 19  19 4013.204       4013.204    Largo        401320395         25283185
## 20  20 3987.282       4013.204    Largo        401320395         25283185
## 21  21 4011.780       4013.204    Largo        401320395         25283185
## 22  22 3927.885       3927.885    Corto        392788517         24745677
## 23  23 4022.001       3927.885    Corto        392788517         24745677
## 24  24 4022.496       3927.885    Corto        392788517         24745677
## 25  25 4052.531       4052.531    Largo        405253125         25530947
## 26  26 3964.722       4052.531    Largo        405253125         25530947
## 27  27 3992.580       4052.531    Largo        405253125         25530947
## 28  28 4074.015       4074.015    Largo        407401474         25666293
## 29  29 4086.282       4074.015    Largo        407401474         25666293
## 30  30 3894.981       4074.015    Largo        407401474         25666293
## 31  31 4144.803       4144.803    Largo        414480330         26112261
## 32  32 4042.830       4144.803    Largo        414480330         26112261
## 33  33 4273.298       4144.803    Largo        414480330         26112261
## 34  34 4267.208       4267.208    Largo        426720835         26883413
## 35  35 4305.990       4267.208    Largo        426720835         26883413
## 36  36 4336.235       4267.208    Largo        426720835         26883413
## 37  37 4341.476       4341.476    Largo        434147607         27351299
## 38  38 4346.412       4341.476    Largo        434147607         27351299
## 39  39 4468.316       4341.476    Largo        434147607         27351299
## 40  40 4426.542       4426.542    Largo        442654192         27887214
## 41  41 4337.244       4426.542    Largo        442654192         27887214
## 42  42 4409.536       4426.542    Largo        442654192         27887214
## 43  43 4471.232       4471.232    Largo        447123169         28168760
## 44  44 4534.622       4471.232    Largo        447123169         28168760
## 45  45 4602.831       4471.232    Largo        447123169         28168760
## 46  46 4638.595       4638.595    Largo        463859522         29223150
## 47  47 4623.050       4638.595    Largo        463859522         29223150
## 48  48 4698.691       4638.595    Largo        463859522         29223150
##    Margen_Requerido Margen_Mantenimiento Margen_Call Ajuste_Posicion
## 1          11975832             11975832        0.00               0
## 2          11975832             11901626    74205.37               0
## 3          11975832             11827779   148052.40              NA
## 4          12346533             11754565   591967.50               0
## 5          12346533             11681886   664646.81               0
## 6          12346533             11609762   736770.66        16286880
## 7          12611574             11537870  1073703.85               0
## 8          12611574             11466330  1145243.63               0
## 9          12611574             11395309  1216264.63        -9002801
## 10         12313374             11324994   988380.13               0
## 11         12313374             11254953  1058420.82               0
## 12         12313374             11185407  1127966.29        -8423071
## 13         12465223             11116452  1348771.16               0
## 14         12465223             11047966  1417257.03               0
## 15         12465223             10979704  1485518.52        -1222297
## 16         12205952             10911881  1294070.58               0
## 17         12205952             10844506  1361445.45               0
## 18         12205952             10777653  1428298.67        -1297566
## 19         12641592             10711196  1930396.12               0
## 20         12641592             10645205  1996387.51               0
## 21         12641592             10579827  2061765.32          459080
## 22         12372838             10514877  1857960.89               0
## 23         12372838             10450111  1922727.29               0
## 24         12372838             10385900  1986938.31        -1071566
## 25         12765473             10322175  2443298.79               0
## 26         12765473             10258879  2506594.75               0
## 27         12765473             10196038  2569435.24        -2991597
## 28         12833146             10133593  2699553.84               0
## 29         12833146             10071569  2761577.77               0
## 30         12833146             10009800  2823346.39        -9759847
## 31         13056130              9948470  3107660.71               0
## 32         13056130              9887480  3168650.13               0
## 33         13056130              9826858  3229272.73        37831676
## 34         13441706              9766741  3674964.90               0
## 35         13441706              9706962  3734744.05               0
## 36         13441706              9647534  3794172.21         6293733
## 37         13675650              9588612  4087037.24               0
## 38         13675650              9530044  4145605.16               0
## 39         13675650              9472178  4203471.66        13208061
## 40         13943607              9414378  4529229.31               0
## 41         13943607              9357138  4586469.13               0
## 42         13943607              9300286  4643320.63        -5878021
## 43         14084380              9243552  4840827.53               0
## 44         14084380              9187412  4896967.97               0
## 45         14084380              9131466  4952913.81        19329482
## 46         14611575              9075805  5535769.90               0
## 47         14611575              9020658  5590916.51               0
## 48         14611575              8965871  5645704.06         9586008
print(tabla_trimestre)
##    Mes      TRM Precio_inicial Posicion Exposicion_Total Garantia_Inicial
## 3    3 3849.365       3801.851    Largo        380185135         23951664
## 6    6 4012.234       3919.534    Largo        391953417         24693065
## 9    9 3922.206       4003.674    Largo        400367430         25223148
## 12  12 4006.437       3909.008    Corto        390900753         24626747
## 15  15 3994.214       3957.214    Largo        395721365         24930446
## 18  18 4007.189       3874.905    Corto        387490527         24411903
## 21  21 4011.780       4013.204    Largo        401320395         25283185
## 24  24 4022.496       3927.885    Corto        392788517         24745677
## 27  27 3992.580       4052.531    Largo        405253125         25530947
## 30  30 3894.981       4074.015    Largo        407401474         25666293
## 33  33 4273.298       4144.803    Largo        414480330         26112261
## 36  36 4336.235       4267.208    Largo        426720835         26883413
## 39  39 4468.316       4341.476    Largo        434147607         27351299
## 42  42 4409.536       4426.542    Largo        442654192         27887214
## 45  45 4602.831       4471.232    Largo        447123169         28168760
## 48  48 4698.691       4638.595    Largo        463859522         29223150
##    Margen_Requerido Margen_Mantenimiento Margen_Call Ajuste_Posicion
## 3          11975832             11827779    148052.4              NA
## 6          12346533             11609762    736770.7        16286880
## 9          12611574             11395309   1216264.6        -9002801
## 12         12313374             11185407   1127966.3        -8423071
## 15         12465223             10979704   1485518.5        -1222297
## 18         12205952             10777653   1428298.7        -1297566
## 21         12641592             10579827   2061765.3          459080
## 24         12372838             10385900   1986938.3        -1071566
## 27         12765473             10196038   2569435.2        -2991597
## 30         12833146             10009800   2823346.4        -9759847
## 33         13056130              9826858   3229272.7        37831676
## 36         13441706              9647534   3794172.2         6293733
## 39         13675650              9472178   4203471.7        13208061
## 42         13943607              9300286   4643320.6        -5878021
## 45         14084380              9131466   4952913.8        19329482
## 48         14611575              8965871   5645704.1         9586008
# ------------------------------
# GRAFICAS
# ------------------------------
library(ggplot2)

# Exposicion
ggplot(tabla, aes(x = Mes, y = Exposicion_Total)) +
  geom_line(color = "blue", size = 1.2) +
  geom_point() +
  theme_minimal() +
  labs(title = "Exposicion Total", y = "USD", x = "Mes")

# Margenes
ggplot(tabla, aes(x = Mes)) +
  geom_line(aes(y = Margen_Requerido, color = "Requerido"), size = 1) +
  geom_line(aes(y = Margen_Mantenimiento, color = "Mantenimiento"), size = 1) +
  geom_line(aes(y = Margen_Call, color = "Call"), size = 1) +
  theme_minimal() +
  labs(title = "Margenes", y = "USD", x = "Mes") +
  scale_color_manual(values = c("Requerido" = "red", "Mantenimiento" = "green", "Call" = "orange"))

# Ajustes de posicion
ggplot(tabla, aes(x = Mes, y = Ajuste_Posicion)) +
  geom_bar(stat = "identity", fill = "purple", alpha = 0.7) +
  theme_minimal() +
  labs(title = "Ajustes de Posicion (cierres trimestrales)", y = "USD", x = "Mes")

Realizamos el mismo proceso pero para la trayectoria mínima.

modelo AR(1)

# Ajustar modelo AR(1)
modelo_ar2 <- Arima(trayectoria_minfro, order = c(1, 0, 0))

# Mostrar coeficientes
coeficientes2 <- modelo_ar2$coef
print(coeficientes2)
##          ar1    intercept 
##    0.9692875 3532.1832673
# Extraer beta (coeficiente AR2)
beta2 <- coeficientes2["ar1"]
alpha2 <- coeficientes["intercept"]

cat("Beta estimado:", round(beta2, 4), "\n")
## Beta estimado: 0.9693
cat("Alpha estimado:", round(alpha2, 2), "\n")
## Alpha estimado: 4740.53
summary(modelo_ar2)
## Series: trayectoria_minfro 
## ARIMA(1,0,0) with non-zero mean 
## 
## Coefficients:
##          ar1       mean
##       0.9693  3532.1833
## s.e.  0.0321   204.5069
## 
## sigma^2 = 4557:  log likelihood = -270.68
## AIC=547.35   AICc=547.9   BIC=552.97
## 
## Training set error measures:
##                     ME     RMSE      MAE        MPE     MAPE      MASE
## Training set -11.30344 66.08549 53.05754 -0.3536556 1.494408 0.9960956
##                    ACF1
## Training set -0.3204647
# Parametros base
meses <- 48
trimestres <- ceiling(meses / 3)

# Simulacion de TRM mensual (puedes reemplazar con datos reales)
TRMFROMIN <- trayectoria_min

# Modelo AR(1) calibrado

epsilon2 <- rnorm(meses, mean = 0, sd = 100)

# Parametros del contrato
valorcontrato <- 50000
nrocontratos <- 2
garantia <- 6.3 / 100

# Inicializar vectores
Precio_inicial <- numeric(meses)
expototal <- numeric(meses)
garantia_inicia <- numeric(meses)
margen_requerido <- numeric(meses)
margen_mantenimiento2 <- numeric(meses)
margen_call <- numeric(meses)
ajuste_posicion2 <- numeric(meses)
posicion<- character(meses)

# Simulacion mensual con rollover cada 3 meses
for (t in 1:meses) {
  
  # --- Apertura de trimestre (mes 1, 4, 7, ...) ---
  if (t %% 3 == 1) {
    Precio_inicial[t] <- TRMFROMIN[t]
    
    # Definir posicion según la variacion TRM del trimestre anterior
    if (t > 3) {
      delta_trm <- TRMFROMIN[t] - TRMFROMIN[t - 3]
      posicion[t] <- ifelse(delta_trm > 0, "Largo", "Corto")
    } else {
      posicion[t] <- "Largo"  # posicion inicial
    }
    
  # --- Meses intermedios (2, 3, 5, 6, ...) ---
  } else {
    Precio_inicial[t] <- Precio_inicial[t - 1]
    posicion[t] <- posicion[t - 1]
  }
  
  # --- Exposicion y garantias ---
  expototal[t] <- valorcontrato * Precio_inicial[t] * nrocontratos
  garantia_inicia[t] <- expototal[t] * garantia
  margen_requerido[t] <- garantia_inicia[t] * 0.5
  
  # Modelo AR(2) para margen de mantenimiento
  if (t == 1) {
    margen_mantenimiento2[t] <- margen_requerido[t]
  } else {
    margen_mantenimiento2[t] <- alpha2 + beta2 * margen_mantenimiento2[t - 1] + epsilon2[t]
  }
  
  # Margen call
  margen_call[t] <- ifelse(margen_mantenimiento2[t] < margen_requerido[t],
                           margen_requerido[t] - margen_mantenimiento2[t],
                           0)
  
  # --- Liquidacion de posicion al cierre de trimestre (mes 3, 6, 9, ...) ---
  if (t %% 3 == 0) {
    delta_trm <- TRMFROMIN[t] - TRMFROMIN[t - 3]
    ajuste <- delta_trm * valorcontrato * nrocontratos
    ajuste_posicion2[t] <- ifelse(posicion[t] == "Largo", ajuste, -ajuste)
  } else {
    ajuste_posicion2[t] <- 0
  }
}

tabla2 <- data.frame(
  Mes = 1:meses,
  TRM = TRMFROMIN[1:meses],
  Precio_inicial,
  Posicion = posicion,
  Exposicion_Total = expototal,
  Garantia_Inicial = garantia_inicia,
  Margen_Requerido = margen_requerido,
  Margen_Mantenimiento = margen_mantenimiento2,
  Margen_Call = margen_call,
  Ajuste_Posicion = ajuste_posicion2
)

# Tabla solo con cierres trimestrales
tabla_trimestremin <- tabla2[tabla2$Mes %% 3 == 0, ]

# Mostrar tablas
print(tabla2)
##    Mes      TRM Precio_inicial Posicion Exposicion_Total Garantia_Inicial
## 1    1 3868.860       3868.860    Largo        386886023         24373819
## 2    2 3859.915       3868.860    Largo        386886023         24373819
## 3    3 3842.735       3868.860    Largo        386886023         24373819
## 4    4 3784.758       3784.758    Corto        378475806         23843976
## 5    5 3743.030       3784.758    Corto        378475806         23843976
## 6    6 3708.350       3784.758    Corto        378475806         23843976
## 7    7 3671.914       3671.914    Corto        367191420         23133059
## 8    8 3700.256       3671.914    Corto        367191420         23133059
## 9    9 3707.600       3671.914    Corto        367191420         23133059
## 10  10 3721.167       3721.167    Largo        372116680         23443351
## 11  11 3711.281       3721.167    Largo        372116680         23443351
## 12  12 3717.399       3721.167    Largo        372116680         23443351
## 13  13 3748.157       3748.157    Largo        374815719         23613390
## 14  14 3753.079       3748.157    Largo        374815719         23613390
## 15  15 3689.289       3748.157    Largo        374815719         23613390
## 16  16 3697.517       3697.517    Corto        369751651         23294354
## 17  17 3685.079       3697.517    Corto        369751651         23294354
## 18  18 3693.209       3697.517    Corto        369751651         23294354
## 19  19 3642.394       3642.394    Corto        364239373         22947080
## 20  20 3575.676       3642.394    Corto        364239373         22947080
## 21  21 3572.010       3642.394    Corto        364239373         22947080
## 22  22 3549.817       3549.817    Corto        354981715         22363848
## 23  23 3539.054       3549.817    Corto        354981715         22363848
## 24  24 3546.292       3549.817    Corto        354981715         22363848
## 25  25 3527.569       3527.569    Corto        352756905         22223685
## 26  26 3545.575       3527.569    Corto        352756905         22223685
## 27  27 3551.011       3527.569    Corto        352756905         22223685
## 28  28 3555.568       3555.568    Largo        355556838         22400081
## 29  29 3494.867       3555.568    Largo        355556838         22400081
## 30  30 3487.777       3555.568    Largo        355556838         22400081
## 31  31 3468.435       3468.435    Corto        346843470         21851139
## 32  32 3461.524       3468.435    Corto        346843470         21851139
## 33  33 3460.028       3468.435    Corto        346843470         21851139
## 34  34 3447.046       3447.046    Corto        344704570         21716388
## 35  35 3435.354       3447.046    Corto        344704570         21716388
## 36  36 3435.662       3447.046    Corto        344704570         21716388
## 37  37 3416.355       3416.355    Corto        341635464         21523034
## 38  38 3416.744       3416.355    Corto        341635464         21523034
## 39  39 3428.793       3416.355    Corto        341635464         21523034
## 40  40 3430.411       3430.411    Largo        343041079         21611588
## 41  41 3439.375       3430.411    Largo        343041079         21611588
## 42  42 3430.489       3430.411    Largo        343041079         21611588
## 43  43 3441.609       3441.609    Largo        344160912         21682137
## 44  44 3439.548       3441.609    Largo        344160912         21682137
## 45  45 3466.434       3441.609    Largo        344160912         21682137
## 46  46 3445.057       3445.057    Largo        344505722         21703860
## 47  47 3453.766       3445.057    Largo        344505722         21703860
## 48  48 3474.993       3445.057    Largo        344505722         21703860
##    Margen_Requerido Margen_Mantenimiento Margen_Call Ajuste_Posicion
## 1          12186910             12186910         0.0            0.00
## 2          12186910             11817412    369497.4            0.00
## 3          12186910             11459301    727608.9              NA
## 4          11921988             11112150    809837.5            0.00
## 5          11921988             10775691   1146296.6            0.00
## 6          11921988             10449370   1472617.5     13438539.53
## 7          11566530             10133267   1433262.6            0.00
## 8          11566530              9826939   1739590.7            0.00
## 9          11566530              9529741   2036788.3        74972.48
## 10         11721675              9241802   2479873.8            0.00
## 11         11721675              8962797   2758878.1            0.00
## 12         11721675              8692219   3029456.6       979909.88
## 13         11806695              8430001   3376693.9            0.00
## 14         11806695              8175803   3630892.2            0.00
## 15         11806695              7929486   3877209.0     -2811003.92
## 16         11647177              7690678   3956498.9            0.00
## 17         11647177              7459425   4187752.0            0.00
## 18         11647177              7235120   4412057.3      -391987.43
## 19         11473540              7017680   4455860.6            0.00
## 20         11473540              6806712   4666827.8            0.00
## 21         11473540              6602237   4871303.4     12119920.29
## 22         11181924              6404253   4777671.2            0.00
## 23         11181924              6212436   4969487.6            0.00
## 24         11181924              6026452   5155472.2      2571822.56
## 25         11111843              5845892   5265950.3            0.00
## 26         11111843              5671025   5440817.1            0.00
## 27         11111843              5501655   5610187.2      -471909.33
## 28         11200040              5337320   5862720.8            0.00
## 29         11200040              5178068   6021972.8            0.00
## 30         11200040              5023742   6176298.1     -6323430.31
## 31         10925569              4874237   6051332.3            0.00
## 32         10925569              4729337   6196231.9            0.00
## 33         10925569              4588804   6336765.7      2774835.22
## 34         10858194              4452548   6405645.5            0.00
## 35         10858194              4320545   6537649.1            0.00
## 36         10858194              4192608   6665586.2      2436586.78
## 37         10761517              4068570   6692947.4            0.00
## 38         10761517              3948438   6813078.6            0.00
## 39         10761517              3831918   6929598.7       686981.66
## 40         10805794              3718922   7086871.8            0.00
## 41         10805794              3609449   7196345.3            0.00
## 42         10805794              3503337   7302457.0       169663.03
## 43         10841069              3400392   7440676.3            0.00
## 44         10841069              3300574   7540494.9            0.00
## 45         10841069              3203955   7637113.3      3594438.50
## 46         10851930              3110352   7741578.5            0.00
## 47         10851930              3019619   7832311.5            0.00
## 48         10851930              2931627   7920303.3       855977.35
print(tabla_trimestremin)
##    Mes      TRM Precio_inicial Posicion Exposicion_Total Garantia_Inicial
## 3    3 3842.735       3868.860    Largo        386886023         24373819
## 6    6 3708.350       3784.758    Corto        378475806         23843976
## 9    9 3707.600       3671.914    Corto        367191420         23133059
## 12  12 3717.399       3721.167    Largo        372116680         23443351
## 15  15 3689.289       3748.157    Largo        374815719         23613390
## 18  18 3693.209       3697.517    Corto        369751651         23294354
## 21  21 3572.010       3642.394    Corto        364239373         22947080
## 24  24 3546.292       3549.817    Corto        354981715         22363848
## 27  27 3551.011       3527.569    Corto        352756905         22223685
## 30  30 3487.777       3555.568    Largo        355556838         22400081
## 33  33 3460.028       3468.435    Corto        346843470         21851139
## 36  36 3435.662       3447.046    Corto        344704570         21716388
## 39  39 3428.793       3416.355    Corto        341635464         21523034
## 42  42 3430.489       3430.411    Largo        343041079         21611588
## 45  45 3466.434       3441.609    Largo        344160912         21682137
## 48  48 3474.993       3445.057    Largo        344505722         21703860
##    Margen_Requerido Margen_Mantenimiento Margen_Call Ajuste_Posicion
## 3          12186910             11459301    727608.9              NA
## 6          11921988             10449370   1472617.5     13438539.53
## 9          11566530              9529741   2036788.3        74972.48
## 12         11721675              8692219   3029456.6       979909.88
## 15         11806695              7929486   3877209.0     -2811003.92
## 18         11647177              7235120   4412057.3      -391987.43
## 21         11473540              6602237   4871303.4     12119920.29
## 24         11181924              6026452   5155472.2      2571822.56
## 27         11111843              5501655   5610187.2      -471909.33
## 30         11200040              5023742   6176298.1     -6323430.31
## 33         10925569              4588804   6336765.7      2774835.22
## 36         10858194              4192608   6665586.2      2436586.78
## 39         10761517              3831918   6929598.7       686981.66
## 42         10805794              3503337   7302457.0       169663.03
## 45         10841069              3203955   7637113.3      3594438.50
## 48         10851930              2931627   7920303.3       855977.35
# ------------------------------
# GRAFICAS
# ------------------------------

# Exposicion
ggplot(tabla2, aes(x = Mes, y = Exposicion_Total)) +
  geom_line(color = "blue", size = 1.2) +
  geom_point() +
  theme_minimal() +
  labs(title = "Exposicion Total", y = "USD", x = "Mes")

# Margenes
ggplot(tabla2, aes(x = Mes)) +
  geom_line(aes(y = Margen_Requerido, color = "Requerido"), size = 1) +
  geom_line(aes(y = margen_mantenimiento2, color = "Mantenimiento"), size = 1) +
  geom_line(aes(y = Margen_Call, color = "Call"), size = 1) +
  theme_minimal() +
  labs(title = "Margenes", y = "USD", x = "Mes") +
  scale_color_manual(values = c("Requerido" = "red", "Mantenimiento" = "green", "Call" = "orange"))

# Ajustes de posicion
ggplot(tabla2, aes(x = Mes, y = Ajuste_Posicion)) +
  geom_bar(stat = "identity", fill = "purple", alpha = 0.7) +
  theme_minimal() +
  labs(title = "Ajustes de Posicion (cierres trimestrales)", y = "USD", x = "Mes")

Ahora el mismo proceso pero con la trayectoria promedio

if (!require(forecast)) install.packages("forecast")
library(forecast)

# Ajustar modelo AR(1)
modelo_ar3 <- Arima(trayectoria_promfro, order = c(1, 0, 0))

# Mostrar coeficientes
coeficientes3 <- modelo_ar3$coef
print(coeficientes3)
##          ar1    intercept 
##    0.2082482 3911.1922474
# Extraer beta (coeficiente AR1)
beta3 <- coeficientes3["ar1"]
alpha3 <- coeficientes3["intercept"]

cat("Beta estimado:", round(beta3, 4), "\n")
## Beta estimado: 0.2082
cat("Alpha estimado:", round(alpha3, 2), "\n")
## Alpha estimado: 3911.19
# Parametros base
meses <- 48
trimestres <- ceiling(meses / 3)

# Simulacion de TRM mensual (puedes reemplazar con datos reales)
TRMFROPROM <- trayectoria_promfro

# Modelo AR(1) calibrado

epsilon3 <- rnorm(meses, mean = 0, sd = 100)

# Parametros del contrato
valorcontrato <- 50000
nrocontratos <- 2
garantia <- 6.3 / 100

# Inicializar vectores
Precio_inicial <- numeric(meses)
expototal <- numeric(meses)
garantia_inicia <- numeric(meses)
margen_requerido <- numeric(meses)
margen_mantenimiento3 <- numeric(meses)
margen_call <- numeric(meses)
ajuste_posicion3 <- numeric(meses)
posicion <- character(meses)

# Simulacion mensual con rollover cada 3 meses
for (t in 1:meses) {
  
  # --- Apertura de trimestre (mes 1, 4, 7, ...) ---
  if (t %% 3 == 1) {
    Precio_inicial[t] <- TRMFROPROM[t]
    
    # Definir posicion según la variacion TRM del trimestre anterior
    if (t > 3) {
      delta_trm <- TRMFROPROM[t] - TRMFROPROM[t - 3]
      posicion[t] <- ifelse(delta_trm > 0, "Largo", "Corto")
    } else {
      posicion[t] <- "Largo"  # posicion inicial
    }
    
  # --- Meses intermedios (2, 3, 5, 6, ...) ---
  } else {
    Precio_inicial[t] <- Precio_inicial[t - 1]
    posicion[t] <- posicion[t - 1]
  }
  
  # --- Exposicion y garantias ---
  expototal[t] <- valorcontrato * Precio_inicial[t] * nrocontratos
  garantia_inicia[t] <- expototal[t] * garantia
  margen_requerido[t] <- garantia_inicia[t] * 0.5
  
  # Modelo AR(2) para margen de mantenimiento
  if (t == 1) {
    margen_mantenimiento3[t] <- margen_requerido[t]
  } else {
    margen_mantenimiento3[t] <- alpha3 + beta3 * margen_mantenimiento3[t - 1] + epsilon3[t]
  }
  # Margen call
  margen_call[t] <- ifelse(margen_mantenimiento3[t] < margen_requerido[t],
                           margen_requerido[t] - margen_mantenimiento3[t],
                           0)
  
  # --- Liquidacion de posicion al cierre de trimestre (mes 3, 6, 9, ...) ---
  if (t %% 3 == 0) {
    delta_trm <- TRMFROPROM[t] - TRMFROPROM[t - 3]
    ajuste <- delta_trm * valorcontrato * nrocontratos
    ajuste_posicion3[t] <- ifelse(posicion[t] == "Largo", ajuste, -ajuste)
  } else {
    ajuste_posicion3[t] <- 0
  }
}

tabla3 <- data.frame(
  Mes = 1:meses,
  TRM = TRMFROPROM[1:meses],
  Precio_inicial,
  Posicion = posicion,
  Exposicion_Total = expototal,
  Garantia_Inicial = garantia_inicia,
  Margen_Requerido = margen_requerido,
  Margen_Mantenimiento = margen_mantenimiento3,
  Margen_Call = margen_call,
  Ajuste_Posicion = ajuste_posicion3
)

# Tabla solo con cierres trimestrales
tabla_trimestreprom <- tabla3[tabla3$Mes %% 3 == 0, ]

# Mostrar tablas
print(tabla3)
##    Mes      TRM Precio_inicial Posicion Exposicion_Total Garantia_Inicial
## 1    1 3842.465       3842.465    Largo        384246479         24207528
## 2    2 3903.052       3842.465    Largo        384246479         24207528
## 3    3 3901.415       3842.465    Largo        384246479         24207528
## 4    4 3918.199       3918.199    Largo        391819882         24684653
## 5    5 3892.603       3918.199    Largo        391819882         24684653
## 6    6 3895.454       3918.199    Largo        391819882         24684653
## 7    7 3852.693       3852.693    Corto        385269302         24271966
## 8    8 3907.045       3852.693    Corto        385269302         24271966
## 9    9 3936.531       3852.693    Corto        385269302         24271966
## 10  10 3832.534       3832.534    Corto        383253354         24144961
## 11  11 3911.521       3832.534    Corto        383253354         24144961
## 12  12 3954.786       3832.534    Corto        383253354         24144961
## 13  13 3946.683       3946.683    Largo        394668306         24864103
## 14  14 3897.096       3946.683    Largo        394668306         24864103
## 15  15 3963.566       3946.683    Largo        394668306         24864103
## 16  16 4000.179       4000.179    Largo        400017926         25201129
## 17  17 3918.915       4000.179    Largo        400017926         25201129
## 18  18 3903.060       4000.179    Largo        400017926         25201129
## 19  19 3858.750       3858.750    Corto        385875046         24310128
## 20  20 3942.901       3858.750    Corto        385875046         24310128
## 21  21 3930.823       3858.750    Corto        385875046         24310128
## 22  22 3876.438       3876.438    Largo        387643835         24421562
## 23  23 4022.231       3876.438    Largo        387643835         24421562
## 24  24 3943.730       3876.438    Largo        387643835         24421562
## 25  25 3878.681       3878.681    Largo        387868058         24435688
## 26  26 3869.248       3878.681    Largo        387868058         24435688
## 27  27 3879.154       3878.681    Largo        387868058         24435688
## 28  28 3861.814       3861.814    Corto        386181411         24329429
## 29  29 3858.501       3861.814    Corto        386181411         24329429
## 30  30 3910.062       3861.814    Corto        386181411         24329429
## 31  31 3879.190       3879.190    Largo        387919026         24438899
## 32  32 3954.567       3879.190    Largo        387919026         24438899
## 33  33 3941.490       3879.190    Largo        387919026         24438899
## 34  34 3871.348       3871.348    Corto        387134786         24389492
## 35  35 3861.100       3871.348    Corto        387134786         24389492
## 36  36 3842.580       3871.348    Corto        387134786         24389492
## 37  37 3888.713       3888.713    Largo        388871270         24498890
## 38  38 3936.876       3888.713    Largo        388871270         24498890
## 39  39 3878.460       3888.713    Largo        388871270         24498890
## 40  40 3984.404       3984.404    Largo        398440385         25101744
## 41  41 3943.548       3984.404    Largo        398440385         25101744
## 42  42 3955.627       3984.404    Largo        398440385         25101744
## 43  43 3964.744       3964.744    Corto        396474429         24977889
## 44  44 3903.353       3964.744    Corto        396474429         24977889
## 45  45 3927.093       3964.744    Corto        396474429         24977889
## 46  46 3869.403       3869.403    Corto        386940273         24377237
## 47  47 3943.500       3869.403    Corto        386940273         24377237
## 48  48 3980.855       3869.403    Corto        386940273         24377237
##    Margen_Requerido Margen_Mantenimiento Margen_Call Ajuste_Posicion
## 1          12103764         12103764.082           0             0.0
## 2          12103764          2524425.760     9579338             0.0
## 3          12103764           529587.582    11574177              NA
## 4          12342326           114213.629    12228113             0.0
## 5          12342326            27751.846    12314574             0.0
## 6          12342326             9839.862    12332486       -596163.8
## 7          12135983             6024.536    12129958             0.0
## 8          12135983             5076.260    12130907             0.0
## 9          12135983             4833.619    12131149      -4107704.5
## 10         12072481             4926.913    12067554             0.0
## 11         12072481             4956.335    12067524             0.0
## 12         12072481             4984.442    12067496      -1825540.8
## 13         12432052             4902.807    12427149             0.0
## 14         12432052             4840.465    12427211             0.0
## 15         12432052             4815.733    12427236        878017.1
## 16         12600565             4941.238    12595623             0.0
## 17         12600565             4922.185    12595642             0.0
## 18         12600565             4877.675    12595687      -6050626.3
## 19         12155064             5149.717    12149914             0.0
## 20         12155064             5013.560    12150050             0.0
## 21         12155064             5052.121    12150012      -2776256.7
## 22         12210781             4929.888    12205851             0.0
## 23         12210781             5066.067    12205715             0.0
## 24         12210781             5040.677    12205740       1290717.2
## 25         12217844             5008.189    12212836             0.0
## 26         12217844             5022.619    12212821             0.0
## 27         12217844             4900.118    12212944      -6457539.6
## 28         12164714             4977.245    12159737             0.0
## 29         12164714             4845.247    12159869             0.0
## 30         12164714             4830.167    12159884      -3090765.3
## 31         12219449             4883.498    12214566             0.0
## 32         12219449             5095.437    12214354             0.0
## 33         12219449             4901.608    12214548       3142771.4
## 34         12194746             4855.876    12189890             0.0
## 35         12194746             4909.650    12189836             0.0
## 36         12194746             4989.153    12189757       9890989.5
## 37         12249445             4805.184    12244640             0.0
## 38         12249445             5009.230    12244436             0.0
## 39         12249445             4996.708    12244448       3587974.9
## 40         12550872             4973.285    12545899             0.0
## 41         12550872             4851.070    12546021             0.0
## 42         12550872             4974.607    12545898       7716760.7
## 43         12488945             4858.640    12484086             0.0
## 44         12488945             4988.352    12483956             0.0
## 45         12488945             4922.128    12484022       2853447.8
## 46         12188619             4873.799    12183745             0.0
## 47         12188619             4845.236    12183773             0.0
## 48         12188619             4897.002    12183722      -5376223.2
print(tabla_trimestreprom)
##    Mes      TRM Precio_inicial Posicion Exposicion_Total Garantia_Inicial
## 3    3 3901.415       3842.465    Largo        384246479         24207528
## 6    6 3895.454       3918.199    Largo        391819882         24684653
## 9    9 3936.531       3852.693    Corto        385269302         24271966
## 12  12 3954.786       3832.534    Corto        383253354         24144961
## 15  15 3963.566       3946.683    Largo        394668306         24864103
## 18  18 3903.060       4000.179    Largo        400017926         25201129
## 21  21 3930.823       3858.750    Corto        385875046         24310128
## 24  24 3943.730       3876.438    Largo        387643835         24421562
## 27  27 3879.154       3878.681    Largo        387868058         24435688
## 30  30 3910.062       3861.814    Corto        386181411         24329429
## 33  33 3941.490       3879.190    Largo        387919026         24438899
## 36  36 3842.580       3871.348    Corto        387134786         24389492
## 39  39 3878.460       3888.713    Largo        388871270         24498890
## 42  42 3955.627       3984.404    Largo        398440385         25101744
## 45  45 3927.093       3964.744    Corto        396474429         24977889
## 48  48 3980.855       3869.403    Corto        386940273         24377237
##    Margen_Requerido Margen_Mantenimiento Margen_Call Ajuste_Posicion
## 3          12103764           529587.582    11574177              NA
## 6          12342326             9839.862    12332486       -596163.8
## 9          12135983             4833.619    12131149      -4107704.5
## 12         12072481             4984.442    12067496      -1825540.8
## 15         12432052             4815.733    12427236        878017.1
## 18         12600565             4877.675    12595687      -6050626.3
## 21         12155064             5052.121    12150012      -2776256.7
## 24         12210781             5040.677    12205740       1290717.2
## 27         12217844             4900.118    12212944      -6457539.6
## 30         12164714             4830.167    12159884      -3090765.3
## 33         12219449             4901.608    12214548       3142771.4
## 36         12194746             4989.153    12189757       9890989.5
## 39         12249445             4996.708    12244448       3587974.9
## 42         12550872             4974.607    12545898       7716760.7
## 45         12488945             4922.128    12484022       2853447.8
## 48         12188619             4897.002    12183722      -5376223.2
# ------------------------------
# GRAFICAS
# ------------------------------

# Exposicion
ggplot(tabla3, aes(x = Mes, y = Exposicion_Total)) +
  geom_line(color = "blue", size = 1.2) +
  geom_point() +
  theme_minimal() +
  labs(title = "Exposicion Total", y = "USD", x = "Mes")

# Margenes
ggplot(tabla3, aes(x = Mes)) +
  geom_line(aes(y = Margen_Requerido, color = "Requerido"), size = 1) +
  geom_line(aes(y = margen_mantenimiento, color = "Mantenimiento"), size = 1) +
  geom_line(aes(y = Margen_Call, color = "Call"), size = 1) +
  theme_minimal() +
  labs(title = "Margenes", y = "USD", x = "Mes") +
  scale_color_manual(values = c("Requerido" = "red", "Mantenimiento" = "green", "Call" = "orange"))

# Ajustes de posicion
ggplot(tabla3, aes(x = Mes, y = Ajuste_Posicion)) +
  geom_bar(stat = "identity", fill = "purple", alpha = 0.7) +
  theme_minimal() +
  labs(title = "Ajustes de Posicion (cierres trimestrales)", y = "USD", x = "Mes")

2.5 Revise y compare en un flujo total sobre que tanto se cubre los precios del credito vs el futuro. Analice y justifique si la inversion del futuro fue beneficioso o no sobre la inversion de la maquinaria amarilla.

# Escenario: Maximo
comp_max <- data.frame(
  Mes = 1:nfro,
  Cuota_Credito = amortizacion_cop$Cuota_Max[1:nfro],
  Flujo_Futuro = ajuste_posicion[1:nfro]
)
comp_max$comparacion_max<- comp_max$Flujo_Futuro - comp_max$Cuota_Credito
comp_max$Acumulado <- cumsum(comp_max$comparacion_max)

# Escenario: minimi
comp_min <- data.frame(
  Mes = 1:nfro,
  Cuota_Credito2 = amortizacion_cop$Cuota_Min[1:nfro],
  Flujo_Futuro2 = ajuste_posicion2[1:nfro]
)
comp_min$comparacion_min<- comp_min$Flujo_Futuro2 - comp_min$Cuota_Credito
comp_min$Acumulado <- cumsum(comp_min$comparacion_min)

# Escenario: promedio
comp_pro <- data.frame(
  Mes = 1:nfro,
  Cuota_Credito3= amortizacion_cop$Cuota_Prom[1:nfro],
  Flujo_Futuro3 = ajuste_posicion3[1:nfro]
  
)
comp_pro$comparacion_pro<- comp_pro$Flujo_Futuro3 - comp_pro$Cuota_Credito
comp_pro$Acumulado <- cumsum(comp_pro$comparacion_pro)


library(dplyr)
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)


# Escenario: Maximo
ggplot(comp_max, aes(x = Mes)) +
  # Linea horizontal de la cuota de credito
  geom_hline(aes(yintercept = mean(Cuota_Credito)), color = "red", linetype = "dashed", size = 1) +
  # Ajustes de posicion de los futuros
  geom_line(aes(y = Flujo_Futuro, color = "Futuro"), size = 1) +
  theme_minimal() +
  labs(title = "Cuota Credito (linea horizontal) vs Ajustes de Futuro (Escenario Maximo)",
       x = "Mes", y = "COP") +
  scale_color_manual(values = c("Futuro" = "blue"))

## Escenario: minimo

ggplot(comp_min, aes(x = Mes)) +
  # Linea horizontal de la cuota de credito
  geom_hline(aes(yintercept = mean(Cuota_Credito2)), color = "violet", linetype = "dashed", size = 1) +
  # Ajustes de posicion de los futuros
  geom_line(aes(y = Flujo_Futuro2, color = "Futuro"), size = 1) +
  theme_minimal() +
  labs(title = "Cuota Credito (linea horizontal) vs Ajustes de Futuro (Escenario Maximo)",
       x = "Mes", y = "COP") +
  scale_color_manual(values = c("Futuro" = "orange"))

## Escenario: promedio

ggplot(comp_pro, aes(x = Mes)) +
  # Linea horizontal de la cuota de credito
  geom_hline(aes(yintercept = mean(Cuota_Credito3)), color = "pink", linetype = "dashed", size = 1) +
  # Ajustes de posicion de los futuros
  geom_line(aes(y = Flujo_Futuro3, color = "Futuro"), size = 1) +
  theme_minimal() +
  labs(title = "Cuota Credito (linea horizontal) vs Ajustes de Futuro (Escenario Maximo)",
       x = "Mes", y = "COP") +
  scale_color_manual(values = c("Futuro" = "yellow"))

``` # Bibliografía

Banco de la República de Colombia. (2025, enero). Informe de Política Monetaria. Recuperado de https://www.banrep.gov.co/es/publicaciones-investigaciones/informe-politica-monetaria/enero-2025

Bancolombia. (2025). Actualización: perspectivas económicas Colombia 2025‑2026. Grupo Bancolombia, Dirección de Investigaciones Económicas. Recuperado de https://www.bancolombia.com/empresas/capital-inteligente/actualidad-economica-sectorial/perspectivas-economicas-2025

Bancolombia. (2025, marzo). Bancolombia elevó sus proyecciones de inflación a cierre de 2025 y espera que se sitúe en 4,4%. Recuperado de https://www.larepublica.co/economia/grupo-bancolombia-elevo-su-estimacion-de-inflacion‑a‑cierre‑de‑2025‑y‑espera‑que‑se‑situe‑en‑4‑4‑4091367

https://www.bvc.com.co/mercado-local-en-linea?tab=renta-variable_mercado-global-colombiano

https://www.banrep.gov.co/es/servicios-temas/11647

Imagen 1 {Comportamiento de la TRM}, author = {{Banco de la República de Colombia}}, year = {2025}, institution = {Banco de la República}, url = {https://www.banrep.gov.co/es/publicaciones-investigaciones/informe-politica-monetaria/enero-2025}

Imagen 2 {Evolución precio dolar }, author = {{Banco de la República de Colombia}}, year = {2025}, institution = {Banco de la República}, url = {https://www.banrep.gov.co/es/publicaciones-investigaciones/informe-politica-monetaria/enero-2025}

Imagen 3 {Supuesto de la tasa de interés de la reserva federal }, author = {{Banco de la República de Colombia}}, year = {2025}, institution = {Banco de la República}, url = {https://www.banrep.gov.co/es/publicaciones-investigaciones/informe-politica-monetaria/enero-2025}

Imagen 4 {Prima de riesgo de Colombia}, author = {{Banco de la República de Colombia}}, year = {2025}, institution = {Banco de la República}, url = {https://www.banrep.gov.co/es/publicaciones-investigaciones/informe-politica-monetaria/enero-2025}

Imagen 5 {Proyecciones del IPC}, author = {{Banco de la República de Colombia}}, year = {2025}, institution = {Banco de la República}, url = {https://www.banrep.gov.co/es/publicaciones-investigaciones/informe-politica-monetaria/enero-2025}

Imagen 6 {Pronóstico de la tasa de cambio USD/COP}, author = {{Banco de la República de Colombia}}, year = {2025}, institution = {Banco de la República}, url = {https://www.banrep.gov.co/es/publicaciones-investigaciones/informe-politica-monetaria/enero-2025}