Introducción

Este taller práctico simula una situación real donde, como inversores, requerimos financiar la adquisición de maquinaria amarilla por 300 millones de pesos a través de un crédito estadounidense a 10 años con sistema de pago francés. Dado que los pagos del crédito se realizarán en dólares mientras nuestros ingresos son en pesos colombianos, implementaremos una estrategia de cobertura utilizando futuros de TRM. Se realizará una cobertura del 75% de la inversión durante los últimos cuatro años del crédito, período en el cual se anticipa mayor volatilidad cambiaria y una posible apreciación del dólar.

A través de este ejercicio, aplicaremos conceptos fundamentales de derivados financieros, específicamente el uso de futuros como instrumento de cobertura, empleando datos históricos de la Bolsa de Valores de Colombia y replicando las condiciones reales del mercado financiero.

Análisis fundamental de la Tasa Representativa del Mercado (TRM) en Colombia

Contexto Macroeconómico Actual (2025)

En agosto de 2025, la inflación interanual en Colombia fue de 4,85%, inferior al 4,89% observado en julio. La persistencia de la inflación por encima de la meta del 3% anual establecida por la Junta Directiva del Banco de la República, mantiene la presión sobre la política monetaria y genera expectativas de un proceso de convergencia más lento de lo inicialmente previsto. La economía colombiana muestra una recuperación moderada, con un crecimiento estimado del 2,6% en 2025 y una proyección de 3,4% para 2026. Esta mejora estaría sustentada en una política monetaria más flexible y en la reducción gradual de la inflación (Banco de la República, Informe de Política Monetaria, 2025).

Análisis de Tendencias Recientes

Durante la ventana temporal comprendida entre el segundo semestre de 2024 y la fecha actual, la TRM ha exhibido una tendencia a la baja, reflejando un fortalecimiento sostenido del peso colombiano frente al dólar estadounidense. Esta dinámica,ha estado influenciada por factores de política monetaria tanto domésticos como internacionales.

En la búsqueda de controlar la inflación y hacer más atractivo el peso colombiano para la inversión extranjera de corto plazo, el BanRep ha mantenido la tasa de interés de política monetaria en un nivel relativamente alto (9,25% a partir de mayo), lo que ha contribuido a la apreciación del peso, por otro lado, el Sistema de la Reserva Federal (FED) ha implemetado recortes graduales en sus tasas de referencia, debilitando la posición relativa del dólar.

Proyecciones y Expectativas del Mercado

Los resultados de la Encuesta Mensual de Expectativas (EME) del Banco de la República correspondiente a julio de 2025 revelan una perspectiva contradictoria pero reveladora: el consentimiento del mercado anticipa una depreciación gradual pero sostenida del peso colombiano, proyectando que la TRM alcance niveles de $4,180-$4,200 hacia finales de 2026, lo que representa una depreciación aproximada del 3.4% anual desde los niveles actuales. Sin embargo, la alta dispersión de los datos analizados de la encuesta, resalta que el futuro de la TRM dependerá de la evolución de múltiples factores económicos, tanto globales como nacionales.

Simulación BMG mensual

Para la construcción de la simulación se tomará el histórico de la TRM de los últimos 10 años, estos datos son obtenidos desde el aplicativo RStudio a través de un paquete llamado Citmre, con histórico de la TRM, se realiza la conversión de los datos a periodos mensuales.

options ( scipen = 999)
set.seed (2134)
sigma <- sd(data_log$log_return)
mu <- mean(data_log$log_return)
s0 <- tail(data_m$rmre, 1)
N =10000
T =120
vec = rep (s0 ,N)
mb= matrix ( ncol =N, nrow =T)
mb [1 ,]= vec

for (i in 1:N) {
  for (t in 2:T) {
    mb[t,i]= mb [(t -1) ,i]* exp ((mu -(0.5 *( sigma ^2) ))*(1/ 252) +
                                    sigma *(1/ (252) ^(1 /2))* qnorm ( runif (1, min = 0, max = 1)))
  }
}

df_mb <- data.frame(Mes = 1:T, TRM = as.vector(mb))

matplot (mb , type ="l")
title(main = "SIMULACIÓN BMG MENSUAL TRM")

Basándonos en una simulación a 10 años, la Tasa Representativa del Mercado (TRM), que es el valor del dólar en pesos colombianos, muestra un comportamiento bastante estable. La simulación revela una depreciación muy gradual del peso colombiano frente al dólar estadounidense, con un aumento promedio mensual de 0.019%, lo que equivale a un 0.23% anual. La volatilidad de la TRM, que mide qué tanto fluctúa su precio, es de 0.85% mensual, o aproximadamente 2.96% anual. Este nivel de fluctuación es moderado y sugiere que, a pesar de que existen períodos de mayor incertidumbre, el precio del dólar no presenta movimientos extremos sostenidos. Esta estabilidad relativa valida la efectividad de las políticas del Banco de la República y la robustez del régimen cambiario flexible, demostrando que están funcionando bien para mantener la economía estable.

Simulación del crédito en EEUU

Para la compra de la maquinaria amarilla, un valor total a financiar de 65.280,17 USD, equivalente al 85% del crédito total, se tomó el valor de la TRM del día 15 de septiembre del año en curso, la cual fue de 3.906,24. El crédito se estipula con cuotas fijas mensuales a 10 años y se utilizó una tasa comercial del 16.99% APR (Citibank USA). Posterior a la simulación del comportamiento de la TRM, se seleccionaron tres escenarios clave que servirán como base para analizar estrategias de cobertura para el futuro de la TRX.

Simulación de Mayor Dispersión De las 10,000 simulaciones, se evidencia una máxima volatilidad y una tendencia alcista, por lo cual se asumiría una posición larga para tener una mejor cobertura en la tasa de TRM.

Simulación de Menor Dispersión De las 10,000 simulaciones, se evidencia una mínima volatilidad y una tendencia bajista, por lo cual se asumiría una posición corta para tener una mejor cobertura en la tasa de TRM.

Simulación de un Escenario Promedio De las 10,000 simulaciones, es el escenario más probable estadísticamente y en este es en que se va a hacer un análisis más profundo y con base a este se va a generar análisis de cobertura y de gestión de riesgo frente al futuro de la TRX.

##Calculo de parámetros con futuros

Se usó el contrato TRXV25F para calcular los parámetros de media y desviación necesarios para la simulación. Los datos descargados desde la Bolsa de Valores de Colombia (BVC) solo permitía obtener un historial de los últimos 6 meses.

##     Periodo   Cuota Interes Amortizacion    Saldo
## 1         1 1134.14  924.26       209.88 65070.29
## 2         2 1134.14  921.29       212.85 64857.44
## 3         3 1134.14  918.27       215.87 64641.57
## 4         4 1134.14  915.22       218.92 64422.65
## 5         5 1134.14  912.12       222.02 64200.63
## 6         6 1134.14  908.97       225.17 63975.46
## 115     115 1134.14   91.75      1042.39  5437.66
## 116     116 1134.14   76.99      1057.15  4380.51
## 117     117 1134.14   62.02      1072.12  3308.39
## 118     118 1134.14   46.84      1087.30  2221.09
## 119     119 1134.14   31.45      1102.69  1118.40
## 120     120 1134.14   15.83      1118.31     0.09
## 
## Total pagado: 136096.8
## Intereses totales: 70816.72
## Warning: package 'tidyr' was built under R version 4.3.3
## 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
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

## 
## Value at Risk (5%): 3869.52
## Warning: The `size` argument of `element_line()` is deprecated as of ggplot2 3.4.0.
## ℹ Please use the `linewidth` argument instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Simulación con el Movimiento Browniano para el precio del Futuro

El cálculo del precio teórico futuro, derivado de la relación entre tasas nacionales e internacionales, constituye la base metodológica para establecer los parámetros iniciales de la simulación.

Para el cálculo de este en el caso de Colombia se utilizó la tasa promedio ponderada de la superintendencia financiera de Colombia con corte al 12 de septiembre de 2025. (Superintendencia Financiera de Colombia, 2025). En el caso de EEUU se trabajó con la tomada en el crédito.

## Warning: package 'readxl' was built under R version 4.3.3
options ( scipen = 999)
set.seed (2134)
retornos_trm <- diff(log(futuros$prom_precio_cierre))
r_trm <- exp(mean(retornos_trm)) - 1
sigma_trm <- sd(retornos_trm)

mu <- mean(retornos_trm)
s0 <- FT 
N =10000
inicio <- 72
fin <- 120
T =fin - inicio + 1
vec = rep (s0 ,N)
mb_trm1= matrix ( ncol =N, nrow =T)
mb_trm1 [1 ,]= vec

for (i in 1:N) {
  for (t in 2:T) {
    mb_trm1[t,i]= mb_trm1 [(t -1) ,i]* exp ((mu -(0.5 *( sigma ^2) ))*(1/ 252) +
                                    sigma *(1/ (252) ^(1 /2))* qnorm ( runif (1, min = 0, max = 1)))
  }
}



df_trm1 <- data.frame(Tiempo = inicio:fin, TRM = as.vector(mb_trm1))

matplot (mb_trm1 , type ="l")
title(main = "SIMULACIÓN BMG MENSUAL PRECIO FUTURO")

# TRAYECTORIA MEDIA:
mediana_por_tiempo <- apply(mb_trm1, 1, median)
distancias <- apply(mb_trm1, 2, function(col) sum(abs(col - mediana_por_tiempo)))
indice_media_real <- which.min(distancias)
trayectoria_media <- mb_trm1[, indice_media_real]

df_trm1 <- data.frame(Tiempo = inicio:fin, TRM_Media = trayectoria_media)
plot(inicio:fin, trayectoria_media, type ="l")

Cobertura con futuros

Para el ejercicio se trabajará con un nivel de apalancamiento del 75% mediante el futuro de la TRXV25F, se toma como valor nominal el valor de la TRM del 19 de septiembre, dato tomado de la BVC. El margen de mantenimiento será del 50% trabajandolo como un estándar dentro de los ejercicios de futuros y el margen incial será del 6,3% basado en la información de apalancamiento de futuros proporcionado por la BVC.

cobertura<-P*0.75
trx<-1000
numero_contratos<-round(cobertura/trx)
print(numero_contratos)
## [1] 49
## [1] "Exposición Total: 190668.31"
## [1] "Margen Inicial: 12012.10353"
## [1] "Margen de Mantenimiento: 6006.051765"
##          72          73          74          75          76          77 
##   627699013   404802446    77430980   142766205   639810785   358169670 
##          78          79          80          81          82          83 
##  -169185628  -527817918   221471523 -1162778013  -784591251  -924817850 
##          84          85          86          87          88          89 
## -1288392987   426787626  -306016064  -404211538 -1150380289 -1570413044 
##          90          91          92          93          94          95 
## -1589717077 -1091373491   185730344   238675574  -327028329 -1391177553 
##          96          97          98          99         100         101 
##   134888313   172614571  -194344657  -529036277  -176465479   177153396 
##         102         103         104         105         106         107 
##  -705702927   851853217  -133496771  -120282867  -855642397  -639054939 
##         108         109         110         111         112         113 
##  -806155570 -1131228608  -469585634  -683103291 -1588465416   351772905 
##         114         115         116         117         118         119 
##  -935978556 -1207565920 -1097007135   194775264  -587262796 -1788387466
##   Periodo_Cobertura Posicion Costo_Prestamo_Total Flujo_Caja_Margen
## 1                 1    larga             26920734       -4844686646
## 2                 2    corta             26767209        1266328753
## 3                 3    corta             26679186        1898685203
## 4                 4    corta             26434459        1924800784
## 5                 5    corta             25774543        -457789433
## 6                 6    corta             25548635        -123479110
## 7                 7    corta             25210989        1795632250
## 8                 8    corta             25200623        2710713305
##   Flujo_Caja_Neto_Total
## 1           -4871607380
## 2            1239561544
## 3            1872006018
## 4            1898366326
## 5            -483563976
## 6            -149027745
## 7            1770421260
## 8            2685512681
##   Periodo_Cobertura Posicion Costo_Prestamo_Total Flujo_Caja_Margen
## 1                 1    larga             26920734       -4844686646
## 2                 2    corta             26767209        1266328753
## 3                 3    corta             26679186        1898685203
## 4                 4    corta             26434459        1924800784
## 5                 5    corta             25774543        -457789433
## 6                 6    corta             25548635        -123479110
## 7                 7    corta             25210989        1795632250
## 8                 8    corta             25200623        2710713305
##   Flujo_Caja_Neto_Total Ganancia_Futuros_Total Margin_Calls_Total
## 1           -4871607380            -2250682186         2594001373
## 2            1239561544             1621377302          355048549
## 3            1872006018             2087465464          188780261
## 4            1898366326             1987445266           62644482
## 5            -483563976              107967039          565756472
## 6            -149027745              801163342          924642452
## 7            1770421260             1861896142           66263892
## 8            2685512681             2710713305                  0

Resultados

Del ejercicio desarrollado se pudo evidenciar que:

Para el periodo 1 se evidenció una falla crítica de la cobertura; este es el punto más relevante y riesgoso del análisis. Esto significa que la TRM se movió de manera drástica en una dirección que generó una pérdida masiva en el derivado, el resultado es un flujo de liquidez negativo y una salida de dinero significativa para la compañía. Demostrando que la cobertura en este caso debe tomarse en una posición corta.

Para los periodos 2, 3, 4, 7 y 8 se tuvo una cobertura exitosa;la estrategia de cobertura fue altamente efectiva, el flujo de liquidez muestra ganancias sustanciales y consistentemente positivas, superando significativamente el costo del préstamo;esto indica que la TRM se movió en una dirección que habría encarecido la deuda extranjera, pero los contratos de futuros generaron ganancias suficientes para no solo compensar ese costo, sino también generar un flujo de caja neto positivo para la compañía.

Y finalmente para los periodos 5 y 6 se evidencia una cobertura neutra, aquí, el flujo de liquidez es ligeramente negativo, compensando de manera casi perfecta el costo del préstamo. Esto sugiere que el movimiento de la TRM fue mínimo o que la posición del futuro no fue lo suficientemente provechosa para generar ganancias significativas. Sin embargo, el flujo de liquidez neto se mantuvo cercano a cero, lo que implica que la cobertura cumplió su función principal de mitigar el riesgo de volatilidad.

Conclusiones

Referencias

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

Banco de la República de Colombia. (2025, agosto). Resultado de la Encuesta Mensual de Expectativas de Analistas Económicos (EME) - agosto 2025. https://www.banrep.gov.co/es/resultado-encuesta-mensual-expectativas-analistas-economicos-eme-agosto-2025

Banco de la República de Colombia. (s.f.). Tasa de cambio – TRM. Recuperado de https://www.banrep.gov.co/es/glosario/tasa-cambio-trm

Superintendencia Financiera de Colombia. (s.f.). Reportes PowerBI. https://www.superfinanciera.gov.co/powerbi/reportes/536/