Este documento describe el funcionamiento, la metodología, los supuestos y los resultados del Modelo Integrado de Predicción de Tasas de Interés. El modelo construye un sistema de pronóstico financiero que:
En Colombia, la TIBC es la tasa máxima de referencia que las entidades financieras pueden cobrar en créditos de libranza, consumo y microcrédito. Su valor depende directamente de la Tasa Monetaria fijada por el Banco de la República y de la Inflación observada. La USURA es el límite legal (TIBC × 1.5) por encima del cual cobrar interés constituye delito.
💡 Importancia estratégica: Este modelo permite anticipar el comportamiento de la TIBC y la USURA, facilitando la planeación financiera, la estructuración de portafolios de crédito y el cumplimiento normativo.
| Herramienta | Uso |
|---|---|
| R | Lenguaje de programación principal |
| randomForest | Modelos de clasificación y regresión no lineales |
| forecast (Arima) | Modelos SARIMA para series temporales |
| readxl / openxlsx | Lectura y escritura de archivos Excel |
| dplyr / tidyr | Manipulación y transformación de datos |
| zoo | Interpolación de series temporales |
| Power BI | Visualización final de resultados |
Esta sección documenta cada bloque del código R, explicando qué hace, por qué se hace así, y qué supuestos implica.
rm(list = ls()) # Limpia el entorno de trabajo
gc() # Libera memoria RAM
set.seed(123) # Fija semilla para reproducibilidad
options(scipen = 999) # Evita notación científica
¿Qué hace cada instrucción?
| Instrucción | Propósito | Justificación |
|---|---|---|
rm(list = ls()) |
Borra todos los objetos del entorno | Evita conflictos con ejecuciones previas |
gc() |
Libera memoria RAM | Importante cuando se procesan 10,000 simulaciones |
set.seed(123) |
Fija la semilla aleatoria | Garantiza reproducibilidad: si otro analista ejecuta el mismo código con la misma data, obtendrá exactamente los mismos resultados |
options(scipen = 999) |
Desactiva notación científica | Mejora la legibilidad de los números en tablas |
Parámetros globales:
Meta_Inf <- 0.03 # Meta de inflación del Banco de la República
HORIZONTE_SARIMA <- 48 # Meses con proyección SARIMA real
HORIZONTE_TOTAL <- 72 # Meses totales = 48 SARIMA + 24 constante
🔑 Supuesto 1: La meta de inflación se fija en 3% porque es el rango objetivo del Banco de la República de Colombia (entre 2% y 4%).
Indicadores <- read_excel(ruta_archivo, sheet = "Opcion2") %>%
dplyr::select(-CDT)
Variables utilizadas:
| Columna | Tipo | Rol |
|---|---|---|
Fecha |
Fecha mensual | Índice temporal |
Inflacion |
Decimal (0.0452 = 4.52%) | Variable exógena |
SMMLV |
Decimal | Variable exógena |
Monetaria |
Decimal | Variable objetivo 1 |
TIBC |
Decimal | Variable objetivo 2 |
DTF |
Decimal | Proyección SARIMA |
⚠️ Supuesto 2: Los valores deben estar en decimal (NO en porcentaje). Un valor
0.0452significa 4.52%. Este formato es obligatorio porque los modelos trabajan con proporciones.
Conversión de fecha:
if(is.numeric(Indicadores$Fecha)) {
Indicadores$Fecha <- as.Date(Indicadores$Fecha, origin = "1970-01-01")
} else {
Indicadores$Fecha <- as.Date(Indicadores$Fecha)
}
Cuando Excel exporta fechas, a veces las guarda como número (días
desde 1900 o 1970). Esta condición las normaliza al tipo
Date de R.
Filtro temporal:
Indicadores <- Indicadores %>% filter(Fecha <= as.Date("2026-09-01"))
⚠️ Supuesto 3: La fecha de corte se actualiza cada mes. Solo se consideran observaciones hasta esa fecha, garantizando que el modelo no “vea” información futura (evita data leakage).
Esta es la sección más crítica del modelo. Se construyen variables derivadas que capturan la dinámica económica.
Inflacion_conocida = lag(Inflacion, 2)
Inflacion_hace_3m = lag(Inflacion, 5)
Inflacion_hace_6m = lag(Inflacion, 8)
Monetaria_lag2 = lag(Monetaria, 2)
Monetaria_lag4 = lag(Monetaria, 4)
Monetaria_lag6 = lag(Monetaria, 6)
Formulación matemática:
Sea \(X_t\) el valor de la variable \(X\) en el período \(t\). Un lag de orden \(k\) se define como:
\[X_{t-k} = \text{lag}(X, k)\]
Por ejemplo, si hoy es \(t = \text{septiembre 2026}\), entonces: - \(X_{t-2}\) = valor de julio 2026 - \(X_{t-6}\) = valor de marzo 2026
🔑 Supuesto 4 (crítico): El Banco de la República decide la tasa monetaria con información desfasada. Cuando se reúne la Junta Directiva, solo tiene disponible la inflación publicada con 2 meses de rezago (por eso
Inflacion_conocida = lag(Inflacion, 2)). Esto refleja la realidad institucional colombiana.
¿Por qué 2, 4 y 6 meses?
Tasa_Teorica = (Inflacion_conocida + SMMLV) / 2
Fórmula:
\[T_{\text{teórica}} = \frac{I_{t-2} + S_t}{2}\]
donde \(I_{t-2}\) es la inflación conocida y \(S_t\) es el SMMLV actual.
💡 Justificación: La tasa teórica es un referente de equilibrio. Si la inflación es alta, la tasa debería subir; si el SMMLV es alto (salarios altos → mayor consumo → presión inflacionaria), también. El promedio balancea ambos efectos.
Brecha_Meta = abs(Inflacion_conocida - Meta_Inf)
Fórmula:
\[B_{\text{meta}} = |I_{t-2} - I^*|\]
donde \(I^* = 0.03\) es la meta de inflación.
💡 Justificación: Mide qué tan lejos está la inflación de la meta. Si la brecha es grande, el banco debe actuar con mayor agresividad. El valor absoluto captura tanto inflación por encima como por debajo de la meta.
Tasa_Real = Monetaria - Inflacion_conocida
Fórmula:
\[r_{\text{real}} = i - \pi\]
donde \(i\) es la tasa nominal y \(\pi\) la inflación. Es la ecuación de Fisher simplificada.
💡 Justificación: Mide el costo real del dinero. Una tasa real positiva indica política contractiva; una negativa indica política expansiva.
Poder_Adquisitivo = ((SMMLV - Inflacion_conocida) / SMMLV) * 100
Fórmula:
\[PA = \frac{S - I_{t-2}}{S} \times 100\]
💡 Justificación: Cuantifica cuánto del salario mínimo se “come” la inflación. Si el poder adquisitivo cae, la presión social por aumentos salariales crece, lo que impacta la inflación futura.
Score_Restriccion = case_when(
subidas_consecutivas >= 2 & Tasa_Real > 0.02 ~ 100,
subidas_consecutivas == 1 & Tasa_Real > 0.02 ~ 90,
abs(cambio_tasa_1) <= 0.0025 & Tasa_Real > 0.02 ~ 75,
Tasa_Real > 0.03 ~ 70,
Tasa_Real > 0.01 ~ 50,
abs(Tasa_Real) <= 0.01 ~ 30,
TRUE ~ 50
)
Interpretación:
| Rango | Significado |
|---|---|
| 100 | Política máximamente restrictiva (subidas consecutivas + tasa real alta) |
| 90 | Política restrictiva activa |
| 75 | Política estable con sesgo restrictivo |
| 70 | Restricción por tasa real alta |
| 50 | Política neutral |
| 30 | Política expansiva (tasa real cercana a cero) |
💡 Justificación: Este score captura el estado de la política monetaria en una sola variable numérica. Es una transformación categórica que ayuda al Random Forest a capturar patrones no lineales.
Magnitud_Inflacion = case_when(
Inflacion_conocida > 0.06 ~ "CRITICA",
Inflacion_conocida > 0.045 ~ "MUY_ALTA",
Inflacion_conocida > 0.04 ~ "ALTA",
Inflacion_conocida >= 0.02 & Inflacion_conocida <= 0.04 ~ "META",
Inflacion_conocida < 0.02 ~ "BAJA",
TRUE ~ "DESCONOCIDA"
)
Interpretación de umbrales:
| Categoría | Rango | Contexto |
|---|---|---|
| CRITICA | > 6% | Inflación descontrolada (raro en Colombia) |
| MUY_ALTA | 4.5% – 6% | Por encima del techo del rango meta |
| ALTA | 4% – 4.5% | Ligeramente por encima de la meta |
| META | 2% – 4% | Rango objetivo del Banco |
| BAJA | < 2% | Por debajo del piso del rango |
💡 Justificación: El Random Forest captura mejor las relaciones cuando las variables son categóricas en regímenes económicos claramente diferenciados. Esta clasificación refleja los regímenes de política monetaria del Banco de la República.
top6_vars <- c("Monetaria_lag4", "Monetaria_lag6", "Monetaria_lag2",
"Inflacion_pct", "Cambio3", "Inflacion_lag1")
Variable Cambio3:
\[Cambio3 = I_{t-2} - M_t\]
Es la brecha entre inflación y tasa monetaria. Si es positiva, la inflación supera a la tasa (política laxa); si es negativa, la tasa supera a la inflación (política restrictiva).
🔑 Supuesto 5: Estas 6 variables fueron seleccionadas por importancia en un modelo previo. NO se incluye el lag de la propia TIBC para evitar dependencia mecánica: el modelo debe explicar la TIBC a partir de condiciones económicas, no de su propio pasado.
datos_modelo_tasa <- Proyeccion %>%
filter(mes_decision == TRUE) %>%
dplyr::select(
Monetaria = Monetaria_actual,
Tasa_Teorica, Brecha_Meta, Score_Restriccion,
Magnitud_Inflacion, score_divergencia, ratio_inflacion_smmlv
) %>%
filter(complete.cases(.)) %>%
mutate(Magnitud_Inflacion = as.factor(Magnitud_Inflacion))
Filtro mes_decision:
Los meses de decisión de política monetaria en Colombia son: enero, marzo, abril, junio, julio, septiembre, octubre y diciembre. Esto excluye febrero, mayo, agosto y noviembre (meses sin reunión de la Junta).
🔑 Supuesto 6: Solo los meses de decisión son relevantes para modelar la tasa monetaria, porque en los demás meses la tasa permanece constante por definición.
Resultado: 153 observaciones (después de eliminar NAs generados por los lags).
datos_modelo_tibc <- Proyeccion %>%
dplyr::select(TIBC = TIBC_pct, all_of(top6_vars), Fecha) %>%
drop_na()
Resultado: 225 observaciones (todas las mensuales sin filtro).
set.seed(123)
n_tasa <- nrow(datos_modelo_tasa)
train_indices_tasa <- sample(1:n_tasa, size = floor(0.8 * n_tasa))
train_data_tasa <- datos_modelo_tasa[train_indices_tasa, ]
test_data_tasa <- datos_modelo_tasa[-train_indices_tasa, ]
🔑 Supuesto 7: El 80% de los datos se usa para entrenar y el 20% para evaluar. Es una división aleatoria, no temporal, porque el objetivo es medir la capacidad de generalización, no hacer backtesting. Para backtesting puro se requeriría división cronológica.
modelo_rf_tasa <- randomForest(
Monetaria ~ .,
data = train_data_tasa,
ntree = 500,
mtry = 2,
importance = TRUE
)
Parámetros:
| Parámetro | Valor | Significado |
|---|---|---|
ntree |
500 | Número de árboles |
mtry |
2 | Variables evaluadas en cada división |
importance |
TRUE | Calcula importancia de variables |
Fundamento matemático de Random Forest:
Dado un conjunto de entrenamiento \(D =
\{(x_i, y_i)\}_{i=1}^n\), Random Forest construye \(B\) árboles de decisión. Cada árbol \(T_b\) se entrena sobre una muestra
bootstrap \(D_b\) y en cada nodo se
evalúan mtry variables aleatorias.
La predicción final es el promedio de los \(B\) árboles:
\[\hat{y}(x) = \frac{1}{B} \sum_{b=1}^{B} T_b(x)\]
Varianza de la predicción:
\[\text{Var}[\hat{y}(x)] = \rho \sigma^2 + \frac{1-\rho}{B} \sigma^2\]
donde \(\rho\) es la correlación promedio entre árboles. Al aumentar \(B\) (500), el segundo término tiende a cero.
💡 ¿Por qué 500 árboles? Estudios empíricos muestran que el error se estabiliza entre 300 y 500 árboles. Menos de 300 da resultados inestables; más de 500 no aporta mejora significativa pero aumenta el tiempo de cómputo.
💡 ¿Por qué mtry = 2? Regla empírica:
mtry = √pdonde \(p\) es el número de variables. Para 6 variables, \(\sqrt{6} \approx 2.45\), se redondea a 2.
pred_test_tasa <- predict(modelo_rf_tasa, test_data_tasa)
r2_test_tasa <- 1 - sum((test_data_tasa$Monetaria - pred_test_tasa)^2) /
sum((test_data_tasa$Monetaria - mean(test_data_tasa$Monetaria))^2)
rmse_test_tasa <- sqrt(mean((test_data_tasa$Monetaria - pred_test_tasa)^2))
Fórmulas de las métricas:
R² (Coeficiente de determinación):
\[R^2 = 1 - \frac{SSE}{SST} = 1 - \frac{\sum_{i=1}^{n}(y_i - \hat{y}_i)^2}{\sum_{i=1}^{n}(y_i - \bar{y})^2}\]
RMSE (Root Mean Squared Error):
\[RMSE = \sqrt{\frac{1}{n}\sum_{i=1}^{n}(y_i - \hat{y}_i)^2}\]
MAPE (Mean Absolute Percentage Error):
\[MAPE = \frac{100\%}{n} \sum_{i=1}^{n} \left| \frac{y_i - \hat{y}_i}{y_i} \right|\]
Resultados obtenidos:
| Modelo | R² | RMSE | MAPE |
|---|---|---|---|
| Tasa Monetaria | 93.13% | 0.74 pp | — |
| TIBC | 93.72% | — | 3.71% |
✅ Interpretación: Un R² de 93% indica que el modelo explica el 93% de la variabilidad histórica. Un RMSE de 0.74 pp significa que, en promedio, las predicciones se desvían menos de 1 punto porcentual del valor real.
test_shuffled_tibc$TIBC_shuffled <- sample(test_y_tibc)
pred_shuffled_tibc <- predict(modelo_rf_tibc, newdata = ...)
r2_shuffled_tibc <- cor(test_shuffled_tibc$TIBC_shuffled, pred_shuffled_tibc)^2 * 100
🔑 Supuesto 8: Si el modelo funciona incluso con etiquetas aleatorias, hay overfitting. Un R² ≈ 0% con etiquetas aleatorias confirma que el modelo no está memorizando sino aprendiendo patrones reales.
Resultado: R² = 0.01% → No hay overfitting.
predecir_tasa <- function(inflacion, smmlv, monetaria_actual = NULL) {
tasa_teorica <- (inflacion + smmlv) / 2
brecha_meta <- abs(inflacion - Meta_Inf)
magnitud <- case_when(...)
ratio_crisis <- (inflacion / smmlv) * 100
score_restriccion <- ifelse(monetaria_actual > 0.11, 100, 75)
score_divergencia_val <- ifelse(smmlv > inflacion * 2, 25, 0)
nuevos_datos <- data.frame(...)
prediccion <- predict(modelo_rf_tasa, nuevos_datos)
prediccion <- max(prediccion, inflacion)
return(as.numeric(prediccion))
}
Restricción económica:
\[\hat{T}_{\text{monetaria}} = \max(\hat{T}_{\text{RF}}, \pi)\]
🔑 Supuesto 9 (crítico): La tasa monetaria no puede ser inferior a la inflación, porque eso implicaría una tasa real negativa, situación incompatible con la política monetaria del Banco de la República. Esta restricción actúa como “guardarraíl económico”.
ts_Inflacion <- ts(Indicadores$Inflacion,
start = c(2007, 7), frequency = 12)
modelo_sarima <- Arima(ts_Inflacion,
order = c(2, 0, 2),
seasonal = list(order = c(2, 0, 0), period = 12))
Estructura SARIMA:
\[SARIMA(p,d,q)(P,D,Q)_s = SARIMA(2,0,2)(2,0,0)_{12}\]
Ecuación completa:
\[(1 - \phi_1 B - \phi_2 B^2)(1 - \Phi_1 B^{12} - \Phi_2 B^{24}) y_t = (1 + \theta_1 B + \theta_2 B^2) \varepsilon_t\]
donde: - \(B\) es el operador de rezago (\(By_t = y_{t-1}\)) - \(\phi_i\) son coeficientes autorregresivos - \(\Phi_i\) son coeficientes autorregresivos estacionales - \(\theta_i\) son coeficientes de media móvil - \(\varepsilon_t\) es ruido blanco con \(\varepsilon_t \sim N(0, \sigma^2)\)
🔑 Supuesto 10: La inflación tiene estacionalidad anual (efectos de diciembre, enero, cosechas, etc.). El componente \((P,D,Q)_s = (2,0,0)_{12}\) captura esta estacionalidad con 2 rezagos anuales.
n_simulaciones <- 10000
for(i in 1:n_simulaciones) {
simulaciones_matrix_sarima[, i] <- simulate(modelo_sarima,
future = TRUE,
nsim = HORIZONTE_SARIMA)
}
Fundamento matemático:
Cada simulación \(j = 1, \ldots, 10000\) genera una trayectoria:
\[\{y_{T+1}^{(j)}, y_{T+2}^{(j)}, \ldots, y_{T+24}^{(j)}\}\]
A partir de las 10,000 trayectorias se calculan los percentiles en cada horizonte:
\[P_{50}(h) = \text{quantile}_{0.50}\left(\{y_{T+h}^{(j)}\}_{j=1}^{10000}\right)\]
\[P_{70}(h) = \text{quantile}_{0.70}\left(\{y_{T+h}^{(j)}\}_{j=1}^{10000}\right)\]
\[P_{85}(h) = \text{quantile}_{0.85}\left(\{y_{T+h}^{(j)}\}_{j=1}^{10000}\right)\]
🔑 Supuesto 11: Los residuos del modelo SARIMA son ruido blanco gaussiano. Esta asunción permite usar simulación Monte Carlo con distribución normal.
💡 ¿Por qué 10,000 simulaciones? La desviación estándar del percentil estimado decrece con \(\sqrt{n}\). Con 10,000 simulaciones, el error estándar del P50 es aproximadamente \(\sigma / \sqrt{10000} = \sigma / 100\), suficientemente pequeño.
Después del mes 24, el código congela el valor en el último percentil simulado:
ultimo_valor_sarima <- apply(simulaciones_matrix_sarima, 2, function(x) x[HORIZONTE_SARIMA])
for(j in 1:n_simulaciones) {
simulaciones_matrix_total[(HORIZONTE_SARIMA + 1):HORIZONTE_TOTAL, j] <- ultimo_valor_sarima[j]
}
🔑 Supuesto 12 (muy importante): Más allá de 24 meses, la incertidumbre SARIMA crece exponencialmente y las proyecciones pierden valor informativo. Congelar el valor es una decisión conservadora y prudente que evita extrapolaciones absurdas.
Justificación matemática:
La varianza de una predicción SARIMA a horizonte \(h\) crece aproximadamente como:
\[\text{Var}[\hat{y}_{T+h}] \approx \sigma^2 \sum_{i=0}^{h-1} \psi_i^2\]
donde \(\psi_i\) son los coeficientes MA(∞) del modelo. Para \(h > 24\), esta varianza puede superar el 100% del valor puntual, haciendo la proyección inútil.
resultados_neutro <- aplicar_modelos_escenario(percentiles$P70, smmlv_actual_val, tasa_actual_val, "Neutro", fechas_proyeccion)
resultados_pesimista <- aplicar_modelos_escenario(percentiles$P85, smmlv_actual_val, tasa_actual_val, "Pesimista", fechas_proyeccion)
resultados_optimista <- aplicar_modelos_escenario(percentiles$P50, smmlv_actual_val, tasa_actual_val, "Optimista", fechas_proyeccion)
| Escenario | Percentil | Interpretación |
|---|---|---|
| Optimista | P50 | Hay 50% de probabilidad de que la inflación sea menor |
| Neutro | P70 | Hay 70% de probabilidad de que la inflación sea menor |
| Pesimista | P85 | Hay 85% de probabilidad de que la inflación sea menor |
🔑 Supuesto 13: Los escenarios reflejan la distribución probabilística de la inflación futura, no escenarios arbitrarios. Esto permite a los tomadores de decisiones elegir el nivel de riesgo que desean cubrir.
tabla_usura <- tabla_proyeccion %>%
mutate(
USURA_Optimista = TIBC_Optimista * 1.5,
USURA_Neutro = TIBC_Neutro * 1.5,
USURA_Pesimista = TIBC_Pesimista * 1.5
)
Fórmula:
\[USURA = TIBC \times 1.5\]
🔑 Supuesto 14: El multiplicador 1.5 está fijado por la Superintendencia Financiera de Colombia y es de cumplimiento obligatorio.
Esta sección consolida todos los supuestos que garantizan que las proyecciones sean válidas. Si alguno de estos supuestos se viola, la interpretación de los resultados debe ajustarse.
| # | Supuesto | Implicación si se viola |
|---|---|---|
| 1 | Los valores están en decimal | Los modelos darían errores o resultados absurdos |
| 2 | La fecha de corte refleja la última observación real | Se incluiría información futura (data leakage) |
| 3 | Los datos están ordenados cronológicamente | Los lags quedarían mal calculados |
| 4 | No hay valores faltantes (excepto los primeros lags) | El modelo descartaría filas incompletas |
| # | Supuesto | Justificación |
|---|---|---|
| 5 | La inflación se conoce con 2 meses de rezago | Rezago real de publicación del DANE |
| 6 | Las decisiones de política se toman en meses específicos | Calendario oficial de la Junta del Banco |
| 7 | La tasa monetaria nunca es inferior a la inflación | Evita tasas reales negativas extremas |
| 8 | La meta de inflación se mantiene en 3% | Rango objetivo del Banco de la República |
| # | Supuesto | Implicación |
|---|---|---|
| 9 | Los residuos SARIMA son ruido blanco gaussiano | Válida para simulación Monte Carlo |
| 10 | La inflación tiene estacionalidad anual | Justifica el componente (P,D,Q)_12 |
| 11 | Las relaciones no lineales entre variables | Justifica el uso de Random Forest |
| 12 | Los datos siguen una distribución estable | Las predicciones son comparables en el tiempo |
| # | Supuesto | Justificación |
|---|---|---|
| 13 | El horizonte SARIMA útil es de 24 meses | Más allá, la varianza explota |
| 14 | El valor constante es una aproximación conservadora | Evita extrapolaciones sin base |
| 15 | Los escenarios P50/P70/P85 son suficientes | Cubren el rango de decisiones típicas |
| 16 | El multiplicador de USURA se mantiene en 1.5 | Norma vigente colombiana |
⚠️ Importante: Estos supuestos son condiciones necesarias para que las proyecciones sean válidas. Si el entorno económico cambia estructuralmente (por ejemplo, una reforma monetaria), los supuestos deben revisarse.
El primer paso consiste en cargar la información histórica: inflación, tasa monetaria, TIBC, DTF y SMMLV. La información se organiza cronológicamente porque los modelos utilizan la estructura temporal de las series.
💡 Principio fundamental: Los modelos de series económicas deben respetar la secuencia temporal. La información futura no debe utilizarse para explicar el pasado (no look-ahead bias).
La fecha de corte permite diferenciar entre información histórica (observada) y proyectada (estimada). Se actualiza mensualmente.
Los valores se manejan internamente como proporciones decimales (\(0.12 = 12\%\)) y se convierten a porcentaje solo para presentación (\(0.12 \times 100 = 12\%\)).
Las tasas de interés no reaccionan instantáneamente. Los rezagos permiten incorporar esta dinámica temporal al modelo.
\[Cambio3 = I_{t-2} - M_t\]
Captura la brecha entre inflación y postura monetaria.
\[\hat{y}(x) = \frac{1}{B} \sum_{b=1}^{B} T_b(x)\]
con \(B = 500\) árboles.
\[\hat{T}_{\text{monetaria}} \geq \pi\]
| Métrica | Fórmula | Valor |
|---|---|---|
| R² | \(1 - SSE/SST\) | 93.13% |
| RMSE | \(\sqrt{\text{mean}((y-\hat{y})^2)}\) | 0.74 pp |
| MAPE | \(\text{mean}(|y-\hat{y}|/y)\) | 3.71% |
Variables: 6 del TOP 6 (sin lag de TIBC).
\[SARIMA(2,0,2)(2,0,0)_{12}\]
10,000 simulaciones → percentiles P50, P70, P85.
Optimista (P50), Neutro (P70), Pesimista (P85).
Cada escenario de inflación alimenta la función
predecir_tasa().
\[I \rightarrow M \rightarrow \text{Variables} \rightarrow TIBC\]
\[72 = 24 + 48\]
Más de 12 indicadores calculados en tiempo real.
\[\Delta = T_{\text{sugerida}} - T_{\text{actual}}\]
\[IC_{95\%} = \hat{Y} \pm 1.96 \times RMSE\]
\[USURA = TIBC \times 1.5\]
| Archivo | Contenido | Uso |
|---|---|---|
tibc.csv |
Histórico + proyección | Tableros y gráficos |
Tasas.csv |
Proyecciones | Seguimiento de tasas |
tabla_proyeccion_completa.csv |
Proyección detallada | Análisis económico |
tabla_historica.csv |
Serie histórica | Gráficos históricos |
tabla_usura.csv |
USURA proyectada | Seguimiento de límites |
metricas.rds |
Métricas de modelos | Validación |
situacion_actual.rds |
Diagnóstico actual | Indicadores del tablero |
Se verifica: existencia de archivos, número de filas, tipos de variables, longitud del horizonte, disponibilidad de escenarios.
Salida esperada:
EJECUCION COMPLETADA EXITOSAMENTE
Cuatro niveles:
Una TIBC proyectada de 20% con intervalo de 18% a 22% debe interpretarse como estimación central de 20%, con rango de incertidumbre — NO como un valor exacto.
✅ Conclusión metodológica: El modelo combina información histórica, machine learning, series de tiempo y simulación probabilística para generar proyecciones económicas bajo diferentes escenarios, manteniendo explícita la incertidumbre asociada.
Este modelo:
Precisión: R² > 93% en ambos modelos. Sin overfitting (Shuffle Test ≈ 0%).
Supuestos clave: 16 supuestos documentados (datos, económicos, estadísticos y de proyección).
Replicabilidad: Este manual permite a cualquier analista con conocimientos básicos de R replicar el modelo desde cero.
📖 Documento generado automáticamente con R Markdown