Pasos Sencillos para Pronosticar Ingresos en Inversiones de Valor usando el Método Holt-Winters con R

Simple Steps to Forecast Revenues in Value Investing Using the Holt-Winters Method with R

En las inversiones de valor se usa el Flujo de Caja Descontado (DCF) para hallar el valor intrínseco de una empresa. La referencia (Mathews, 2019) presenta un método simplificado de valuación donde se proyectan los valores futuros de la empresa en estudio y vincula muchos de los cálculos
dentro del modelo a los valores futuros de Ingresos (Revenues) del Estado de Resultados (Income Statement) lo que los convierte en pieza central de dicho modelo de valuación.
La literatura financiera cita que para la proyección a futuro de los ingresos deben considerarse varios insumos: el comportamiento de sus valores históricos, ventajas competitivas y planes de expansión de la empresa, expectativas de la industria, así como los ciclos de expansión y contracción de la economía. Ante esta gama de factores a considerar, se antoja que el pronóstico de ingresos no es tarea fácil y dado que la literatura financiera es escueta sobre la manera de explotar los datos históricos de crecimiento de la empresa, me di a la tarea de investigar una metodología sencilla para tal efecto (Cowpertwait & Metcalfe, 2009).

En este artículo se emplea el sitio TIKR (https://app.tikr.com) como fuente de información para los estados financieros históricos, Excel para guardar y visualizar valores, y la pareja R 4.0 con RStudio 1.2 como mecanismo para analizar y pronosticar valores de ingresos. Partimos del supuesto de que el lector tiene suficiente experiencia en el funcionamiento de TIKR y de Excel.

La empresa seleccionada es Bachoco (https://bachoco.com.mx/), cuya referencia dentro de la BMV (Bolsa Mexicana de Valores)   ( https://www.bmv.com.mx/es/emisoras/perfil/BACHOCO-5113). Puesto que es importante tener muchos valores históricos, dada la naturaleza estadística de muchas de la técnicas para pronosticar, lo mejor es usar datos trimestrales; en el momento de estudio el último trimestre reportado es Q2. Es importante resaltar que estas técnicas están indefensas ante empresas de reciente creación cuya cantidad de datos históricos es escasa.

El pronóstico de ingresos consta de 3 pasos simples:

  1. Obtener datos de TIKR. Cópielos en el portapapeles de la computadora
  2. Pegar datos en Excel y salvarlos en un archivo CSV
  3. Entrar a RStudio, recuperar los datos guardados en el paso anterior y realizar los cálculos pertinentes.

El detalle de cada uno de los pasos se describe:

  1. Localizar dentro de TIKR  la clave (Ticker) “BACHOCO B” que representa a las Industrias Bachoco de la BMV. Seleccionar la periodicidad de datos Trimestral (Quarterly) y el informe de Estado de Resultados; asegúrese de seleccionar el periodo que va desde el primer trimestre de 2011 hasta el segundo trimestre de 2020. Tome nota de que las cifras están en millones de pesos mexicanos. Copie la tabla en el portapapeles.
  2. En Excel, pegue transversalmente y salve los ingresos (revenues) como archivo CSV con el nombre: “Bachoco_Quarter.csv”. Son 38 valores (4 por cada año del 2011 al 2019 y 2 del 2020). Tome nota del directorio donde guarda el archivo
  3. Entre a RStudio y diríjase al directorio donde guardó los datos de Ingresos de Bachoco. Efectúe los siguientes pasos:

a) setwd(«C:\\Users\\Jorge\\Documents\\2020″) # Dir Windows
b) revenues <- read.csv(«Bachoco_Quarter.csv»)             # Cargue archive
c) # Revise valores cargados

d) Convierta el marco de datos (data.frame) a serie de tiempo
revenue_ts <- ts(revenues$Revenues, start=c(2011,1), frequency=4)
e) Grafique la serie de tiempo
plot(revenue_ts,  main=» Ingresos Bachoco», xlab = «Año», ylab = «Millones de pesos»)

f) Convierta la serie de tiempo a un data frame
df <- data.frame(Rev=as.matrix(revenue_ts), Trim=cycle(revenue_ts), date=time(revenue_ts))
g) Verifique datos del data frame

h) Grafique un diagrama box-and-whisker (boxplot). Cada barra está formada por cuartiles y muestran la dispersión de los ingresos en cada trimestre. Aunque este paso no es estrictamente necesario para el pronóstico de valores futuros, arroja alguna luz sobre la naturaleza y estacionalidad de los ingresos.
boxplot(df$Rev~df$Trim, xlab=»Trimestre», ylab=»Revenues»)

i) Utilice suavización exponencial para poder realizar pronóstico
revenueA.hw <- HoltWinters (revenue_ts, seasonal = «add»)
j) Realice pronóstico de los siguientes 18 trimestres (4.5 años)
revenueA.predict <- predict(revenueA.hw, n.ahead = 4.5 * 4)
k) Grafique pronóstico de los siguientes 18 trimestres. Se ha usado un modelo aditivo para el pronóstico. La linea punteada representa la proyección a futuro de lo que se espera de ventas trimestrales.
ts.plot(revenue_ts, revenueA.predict, main=»Ingresos Bachoco (Add)», ylab=»Millones de pesos», xlab=»Año», lty = 1:2)

l) Obtenga los porcentajes de crecimiento anual
revenue.rf <- ts(c(revenue_ts,revenueA.predict), start=start(revenue_ts), frequency=frequency(revenue_ts))
revenue.yr <- aggregate(revenue.rf)
df.yr <- data.frame(date=time(revenue.yr), rev=as.matrix(revenue.yr))

n <- length(df.yr$rev)
YoY_pct <- (df.yr$rev[2:n] / df.yr$rev[1:n-1] – 1) * 100
colnames(df.yr) <- c(«Year», «Revenues», «YoY_PCT»)

m) Revise cifras anuales de Ingresos y Crecimiento de los mismos. Los valores reales llegan hasta el segundo semestre de 2020. El pronóstico de 18 semestres incluye los 2 semestres finales de 2020 y llegan hasta 2024.

n) Grafique cifras anuales de Ingresos y Crecimiento. Como puede verse en la línea de color negro, el crecimiento de los ingresos se ha ralentizado no obstante que Bachoco es una industria defensiva que se enfoca a productos de consumo frecuente. A menos que existan planes de expansión o algo imprevisto, el pronóstico anuncia que los ingresos en los próximos años serán modestos.
par(mar = c(5,5,2,5))
with(df.yr, plot(Year, Revenues, type=»l», col=»red3″,
ylab=»Millones de pesos»,
ylim=c(20000,70000)))


par(new = T)
with(df.yr, plot(Year, YoY_pct, pch=16, axes=F, xlab=NA, ylab=NA, ylim=c(0,50), cex=1.2))
axis(side = 4)
mtext(side = 4, line = 3, ‘% Crecimiento’)
legend(«topleft»,
legend = c(«Ingresos», «% Crecim»),
lty=c(1,0), pch=c(NA, 16), col=c(«red3», «black»))

Reflexiones Finales

De acuerdo a (Hyndman & Athanasopoulos, 2018), hay algunas reglas sobre lo que puede ser pronosticado, la más importante es que “el pronóstico sea independiente del valor pronosticado”. 

Se han usado valores trimestrales por 2 razones básicas: a) para tener un mayor número de datos históricos y, b) explotar que los ingresos anuales se calculan simplemente sumando los trimestrales.

De acuerdo a los valores mostrados en el inciso m), valores de crecimiento entre 2 y 3 por ciento son adecuados para años venideros de Bachoco, de acuerdo con Holt-Winters. En un escrito posterior podremos analizar un conjunto de técnicas mucho más sencillas que la aquí ilustrada.

Es importante mencionar que todos los pronósticos deben aprobar el sentido común humano, el cual puede volver indispensable que los valores se enriquezcan con criterios adicionales como planes de crecimiento y el análisis de ventajas competitivas.

Referencias

Cowpertwait, P., & Metcalfe, A. (2009). Introductory Time Series with R. Springer Science+Business Media.

Hyndman, R. J., & Athanasopoulos, G. (2018). Forecasting: Principles and Practice. Monash University, Australia: Otexts.

Mathews, S. (2019). The ABC’s of DCF Valuation & Modeling. http://www.GraduateTutor.com.