Sector elegido: Sector Financiero y de Ahorro (Colombia y Cali).
La selección de este sector responde directamente a mi proyecto profesional. Actualmente desarrollo, en paralelo a mis estudios en la Pontificia Universidad Javeriana Cali, una consultoría de educación financiera y construcción de patrimonio orientada a clientes que se inician en la inversión bursátil, con énfasis en estrategias de largo plazo a través de ETFs sobre el S&P 500 y el NASDAQ, y posiciones selectivas en compañías large-cap estadounidenses. Entender la dinámica del sector financiero colombiano —y muy particularmente el comportamiento del ahorro en Cali, mi ciudad de operación— es indispensable por tres razones: primero, porque el ahorro doméstico es la materia prima del proceso inversor que mis clientes deben recorrer antes de exponerse a mercados internacionales; segundo, porque las decisiones de cartera del sector bancario condicionan las tasas activas, el costo del crédito de consumo y, por tanto, el ingreso disponible que las familias pueden destinar a inversión; y tercero, porque el ahorro local en Cali revela la capacidad real de mi mercado objetivo para construir patrimonio en el mediano plazo. La elección, por tanto, no es coyuntural sino estratégica: estos indicadores configuran el termómetro estructural del segmento al que sirvo.
Empresa hipotética: Scotiabank Colpatria — Banca Patrimonial Cali.
Para anclar el análisis se selecciona Scotiabank Colpatria, banco con presencia sólida en Cali y con casa matriz canadiense que opera activamente en el corredor financiero norteamericano. Su línea de banca patrimonial es directamente sensible a las tres variables seleccionadas: capta depósitos de ahorros en Cali, gestiona cartera del sistema bancario nacional y se beneficia del crecimiento agregado del ahorro en Colombia. Este encaje permite traducir hallazgos macro-sectoriales en decisiones empresariales concretas (apetito de riesgo, estrategia de captación, política de tasas pasivas, foco geográfico).
Variables seleccionadas (Banco de la República — fuente DANE/SFC):
DAH_CALI, variable n.° 60 del catastro). Mide el
saldo mensual de depósitos en cuentas de ahorro captados por el sistema
financiero en Cali. Es la métrica más cercana al pulso real de mi
mercado: la capacidad de las familias caleñas de generar un excedente,
retenerlo y, eventualmente, redirigirlo a vehículos de inversión.CART,
variable n.° 31). Saldo total de cartera de crédito del sistema
bancario nacional. Aproxima el ciclo crediticio: cuándo el sistema
expande el crédito, cuándo se contrae, y por tanto cuál es la postura
del riesgo sistémico.DAH, variable n.° 32). Saldo agregado nacional de
depósitos de ahorro. Sirve como benchmark estructural contra el cual
contrastar la dinámica local de Cali e identificar si el mercado
regional acompaña, lidera o rezaga la captación nacional.El análisis aplica técnicas de extracción de señales (descomposición STL: tendencia, estacionalidad y residuo) sobre cada serie, posteriormente compara las señales entre sí, y cierra con un análisis crítico y prescriptivo para Scotiabank Colpatria — Banca Patrimonial Cali.
Instalar/Cargar librerias necesarias para el análisis
#Cargar librerías necesarias
library(readxl) # Para leer archivos Excel
library(tseries) # Para pruebas de estacionariedad
library(forecast) # Para modelado ARIMA y pronósticos
library(ggplot2) # Para visualización de datos
library(plotly) # Para gráficos interactivos
library(timetk) #timetk simplifica y acelera el análisis exploratorio, visualización, y preparación de datos temporales para modelado. Es ideal para quienes trabajan con series temporales en un flujo de trabajo "tidy" y buscan integrar análisis visuales, detección de patrones y forecasting en un solo paquete.
Cargar base de datos
library(readxl)
data_col <- read_excel("~/Desktop/SIXTH SEM/DATA ANALYTICS/data_col.xlsx",
col_types = c("date", "numeric", "numeric",
"numeric", "numeric", "numeric",
"numeric", "numeric", "numeric",
"numeric", "numeric", "numeric",
"numeric", "numeric", "numeric",
"numeric", "numeric", "numeric",
"numeric", "numeric", "numeric",
"numeric", "numeric", "numeric",
"numeric", "numeric", "numeric",
"numeric", "numeric", "numeric",
"numeric", "numeric", "numeric",
"numeric", "numeric", "numeric",
"numeric", "numeric", "numeric",
"numeric", "numeric", "numeric",
"numeric", "numeric", "numeric",
"numeric", "numeric", "numeric",
"numeric", "numeric", "numeric",
"numeric", "numeric", "numeric",
"numeric", "numeric", "numeric",
"numeric", "numeric", "numeric",
"numeric", "numeric"))
PASO INDISPENSABLE: Declarar la (s) variable (s) como serie (s) temporal (es):
Variable 1 — Depósitos de Ahorros en Cali (DAH_CALI)
# Convertir/declarar variable 1 = DAH_CALI (Depósitos de ahorros en Cali) en serie de tiempo mensual
variable1_ts <- ts(data_col$DAH_CALI, start = c(2012, 1), frequency = 12)
Variable 2 — Cartera del Sector Bancario (CART)
# Convertir/declarar la CART (Cartera del sector bancario nacional) en serie de tiempo mensual
variable2_ts <- ts(data_col$CART, start = c(2012, 1), frequency = 12)
Variable 3 — Depósitos de Ahorros nacionales (DAH)
# Convertir/declarar los DAH (Depósitos de ahorros agregado nacional) en serie de tiempo mensual
variable3_ts <- ts(data_col$DAH, start = c(2012, 1), frequency = 12)
Gráfico inicial de la variable 1 en niveles -Original
library(ggplot2)
library(plotly)
# Convertir la serie temporal a un vector numérico para lograr graficar con ggplot2
data_col$variable1 <- as.numeric(variable1_ts)
# Crear el gráfico
grafico_serie <- ggplot(data_col, aes(x = seq.Date(from = as.Date("2012-01-01"), by = "month", length.out = nrow(data_col)),
y = variable1)) +
geom_line(color = "grey", linewidth = 0.4) + # Cambiado 'size' por 'linewidth'
geom_point(color = "black", size = 0.1) +
ggtitle("Variable 1: Depósitos de Ahorros en Cali — Serie original") +
xlab("Tiempo") +
ylab("Saldo de depósitos de ahorro Cali (COP)") +
theme_minimal()
ggplotly(grafico_serie)
Lectura inicial — Variable 1 (DAH_CALI): la serie original muestra un crecimiento sostenido y prácticamente monotónico entre 2012 y 2025, pasando de niveles cercanos a COP 4 billones a más de COP 10,5 billones al cierre de diciembre 2025. La curva sugiere un proceso no estacionario en niveles, con saltos visibles en 2020 (pandemia, ahorro forzoso por restricciones de consumo) y una aceleración desde 2022 que coincide con el ciclo de tasas altas del Banco de la República, que volvió atractivas las captaciones tradicionales. Para Scotiabank Colpatria — Banca Patrimonial Cali, este es un mercado en expansión estructural, no en saturación.
Extracción señales variable 1
# Cargar librerías necesarias
library(ggplot2)
library(plotly)
# Descomposición de la serie temporal
stl_decomp_var1 <- stl(variable1_ts, s.window = "periodic")
# Convertir la descomposición a un data frame para graficar con ggplot2
stl_df_var1 <- data.frame(
Time = rep(time(variable1_ts), 4), # Tiempo repetido para cada componente (son 4 componentes)
Value = c(stl_decomp_var1$time.series[, "seasonal"],
stl_decomp_var1$time.series[, "trend"],
stl_decomp_var1$time.series[, "remainder"],
variable1_ts),
Component = rep(c("Estacional", "Tendencia", "Residuo", "Serie Original"), each = length(variable1_ts))
)
# Crear gráfico con ggplot2
p <- ggplot(stl_df_var1, aes(x = Time, y = Value, color = Component)) +
geom_line() +
facet_wrap(~Component, scales = "free_y", ncol = 1) +
theme_minimal() +
labs(title = "Descomposición temporal de la variable 1 — DAH_CALI",
x = "Tiempo",
y = "Valor")
# Convertir a gráfico interactivo con plotly
ggplotly(p)
Interpretación de las señales — DAH_CALI: la descomposición STL revela tres hechos. Primero, una tendencia claramente creciente y casi lineal, con una aceleración entre 2020-2022 que es coherente con el efecto pandemia (caída del consumo presencial → acumulación de saldos en cuentas de ahorro) y con el alza de tasas. Segundo, la estacionalidad es de magnitud relativamente baja comparada con el nivel de la serie, con picos típicos en diciembre (prima legal y aguinaldos) y valles en febrero-marzo (gastos escolares y de inicio de año). Tercero, el residuo muestra los choques no explicados por tendencia ni estacionalidad — son visibles dos episodios: 2020 (shock COVID) y mediados de 2022-2023 (transmisión del ciclo monetario contractivo del Banrep). Para Scotiabank Colpatria esto significa que la estructura de captación en Cali es predecible y robusta — buen indicador para planeación financiera.
Extracción señales variable 2
# Cargar librerías necesarias
library(ggplot2)
library(plotly)
# Descomposición de la serie temporal
stl_decomp_var2 <- stl(variable2_ts, s.window = "periodic")
# Convertir la descomposición a un data frame para graficar con ggplot2
stl_df_var2 <- data.frame(
Time = rep(time(variable2_ts), 4), # Tiempo repetido para cada componente
Value = c(stl_decomp_var2$time.series[, "seasonal"],
stl_decomp_var2$time.series[, "trend"],
stl_decomp_var2$time.series[, "remainder"],
variable2_ts),
Component = rep(c("Estacional", "Tendencia", "Residuo", "Serie Original"), each = length(variable2_ts))
)
# Crear gráfico con ggplot2
p <- ggplot(stl_df_var2, aes(x = Time, y = Value, color = Component)) +
geom_line() +
facet_wrap(~Component, scales = "free_y", ncol = 1) +
theme_minimal() +
labs(title = "Descomposición temporal de la variable 2 — CART (Cartera Sector Bancario)",
x = "Tiempo",
y = "Valor")
# Convertir a gráfico interactivo con plotly
ggplotly(p)
Interpretación de las señales — CART: la cartera nacional muestra una tendencia de crecimiento estructural sostenido desde 2012, con una desaceleración perceptible entre 2022 y mediados de 2024 — coincidente con el ciclo de tasas altas, deterioro de la cartera de consumo y postura más restrictiva de los bancos en la originación. A partir de finales de 2024 se observa una reaceleración, consistente con el reporte de la Superintendencia Financiera, que evidencia recuperación del crédito tras un periodo prolongado de crecimiento negativo de la cartera, con activos del sistema creciendo a tasa real anual de 4,8 %. La estacionalidad es muy tenue —la cartera responde más al ciclo macro que a estacionalidades calendario—, y el residuo captura los choques de 2020 y de 2022 (subida acelerada de tasas Banrep). Para Scotiabank Colpatria esta señal indica que el ciclo crediticio acaba de entrar en una nueva fase expansiva.
Extracción señales variable 3
# Cargar librerías necesarias
library(ggplot2)
library(plotly)
# Descomposición de la serie temporal
stl_decomp_var3 <- stl(variable3_ts, s.window = "periodic")
# Convertir la descomposición a un data frame para graficar con ggplot2
stl_df_var3 <- data.frame(
Time = rep(time(variable3_ts), 4), # Tiempo repetido para cada componente
Value = c(stl_decomp_var3$time.series[, "seasonal"],
stl_decomp_var3$time.series[, "trend"],
stl_decomp_var3$time.series[, "remainder"],
variable3_ts),
Component = rep(c("Estacional", "Tendencia", "Residuo", "Serie Original"), each = length(variable3_ts))
)
# Crear gráfico con ggplot2
p <- ggplot(stl_df_var3, aes(x = Time, y = Value, color = Component)) +
geom_line() +
facet_wrap(~Component, scales = "free_y", ncol = 1) +
theme_minimal() +
labs(title = "Descomposición temporal de la variable 3 — DAH (Depósitos de Ahorros nacionales)",
x = "Tiempo",
y = "Valor")
# Convertir a gráfico interactivo con plotly
ggplotly(p)
Interpretación de las señales — DAH: el ahorro agregado nacional sigue una tendencia creciente similar a la de Cali pero con menor pendiente relativa (en términos de porcentaje sobre base inicial), lo que sugiere que Cali ha venido ganando participación dentro del agregado nacional de captaciones de ahorro. La estacionalidad es marcadamente similar a la de Cali —pico de diciembre, valle de febrero-marzo—, confirmando que los depósitos de ahorro responden a calendario laboral (primas) más que a ciclo económico. El residuo revela el mismo patrón de choque 2020-2022. Esta es una señal estratégica importante para Scotiabank Colpatria: el mercado caleño se comporta como un mercado nacional acelerado, y por tanto justifica sobreponderación de recursos comerciales sobre Cali respecto al promedio nacional.
Después de la descomposición temporal de cada variable, se extrae la variable ajustada por estacionalidad para graficarla junto con la serie original:
Se crea la variable1 ajustada por estacionalidad
# Extraer los componentes de la descomposición
variable1_sa <- variable1_ts - stl_decomp_var1$time.series[, "seasonal"]
Se crea la variable2 ajustada por estacionalidad
# Extraer los componentes de la descomposición
variable2_sa <- variable2_ts - stl_decomp_var2$time.series[, "seasonal"]
Se crea la variable3 ajustada por estacionalidad
# Extraer los componentes de la descomposición
variable3_sa <- variable3_ts - stl_decomp_var3$time.series[, "seasonal"]
Ahora si se puede graficar las series originales versus la ajustada por estacionalidad
Gráfico serie original VS ajustada Variable 1
# Crear vector de fechas correctamente alineado con la serie
fechas_var1 <- seq.Date(from = as.Date("2012-01-01"), by = "month", length.out = length(variable1_ts))
# Gráfico mejorado con fechas en el eje X
grafico_ajustada_var1 <- ggplot() +
geom_line(aes(x = fechas_var1, y = variable1_ts), color = "grey", size = 0.5, linetype = "solid", name = "Serie Original") +
geom_line(aes(x = fechas_var1, y = variable1_sa), color = "black", size = 0.6, linetype = "solid", name = "Serie Ajustada") +
ggtitle("Variable 1 (DAH_CALI): Serie Original vs Serie Ajustada por Estacionalidad") +
xlab("Tiempo") +
ylab("Saldo depósitos ahorro Cali (COP)") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) # Rotar etiquetas para mejor visualización
# Convertir a gráfico interactivo
ggplotly(grafico_ajustada_var1)
Lectura: la cercanía entre la serie original (gris) y la ajustada (negra) confirma que la estacionalidad en DAH_CALI es de baja magnitud relativa al nivel de la serie. Esto significa que las decisiones comerciales de la banca patrimonial en Cali no deben sobrerreaccionar a movimientos puntuales de fin/inicio de año: la señal subyacente es la tendencia.
Gráfico serie original VS ajustada Variable 2
# Crear vector de fechas correctamente alineado con la serie
fechas_var2 <- seq.Date(from = as.Date("2012-01-01"), by = "month", length.out = length(variable2_ts))
# Gráfico mejorado con fechas en el eje X
grafico_ajustada_var2 <- ggplot() +
geom_line(aes(x = fechas_var2, y = variable2_ts), color = "grey", size = 0.5, linetype = "solid", name = "Serie Original") +
geom_line(aes(x = fechas_var2, y = variable2_sa), color = "black", size = 0.6, linetype = "solid", name = "Serie Ajustada") +
ggtitle("Variable 2 (CART): Serie Original vs Serie Ajustada por Estacionalidad") +
xlab("Tiempo") +
ylab("Saldo cartera sector bancario (COP)") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) # Rotar etiquetas para mejor visualización
# Convertir a gráfico interactivo
ggplotly(grafico_ajustada_var2)
Lectura: las dos series son prácticamente indistinguibles, lo que reafirma que la cartera del sector bancario casi no tiene componente estacional. Esta variable es puramente cíclica/estructural: responde a tasa de política monetaria, expectativas de demanda interna y apetito de riesgo de los bancos, no a calendario.
Gráfico serie original VS ajustada Variable 3
# Crear vector de fechas correctamente alineado con la serie
fechas_var3 <- seq.Date(from = as.Date("2012-01-01"), by = "month", length.out = length(variable3_ts))
# Gráfico mejorado con fechas en el eje X
grafico_ajustada_var3 <- ggplot() +
geom_line(aes(x = fechas_var3, y = variable3_ts), color = "grey", size = 0.5, linetype = "solid", name = "Serie Original") +
geom_line(aes(x = fechas_var3, y = variable3_sa), color = "black", size = 0.6, linetype = "solid", name = "Serie Ajustada") +
ggtitle("Variable 3 (DAH): Serie Original vs Serie Ajustada por Estacionalidad") +
xlab("Tiempo") +
ylab("Saldo depósitos ahorro nacional (COP)") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) # Rotar etiquetas para mejor visualización
# Convertir a gráfico interactivo
ggplotly(grafico_ajustada_var3)
Lectura: los depósitos de ahorro a nivel nacional muestran estacionalidad ligeramente más visible que la cartera, pero pequeña relativa al nivel. El comportamiento es coherente con DAH_CALI — pico de diciembre y caída en primer trimestre.
Ahora graficamos serie original vs tendencia
Primero se debe obtener la tendencia de cada variable y luego graficarla
Tendencia Variable 1
library(ggplot2)
library(plotly)
# Convertir la serie a un vector numérico
variable1_vec <- as.numeric(variable1_ts)
tendencia_var1 <- as.numeric(stl_decomp_var1$time.series[, "trend"])
# Asegurar que 'fechas' tenga la misma longitud
fechas <- seq.Date(from = as.Date("2012-01-01"), by = "month", length.out = length(variable1_ts))
# Gráfico interactivo de la serie original vs tendencia
grafico_tendencia_var1 <- ggplot() +
geom_line(aes(x = fechas, y = variable1_vec, color = "Serie Original"), size = 0.7, linetype = "solid") +
geom_line(aes(x = fechas, y = tendencia_var1, color = "Tendencia"), size = 0.8, linetype = "solid") +
scale_color_manual(values = c("Serie Original" = "grey", "Tendencia" = "black")) +
ggtitle("Variable 1 (DAH_CALI): Serie Original vs Tendencia") +
xlab("Tiempo") +
ylab("Saldo depósitos ahorro Cali (COP)") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) # Rotar etiquetas del eje X
# Convertir a gráfico interactivo con plotly
ggplotly(grafico_tendencia_var1)
Lectura: la tendencia de los depósitos de ahorro en Cali es claramente creciente, con un punto de inflexión visible alrededor de 2020-2021 donde la pendiente aumenta. Para Scotiabank Colpatria esto significa que el mercado caleño no es un mercado maduro ni saturado: hay espacio para crecimiento de captación, especialmente si se ofrecen productos competitivos a la creciente clase media patrimonial.
Tendencia Variable 2
library(ggplot2)
library(plotly)
# Convertir la serie a un vector numérico
variable2_vec <- as.numeric(variable2_ts)
tendencia_var2 <- as.numeric(stl_decomp_var2$time.series[, "trend"])
# Asegurar que 'fechas' tenga la misma longitud
fechas <- seq.Date(from = as.Date("2012-01-01"), by = "month", length.out = length(variable2_ts))
# Gráfico interactivo de la serie original vs tendencia
grafico_tendencia_var2 <- ggplot() +
geom_line(aes(x = fechas, y = variable2_vec, color = "Serie Original"), size = 0.7, linetype = "solid") +
geom_line(aes(x = fechas, y = tendencia_var2, color = "Tendencia"), size = 0.8, linetype = "solid") +
scale_color_manual(values = c("Serie Original" = "grey", "Tendencia" = "black")) +
ggtitle("Variable 2 (CART): Serie Original vs Tendencia") +
xlab("Tiempo") +
ylab("Saldo cartera sector bancario (COP)") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) # Rotar etiquetas del eje X
# Convertir a gráfico interactivo con plotly
ggplotly(grafico_tendencia_var2)
Lectura: la tendencia de la cartera muestra expansión sostenida con una desaceleración clara en 2022-2024 y reaceleración hacia el cierre de 2025. Este patrón es consistente con la expansión real anual de 4,8 % de los activos del sistema financiero colombiano reportada por la Superintendencia Financiera al cierre de 2025. Es el ciclo crediticio típico: estímulo monetario → expansión, restricción → desaceleración, normalización → recuperación.
Tendencia Variable 3
library(ggplot2)
library(plotly)
# Convertir la serie a un vector numérico
variable3_vec <- as.numeric(variable3_ts)
tendencia_var3 <- as.numeric(stl_decomp_var3$time.series[, "trend"])
# Asegurar que 'fechas' tenga la misma longitud
fechas <- seq.Date(from = as.Date("2012-01-01"), by = "month", length.out = length(variable3_ts))
# Gráfico interactivo de la serie original vs tendencia
grafico_tendencia_var3 <- ggplot() +
geom_line(aes(x = fechas, y = variable3_vec, color = "Serie Original"), size = 0.7, linetype = "solid") +
geom_line(aes(x = fechas, y = tendencia_var3, color = "Tendencia"), size = 0.8, linetype = "solid") +
scale_color_manual(values = c("Serie Original" = "grey", "Tendencia" = "black")) +
ggtitle("Variable 3 (DAH): Serie Original vs Tendencia") +
xlab("Tiempo") +
ylab("Saldo depósitos ahorro nacional (COP)") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) # Rotar etiquetas del eje X
# Convertir a gráfico interactivo con plotly
ggplotly(grafico_tendencia_var3)
Lectura: la tendencia del ahorro nacional confirma el patrón estructural alcista. La curva suavizada se mantiene siempre por encima de su punto inicial y no muestra reversiones — es una variable de larga memoria. Para la banca patrimonial esto valida una estrategia de captación sostenida con horizonte multianual.
Ahora calculamos la tasa de crecimiento de la serie original vs tendencia:
Tasa de crecimiento de la serie de tendencia y original para la variable 1
#Cálculo de la tasa de crecimiento anual correctamente alineada
tasa_crecimiento_var1 <- (variable1_ts[(13:length(variable1_ts))] / variable1_ts[1:(length(variable1_ts) - 12)] - 1) * 100
tasa_tendencia_var1 <- (tendencia_var1[(13:length(tendencia_var1))] / tendencia_var1[1:(length(tendencia_var1) - 12)] - 1) * 100
# Crear vector de fechas corregido, es decir que inicie desde enero 2013
fechas_corregidas_var1 <- seq(from = as.Date("2013-01-01"), by = "month", length.out = length(tasa_crecimiento_var1))
# Verificar longitudes
print(length(fechas_corregidas_var1))
## [1] 156
print(length(tasa_crecimiento_var1))
## [1] 156
print(length(tasa_tendencia_var1))
## [1] 156
*Gráfico variable original y tendencia variable 1: tasa de crecimiento anual**
library(ggplot2)
library(plotly)
# Gráfico de la tasa de crecimiento anual variable 1
grafico_crecimiento_var1 <- ggplot() +
geom_line(aes(x = fechas_corregidas_var1, y = tasa_crecimiento_var1), color = "grey", size = 0.7) +
geom_line(aes(x = fechas_corregidas_var1, y = tasa_tendencia_var1), color = "black", size = 0.8, linetype = "dashed") +
ggtitle("Variable 1 (DAH_CALI): Tasa de crecimiento anual % — Serie Original y Tendencia") +
xlab("Tiempo") +
ylab("% de Crecimiento Anual") +
theme_minimal()
# Convertir a gráfico interactivo
ggplotly(grafico_crecimiento_var1)
Lectura del crecimiento anual — DAH_CALI: la tasa de crecimiento anual de los depósitos en Cali se ha movido históricamente en un rango aproximado de 5 % a 20 %, con un pico claramente identificable durante 2020-2021 (efecto pandemia + ahorro precautorio) y un valle en 2022-2023 (cuando las familias retiraron ahorros para sostener consumo ante la inflación). Hacia 2025, la tasa de la tendencia se estabiliza en niveles positivos del orden de un dígito alto, lo cual indica un crecimiento real (descontada inflación) positivo.
Ahora calculamos la tasa de crecimiento de la serie original vs tendencia: variable 2
#Cálculo de la tasa de crecimiento anual correctamente alineada
tasa_crecimiento_var2 <- (variable2_ts[(13:length(variable2_ts))] / variable2_ts[1:(length(variable2_ts) - 12)] - 1) * 100
tasa_tendencia_var2 <- (tendencia_var2[(13:length(tendencia_var2))] / tendencia_var2[1:(length(tendencia_var2) - 12)] - 1) * 100
# Crear vector de fechas corregido
fechas_corregidas_var2 <- seq(from = as.Date("2013-01-01"), by = "month", length.out = length(tasa_crecimiento_var2))
# Verificar longitudes
print(length(fechas_corregidas_var2))
## [1] 156
print(length(tasa_crecimiento_var2))
## [1] 156
print(length(tasa_tendencia_var2))
## [1] 156
# Gráfico de la tasa de crecimiento anual variable 2
grafico_crecimiento_var2 <- ggplot() +
geom_line(aes(x = fechas_corregidas_var2, y = tasa_crecimiento_var2), color = "grey", size = 0.7) +
geom_line(aes(x = fechas_corregidas_var2, y = tasa_tendencia_var2), color = "black", size = 0.8, linetype = "dashed") +
ggtitle("Variable 2 (CART): Tasa de crecimiento anual % — Serie Original y Tendencia") +
xlab("Tiempo") +
ylab("% de Crecimiento Anual") +
theme_minimal()
# Convertir a gráfico interactivo
ggplotly(grafico_crecimiento_var2)
Lectura del crecimiento anual — CART: la tasa de crecimiento anual de la cartera ha caído desde niveles cercanos a 10-12 % en 2013-2014 hacia niveles más moderados de 4-7 % en 2025. La curva muestra valles en 2017-2018 (desaceleración macro post-petróleo) y en 2023-2024 (efecto tasas altas + deterioro cartera consumo). La reaceleración reciente confirma el cambio de fase del ciclo crediticio descrito por la Superfinanciera.
Ahora calculamos la tasa de crecimiento de la serie original vs tendencia: variable 3
#Cálculo de la tasa de crecimiento anual correctamente alineada
tasa_crecimiento_var3 <- (variable3_ts[(13:length(variable3_ts))] / variable3_ts[1:(length(variable3_ts) - 12)] - 1) * 100
tasa_tendencia_var3 <- (tendencia_var3[(13:length(tendencia_var3))] / tendencia_var3[1:(length(tendencia_var3) - 12)] - 1) * 100
# Crear vector de fechas corregido
fechas_corregidas_var3 <- seq(from = as.Date("2013-01-01"), by = "month", length.out = length(tasa_crecimiento_var3))
# Verificar longitudes
print(length(fechas_corregidas_var3))
## [1] 156
print(length(tasa_crecimiento_var3))
## [1] 156
print(length(tasa_tendencia_var3))
## [1] 156
# Gráfico de la tasa de crecimiento anual variable 3
grafico_crecimiento_var3 <- ggplot() +
geom_line(aes(x = fechas_corregidas_var3, y = tasa_crecimiento_var3), color = "grey", size = 0.7) +
geom_line(aes(x = fechas_corregidas_var3, y = tasa_tendencia_var3), color = "black", size = 0.8, linetype = "dashed") +
ggtitle("Variable 3 (DAH): Tasa de crecimiento anual % — Serie Original y Tendencia") +
xlab("Tiempo") +
ylab("% de Crecimiento Anual") +
theme_minimal()
# Convertir a gráfico interactivo
ggplotly(grafico_crecimiento_var3)
Lectura del crecimiento anual — DAH: los depósitos de ahorro nacionales muestran un crecimiento anual que oscila típicamente entre 5 % y 15 %, con un pico claro en 2020-2021 (ahorro pandémico) y una recuperación en 2024-2025 impulsada por tasas pasivas atractivas — fenómeno consistente con el reporte de Cámara de Comercio de Cali sobre el regreso del interés por cuentas de ahorro tras la rentabilidad ofrecida por los bancos, especialmente digitales.
Analizar la tasa de crecimiento anual ayuda a detectar cambios en el entorno económico que afectan el sector. Se pueden prever crisis o períodos de auge y prepararse para ellos.
Las tres variables comparten dos rasgos estructurales y se diferencian en uno crítico:
Lo que comparten: - Las tres exhiben una tendencia creciente sostenida entre 2012 y 2025 — el sector financiero colombiano es estructuralmente expansivo. - Las tres registran el mismo choque común en 2020 (pandemia) y en 2022-2023 (transmisión del ciclo monetario contractivo del Banrep), aunque con signos opuestos: los depósitos (V1 y V3) se aceleraron durante la pandemia mientras la cartera (V2) se desaceleró.
En qué se diferencian: - La estacionalidad es prácticamente nula en la cartera (CART) y de baja magnitud en los depósitos. Esto importa: las decisiones empresariales en banca patrimonial deben anclarse en la señal de tendencia, no en movimientos de calendario. - La velocidad relativa de crecimiento es mayor en Cali (DAH_CALI) que en el agregado nacional (DAH). En términos absolutos, los depósitos en Cali pasaron de ~COP 4 billones (2012) a ~COP 10,5 billones (2025), un crecimiento acumulado superior al 150 %, mientras el nacional crece desde ~COP 126 billones a ~COP 225 billones (~78 %). Cali es un mercado que sobre-rinde respecto al promedio nacional.
A Scotiabank Colpatria — Banca Patrimonial Cali le interesan estos hallazgos por las siguientes razones:
El mercado caleño no está saturado. La tendencia de DAH_CALI es la más empinada de las tres, lo cual sugiere espacio comercial real para incrementar participación. La narrativa de “ciudad secundaria con techo bajo” no se sostiene contra los datos.
La estacionalidad es baja → la planeación financiera puede asumir señales de tendencia como dominantes. Esto reduce el ruido en proyecciones de captación y permite cerrar metas anuales sin sobrerreaccionar a fluctuaciones mensuales.
El ciclo crediticio acaba de entrar en fase expansiva. La aceleración reciente de CART, validada por el reporte de la Superfinanciera de diciembre 2025, indica que la demanda de crédito está recuperándose. Esto es relevante porque un banco que capta (depósitos) y coloca (cartera) necesita ambas señales alineadas para maximizar margen financiero.
El comportamiento de ahorro nacional contagia a Cali con retraso de pocos meses. La cointegración visual entre DAH y DAH_CALI permite usar la variable nacional como indicador adelantado del comportamiento local — útil para anticipar campañas comerciales.
Sobre la base de las señales extraídas, se proponen tres líneas de acción para Scotiabank Colpatria — Banca Patrimonial Cali:
Pivot agresivo hacia captación digital en Cali. El crecimiento estructural de DAH_CALI y la baja estacionalidad sugieren que la oportunidad no es estacional sino estructural. Replicar la propuesta de bancos digitales que han venido capturando flujo de captación con tasas pasivas competitivas (efecto identificado por la Cámara de Comercio de Cali en sus informes Ritmo Financiero) es la jugada de mayor retorno marginal en el corto-mediano plazo.
Expansión moderada de cartera de consumo en Cali, con calidad crediticia estricta. Dado que la cartera nacional muestra reaceleración y que la calidad de cartera mejoró en 2025 (la cartera vencida se redujo 16,4 % real anual y el indicador de cobertura se fortaleció hasta 142 % según la Superfinanciera), hay condiciones para originar nuevamente sin asumir riesgo excesivo. La ventana de tasas todavía altas favorece el margen.
Productos puente captación-inversión para el segmento patrimonial creciente. Aquí hay una sinergia directa con mi consultoría: clientes con capacidad creciente de ahorro (visible en la tendencia de DAH_CALI) son candidatos naturales para vehículos de inversión transfronterizos (ETFs S&P 500, NASDAQ) — y un banco con casa matriz canadiense y mesa de mercados internacionales está mejor posicionado que la banca puramente local para servir esta demanda.
Tres riesgos a vigilar en próximas iteraciones del análisis:
El sector financiero y de ahorro colombiano —y particularmente el segmento caleño— ofrece a Scotiabank Colpatria una ventana estratégica para crecer en banca patrimonial durante 2026. Las señales extraídas son consistentes con un cambio de fase del ciclo: ahorro estructuralmente creciente, cartera reacelerando, y estacionalidad baja que permite planeación financiera limpia. La prescripción central es capitalizar el momento expansivo con foco en captación digital y productos puente hacia inversión internacional, manteniendo disciplina de riesgo crediticio. La extracción de señales no es solo un ejercicio descriptivo: es la base cuantitativa sobre la cual se construye la decisión empresarial.