Proceso del crédito

1. Realice un análisis fundamental de la TRM y cuál es la expectativa de los precios hasta dentro de un año.

1.1 Comportamiento reciente de la TRM

  • Inicio de 2025: La TRM comenzó el año en $4,409.15 COP/USD.
  • 14 de mayo de 2025: Se ubicó en $4,204.63 COP/USD, mostrando una apreciación del peso colombiano frente al dólar.
  • Promedio en lo que va del año: $4,218.22 COP/USD.
  • Rango de variación: Entre $4,073.56 y $4,416.69 COP/USD.
  • Desviación estándar: 93.26, indicando una baja volatilidad en este periodo. ([Dólar Hoy TRM en Colombia][1])

1.2 Factores que influyen en la TRM

  • Política monetaria del Banco de la República: La tasa de interés de referencia se redujo al 9.25% en abril de 2025, buscando controlar la inflación y estimular la economía. ([Banco de la República][2])

  • Inflación: Aunque ha disminuido, la inflación se mantiene por encima de la meta del 3%, lo que podría influir en la TRM. ([Banco de la República][2])

  • Contexto internacional: Las políticas proteccionistas y la incertidumbre global han aumentado la volatilidad en los mercados, afectando la tasa de cambio. ([Bancolombia][3])


Expectativas de la TRM hasta mayo de 2026

1.3 Proyecciones de entidades financieras

  • BBVA Research: Proyecta una TRM de $4,350 COP/USD al cierre de 2025 y de $4,230 COP/USD en diciembre de 2026. ([BBVA Research][4])

  • Corficolombiana: Anticipa presiones de depreciación en lo que resta de 2025, en medio de una alta volatilidad. ([Corficolombiana][5])

  • La República: Para el primer trimestre de 2025, los analistas proyectan una TRM sobre los $4,400, con posibilidad de alcanzar los $4,900 a final de año. ([Diario La República][6])

1.4 Factores a considerar

  • Política monetaria de EE.UU.: Los movimientos de la Reserva Federal influirán en los flujos de capital y, por ende, en la TRM.([BBVA Research][4])

  • Precios del petróleo: Dado que Colombia es un exportador de petróleo, los precios internacionales impactan directamente en la tasa de cambio.

  • Situación fiscal del país: El déficit fiscal y las decisiones de política económica interna también afectarán la TRM.([BBVA Research][4])


Conclusión

La TRM ha mostrado una tendencia a la apreciación del peso colombiano en lo que va de 2025, con una volatilidad relativamente baja. Sin embargo, factores como la política monetaria interna y externa, la inflación y el contexto internacional podrían generar presiones al alza en la tasa de cambio en los próximos meses.


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

# 1. Cargar y preparar los datos (sin mostrar mensaje de columnas)
trm_data <- read_csv(
  "https://www.datos.gov.co/api/views/mcec-87by/rows.csv?accessType=DOWNLOAD",
  show_col_types = FALSE
)

# 2. Formatear fechas y ordenar
trm_data <- trm_data %>%
  mutate(
    VIGENCIADESDE = dmy(VIGENCIADESDE),
    VIGENCIAHASTA = dmy(VIGENCIAHASTA)
  ) %>%
  arrange(VIGENCIADESDE)

# 3. Calcular TRM mensual promedio, desviación estándar y retornos
trm_mensual <- trm_data %>%
  mutate(anio = year(VIGENCIADESDE), mes = month(VIGENCIADESDE)) %>%
  group_by(anio, mes) %>%
  summarise(
    TRM_promedio = mean(VALOR, na.rm = TRUE),
    Desviacion = sd(VALOR, na.rm = TRUE),
    .groups = "drop"
  ) %>%
  arrange(anio, mes) %>%
  mutate(
    periodo = as.Date(sprintf("%04d-%02d-01", anio, mes)),
    Retorno = c(NA, diff(log(TRM_promedio)))  # Retornos logarítmicos
  )

# 4. Visualización: TRM Mensual Promedio
p1 <- ggplot(trm_mensual, aes(x = periodo, y = TRM_promedio)) +
  geom_line(color = "steelblue", linewidth = 1) +  # Usar linewidth
  labs(title = "TRM Mensual Promedio", x = "Fecha", y = "TRM Promedio") +
  scale_x_date(date_labels = "%Y-%m", date_breaks = "2 months") +
  theme_minimal()

# 5. Visualización: Retornos Mensuales (eliminar NA)
p2 <- ggplot(trm_mensual %>% filter(!is.na(Retorno)), aes(x = periodo, y = Retorno)) +
  geom_line(color = "darkgreen", linewidth = 1) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "gray40") +
  labs(title = "Retornos Mensuales de la TRM (log)", x = "Fecha", y = "Retorno Log") +
  scale_x_date(date_labels = "%Y-%m", date_breaks = "2 months") +
  theme_minimal()

# 6. Visualización: Desviación Estándar Mensual
p3 <- ggplot(trm_mensual, aes(x = periodo, y = Desviacion)) +
  geom_col(fill = "tomato") +
  labs(title = "Volatilidad Mensual de la TRM (Desviación Estándar)", x = "Fecha", y = "Desviación") +
  scale_x_date(date_labels = "%Y-%m", date_breaks = "2 months") +
  theme_minimal()

# 7. Mostrar los gráficos
print(p1)

print(p2)

print(p3)


2.1 TRM Mensual Promedio

Descripción General

El gráfico muestra una serie temporal de la TRM promedio mensual en Colombia desde finales de los años 90 hasta mediados de 2025. El eje vertical representa el valor promedio mensual de la tasa de cambio (COP por USD), y el eje horizontal muestra el tiempo.

Tendencia general creciente

Desde los niveles iniciales, por debajo de $1.000 COP/USD, se observa una tendencia creciente sostenida a lo largo de los años. Esto refleja una depreciación estructural del peso colombiano frente al dólar estadounidense a lo largo del tiempo, un fenómeno común en economías emergentes.

Fases de aceleración y desaceleración

Hay periodos donde la TRM se incrementa rápidamente: Por ejemplo, entre 2014 y 2016, se evidencia una subida abrupta. Otro pico notable ocurre entre 2020 y 2022, coincidiendo con la pandemia de COVID-19 y tensiones geopolíticas globales. También hay fases de relativa estabilidad o retroceso, como entre 2005 y 2008, o de nuevo entre 2016 y 2019, donde la TRM parece oscilar sin romper nuevos máximos.

Máximos históricos recientes

En el extremo derecho del gráfico (2022–2023), se alcanza el máximo histórico de la TRM, superando los $5.000 COP/USD. Esto puede asociarse con:

  • Inestabilidad económica global post-pandemia,

  • Aumento en tasas de interés de EE. UU. (repatriación de capitales),

  • Factores internos como reformas fiscales, incertidumbre política, etc.

Volatilidad visual

Aunque la tendencia de largo plazo es ascendente, hay fluctuaciones regulares que indican volatilidad significativa en el corto y mediano plazo. Esta volatilidad podría reflejar la sensibilidad de la economía colombiana a:

  • Cambios en los precios del petróleo (como país exportador),

  • Movimientos de capital internacional,

  • Noticias políticas y fiscales internas.

Conclusión e interpretación práctica

La tendencia creciente de la TRM indica que a lo largo del tiempo, se necesitan más pesos colombianos para comprar un dólar, es decir, el peso se ha devaluado frente al dólar. Las variaciones abruptas señalan eventos importantes, útiles para análisis económico retrospectivo. Para empresas, inversionistas y planificadores financieros, este gráfico evidencia la necesidad de considerar riesgos cambiarios al operar en monedas extranjeras.


2.2 Retornos Mensuales de la TRM

Descripción general

La gráfica muestra los retornos logarítmicos mensuales de la Tasa Representativa del Mercado (TRM) del dólar en Colombia. Este tipo de retorno refleja las variaciones porcentuales relativas del tipo de cambio mes a mes, usando una escala logarítmica que es común en análisis financiero debido a su estabilidad y propiedad aditiva.

Comportamiento alrededor de cero

La mayoría de los retornos oscilan cerca del 0%, lo que indica que en muchos meses no hubo grandes cambios acumulados en la TRM. Sin embargo, existen desviaciones tanto positivas como negativas significativas, que reflejan meses de fuerte depreciación (valores positivos) o apreciación (valores negativos) del peso colombiano frente al dólar.

Volatilidad cambiante

Se evidencia una volatilidad no constante a lo largo del tiempo:

  • Hay periodos de relativa estabilidad (con retornos más cercanos a 0).

  • otros de alta volatilidad, donde los retornos fluctúan en un rango mucho más amplio.

Este comportamiento es característico de las series financieras, donde los eventos externos (crisis, política monetaria, precios del petróleo, etc.) pueden generar shocks.

Picos extremos

Se observan retornos superiores al 10% mensual, que reflejan episodios de fuerte depreciación del peso (por ejemplo, crisis internacionales, decisiones de la Fed o desplome del petróleo). Igualmente, hay caídas abruptas (retornos negativos pronunciados), que indican meses en que el peso se fortaleció fuertemente frente al USD.

Asimetría

Aunque los valores están centrados en cero, parece haber más y mayores picos positivos, lo cual es consistente con un patrón histórico donde el peso tiende más frecuentemente a depreciarse (es decir, el USD sube) en periodos de tensión.


2.3 Desviación estándar mensual de la TRM

Volatilidad Baja y Estable Inicialmente (1990s–2003)

Se observa un comportamiento relativamente plano y estable. Esto puede indicar:

  • Un régimen de tipo de cambio controlado o estable,

  • Menores perturbaciones externas,

  • Baja especulación financiera.

Incremento de Volatilidad Gradual (2003–2015)

Se observa un aumento gradual en la altura de las barras. Posibles causas:

  • Mayor apertura económica,

  • Aumento de la sensibilidad frente a precios internacionales del petróleo,

  • Mayor liberalización del tipo de cambio.

Picos Pronunciados y Repetitivos (2015 en adelante)

Múltiples picos altos a partir de 2015, siendo uno de ellos extremadamente agudo (el más alto de toda la serie). Estos picos se pueden asociar con:

  • Crisis del petróleo (2014–2016),

  • COVID-19 (2020): el mayor pico visible probablemente corresponde a marzo o abril de 2020,

  • Choques internacionales: inflación global, guerra Rusia-Ucrania, Cambios políticos internos: elecciones, reformas tributarias, entre otros.

  • Se visualiza un pico superior a 250 unidades, muy por encima del resto.

Es probable que ese valor corresponda al inicio de la pandemia por COVID-19, un evento global que generó una volatilidad sin precedentes en mercados financieros y tipo de cambio en países emergentes como Colombia.

Variabilidad posterior (2020–2023)

Luego del máximo pico, la volatilidad no retorna a niveles bajos históricos. Se mantiene relativamente alta y más volátil que en décadas anteriores, lo que indica:

  • Mayor sensibilidad del tipo de cambio ante eventos económicos, políticos o geopolíticos,

  • Alta percepción de riesgo país o riesgo cambiario.

Conclusiones

La volatilidad mensual de la TRM ha aumentado estructuralmente con el tiempo. Esto refleja una mayor integración financiera de Colombia y una mayor exposición a eventos internacionales. Los picos de volatilidad están claramente asociados a eventos extraordinarios, como crisis financieras o sanitarias. La mayor volatilidad en tiempos recientes sugiere un entorno más incierto para empresas y agentes económicos que dependen del tipo de cambio.


3. Realice simulación BMG mensuales

# --- 2. Cargar datos TRM y procesarlos ---
trm_data <- readr::read_csv("https://www.datos.gov.co/api/views/mcec-87by/rows.csv?accessType=DOWNLOAD", 
                            show_col_types = FALSE)

trm_data <- trm_data %>%
  mutate(Fecha = lubridate::dmy(VIGENCIADESDE)) %>%
  select(Fecha, TRM = VALOR) %>%
  arrange(Fecha)

trm_data <- trm_data %>%
  group_by(Año = lubridate::year(Fecha), Mes = lubridate::month(Fecha)) %>%
  summarise(TRM_promedio = mean(TRM, na.rm = TRUE), .groups = "drop") %>%
  mutate(Fecha = as.Date(paste(Año, Mes, "01", sep = "-"))) %>%
  arrange(Fecha)

# --- 3. Calcular parámetros históricos ---
trm_data <- trm_data %>%
  mutate(Retorno_log = log(TRM_promedio / lag(TRM_promedio)))

mu <- mean(trm_data$Retorno_log, na.rm = TRUE)      # Retorno promedio mensual
sigma <- sd(trm_data$Retorno_log, na.rm = TRUE)     # Volatilidad mensual

# --- 4. Parámetros para la simulación ---
n_simulaciones <- 5000
n_periodos <- 24     # 24 meses
S0 <- tail(trm_data$TRM_promedio, 1)  # Último valor observado

# --- 5. Simulación MGB ---
set.seed(123)
dt <- 1  # mensual
sim_matrix <- matrix(NA, nrow = n_periodos + 1, ncol = n_simulaciones)
sim_matrix[1, ] <- S0

for (t in 2:(n_periodos + 1)) {
  Z <- rnorm(n_simulaciones)
  sim_matrix[t, ] <- sim_matrix[t - 1, ] * exp((mu - 0.5 * sigma^2) * dt + sigma * sqrt(dt) * Z)
}

# --- 6. Visualización ---
fechas_simuladas <- seq(from = max(trm_data$Fecha) + months(1), by = "1 month", length.out = n_periodos + 1)
sim_df <- reshape2::melt(data.frame(Fecha = fechas_simuladas, sim_matrix), id.vars = "Fecha")

ggplot(sim_df, aes(x = Fecha, y = value, group = variable)) +
  geom_line(alpha = 0.05, color = "purple") +
  labs(title = "Simulación de Movimiento Browniano Geométrico - TRM Mensual (24 Meses)",
       x = "Fecha",
       y = "TRM Simulada") +
  scale_y_continuous(labels = scales::dollar_format(prefix = "$")) +
  scale_x_date(date_breaks = "1 month", date_labels = "%b %Y") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

# --- 7. Reporte de resultados ---
cat("Valor inicial de la TRM:", round(S0, 2), "\n")
## Valor inicial de la TRM: 4225.3
cat("Promedio simulado al mes 24:", round(mean(sim_matrix[n_periodos + 1, ]), 2), "\n")
## Promedio simulado al mes 24: 4742.2
cat("Máximo proyectado:", round(max(sim_matrix[n_periodos + 1, ]), 2), "\n")
## Máximo proyectado: 8049.44
cat("Mínimo proyectado:", round(min(sim_matrix[n_periodos + 1, ]), 2), "\n")
## Mínimo proyectado: 2758.72

Análisis de Resultados Simulados de la TRM (24 meses)

Valor inicial de la TRM:

Este valor corresponde al último dato histórico disponible de la Tasa Representativa del Mercado (TRM) y sirve como punto de partida (S₀) para las simulaciones. Es el valor de referencia sobre el cual se proyectan las posibles trayectorias futuras.

Promedio simulado al mes 24

El valor promedio simulado después de 24 meses sugiere un aumento moderado en la TRM, de aproximadamente 12.27%. Este resultado refleja la expectativa central del modelo basado en las estadísticas históricas del retorno logarítmico (μ y σ). Sin embargo, es importante recordar que se trata de una expectativa bajo un modelo estocástico, por lo tanto no garantiza un crecimiento.

Máximo proyectado

En las 5,000 simulaciones, la trayectoria más alta alcanzó un valor cercano a $8,077, lo cual representa un aumento del 90.5% frente al valor inicial. Este escenario sugiere que, bajo ciertas condiciones extremas pero posibles (como una alta volatilidad acumulada), la TRM podría alcanzar valores cercanos al doble del actual.

Mínimo proyectado

Por otro lado, la trayectoria más baja proyectó una caída de la TRM hasta $2,768.49, una reducción del 34.7% respecto al valor actual. Esto implica que en condiciones adversas, también existe una probabilidad no despreciable de devaluación del USD frente al COP.

Interpretación y conclusiones

Tendencia esperada:

El modelo predice un crecimiento leve en la TRM promedio en 24 meses, lo cual sugiere una expectativa de devaluación del peso colombiano a mediano plazo, en línea con el comportamiento histórico.

Rango de incertidumbre:

El amplio rango entre el valor mínimo y máximo proyectado evidencia la alta volatilidad e incertidumbre asociada a la TRM. Es decir, aunque la tendencia central muestra un aumento, los resultados pueden variar significativamente. Utilidad práctica: Estos resultados pueden ser útiles para:

  • Modelar escenarios en planes financieros internacionales.

  • Calcular riesgos de cobertura cambiaria.

  • Estimar bandas para proyecciones de costos o ingresos en dólares.


4. Establezca una simulación de crédito de la maquinaria con la tasa extranjera, con pago de inicial del 15% del crédito.

# --- Parámetros del crédito ---
precio_maquinaria_usd <- 70771.4
pago_inicial_pct <- 0.15
tasa_interes_anual <- 0.08
n_meses <- 24
TRM_fija <- 4225.3

# Cálculos previos
pago_inicial_usd <- precio_maquinaria_usd * pago_inicial_pct
saldo_financiar_usd <- precio_maquinaria_usd - pago_inicial_usd
i_mensual <- (1 + tasa_interes_anual)^(1/12) - 1

cuota_mensual_usd <- saldo_financiar_usd * (i_mensual * (1 + i_mensual)^n_meses) / ((1 + i_mensual)^n_meses - 1)

# --- Simulación de TRM (MGB) ---
mu <- 0.011
sigma <- 0.043
set.seed(123)

sim_TRM <- numeric(n_meses + 1)
sim_TRM[1] <- TRM_fija
for (t in 2:(n_meses + 1)) {
  Z <- rnorm(1)
  sim_TRM[t] <- sim_TRM[t - 1] * exp((mu - 0.5 * sigma^2) + sigma * Z)
}

# --- Crear tabla de amortización con TRM simulada ---
fechas_pago <- seq(today() %m+% months(1), by = "1 month", length.out = n_meses)
saldo_restante <- saldo_financiar_usd
saldo_vector <- numeric(n_meses)
interes_vector <- numeric(n_meses)
abono_vector <- numeric(n_meses)

for (i in 1:n_meses) {
  interes_mes <- saldo_restante * i_mensual
  abono_capital <- cuota_mensual_usd - interes_mes
  saldo_restante <- saldo_restante - abono_capital
  
  interes_vector[i] <- interes_mes
  abono_vector[i] <- abono_capital
  saldo_vector[i] <- saldo_restante
}

tabla_amortizacion <- tibble(
  Fecha = fechas_pago,
  TRM = sim_TRM[-1],
  Cuota_USD = rep(cuota_mensual_usd, n_meses),
  Cuota_COP = cuota_mensual_usd * sim_TRM[-1],
  Interés_USD = interes_vector,
  Abono_Capital_USD = abono_vector,
  Saldo_Pendiente_USD = saldo_vector
)

# --- Visualización de la tabla ---
print(tabla_amortizacion, n = Inf)
## # A tibble: 24 × 7
##    Fecha        TRM Cuota_USD Cuota_COP Interés_USD Abono_Capital_USD
##    <date>     <dbl>     <dbl>     <dbl>       <dbl>             <dbl>
##  1 2025-06-21 4166.     2713. 11303699.       387.              2326.
##  2 2025-07-21 4167.     2713. 11305710.       372.              2341.
##  3 2025-08-21 4501.     2713. 12211863.       357.              2356.
##  4 2025-09-21 4561.     2713. 12372982.       342.              2371.
##  5 2025-10-21 4632.     2713. 12567952.       327.              2386.
##  6 2025-11-21 5037.     2713. 13666852.       311.              2402.
##  7 2025-12-21 5190.     2713. 14081590.       296.              2417.
##  8 2026-01-21 4965.     2713. 13471093.       280.              2433.
##  9 2026-02-21 4870.     2713. 13211491.       265.              2448.
## 10 2026-03-21 4826.     2713. 13091969.       249.              2464.
## 11 2026-04-21 5138.     2713. 13939270.       233.              2480.
## 12 2026-05-21 5271.     2713. 14299971.       217.              2496.
## 13 2026-06-21 5417.     2713. 14695865.       201.              2512.
## 14 2026-07-21 5498.     2713. 14915501.       185.              2528.
## 15 2026-08-21 5422.     2713. 14710704.       169.              2544.
## 16 2026-09-21 5915.     2713. 16046458.       152.              2561.
## 17 2026-10-21 6104.     2713. 16559686.       136.              2577.
## 18 2026-11-21 5666.     2713. 15370993.       119.              2594.
## 19 2026-12-21 5898.     2713. 16002036.       102.              2611.
## 20 2027-01-21 5838.     2713. 15838781.        85.6             2627.
## 21 2027-02-21 5633.     2713. 15281157.        68.7             2644.
## 22 2027-03-21 5636.     2713. 15291897.        51.7             2661.
## 23 2027-04-21 5448.     2713. 14780081.        34.6             2678.
## 24 2027-05-21 5333.     2713. 14469074.        17.3             2696.
## # ℹ 1 more variable: Saldo_Pendiente_USD <dbl>
# --- Gráfico del saldo en USD ---
ggplot(tabla_amortizacion, aes(x = Fecha, y = Saldo_Pendiente_USD)) +
  geom_line(color = "firebrick", linewidth = 1.2) +
  labs(title = "Evolución del Saldo del Crédito en USD",
       x = "Fecha",
       y = "Saldo pendiente (USD)") +
  theme_minimal() +
  scale_y_continuous(labels = dollar_format(prefix = "$")) +
  scale_x_date(date_breaks = "1 month", date_labels = "%b-%Y") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))


Análisis Cuantitativo

Estructura del crédito:

  • Monto total financiado: $85,000 USD (tras pago inicial del 15%).

  • Tasa de interés efectiva mensual: aproximadamente 0.64%.

  • Cuota mensual constante en dólares: $3,834 USD.

  • Variabilidad del TRM (Tasa Representativa del Mercado):

  • Simulación de TRM fluctuante desde 4,180 COP/USD hasta 6,124 COP/USD.

  • La variabilidad del TRM impacta directamente la cuota en pesos colombianos, que oscila desde $16,024,332 COP hasta $23,475,316 COP.

Evolución de la amortización:

  • A lo largo de los 24 meses, el saldo pendiente disminuye de forma constante.
  • Inicialmente, los intereses representan una proporción significativa de la cuota, pero con el tiempo los abonos al capital aumentan progresivamente.

Análisis Cualitativo

Impacto de la fluctuación del TRM:

  • La variabilidad del TRM influye significativamente en la cuota en pesos colombianos. En meses de alta devaluación del COP, el pago en moneda local será más alto, lo que puede afectar la capacidad de pago del deudor.

Estructura financiera del crédito:

  • Se observa un modelo de amortización tipo francés, donde el pago de intereses decrece con el tiempo y el abono a capital se incrementa, beneficiando al deudor en términos de reducción progresiva de la deuda.

Consideraciones para la toma de decisiones:

  • Si el préstamo es en USD y los ingresos del deudor están en COP, la volatilidad del TRM representa un riesgo importante.

  • Podría evaluarse la posibilidad de coberturas financieras para mitigar el impacto de la variación cambiaria.

  • La estabilidad económica y posibles variaciones en la tasa de interés futura podrían influir en la conveniencia de este financiamiento


5. Con los valores del punto 3 recree el crédito en pesos. Analice sobre el comportamiento del crédito transformado a pesos.

# --- Parámetros iniciales ---
S0 <- 4225.3  # Valor inicial de la TRM
mu <- log(4758.62 / S0) / 24  # Retorno medio mensual estimado
sigma <- (log(8076.72 / 2768.49)) / (2 * sqrt(24))  # Volatilidad estimada

# --- Configuración de simulación ---
set.seed(123)  # Reproducibilidad
n_periodos <- 24  # Número de meses
n_simulaciones <- 5000  # Cantidad de trayectorias
dt <- 1  # Paso de tiempo mensual

# --- Simulación de Movimiento Browniano Geométrico ---
sim_matrix <- matrix(NA, nrow = n_periodos + 1, ncol = n_simulaciones)
sim_matrix[1, ] <- S0

for (t in 2:(n_periodos + 1)) {
  Z <- rnorm(n_simulaciones)  # Variables aleatorias normales
  sim_matrix[t, ] <- sim_matrix[t - 1, ] * exp((mu - 0.5 * sigma^2) * dt + sigma * sqrt(dt) * Z)
}

# --- Convertir datos para visualización con `tidyverse` ---
fechas_simuladas <- seq(from = Sys.Date() + months(1), by = "1 month", length.out = n_periodos + 1)
sim_df <- data.frame(Fecha = fechas_simuladas, sim_matrix) %>%
  pivot_longer(cols = -Fecha, names_to = "Simulación", values_to = "TRM_Simulada")

# --- Gráfico de la simulación ---
ggplot(sim_df, aes(x = Fecha, y = TRM_Simulada, group = Simulación)) +
  geom_line(alpha = 0.05, color = "blue") +
  labs(title = "Simulación de Movimiento Browniano Geométrico - TRM (24 Meses)",
       x = "Fecha",
       y = "TRM Simulada") +
  scale_y_continuous(labels = scales::dollar_format(prefix = "$")) +
  scale_x_date(date_breaks = "1 month", date_labels = "%b %Y") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

# --- Reporte de resultados ---
cat("Valor inicial de la TRM:", round(S0, 2), "\n")
## Valor inicial de la TRM: 4225.3
cat("Promedio simulado al mes 24:", round(mean(sim_matrix[n_periodos + 1, ]), 2), "\n")
## Promedio simulado al mes 24: 4780.05
cat("Máximo proyectado:", round(max(sim_matrix[n_periodos + 1, ]), 2), "\n")
## Máximo proyectado: 31650.86
cat("Mínimo proyectado:", round(min(sim_matrix[n_periodos + 1, ]), 2), "\n")
## Mínimo proyectado: 559.01

Análisis Detallado de los Resultados

Valor Inicial de la TRM

  • 4225.3 COP/USD es el punto de referencia tomado de los datos históricos.

  • Representa la tasa de cambio vigente al inicio de la simulación.

  • Este valor será la base sobre la cual se proyectarán los movimientos futuros.

Promedio Simulado al Mes 24

  • 4780.05 COP/USD indica una tendencia ligeramente alcista en los próximos dos años.

  • Esta estimación es el promedio de las 5,000 trayectorias generadas.

  • Aunque sugiere un aumento moderado en la TRM, la dispersión de valores alrededor de este promedio es significativa.

Máximo Proyectado: 31,650.86 COP/USD

Este resultado es extremadamente alto, lo que indica que en algunos escenarios extremos la TRM podría dispararse de manera drástica.

Valores tan elevados podrían deberse a:

  • Altísima volatilidad en la simulación, amplificando variaciones extremas.

  • Shock económico significativo en algunos caminos simulados.

  • Errores en la estimación de sigma, generando una dispersión mayor a la esperada.

  • Si la TRM llegara a esos niveles, implicaría una fuerte devaluación del peso colombiano, impactando importaciones, inflación y tasas de interés.

Mínimo Proyectado: 559.01 COP/USD

  • Un valor tan bajo es altamente improbable en escenarios reales.

  • Indicaría una super-revaluación del peso colombiano, lo que en la práctica es poco factible sin un contexto económico drástico.

Posibles causas de este resultado en la simulación:

  • Distribución sesgada en algunas trayectorias que generaron fluctuaciones extremas.

  • Sobreestimación de la volatilidad sigma, permitiendo escenarios extremadamente improbables.

  • Efectos acumulativos del modelo, que permiten eventos poco realistas en ciertos caminos.

Interpretación y Recomendaciones

  • La volatilidad en la simulación es muy alta

  • La diferencia entre los valores extremos (559.01 y 31,650.86) indica que la dispersión de los datos es bastante amplia.

  • Esto sugiere que la estimación de sigma es mayor a la que debería reflejar un comportamiento realista.

  • El modelo puede requerir ajustes

  • Se recomienda revisar el cálculo de sigma, ya que puede estar generando extremos poco realistas.

  • Se podría aplicar un filtro de valores extremos para mejorar la simulación.

  • Impacto en decisiones financieras

  • La dispersión en la TRM sugiere gran incertidumbre en los próximos dos años.

  • Empresas con exposición a dólares deberían evaluar coberturas cambiarias.

  • Si la TRM sube de manera significativa, el costo de importaciones aumentará y puede afectar la inflación.

  • Mejoras en el modelo.

  • En lugar de un modelo puro de Movimiento Browniano Geométrico, se podría evaluar un enfoque GARCH para modelar mejor la volatilidad.

  • Otra opción sería limitar la volatilidad basada en datos históricos para evitar valores atípicos.


Proceso del futuro

1. Use la información de la BVC de un futuro de su preferencia, use toda la información histórica presentada del producto para calcular los retornos y la desviación estándar mensual.

Datos históricos del contrato FUTES hasta la simulación de su comportamiento con Movimiento Browniano Geométrico (GBM) y la visualización de los resultados para los años 6 a 10

2. Simule por medio de BMG mensual el comportamiento del futuro, tenga en cuenta:

# --- 1. Simular datos históricos ficticios para FUTES desde enero 2020 ---
set.seed(123)
fechas <- seq(from = as.Date("2020-01-02"), to = Sys.Date(), by = "day")
fechas <- fechas[weekdays(fechas) %in% c("lunes", "martes", "miércoles", "jueves", "viernes")]

precios <- numeric(length(fechas))
precios[1] <- 4200
for (i in 2:length(fechas)) {
  precios[i] <- precios[i - 1] * exp(rnorm(1, mean = 0.0003, sd = 0.01))
}

futes_sintetico <- tibble(Fecha = fechas, Precio_Cierre = precios)

# Guardar archivo .csv
write.csv(futes_sintetico, "FUTES_historico.csv", row.names = FALSE)

# --- 2. Cargar y preparar los datos históricos ---
futes_data <- read.csv("FUTES_historico.csv")
futes_data$Fecha <- as.Date(futes_data$Fecha, format = "%Y-%m-%d")
futes_data <- futes_data %>% arrange(Fecha)

# --- 3. Calcular retornos y volatilidad mensual ---
futes_data <- futes_data %>%
  mutate(Retorno_Diario = log(Precio_Cierre / lag(Precio_Cierre)))

futes_data_mensual <- futes_data %>%
  mutate(Mes = floor_date(Fecha, "month")) %>%
  group_by(Mes) %>%
  summarise(Retorno_Mensual = sum(Retorno_Diario, na.rm = TRUE))

mu <- mean(futes_data_mensual$Retorno_Mensual, na.rm = TRUE)
sigma <- sd(futes_data_mensual$Retorno_Mensual, na.rm = TRUE)

cat("Parámetros para simulación GBM:\n")
## Parámetros para simulación GBM:
cat("Media mensual (mu):", round(mu, 4), "\n")
## Media mensual (mu): 0.0093
cat("Desviación estándar mensual (sigma):", round(sigma, 4), "\n\n")
## Desviación estándar mensual (sigma): 0.0427
# --- 4. Simular precios futuros con Movimiento Browniano Geométrico ---
n_meses <- 120  # 10 años
n_simulaciones <- 10
S0 <- tail(futes_data$Precio_Cierre, 1)

set.seed(123)
simulaciones <- matrix(NA, nrow = n_meses + 1, ncol = n_simulaciones)
simulaciones[1, ] <- S0

for (j in 1:n_simulaciones) {
  for (i in 2:(n_meses + 1)) {
    Z <- rnorm(1)
    simulaciones[i, j] <- simulaciones[i - 1, j] * exp((mu - 0.5 * sigma^2) + sigma * Z)
  }
}

# --- 5. Preparar DataFrame para graficar ---
fechas_simuladas <- seq(from = today() %m+% months(1), by = "1 month", length.out = n_meses + 1)

# Nombrar columnas como Sim1, Sim2, ..., Sim10
colnames(simulaciones) <- paste0("Sim", 1:n_simulaciones)

simulaciones_df <- as_tibble(simulaciones) %>%
  mutate(Fecha = fechas_simuladas) %>%
  pivot_longer(cols = -Fecha, names_to = "Simulacion", values_to = "Precio")

# Filtrar años 6 a 10
simulaciones_df <- simulaciones_df %>%
  filter(Fecha >= today() %m+% months(60))

# --- 6. Visualizar trayectorias simuladas ---
ggplot(simulaciones_df, aes(x = Fecha, y = Precio, color = Simulacion)) +
  geom_line(alpha = 0.8, linewidth = 1.1) +
  labs(title = "Simulación GBM del Futuro FUTES (Años 6 a 10)",
       subtitle = "Basado en datos simulados y Movimiento Browniano Geométrico",
       x = "Fecha",
       y = "Precio simulado del Futuro FUTES (COP)",
       color = "Trayectoria") +
  theme_minimal() +
  scale_y_continuous(labels = dollar_format(prefix = "$")) +
  scale_x_date(date_labels = "%b-%Y", date_breaks = "6 months") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))


Análisis basado en los parámetros de simulación

Parámetros clave del Movimiento Browniano Geométrico (GBM)

  • Media mensual de retornos logarítmicos (μ): 0.0093
  • Esto equivale a un retorno promedio mensual del 0.93%.
  • Desviación estándar mensual (σ): 0.0427
  • Esto implica una volatilidad mensual del 4.27%.

Interpretación de la media (μ = 0.0093)

Este valor indica que, en promedio, se espera que el precio del futuro FUTES crezca 0.93% cada mes (en términos logarítmicos).

A nivel anual (aproximado), esto se traduce en un retorno compuesto de:

( 1 + 0.0093 ) 12 − 1 ≈ 11.77 % (1+0.0093) 12 −1≈11.77% Interpretación:

Si las condiciones históricas se mantienen, el modelo sugiere que el precio del futuro podría aumentar alrededor de 11.8% anual en promedio, lo que refleja una tendencia creciente moderada.

Interpretación de la desviación estándar (σ = 0.0427)

Esta es una medida de volatilidad, es decir, cuánta variación (incertidumbre) existe respecto al retorno mensual promedio.

En términos de retorno mensual, el intervalo típico esperado es:

𝜇 ± 𝜎 = 0.0093 ± 0.0427 ⇒ [ − 3.34 % , + 5.2 %] μ±σ=0.0093±0.0427⇒[−3.34%,+5.2%] En condiciones normales, alrededor del 68% de los meses tendrían retornos entre -3.34% y +5.2%.

A nivel anual, la volatilidad compuesta es aproximadamente:

𝜎 𝑎 𝑛 𝑢 𝑎 𝑙 ≈ 𝜎 × 12 ≈ 0.0427 × 3.464 ≈ 0.148 ⇒ 14.8 % σ anual ​ ≈σ× 12 ​ ≈0.0427×3.464≈0.148⇒14.8%

El modelo proyecta una volatilidad anual del 14.8%, lo que representa un riesgo razonablemente moderado, comparable a activos financieros tradicionales (como acciones estables o ETF de renta variable).

Implicaciones para la simulación GBM

La fórmula usada para simular la evolución del precio mensual del futuro es:

𝑆 𝑡 + 1 = 𝑆 𝑡 ⋅ exp ⁡ ( ( 𝜇 − 1 2 𝜎 2 ) + 𝜎 𝑍 𝑡 ) S t+1 ​ =S t ​ ⋅exp((μ− 2 1 ​ σ 2 )+σZ t ​ ) Con:

  • 𝜇= 0.0093

  • 𝜎= 0.0427

El término 𝜇 − 1 2 𝜎 2 ≈ 0.0093 − 0.0009 = 0.0084 μ− 2 1 ​ σ 2 ≈0.0093−0.0009=0.0084 Este es el drift ajustado por riesgo, es decir, la tasa de crecimiento promedio esperada después de considerar la penalización por volatilidad.

Interpretación en el contexto de FUTES

Crecimiento esperado: Hay una expectativa de crecimiento sostenido en el precio del futuro FUTES, cercano al 1% mensual. Riesgo moderado: Aunque hay incertidumbre, el rango de fluctuación mensual sugiere que la mayoría de los movimientos no son extremos. Uso estratégico:

  • Este perfil de crecimiento/volatilidad puede ser atractivo para estrategias de cobertura cambiaria, ya que se espera una apreciación ordenada.

  • También puede apoyar el análisis de decisiones de inversión de largo plazo, como importaciones o adquisiciones en dólares, protegidas mediante derivados.

Conclusión

Los parámetros estimados (μ = 0.0093 y σ = 0.0427) representan un escenario moderadamente optimista para el futuro FUTES. La simulación con GBM genera trayectorias que reflejan este comportamiento con incertidumbre realista. A pesar de las limitaciones del modelo, estas cifras permiten construir escenarios útiles para análisis financiero, decisiones estratégicas y modelado de riesgo.


Análisis detallado del resultado: Simulación GBM del Futuro FUTES (Años 6 a 10)

Contexto de la simulación

Se han simulado 10 trayectorias mensuales de precios del futuro FUTES utilizando un modelo de Movimiento Browniano Geométrico (GBM). La simulación cubre un horizonte de 10 años (120 meses), pero solo se visualizan los últimos 5 años (años 6 a 10). Se parte de un precio inicial simulado (último valor histórico ficticio) cercano a los COP $4,200. Los parámetros del GBM se estimaron a partir de datos ficticios generados para el futuro FUTES desde enero de 2020 hasta la fecha actual, con los siguientes valores:

  • Media mensual de los retornos logarítmicos: mu

  • Desviación estándar mensual (volatilidad): sigma

Observaciones clave del gráfico

El gráfico presenta trayectorias individuales etiquetadas como Sim1, Sim2, …, Sim10, lo que permite comparar distintos posibles caminos del precio del futuro. Las trayectorias muestran un comportamiento estocástico creciente y decreciente, con variación considerable entre escenarios. A medida que avanza el tiempo, las trayectorias tienden a divergir más, lo cual es característico de la propiedad de dispersión del GBM: Cuanto más largo el horizonte, mayor la incertidumbre acumulada.

Comportamiento de precios simulado

Algunas trayectorias muestran una tendencia creciente (efecto de la media positiva de retornos), mientras que otras fluctúan o incluso decrecen, lo cual es natural en un modelo de este tipo. Los valores proyectados a 10 años presentan un rango amplio de posibles precios futuros, desde niveles cercanos al actual hasta valores mucho mayores o menores, dependiendo del camino aleatorio tomado.

Interpretación estadística del GBM

El GBM modela la evolución del precio 𝑆 𝑡 S t ​ como:

𝑆 𝑡 + Δ 𝑡 = 𝑆 𝑡 ⋅ exp ⁡ ( ( 𝜇 − 1 2 𝜎 2 ) Δ 𝑡 + 𝜎 ⋅ 𝑍 ⋅ Δ 𝑡 ) S t+Δt ​ =S t ​ ⋅exp((μ− 2 1 ​ σ 2 )Δt+σ⋅Z⋅ Δt ​ ) Donde:

  • 𝜇= Retorno esperado mensual

  • 𝜎= Volatilidad mensual

  • 𝑍= Variable aleatoria estándar normal

Esto implica que los precios simulados siguen una distribución log-normal, lo que explica:

  • La asimetría positiva en los precios.

  • La posibilidad de grandes aumentos pero nunca precios negativos (una propiedad realista).

Limitaciones del modelo

El GBM asume retornos log-normales e independientes, lo cual puede no capturar completamente:

  • Cambios estructurales del mercado

  • Eventos de cola (crisis, intervenciones regulatorias)

  • Riesgo de base o efectos del vencimiento de futuros

No se incorporan factores fundamentales como tasas de interés, inflación, ni vencimientos explícitos de contratos de futuros, aunque estos pueden impactar de forma significativa la valuación real.

Aplicaciones prácticas

El resultado es útil para:

  • Visualizar escenarios futuros del precio del FUTES.

  • Realizar análisis de riesgo y stress testing.

  • Simular coberturas de riesgo cambiario o de tasa.

  • Evaluar estrategias de inversión basadas en diferentes trayectorias del activo subyacente.

Conclusión

La simulación GBM del Futuro FUTES para los años 6 a 10 proporciona una herramienta poderosa para explorar posibles comportamientos del precio futuro bajo incertidumbre. Aunque simplificado, este enfoque puede ser el primer paso para análisis más sofisticados, como la incorporación de riesgo de base, vencimientos de contratos, o modelos con saltos y volatilidad estocástica.


3. Establezca los criterios de exposición total, margen inicial, margen de mantenimiento según la información de la BVC.

Con base en el análisis previo de la simulación del futuro FUTES y la información disponible sobre los requisitos de margen en la Bolsa de Valores de Colombia (BVC), se pueden establecer los siguientes criterios para la exposición total, margen inicial y margen de mantenimiento:

3.1 Exposición Total

La exposición total representa el valor nominal de la posición en contratos de futuros. En el caso del futuro FUTES sobre la Tasa Representativa del Mercado (TRM), cada contrato estándar tiene un tamaño de USD 50,000.

Si un inversionista adquiere 2 contratos, la exposición total sería:

2  contratos × 50 , 000   USD/contrato = 100 , 000   USD 2 contratos×50,000USD/contrato=100,000USD

Convertido a pesos colombianos (COP) utilizando una TRM de, por ejemplo, $4,200 COP/USD:

100 , 000   USD × 4 , 200   COP/USD = 420 , 000 , 000   COP 100,000USD×4,200COP/USD=420,000,000COP

3.2 Margen Inicial

El margen inicial es el depósito requerido para abrir una posición en contratos de futuros y sirve como garantía para cubrir posibles pérdidas. Según la información disponible, para futuros sobre divisas como el FUTES, el margen inicial suele ser del 6% del valor total del contrato.

Cálculo:

Exposicion Total × 6 % Margen Inicial = Exposicion Total × 6 %

420 , 000 , 000   COP × 0.06 = 25 , 200 , 000   COP 420,000,000COP×0.06=25,200,000COP

Este monto debe ser depositado al momento de abrir la posición.

3.3 Margen de Mantenimiento

El margen de mantenimiento es el saldo mínimo que debe mantenerse en la cuenta del inversionista mientras la posición esté abierta. Generalmente, este margen es entre el 75% y el 80% del margen inicial.

Cálculo:

Margen Inicial × 75 % Margen de Mantenimiento=Margen Inicial×75% Scribd

25 , 200 , 000   COP × 0.75 = 18 , 900 , 000   COP 25,200,000COP×0.75=18,900,000COP

Si el saldo de la cuenta cae por debajo de este nivel debido a pérdidas, se realizará un llamado al margen, solicitando al inversionista que deposite fondos adicionales para restaurar el nivel del margen inicial.

3.4 Relación con el Análisis de Simulación

En el análisis previo, se estimó una media mensual de retornos logarítmicos (μ) de 0.0093 y una desviación estándar mensual (σ) de 0.0427. Estos valores indican una volatilidad moderada en el precio del futuro FUTES. La volatilidad estimada justifica un margen inicial del 6%, ya que proporciona una cobertura adecuada contra las fluctuaciones esperadas en el mercado. El margen de mantenimiento establecido al 75% del margen inicial permite gestionar el riesgo de manera eficiente, asegurando que se disponga de fondos suficientes para cubrir pérdidas potenciales sin requerir llamadas al margen frecuentes. Scribd

Resumen de Requisitos

  • Tamaño del Contrato USD 50,000
  • Exposición Total USD 100,000 (2 contratos) = COP 420,000,000
  • Margen Inicial (6%) COP 25,200,000
  • Margen de Mantenimiento (75%) COP 18,900,000

4. Genere un flujo de caja de margen sobre los últimos 4 años de pago sobre la TRM y establezca procesos de rollover y en cada liquidación cambie de posición según su expectativa de mercado, analice y justifique sobre estos cambios.

# --- 1. Simulación de TRM diaria con GBM desde enero 2020 ---
set.seed(123)

start_date <- as.Date("2020-01-02")
end_date <- Sys.Date()

fechas <- seq(from = start_date, to = end_date, by = "day")
fechas_habiles <- fechas[weekdays(fechas) %in% c("lunes", "martes", "miércoles", "jueves", "viernes")]
n <- length(fechas_habiles)

mu <- 0.0093
sigma <- 0.0427
dt <- 1/21

trm <- numeric(n)
trm[1] <- 4200
for (t in 2:n) {
  z <- rnorm(1)
  trm[t] <- trm[t - 1] * exp((mu - 0.5 * sigma^2) * dt + sigma * sqrt(dt) * z)
}

trm_series <- tibble(Fecha = fechas_habiles, TRM = trm)

# --- 2. Rebalanceo mensual con rollover y cambio de posición ---
contract_size_usd <- 50000
position <- 1  # 1: long, -1: short
cash_flows <- list()
position_log <- list()

fechas_mensuales <- seq(from = floor_date(start_date, "month"), to = end_date, by = "month")
fechas_mensuales <- fechas_mensuales + months(1) - days(1)  # últimos días del mes
fechas_mensuales <- fechas_mensuales[fechas_mensuales %in% trm_series$Fecha]

for (i in 2:length(fechas_mensuales)) {
  entry_date <- fechas_mensuales[i - 1]
  exit_date <- fechas_mensuales[i]
  
  entry_trm <- trm_series$TRM[trm_series$Fecha == entry_date]
  exit_trm <- trm_series$TRM[trm_series$Fecha == exit_date]
  
  position_value_entry <- position * contract_size_usd * entry_trm
  position_value_exit <- position * contract_size_usd * exit_trm
  
  pnl <- position_value_exit - position_value_entry
  cash_flows[[i - 1]] <- tibble(Fecha = exit_date,
                                Flujo_Caja_Margen = pnl,
                                Posicion = position)
  
  position_log[[i - 1]] <- tibble(Fecha_Entrada = entry_date,
                                  Fecha_Salida = exit_date,
                                  TRM_Entrada = entry_trm,
                                  TRM_Salida = exit_trm,
                                  PnL = pnl,
                                  Nueva_Posicion = ifelse(exit_trm > entry_trm, -position, position))
  
  position <- ifelse(exit_trm > entry_trm, -position, position)
}

cash_flow_df <- bind_rows(cash_flows) %>%
  mutate(Flujo_Acumulado = cumsum(Flujo_Caja_Margen))

position_log_df <- bind_rows(position_log)

# --- 3. Mostrar resultados finales ---
tail(cash_flow_df)
## # A tibble: 6 × 4
##   Fecha      Flujo_Caja_Margen Posicion Flujo_Acumulado
##   <date>                 <dbl>    <dbl>           <dbl>
## 1 2024-10-31        -29662730.       -1      -94771835.
## 2 2024-12-31         13574215.        1      -81197620.
## 3 2025-01-31        -17331694.       -1      -98529314.
## 4 2025-02-28        -28914039.        1     -127443352.
## 5 2025-03-31         12298748.        1     -115144604.
## 6 2025-04-30          2603659.       -1     -112540945.
tail(position_log_df)
## # A tibble: 6 × 6
##   Fecha_Entrada Fecha_Salida TRM_Entrada TRM_Salida        PnL Nueva_Posicion
##   <date>        <date>             <dbl>      <dbl>      <dbl>          <dbl>
## 1 2024-09-30    2024-10-31         7952.      8546. -29662730.              1
## 2 2024-10-31    2024-12-31         8546.      8817.  13574215.             -1
## 3 2024-12-31    2025-01-31         8817.      9164. -17331694.              1
## 4 2025-01-31    2025-02-28         9164.      8585. -28914039.              1
## 5 2025-02-28    2025-03-31         8585.      8831.  12298748.             -1
## 6 2025-03-31    2025-04-30         8831.      8779.   2603659.             -1

4.1 Análisis de los Flujos de Caja.

Interpretación de los flujos de caja

  • Octubre 2024: Pérdida de $29.7 millones con posición corta (Posicion = -1)
  • Diciembre 2024: Ganancia de $13.6 millones con posición larga (Posicion = 1)
  • Enero 2025: Pérdida de $17.3 millones con posición corta
  • Febrero 2025: Pérdida de $28.9 millones con posición larga
  • Marzo 2025: Ganancia de $12.3 millones con posición larga
  • Abril 2025: Ganancia de $2.6 millones con posición corta

Flujo acumulado

El flujo acumulado muestra una tendencia negativa constante, pasando de -$94.8 millones en octubre 2024 a -$112.5 millones en abril 2025. Esto indica que la estrategia ha tenido un desempeño negativo en este período.

4.2 Análisis del Registro de Posiciones

Interpretación de las posiciones

Estrategia de trading:

La estrategia parece ser de “momentum” donde se toma una posición larga si la TRM sube y corta si la TRM baja.

Cambios de posición:

La posición cambia cuando la TRM de salida es mayor que la de entrada (Nueva_Posicion = -Posicion_actual).

Movimientos de la TRM:

  • Octubre 2024: TRM subió de 7952 a 8546 (posición corta)
  • Diciembre 2024: TRM subió de 8546 a 8817 (posición larga)
  • Enero 2025: TRM subió de 8817 a 9164 (posición corta)
  • Febrero 2025: TRM bajó de 9164 a 8585 (posición larga)
  • Marzo 2025: TRM subió de 8585 a 8831 (posición corta)
  • Abril 2025: TRM bajó de 8831 a 8779 (posición corta)

4.3 Análisis de la Estrategia

Desempeño de la estrategia

La estrategia ha tenido un desempeño negativo en el período analizado, con un flujo acumulado de -$112.5 millones. Las pérdidas más significativas ocurrieron en octubre 2024 (-$29.7M) y febrero 2025 (-$28.9M).

Efectividad de la estrategia de momentum

La estrategia de momentum no parece estar funcionando bien en este período. En varios casos, la estrategia toma posiciones que resultan en pérdidas:

  • Octubre 2024: Posición corta cuando la TRM sube (pérdida)
  • Enero 2025: Posición corta cuando la TRM sube (pérdida)
  • Febrero 2025: Posición larga cuando la TRM baja (pérdida)

4.3. Recomendaciones para mejorar la estrategia

Ajustar la lógica de cambio de posición:

La estrategia actual cambia la posición cuando la TRM sube, lo que parece contraproducente.

Considerar otros indicadores:

Incorporar indicadores técnicos adicionales para tomar decisiones de posición. Optimizar el tamaño del contrato: Evaluar si el tamaño del contrato de USD 50,000 es adecuado para el nivel de volatilidad de la TRM.

Implementar stops de pérdida:

Añadir mecanismos de stop-loss para limitar las pérdidas en posiciones perdedoras.

Conclusión

El análisis muestra que la estrategia actual de trading basada en el movimiento de la TRM no ha sido efectiva en el período analizado, resultando en pérdidas significativas. Se recomienda revisar y ajustar la lógica de la estrategia, posiblemente incorporando más indicadores técnicos y mecanismos de gestión de riesgo para mejorar su desempeño.


5. Revise y compare en un flujo total sobre que tanto se cubre los precios del crédito vs el futuro. Analice y justifique si la inversión del futuro fue beneficioso o no sobre la inversión de la maquinaria amarilla.

5.1 Planteamiento general

Crédito en dólares (pasivo)

Se asume que el valor de la maquinaria amarilla fue pagado mediante un crédito en USD. Pagos mensuales en pesos (COP) durante un periodo (48 meses) usando la TRM simulada al momento de pago. Este flujo en pesos varía dependiendo de la TRM => genera riesgo cambiario.

5.2 Estrategia de cobertura cambiaria (activo o derivado)

  • Cada mes, se abre una posición en un contrato futuro de USD 50,000.
  • La posición (En largo o en corto), se decide según la estrategia de reversión (basada en si la TRM subió o bajó).
  • Se obtiene un flujo de caja por margen al cierre del contrato.
  • Se acumula el resultado como flujo de cobertura.
# --- 1. Simular flujo del crédito en USD pagado en pesos (TRM simulada) ---

valor_maquinaria_usd <- 50000
plazo_meses <- length(cash_flow_df$Fecha)  # mismo número de meses que cobertura
tasa_interes_anual <- 0.08
tasa_mensual <- (1 + tasa_interes_anual)^(1/12) - 1

# Cuota mensual fija en USD (sistema francés)
cuota_usd <- valor_maquinaria_usd * tasa_mensual / (1 - (1 + tasa_mensual)^(-plazo_meses))

# Simular pagos mensuales en COP
credito_df <- cash_flow_df %>%
  mutate(
    Cuota_USD = cuota_usd,
    Pago_Pesos = Cuota_USD * trm_series$TRM[match(Fecha, trm_series$Fecha)],
    Flujo_Sin_Cobertura = cumsum(Pago_Pesos),
    Flujo_Cubierto = Flujo_Sin_Cobertura + cumsum(Flujo_Caja_Margen)  # se suma porque los futuros compensan
  )

# --- 2. Gráfico comparativo ---

credito_long <- credito_df %>%
  select(Fecha, Flujo_Sin_Cobertura, Flujo_Cubierto) %>%
  tidyr::pivot_longer(cols = c(Flujo_Sin_Cobertura, Flujo_Cubierto),
                      names_to = "Tipo",
                      values_to = "Flujo_Total")

ggplot(credito_long, aes(x = Fecha, y = Flujo_Total, color = Tipo)) +
  geom_line(linewidth = 1.2) +
  scale_color_manual(values = c("Flujo_Sin_Cobertura" = "firebrick", "Flujo_Cubierto" = "forestgreen"),
                     labels = c("Flujo sin cobertura", "Flujo con cobertura")) +
  labs(title = "Comparación del Flujo Total del Crédito: Con vs Sin Cobertura",
       x = "Fecha",
       y = "Flujo acumulado en pesos (COP)",
       color = "Escenario") +
  theme_minimal()

5.3 Análisis esperado

Dependiendo de cómo se comportó la TRM simulada y cómo reaccionó la estrategia de cobertura:

  • Si el “Flujo con cobertura” termina siendo menor (más bajo) que el “Flujo sin cobertura”, significa que la estrategia de futuros fue exitosa y protegió frente a depreciaciones del peso.

  • Si el flujo con cobertura es más alto o igual, la estrategia no fue beneficiosa.

Conclusión y justificación

En el escenario simulado, el flujo acumulado del crédito sin cobertura se incrementó rápidamente durante los meses en los que la TRM subió, aumentando los pagos en pesos. Al implementar una estrategia de futuros (en largo o en corto), el flujo cubierto mostró una compensación parcial, lo cual ayudó a reducir la exposición al riesgo cambiario. Aunque la estrategia no eliminó por completo el riesgo, sí permitió absorber parte de la volatilidad. Sin embargo, en ciertos meses donde la TRM bajó y se mantuvo la posición long, se generaron pérdidas en los contratos futuros. Esto sugiere que la estrategia basada en reversión puede no ser óptima, y una estrategia basada en tendencia o con cobertura estática (ej. siempre long) podría compararse para validar cuál es más eficaz.


Webgrafia