Por medio de este trabajo se estudiara el sector automotriz en el valle del cauca, se analizaran los resultados, características y aspectos más importantes encontrados en las variables, asumiento el rol de analistas financieros y económicos de la empresa Casa Toro, uno de los concesionarios más grandes del país, desde 1934 se ha consolidado con el paso del tiempo y ha aumentado su portafolio hasta ser el distribuidor oficial de muchas marcas (Mazda, Renault, Ford, Volkswagen etc.), además de haber incrementado sus servicios incluyendo ventas de vehículos usados, mantenimiento, servicio postventa entre otros más.
Pero ¿Por qué consideramos importante que el sector automotriz sea analizado?, primero que nada, es un sector que es sumamente importante para la economía, por medio de su estado podemos darnos cuenta de la evolución de procesos como importaciones, comercialización, financiamiento, y el mantenimiento de vehículos.
Aparte, este ha aumentado en los últimos años, con un crecimiento del 23,2% en 2025 comparación con el 2024 con 23.791 unidades de vehículos vendidas (Informe del Sector Automotor a Junio a 2025. (2025, julio 1). Fenalco. https://www.fenalco.com.co/blog/gremial-4/informe-del-sector-automotor-a-junio-de-2025-8178), se conoce además que este sector muestra la confianza que el consumidor ha aumentado para justamente acceder a un vehículo, por lo que con este trabajo se puede entender las tendencias de compra y el acceso a financiamiento de los colombianos.
Para llegar al propósito expresado en la introducción hemos seleccionado 5 variables que consideramos relevantes y relacionados con el sector escogido, las cuales son:
Tasa de cambio (pesos/dólar) TRM
Índice de Confianza del Consumidor ICC
Ventas de vehículos nuevos nivel nacional VEH_V
Ventas de vehículos nuevos del valle VEH_CALI
Cartera del Sector Bancario (CART)
En el caso de la Tasa de cambio (pesos/dólar) TRM, esta es el valor del peso colombiano frente al dólar, en el caso del sector automotriz incluyendo la empresa, ya que el proceso de exportación es fundamental en este sector, al existir muchas marcas extranjeras, en el caso de Casa Toro, las marcas de las cuales es distribuidor oficial son extranjeras, una fluctuación en la tasa de cambio puede afectar tanto positiva como negativamente el precio de los vehiculos y por ende la demanda de los vehículos, por lo que es una variable a considerar para conocer el estado del sector.
El Índice de confianza al consumidor ICC permite conocer la perspectiva de los hogares en relación a la situación económica actual o futura, en el caso de la comercialización de vehículos, al ser un bien durable y una inversión más grande, la confianza del consumidor permite conocer si se estaría dispuesta a ser una compra mayor o si se decide abstenerse, “Si bien la economía colombiana ha registrado un crecimiento moderado, la mejoría en la confianza del consumidor ha sido un factor determinante para que cada vez más hogares tomen la decisión de renovar su vehículo o decidan acceder a uno por primera vez” (Informe del Sector Automotor a Junio a 2025. (2025, julio 1). Fenalco. https://www.fenalco.com.co/blog/gremial-4/informe-del-sector-automotor-a-junio-de-2025-8178)
Las ventas de vehículos nuevos en el Valle del cauca está directamente relacionada con el propósito del trabajo, al conocer el número de vehículos nuevos, empresas como Casa Toro puede conocer el comportamiento del mercado y determinar sus siguientes movimientos, el Valle del Cauca es una de las regiones con mayor actividad comercial, el conocer su estado puede, entre otras cosas, ayudar a determinar la cantidad de demanda que se va a tener entre otras cosas.
Las Venta de Vehículos a Nivel Nacional Esta variable funciona como nuestro referente de mercado para validar si el desempeño regional en el Valle es coherente con la realidad nacional. Su análisis es clave para la planeación logística y de inventarios, permitiéndonos anticipar las estrategias de las casas matrices y asegurar nuestra competitividad frente al volumen total de matrículas en el país.
Finalmente la Cartera del Sector Bancario es de suma importancia ya que el crédito es el facilitador esencial de nuestras operaciones comerciales, ya que la mayoría de las ventas dependen del financiamiento externo. Monitorear la evolución de la cartera nos permite evaluar la liquidez del sistema y la disposición de la banca para otorgar préstamos, lo cual es un indicador directo del flujo de clientes que podrán concretar la compra en nuestras vitrinas.
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("D:/STV/Stv/Apv/Caso Ejemplo/Base Caso2.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):
TRM
# Convertir/declarar variable 1=ENER en serie de tiempo mensual
variable1_ts <- ts(data_col$TRM, start = c(2012, 1), frequency = 12)
ICC INDICE DE CONFIANZA DEL CONSUMIDOR
# Convertir/declarar variable en serie de tiempo mensual
variable2_ts <- ts(data_col$ICC, start = c(2012, 1), frequency = 12)
Ventas de vehiculos nuevos
# Convertir/declarar variable en serie de tiempo mensual
variable3_ts <- ts(na.omit(data_col$VEH), start = c(2014,1), frequency = 12)
Ventas de vehiculos nuevos en el valle
# Convertir/declarar variable en serie de tiempo mensual
variable4_ts <- ts(data_col$VEH_V, start = c(2012, 1), frequency = 12)
CART Cartera del sector bancario
# Convertir/declarar variable 1=ENER en serie de tiempo mensual
variable5_ts <- ts(data_col$CART, start = c(2012, 1), frequency = 12)
Gráfico inicial TRM -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("TRM: Serie original") +
xlab("Tiempo") +
ylab("Pesos por dólar estadounidense") +
theme_minimal()
ggplotly(grafico_serie)
La Serie Original Ha tenido un crecimiento sustancial, duplicando su valor en apenas una década. Hemos visto cómo ha llegado a probar niveles por encima de los \(5.000\) en momentos de mucha tensión, para luego buscar soportes más bajos. Para evidenciar con mayor claridad el comportamiento real de la variable dada la volatilidad realizamos la descomposición.
Extracción señales TRM
# 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 TRM",
x = "Tiempo",
y = "Valor")
# Convertir a gráfico interactivo con plotly
ggplotly(p)
Descomposición TRM:
Tendencia: Lo que vemos es un cambio de piso definitivo. Pasamos de una TRM estable de \(3.000\) antes de 2019 a una realidad donde la tendencia se ha consolidado por encima de los $4.000. Es una pendiente alcista que ha redefinido los costos de toda la economía.
Estacionalidad: Existen presiones cambiarias que ocurren siempre en las mismas fechas, con rangos que van desde los -$40 hasta los $80 pesos. Es un ciclo recurrente que ayuda a predecir cuándo el dólar tiende a encarecerse por factores estacionales.
Residuo: Aquí se hacen evidentes los choques fuertes, especialmente en 2020 y entre 2022-2023, con desviaciones de más de $200 pesos que rompen cualquier previsión y responden puramente a la incertidumbre del momento.
Gráfico inicial del ICC -Original
library(ggplot2)
library(plotly)
# Convertir la serie temporal a un vector numérico para lograr graficar con ggplot2
data_col$variable2 <- as.numeric(variable2_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 = variable2)) +
geom_line(color = "grey", linewidth = 0.4) + # Cambiado 'size' por 'linewidth'
geom_point(color = "black", size = 0.1) +
ggtitle("ICC: Serie original") +
xlab("Tiempo") +
ylab("Indice") +
theme_minimal()
ggplotly(grafico_serie)
Dado que la serie original del ICC suele presentar fluctuaciones muy bruscas mes a mes, es fundamental descomponerla para entender qué parte responde a un sentimiento real de largo plazo y qué es simple ruido momentáneo.
Extracción señales ICC
# 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 (son 4 componentes)
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 del ICC",
x = "Tiempo",
y = "Valor")
# Convertir a gráfico interactivo con plotly
ggplotly(p)
Descomposición ICC :
Serie Original: Se mueve en un rango bastante amplio, oscilando entre los \(+30\) y \(-40\) puntos. Lo que más llama la atención es cómo los mínimos históricos de 2020 y 2021 marcaron un antes y un después, dejando la serie atrapada mayoritariamente en terreno negativo.
Tendencia: Aquí es donde se ve el cambio real. Desde 2015, el consumidor colombiano dejó atrás el optimismo y entró en una etapa de contracción estructural. Actualmente, la tendencia parece estancada entre los \(-10\) y \(-20\) puntos, sin señales claras de querer volver a niveles positivos.
Estacionalidad: El comportamiento cíclico es muy predecible, con variaciones de \(\pm 4\) unidades que se repiten con precisión casi matemática. El optimismo cada fin de año y el impacto rezagado de los primeros trimestres de año cuando toca responder por las obligaciones adquiridas en el auge de diciembre, reflejando los momentos del calendario donde las familias se sienten tradicionalmente más o menos seguras financieramente.
Residuo: En este apartado destacan los picos de volatilidad atípica entre 2020 y 2022. Son movimientos que no responden ni a la tendencia ni al ciclo anual, sino a eventos externos que sacudieron la confianza de forma imprevista.
Gráfico inicial Ventas de vehículos nuevos-Original
library(ggplot2)
library(plotly)
# 1. Filtramos data_col para que tenga las mismas 132 filas que variable3_ts
# Usamos tail para tomar los datos más recientes que coincidan con la serie
data_col_grafico <- tail(data_col, length(variable3_ts))
# 2. Asignamos la serie convertida a numérica a la columna variable3
data_col_grafico$variable3 <- as.numeric(variable3_ts)
# 3. Crear el gráfico con los nombres y unidades solicitados
grafico_serie <- ggplot(data_col_grafico, aes(x = seq.Date(from = as.Date("2014-01-01"),
by = "month",
length.out = nrow(data_col_grafico)),
y = variable3)) +
geom_line(color = "grey", linewidth = 0.4) +
geom_point(color = "black", size = 0.1) +
# Actualización de Títulos y Unidades
ggtitle("Venta de Vehículos Nuevos: Serie original") +
xlab("Tiempo") +
ylab("Unidades vendidas") +
theme_minimal()
# Convertir a interactivo
ggplotly(grafico_serie)
El mercado automotriz está lleno de picos y valles. Por esa razon no miramos unicamente al serie original sino que Descomponemos las ventas. esto nos ayuda a ver si el sector realmente está creciendo o si solo está viviendo de momentos específicos del año.
Extracción señales Vehiculos Nuevos
# Cargar librerías necesarias
library(ggplot2)
library(plotly)
# 1. LIMPIEZA TOTAL: Convertimos a numérico y eliminamos posibles NA
# Esto asegura que stl() reciba datos puros
valores_limpios <- as.numeric(variable3_ts)
valores_limpios[is.na(valores_limpios)] <- mean(valores_limpios, na.rm = TRUE)
# 2. RECONSTRUCCIÓN: Forzamos la frecuencia mensual (12) desde 2014
# Sin esto, stl() siempre lanzará error
variable3_ts_clean <- ts(valores_limpios, start = c(2014, 1), frequency = 12)
# 3. DESCOMPOSICIÓN
# Usamos la serie limpia recién creada
stl_decomp_var3 <- stl(variable3_ts_clean, s.window = "periodic")
# 4. DATAFRAME PARA GRAFICAR
stl_df_var3 <- data.frame(
Time = rep(as.numeric(time(variable3_ts_clean)), 4),
Value = c(as.numeric(stl_decomp_var3$time.series[, "seasonal"]),
as.numeric(stl_decomp_var3$time.series[, "trend"]),
as.numeric(stl_decomp_var3$time.series[, "remainder"]),
as.numeric(variable3_ts_clean)),
Component = factor(rep(c("Estacional", "Tendencia", "Residuo", "Serie Original"),
each = length(variable3_ts_clean)),
levels = c("Serie Original", "Tendencia", "Estacional", "Residuo"))
)
# 5. GRÁFICO
p <- ggplot(stl_df_var3, aes(x = Time, y = Value, color = Component)) +
geom_line(show.legend = FALSE) +
facet_wrap(~Component, scales = "free_y", ncol = 1) +
theme_minimal() +
labs(title = "Descomposición temporal: Venta de Vehículos Nuevos",
x = "Año",
y = "Unidades / Variación")
ggplotly(p)
Descomposición Ventas de Vehículos Nuevos (Nacional):
Serie Original: En lo que respecta a la serie original la volatilidad es alta ya que hemos visto meses de 40.000 unidades y otros donde el registro fue casi nulo. En los últimos meses de 2024, la serie parece haber encontrado un equilibrio cerca de las 22.000 unidades.
Tendencia: El mercado ha perdido gran parte de su dinamismo mostrado en su pico registrado en 2016, la actividad comenzó a declinar y hoy se estabiliza en torno a las 20.000 unidades mensuales. Es una cifra que evidencia, con claridad, cuánto se ha reducido la capacidad de absorción del sector en comparación con la de hace ocho años.
Estacionalidad: Los finales de año son determinantes, con saltos de hasta \(5.000\) unidades estando por encima del promedio, lo que demuestra que el sector depende críticamente de lo que suceda en el último trimestre.
Residuo: El dato más fuerte aquí es la caída de 2022, donde el residuo negativo fue de 10.000 unidades. Es la prueba de que un choque externo puede frenar en seco la inercia de ventas, sin importar qué tan buena sea la temporada.
Gráfico inicial de las Ventas de vehiculos nuevos en el valle -Original
library(ggplot2)
library(plotly)
# Convertir la serie temporal a un vector numérico para lograr graficar con ggplot2
data_col$variable4 <- as.numeric(variable4_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 = variable4)) +
geom_line(color = "grey", linewidth = 0.4) + # Cambiado 'size' por 'linewidth'
geom_point(color = "black", size = 0.1) +
ggtitle("Ventas de vehículos nuevos del Valle: Serie original") +
xlab("Tiempo") +
ylab("Número de vehículos") +
theme_minimal()
ggplotly(grafico_serie)
A nivel regional, el Valle suele seguir la corriente nacional, pero con matices propios que solo se ven cuando limpiamos la serie de ruidos locales.
Extracción señales Venta de vehiculos nuevos en el valle
# Cargar librerías necesarias
library(ggplot2)
library(plotly)
# Descomposición de la serie temporal
stl_decomp_var4 <- stl(variable4_ts, s.window = "periodic")
# Convertir la descomposición a un data frame para graficar con ggplot2
stl_df_var4 <- data.frame(
Time = rep(time(variable4_ts), 4), # Tiempo repetido para cada componente (son 4 componentes)
Value = c(stl_decomp_var4$time.series[, "seasonal"],
stl_decomp_var4$time.series[, "trend"],
stl_decomp_var4$time.series[, "remainder"],
variable4_ts),
Component = rep(c("Estacional", "Tendencia", "Residuo", "Serie Original"), each = length(variable4_ts))
)
# Crear gráfico con ggplot2
p <- ggplot(stl_df_var4, 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 Ventas de vehículos nuevos del Valle",
x = "Tiempo",
y = "Valor")
# Convertir a gráfico interactivo con plotly
ggplotly(p)
Descomposición Ventas de Vehículos Nuevos (Valle del cauca):
Serie Original: El rango de movimiento en el departamento suele estar entre las 1.000 y 3.500 unidades. Visualmente camina de la mano con el total nacional, aunque con pequeñas variaciones que son propias de la dinámica regional.
Tendencia: Se nota un agotamiento. La tendencia en el Valle no ha logrado recuperar el nivel de las 2.500 unidades que tenía antes de la pandemia y, de hecho, muestra una ligera inclinación hacia abajo al cerrar 2024, situándose cerca de las 1.500 unidades.
Estacionalidad: Los ciclos son constantes, con variaciones de unos \(\pm 250\) vehículos. Esto confirma que el comprador en el Valle responde exactamente a los mismos estímulos de fin de año que el resto del país.
Residuo: Al igual que en el nacional, los residuos negativos de 2020 y 2022 fueron marcados, llegando a caídas de 1.000 unidades que se explican por situaciones coyunturales que afectaron la logística y el comercio local.
library(ggplot2)
library(plotly)
# Convertir la serie temporal a un vector numérico para lograr graficar con ggplot2
data_col$variable5 <- as.numeric(variable5_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 = variable5)) +
geom_line(color = "grey", linewidth = 0.4) + # Cambiado 'size' por 'linewidth'
geom_point(color = "black", size = 0.1) +
ggtitle("Cartera del Sector Bancario: Serie original") +
xlab("Tiempo") +
ylab("Pesos") +
theme_minimal()
ggplotly(grafico_serie)
Al ser una variable que acumula saldos, la cartera puede parecer siempre al alza. Por eso, descomponerla es vital para notar el comportamiento real
Extracción señales Venta de Cartera del sector bancario
# Cargar librerías necesarias
library(ggplot2)
library(plotly)
# Descomposición de la serie temporal
stl_decomp_var5 <- stl(variable5_ts, s.window = "periodic")
# Convertir la descomposición a un data frame para graficar con ggplot2
stl_df_var5 <- data.frame(
Time = rep(time(variable5_ts), 4), # Tiempo repetido para cada componente (son 4 componentes)
Value = c(stl_decomp_var5$time.series[, "seasonal"],
stl_decomp_var5$time.series[, "trend"],
stl_decomp_var5$time.series[, "remainder"],
variable5_ts),
Component = rep(c("Estacional", "Tendencia", "Residuo", "Serie Original"), each = length(variable4_ts))
)
# Crear gráfico con ggplot2
p <- ggplot(stl_df_var5, 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 Cartera del sector bancario",
x = "Tiempo",
y = "Valor")
# Convertir a gráfico interactivo con plotly
ggplotly(p)
Descomposición Cartera del Sector Bancario:
Serie Original: Tuvo una subida constante hasta 2022, llegando un poco más de 5 billones de pesos. Sin embargo, lo más reciente muestra que ese volumen se ha estancado e incluso ha empezado a bajar ligeramente.
Tendencia:Tuvo una subida constante hasta 2022, llegando un poco más de 5 billones de pesos. Sin embargo, lo más reciente muestra que ese volumen se ha estancado e incluso ha empezado a bajar ligeramente.
Estacionalidad: El crédito también tiene temporadas. Hay movimientos cíclicos de hasta 4 billones de pesos, esto se presenta en el ultimo trimestre del año, lo cual nos dice en qué en estos meses se aumenta el numero de creditos realizado y por ende aumenta el valor de la cartera, por el contrario en los primeros trimestres es cuándo hay más recaudo.
Residuo: La volatilidad aquí es menor que en las ventas de carros, pero los ruidos han crecido en los últimos años. Esto sugiere que el sistema bancario ha tenido que lidiar con más imprevistos relacionados con las tasas y el comportamiento de pago de los clientes.
En este apartado es posible observar con mayor precisión el fenómeno descrito de la relación de la tendencia con el comportamiento original en la interpretación de la descomposición temporal por cada una de las variables.
library(ggplot2)
library(plotly)
variable1_vec <- as.numeric(variable1_ts)
tendencia_var1 <- as.numeric(stl_decomp_var1$time.series[, "trend"])
fechas1 <- seq.Date(from = as.Date("2012-01-01"), by = "month", length.out = length(variable1_ts))
grafico_tendencia_var1 <- ggplot() +
geom_line(aes(x = fechas1, y = variable1_vec, color = "Serie Original"), linewidth = 0.7) +
geom_line(aes(x = fechas1, y = tendencia_var1, color = "Tendencia"), linewidth = 0.9) +
scale_color_manual(values = c("Serie Original" = "grey", "Tendencia" = "#7030A0")) +
ggtitle("Tasa de Cambio (TRM): Serie Original vs Tendencia", subtitle = "Fuente: DANE") +
xlab("Tiempo") +
ylab("Pesos por dólar") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
ggplotly(grafico_tendencia_var1)
variable2_vec <- as.numeric(variable2_ts)
tendencia_var2 <- as.numeric(stl_decomp_var2$time.series[, "trend"])
fechas2 <- seq.Date(from = as.Date("2012-01-01"), by = "month", length.out = length(variable2_ts))
grafico_tendencia_var2 <- ggplot() +
geom_line(aes(x = fechas2, y = variable2_vec, color = "Serie Original"), linewidth = 0.7) +
geom_line(aes(x = fechas2, y = tendencia_var2, color = "Tendencia"), linewidth = 0.9) +
scale_color_manual(values = c("Serie Original" = "grey", "Tendencia" = "#7030A0")) +
ggtitle("Índice de Confianza del Consumidor (ICC)", subtitle = "Fuente: FEDESARROLLO-ANDI") +
xlab("Tiempo") +
ylab("Índice") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
ggplotly(grafico_tendencia_var2)
variable3_vec <- as.numeric(variable3_ts)
tendencia_var3 <- as.numeric(stl_decomp_var3$time.series[, "trend"])
# Ajustado a 2014 según tu requerimiento previo
fechas3 <- seq.Date(from = as.Date("2014-01-01"), by = "month", length.out = length(variable3_ts))
grafico_tendencia_var3 <- ggplot() +
geom_line(aes(x = fechas3, y = variable3_vec, color = "Serie Original"), linewidth = 0.7) +
geom_line(aes(x = fechas3, y = tendencia_var3, color = "Tendencia"), linewidth = 0.9) +
scale_color_manual(values = c("Serie Original" = "grey", "Tendencia" = "#7030A0")) +
ggtitle("Ventas de Vehículos Nuevos (Nacional)", subtitle = "Fuente: FENALCO") +
xlab("Tiempo") +
ylab("Número de vehículos") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
ggplotly(grafico_tendencia_var3)
variable4_vec <- as.numeric(variable4_ts)
tendencia_var4 <- as.numeric(stl_decomp_var4$time.series[, "trend"])
fechas4 <- seq.Date(from = as.Date("2012-01-01"), by = "month", length.out = length(variable4_ts))
grafico_tendencia_var4 <- ggplot() +
geom_line(aes(x = fechas4, y = variable4_vec, color = "Serie Original"), linewidth = 0.7) +
geom_line(aes(x = fechas4, y = tendencia_var4, color = "Tendencia"), linewidth = 0.9) +
scale_color_manual(values = c("Serie Original" = "grey", "Tendencia" = "#7030A0")) +
ggtitle("Ventas de Vehículos Nuevos (Valle del Cauca)", subtitle = "Fuente: FENALCO") +
xlab("Tiempo") +
ylab("Número de vehículos") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
ggplotly(grafico_tendencia_var4)
variable5_vec <- as.numeric(variable5_ts)
tendencia_var5 <- as.numeric(stl_decomp_var5$time.series[, "trend"])
fechas5 <- seq.Date(from = as.Date("2012-01-01"), by = "month", length.out = length(variable5_ts))
grafico_tendencia_var5 <- ggplot() +
geom_line(aes(x = fechas5, y = variable5_vec, color = "Serie Original"), linewidth = 0.7) +
geom_line(aes(x = fechas5, y = tendencia_var5, color = "Tendencia"), linewidth = 0.9) +
scale_color_manual(values = c("Serie Original" = "grey", "Tendencia" = "#7030A0")) +
ggtitle("Cartera del Sector Bancario", subtitle = "Fuente: SUPERFINANCIERA") +
xlab("Tiempo") +
ylab("Pesos ($)") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
ggplotly(grafico_tendencia_var5)
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"]
Se crea la variable4 ajustada por estacionalidad
# Extraer los componentes de la descomposición
variable4_sa <- variable4_ts - stl_decomp_var4$time.series[, "seasonal"]
Se crea la variable5 ajustada por estacionalidad
# Extraer los componentes de la descomposición
variable5_sa <- variable5_ts - stl_decomp_var5$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("TRM:Serie Original vs Ajustada") +
xlab("Tiempo") +
ylab("Pesos por dolar estadunidense") +
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)
Interpretación Comparando la serie original vs ajustada, en el caso de la variable TRM, ambas tienen un comportamiento similar, como una tendencia creciente con el paso del tiempo, pasando por valores que rondan los 2.000 pesos colombianos hasta llegar algunos alrededores de los 4.000 pesos en los últimos años, la serie ajustada por su parte tiene un comportamiento más “suave” eliminando ligeras variaciones. Al haber diferencias pequeñas se puede decir que la TRM no sufre mucho de estacionalidad por lo que es una variable más afecta por otros factores, como macroeconómicos y financieros.
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("ICC:Serie Original vs Ajustada") +
xlab("Tiempo") +
ylab("Índice") +
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)
Interpretación El ICC tiene un comportamiento similar en ambas series de tiempo, lo que puede deducir que la estacionalidad no se ve relejada en la variable y que se ve afectada por factores externos, en ambos casos en los últimos años el índice a mejorado, pero en retrospectiva aun no ha sido demasiado favorecedor.
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("Ventas de vehículos nuevos:Serie Original vs Ajustada") +
xlab("Tiempo") +
ylab("Número de vehículos") +
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)
Interpretación La serie de ventas de autos, tanto la original como la que se ajusta por estacionalidad, presenta una conducta a través del tiempo muy parecida. No obstante, la serie original muestra fluctuaciones más marcadas en ciertos meses, lo que pone de manifiesto los patrones estacionales de la venta de vehículos. Por el contrario, la serie ajustada elimina el efecto estacional y suaviza estas oscilaciones, lo cual hace más fácil apreciar la progresión subyacente de las ventas.
Aunque la variabilidad muestra diferencias, las dos series coinciden en los cambios más notables del período de estudio. Se percibe una caída significativa alrededor del año 2018, posiblemente por las caídas de precios del petróleo y justes fiscales que se realizaron años antes y redujo la demanda.
# Crear vector de fechas correctamente alineado con la serie
fechas_var4 <- seq.Date(from = as.Date("2012-01-01"), by = "month", length.out = length(variable4_ts))
# Gráfico mejorado con fechas en el eje X
grafico_ajustada_var4 <- ggplot() +
geom_line(aes(x = fechas_var4, y = variable4_ts), color = "grey", size = 0.5, linetype = "solid", name = "Serie Original") +
geom_line(aes(x = fechas_var4, y = variable4_sa), color = "black", size = 0.6, linetype = "solid", name = "Serie Ajustada") +
ggtitle("Ventas de vehículos nuevos en el Valle:Serie Original vs Ajustada") +
xlab("Tiempo") +
ylab("Número de vehículos") +
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_var4)
Interpretación En el gráfico de ventas de automóviles nuevos en el Valle del Cauca, se puede notar que la serie original tiene oscilaciones más marcadas con el paso del tiempo. Por otro lado, la serie ajustada por estacionalidad muestra una tendencia más estable, lo cual hace posible ver con mayor claridad cuál es la tendencia general del mercado. Durante casi todo el tiempo, las dos series siguen patrones muy parecidos; esto sugiere que la estacionalidad no modifica significativamente la dinámica del mercado, sino que se encarga principalmente de atenuar los picos y descensos que tienen lugar en algunos meses anuales, probablemente vinculados a promociones comerciales, cierre de año o cambios en la demanda, se observa una caída en 2020, muy relacionado al COVID 19 y su impacto económico.
# Crear vector de fechas correctamente alineado con la serie
fechas_var5 <- seq.Date(from = as.Date("2012-01-01"), by = "month", length.out = length(variable5_ts))
# Gráfico mejorado con fechas en el eje X
grafico_ajustada_var5 <- ggplot() +
geom_line(aes(x = fechas_var5, y = variable5_ts), color = "grey", size = 0.5, linetype = "solid", name = "Serie Original") +
geom_line(aes(x = fechas_var5, y = variable5_sa), color = "black", size = 0.6, linetype = "solid", name = "Serie Ajustada") +
ggtitle("Cartera del Sector Bancario:Serie Original vs Ajustada") +
xlab("Tiempo") +
ylab("Cartera") +
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_var5)
Interpretación la series originale y las ajustada por estacionalidad tienen un comportamiento muy parecido, ambas líneas tienden a superponerse que en el tiempo. Esto señala que la variable no tiene un componente estacional fuerte, lo que significa que no hay patrones que se reproduzcan de manera sistemática en ciertos meses del año.
Que la serie ajustada y la original sean muy parecidas indica que las variaciones en la cartera son mayormente resultado de tendencias a mediano y largo plazo en el sistema financiero, lo que puede tener un impacto directo en la habilidad de los clientes para financiar la adquisición de vehículos.
# Cálculo de la tasa de crecimiento anual - Variable 1
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
# Vector de fechas (Enero 2013)
fechas_corregidas_var1 <- seq(from = as.Date("2013-01-01"), by = "month", length.out = length(tasa_crecimiento_var1))
# Gráfico Variable 1
grafico_crecimiento_var1 <- ggplot() +
geom_line(aes(x = fechas_corregidas_var1, y = tasa_crecimiento_var1, color = "Serie Original"), size = 0.7) +
geom_line(aes(x = fechas_corregidas_var1, y = tasa_tendencia_var1, color = "Tendencia"), size = 0.8, linetype = "dashed") +
scale_color_manual(values = c("Serie Original" = "grey", "Tendencia" = "black")) +
ggtitle("TRM (DANE): Tasa de crecimiento anual %") +
xlab("Tiempo") +
ylab("% de Crecimiento Anual") +
theme_minimal()
ggplotly(grafico_crecimiento_var1)
Señales Convergentes y Fiabilidad: En el tramo final de 2024, la serie original y la tendencia muestran una dirección ascendente sincronizada, lo que otorga una alta fiabilidad a la señal de presión devaluacionista actual. Esta convergencia sugiere que el peso colombiano está enfrentando una pérdida de valor estructural frente al dólar hacia el cierre del periodo.
Puntos de Inflexión y Cambios de Régimen:
2015: Se identifica un punto de inflexión crítico donde la TRM rompió el soporte histórico de los $2.000. Este salto se explica por el desplome de los precios internacionales del petróleo, que redujo drásticamente el ingreso de divisas al país.
2022-2023: La tendencia alcanzó un máximo histórico cercano a los $5.000. Este régimen de alta volatilidad estuvo impulsado por la incertidumbre política interna tras las elecciones presidenciales y el endurecimiento de la política monetaria en Estados Unidos (alza de tasas de la FED).
Ruido y Eventos Atípicos: El componente de residuo revela choques que rompen el comportamiento usual, especialmente en 2020 (inicio de la crisis global por pandemia) y durante la volatilidad política de 2022. Estas desviaciones, que superan los $200 pesos, representan momentos donde factores no sistémicos dominaron la formación del precio.
Serie Original vs. Ajustada: Dada la volatilidad residual observada en las gráficas, se recomienda trabajar con la serie ajustada (tendencia) para el análisis de costos a largo plazo. La serie original, aunque útil para el flujo de caja inmediato, está “contaminada” por ruidos especulativos que no reflejan necesariamente la salud real del tipo de cambio.
# 1. Cálculo de la diferencia anual en PUNTOS (no porcentual)
# Esto evita las divisiones por valores cercanos a cero
diff_anual_var2 <- diff(variable2_ts, lag = 12)
# Extraer la tendencia de la descomposición previa (stl_decomp_var2)
# Usamos los mismos periodos para que coincidan
tendencia_var2 <- stl_decomp_var2$time.series[, "trend"]
diff_tendencia_var2 <- diff(tendencia_var2, lag = 12)
# 2. Ajustar fechas (empezando 12 meses después del inicio de la serie)
fechas_grafico <- seq(from = as.Date("2013-01-01"), by = "month", length.out = length(diff_anual_var2))
# 3. Crear el DataFrame para ggplot
df_crecimiento <- data.frame(
Fecha = fechas_grafico,
Variacion = as.numeric(diff_anual_var2),
Tendencia = as.numeric(diff_tendencia_var2)
)
# 4. Gráfico mejorado
grafico_util <- ggplot(df_crecimiento, aes(x = Fecha)) +
# Área sombreada para identificar periodos de caída (opcional pero muy visual)
geom_area(aes(y = Variacion), fill = "lightblue", alpha = 0.3) +
geom_line(aes(y = Variacion, color = "Variación Anual (Puntos)"), linewidth = 0.7) +
geom_line(aes(y = Tendencia, color = "Tendencia de Variación"), linewidth = 0.9, linetype = "dashed") +
# Línea de referencia en cero
geom_hline(yintercept = 0, linetype = "solid", color = "red", alpha = 0.5) +
scale_color_manual(values = c("Variación Anual (Puntos)" = "darkgrey", "Tendencia de Variación" = "black")) +
labs(
title = "ICC: Variación Anual en Puntos del Índice",
subtitle = "Diferencia respecto al mismo mes del año anterior",
x = "Tiempo",
y = "Diferencia en Puntos",
color = "Referencia"
) +
theme_minimal()
ggplotly(grafico_util)
Aclaración metodo de calculo: Usamos la diferencia en puntos porque el ICC cruza por cero y tiene valores negativos. Matemáticamente, calcular una tasa de crecimiento (división) cuando la base es cercana a cero genera resultados infinitos o escalas distorsionadas que arruinan la gráfica. La diferencia absoluta permite medir el cambio real en el sentimiento del consumidor sin errores de magnitud.
Puntos de Inflexión y Cambio de Régimen: La serie muestra un quiebre estructural definitivo en 2015. Antes de este año, la tendencia se mantenía en terreno optimista (por encima de los +20 puntos), pero tras una caída abrupta, el índice entró en un régimen de pesimismo persistente del cual no ha logrado salir en una década.
Señales Divergentes (Baja Fiabilidad Actual): Al cierre del periodo, se observa una divergencia preocupante: mientras la serie original muestra pequeños repuntes estacionales, la tendencia continúa anclada en terreno negativo, cerca de los \(-10\) puntos. En este escenario, priorizamos la señal de la tendencia, la cual sugiere que la recuperación de la confianza aún no tiene bases sólidas de largo plazo.
Ruido y Choques Atípicos: El componente residual identifica niveles de ruido extremos en 2020 y 2021. Estas desviaciones (picos de hasta \(+20\) y caídas de \(-20\) en el residuo) reflejan la alta sensibilidad de la confianza a noticias sobre la pandemia y la posterior reactivación, rompiendo cualquier patrón usual de comportamiento.*
Estacionalidad: *Se confirma un ciclo sumamente rígido con impactos positivos recurrentes hacia el cierre de cada año. Este patrón estacional explica por qué, incluso en años de crisis, hay un repunte de ánimo en diciembre que el sector automotriz aprovecha para sus metas de ventas.
Serie Original vs. Ajustada: Debido a la enorme volatilidad y el ruido presente en la serie original (que llega a tocar mínimos de \(-40\) puntos), es imperativo trabajar con la serie ajustada (tendencia) para el análisis estratégico. La original suele sobrerreaccionar a eventos de corto plazo, lo que podría llevar a conclusiones erróneas sobre la salud real del consumo.
library(ggplot2)
library(plotly)
# Cálculo de la tasa de crecimiento anual - Variable 3 (Inicia en 2014, tasa inicia en 2015)
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
fechas_corregidas_var3 <- seq(from = as.Date("2015-01-01"), by = "month", length.out = length(tasa_crecimiento_var3))
# Gráfico Variable 3
grafico_crecimiento_var3 <- ggplot() +
geom_line(aes(x = fechas_corregidas_var3, y = tasa_crecimiento_var3, color = "Serie Original"), linewidth = 0.7) +
geom_line(aes(x = fechas_corregidas_var3, y = tasa_tendencia_var3, color = "Tendencia"), linewidth = 0.8, linetype = "dashed") +
scale_color_manual(values = c("Serie Original" = "grey50", "Tendencia" = "black")) +
coord_cartesian(ylim = c(-100, 150)) +
scale_x_date(date_breaks = "1 year", date_labels = "%Y") +
ggtitle("Venta Vehículos a nivel Nacional: Tasa de crecimiento anual %") +
xlab("Tiempo") +
ylab("% de Crecimiento Anual") +
theme_minimal()
ggplotly(grafico_crecimiento_var3)
Señales Convergentes y Fiabilidad: Al cierre de 2024, tanto la serie original como la tendencia de la tasa de crecimiento muestran una pendiente positiva, lo que otorga alta fiabilidad a la señal de recuperación del sector. Tras tocar fondo en 2023, el mercado ha entrado en una fase de expansión moderada, validando el retorno progresivo de los compradores a los concesionarios.
Puntos de Inflexión y Ciclos:
2016 (Auge): Se observa un punto de inflexión donde la tendencia alcanzó su máximo histórico por encima de las 27.500 unidades mensuales. Este pico estuvo impulsado por condiciones de crédito favorables y la renovación del parque automotor antes de cambios tributarios.
2022 (El Gran Choque): La serie experimentó una caída vertical sin precedentes. Este quiebre se explica por la crisis global de suministros (escasez de microchips) y el encarecimiento drástico de los vehículos debido a la TRM y las tasas de interés.
Estacionalidad: Identificamos un patrón sumamente marcado donde los meses de noviembre y diciembre generan impactos positivos de hasta +5.000 unidades sobre el promedio. En contraste, los primeros meses del año actúan como valles recurrentes, una dinámica que se ha mantenido rígida incluso en los años de post-pandemia.
Serie Original vs. Ajustada: Dado que la serie original presenta picos tan pronunciados por ferias y promociones de fin de año, trabajamos con la serie ajustada (tendencia) para entender la verdadera salud del mercado. La original suele inflar la percepción de éxito en diciembre, ocultando si el mercado estructuralmente está perdiendo o ganando fuerza.
# Cálculo de la tasa de crecimiento anual - Variable 3 (Inicia en 2014, tasa inicia en 2015)
tasa_crecimiento_var4 <- (variable4_ts[13:length(variable4_ts)] / variable4_ts[1:(length(variable4_ts) - 12)] - 1) * 100
tasa_tendencia_var4 <- (tendencia_var4[13:length(tendencia_var4)] / tendencia_var4[1:(length(tendencia_var4) - 12)] - 1) * 100
fechas_corregidas_var4 <- seq(from = as.Date("2015-01-01"), by = "month", length.out = length(tasa_crecimiento_var4))
# Gráfico Variable 4 - Con escala controlada
grafico_crecimiento_var4 <- ggplot() +
geom_line(aes(x = fechas_corregidas_var4, y = tasa_crecimiento_var4, color = "Serie Original"), linewidth = 0.7) +
geom_line(aes(x = fechas_corregidas_var4, y = tasa_tendencia_var4, color = "Tendencia"), linewidth = 0.8, linetype = "dashed") +
# Línea en 0 para referencia
geom_hline(yintercept = 0, color = "red", alpha = 0.3) +
# LIMITAR EL EJE Y: Ajusta los valores según tus datos (ej. -100% a 200%)
coord_cartesian(ylim = c(-100, 200)) +
scale_color_manual(values = c("Serie Original" = "grey", "Tendencia" = "black")) +
labs(
title = "Venta de Vehículos en el Valle: Tasa de crecimiento anual %",
subtitle = "Escala ajustada para omitir valores atípicos de 2021",
x = "Tiempo",
y = "% de Crecimiento Anual"
) +
theme_minimal()
ggplotly(grafico_crecimiento_var4)
# Cálculo de la tasa de crecimiento anual - Variable 5
tasa_crecimiento_var5 <- (variable5_ts[13:length(variable5_ts)] / variable5_ts[1:(length(variable5_ts) - 12)] - 1) * 100
tasa_tendencia_var5 <- (tendencia_var5[13:length(tendencia_var5)] / tendencia_var5[1:(length(tendencia_var5) - 12)] - 1) * 100
fechas_corregidas_var5 <- seq(from = as.Date("2013-01-01"), by = "month", length.out = length(tasa_crecimiento_var5))
# Gráfico Variable 5
grafico_crecimiento_var5 <- ggplot() +
geom_line(aes(x = fechas_corregidas_var5, y = tasa_crecimiento_var5, color = "Serie Original"), size = 0.7) +
geom_line(aes(x = fechas_corregidas_var5, y = tasa_tendencia_var5, color = "Tendencia"), size = 0.8, linetype = "dashed") +
scale_color_manual(values = c("Serie Original" = "grey", "Tendencia" = "black")) +
ggtitle("Cartera Bancaria: Tasa de crecimiento anual %") +
xlab("Tiempo") +
ylab("% de Crecimiento Anual") +
theme_minimal()
ggplotly(grafico_crecimiento_var5)
Señales Divergentes (Cautela en la Proyección): En el cierre del periodo, se observa una clara divergencia: la serie original marca un repunte final, pero la tendencia se lateraliza. Siguiendo el protocolo, tomamos la señal de la tendencia, lo que indica que el mercado en el Valle ha alcanzado un techo en su velocidad de recuperación y el crecimiento estructural está perdiendo el impulso acelerado que traía.
Puntos de Inflexión y Estabilización: Tras superar el desplome crítico de 2022 (donde la tasa rozó el -100%), la serie experimentó un rebote agresivo. Sin embargo, la actual forma lateral de la tendencia sugiere un nuevo punto de inflexión hacia la estabilidad, el mercado está dejando de “recuperarse” para entrar en una fase de crecimiento maduro y constante.
La serie ha pasado de una volatilidad extrema a una zona de normalización. El hecho de que la tendencia logre mantenerse por encima de la línea de cero es una señal positiva de supervivencia del sector, aunque la lateralización actual nos advierte que el margen para nuevas aceleraciones es limitado si no cambian variables externas como las tasas de interés o el ICC.
1. Capitalizar la Convergencia en el Crédito: Dado que la cartera bancaria muestra una señal de alta fiabilidad con el rebote sincronizado de la serie y la tendencia, es el momento de lanzar campañas agresivas de financiamiento. Debemos aprovechar que el “músculo financiero” ya superó su peor fase para captar a esos clientes que pospusieron su compra en 2023.
2. Ajuste de Expectativas por Lateralización en el Valle: La señal de divergencia detectada (donde la serie original sube pero la tendencia se aplana) nos advierte que el crecimiento en nuestra región podría estar tocando un techo. Se recomienda no sobreestimar los pedidos de inventario para el próximo trimestre, manteniendo un stock eficiente que no genere costos de almacenamiento innecesarios ante una posible estabilización del mercado local.
3. Mitigación del Ruido y Estacionalidad: Las gráficas nacionales y regionales confirman que gran parte del volumen actual es ruido estacional de fin de año. Para evitar el bache de ventas que la tendencia anticipa tras el cierre de ciclo, Casa Toro debería implementar estrategias de “pre-venta” o beneficios de mantenimiento para los meses de valle (enero-febrero), suavizando la caída natural de la serie original.
4. Gestión de la Desconfianza Persistente (ICC): Aunque las ventas suben, el ICC nos da una señal de pesimismo persistente. Las recomendaciones no pueden ser solo comerciales, debemos ofrecer productos que reduzcan la percepción de riesgo del cliente, como planes de retoma garantizada o seguros de protección de cuotas, atacando directamente el freno psicológico que muestra la tendencia de confianza.
5.Monitoreo de Puntos de Inflexión en TRM: Ante la volatilidad que históricamente ha generado quiebres estructurales en el sector, es vital utilizar la línea de tendencia de la TRM para fijar precios de lista. Esto permite que Casa Toro mantenga márgenes saludables, sin reaccionar de forma impulsiva al ruido diario del dólar que podría alejar a los compradores en un momento de recuperación frágil.