¿Cómo puede un equipo de finanzas crear un flujo de trabajo de pronóstico utilizando herramientas de ciencia de datos de código abierto?

De acuerdo, no soy un banquero o un analista financiero, pero he visto y aprendido un poco de cómo funcionan esas cosas, y soy bastante hábil con los pandas. En resumen, no es la herramienta adecuada para el trabajo.

Quizás el principal problema con las herramientas de ciencia de datos es que tienes que estar un poco alfabetizado para usarlas, y tienes que escribir MUCHO. Como mínimo, debe saber cómo hacer bucles, definir funciones y saber qué matrices, mapas / dictos hash y tipos de datos son, para trabajar con herramientas de ciencia de datos. Debe instalar Python o R, además de muchos paquetes, y luego escribir muchas cosas sin comentarios inmediatos en la pantalla sobre lo que está sucediendo. En realidad, no es divertido trabajar con él, pero si necesita algo que pueda usarse repetidamente, no puede evitar codificarlo.

Además, las herramientas de análisis de datos basadas en código también son horribles para la entrada de datos, porque están destinadas a aceptar estructuras de datos que crea automáticamente descargando datos de alguna base de datos o raspando algo.

El modelo financiero no se ajusta a esos criterios. El modelado financiero comienza con un pequeño número de entradas, que son números importantes que el analista debe comprender en profundidad, luego se hace algo de aritmética de acuerdo con uno o más marcos intuitivos. Hay mucha entrada manual de datos.

Además, en Excel, puede formatear bien las cosas con unos pocos botones, mientras que el formateo es esencialmente imposible de hacer con las herramientas de ciencia de datos, porque a nadie le importa formatear en esa configuración. Mostrar a los clientes bancarios o ejecutivos de grandes empresas algunas tablas HTML no funcionaría en absoluto.

Luego está la representación gráfica. Graficar en R o matplotlib o seaborn es una gran pesadilla que lleva años aprender.

Veamos un ejemplo de un modelo DCF en Excel, luego le mostraré cómo hacer lo mismo en pandas, una popular biblioteca de análisis de datos de Python.

Análisis de flujo de efectivo descontado

En Excel, debe escribir la columna en “Año 0”, luego ir a “Año 1”, escribir algo como = B3 * B4 para “Ingresos”, luego = C3 – C5 para “Beneficio bruto”, luego = C7 – C9 para “EBITDA”, y luego resalte todo, y arrastre por la pantalla. Muy fácil. De acuerdo, hay un poco más de tipeo que eso, pero rápidamente verás por qué no es relevante.

Luego tenemos algunos D&A que tenemos que ingresar, y luego hacemos algunos cálculos aritméticos para obtener FCF sin palancas, luego lo multiplicamos por la tasa de descuento para obtener el VPN de los flujos de efectivo. No es tan malo ¿verdad? Probablemente pueda hacer esto en Excel en menos de 2 minutos si es bueno.

Así es como haría esto en Python, y estoy cortando algunas esquinas:

importar pandas como pd

yoy_growth = 0.1
tasa_descuento = 0.11

if __name__ == ‘__main__’:
df = pd.DataFrame ({‘ingresos’: [20000 * (1 + yoy_growth) ** n
para n en el rango (6)],
‘cogs_to_revenue’: [0.45-0.002 * n para n en el rango (6)],
«ADN»: [1112, 1222, 1343, 1476, 1623, 1623],
‘change_in_nwi’: [318, 350, 384, 423, 465, 465]},
‘año’: rango (1, 7)})
df [‘yoy_growth’] = yoy_growth
df [‘cogs’] = df.revenues * df.cogs_to_revenue
df [‘gross_profit’] = df.revenues – df.cogs

df [‘sga_to_revenue’] = 0.145
df [‘sga’] = df.gross_profit * df.sga_to_revenue
df [‘ebitda’] = df.gross_profit – df.sga

df [‘ebit’] = df.ebitda – df.dna
df [‘cash_taxes’] = df.ebit * 0.35
df [‘tax_adjusted_ebit’] = df.ebit – df.cash_taxes
df [‘capital_expenditures’] = 1750
df [‘unlevered_fcf’] = df.tax_adjusted_ebit + df.dna – df.capital_expenditures – df.change_in_nwi

df [‘net_present_value’] = df.unlevered_fcf / (1 + discount_rate) ** df.year

Ah, también tenemos que formatear esto, lo que significa reordenar / renombrar algunas columnas y exportar a Excel, donde luego puede hacer que se vea bien. Elegí cambiar el nombre aquí para que escribir el código allí fuera más rápido, pero probablemente no era un ahorro de tiempo neto.

ebitda_calculation = df [[” réditos ‘,’ dna ‘,’ cogs ‘,’ cogs_to_revenue ‘,
‘gross_profit’, ‘sga’, ‘sga_to_revenue’, ‘ebitda’]]. rename (
columnas = {‘ingresos’: ‘Ingresos’,
‘dna’: ‘D&A’, ‘cogs’: ‘COGS’,
# Me faltan algunas columnas porque estoy harto de escribir
‘cogs_to_revenue’: ‘\% Revenue’,}). T.to_csv (‘your_filename_here.csv’)

No haré la siguiente tabla abajo porque no tengo ganas. Eso llevó unos 10-15 minutos sólidos de código de escritura frente a lo que hubiera sido 2 en Excel, y tuve que pensar mucho sobre cómo reducir la cantidad de escritura que tenía que hacer y permitir ajustes fáciles de parámetros como la tasa de descuento. En teoría, podría usar esto nuevamente, pero después de exportar a un archivo de Excel necesitaría hacer algunas copias y pegar adicionales y los números no se “vincularán” para que nadie más pueda ver su modelo.

Esperemos que haya sido una demostración útil de por qué NO desea utilizar herramientas de ciencia de datos en finanzas.

Hay una serie de razones por las cuales la gente de Finanzas, correcta o incorrectamente, no se está calentando al software de código abierto.
La primera razón es cultural: los contadores tienden a ser conservadores. Antes de adoptar algo nuevo, deben asegurarse de que es mejor que reemplazar un punto de vista del usuario, no solo desde un punto de vista técnico. Ese es el error que la mayoría de los técnicos hacen con el problema “técnicamente mejor”, “más nuevo” no significa mejor en absoluto para el usuario.
Segundo: información de propiedad. Desde un punto de vista de seguridad, a legal, a control interno, los contadores de frijoles temen el riesgo de filtrar información.
El ERP que usted refiere a menudo está profundamente arraigado en las operaciones de la compañía, administra plantas y almacenes, contiene datos sensibles sobre costos de producción y estrategias de precios. Estos son datos a los que no quieres dar tu competencia fácilmente. ¿Quién se asegurará de que la solución de “código abierto” no se filtre en alguna parte? ¿Con quién me pongo en contacto, o incluso con una demanda, si algo sale mal?
Además, las grandes organizaciones son bestias complicadas, y las decisiones toman la última capa de gestión. Tratar con un único gran proveedor (Microsoft, SAP) que tiene la misma mentalidad es mucho más fácil que tratar con una organización más pequeña. está el tema del soporte técnico: ¿quién lo va a dar?
Con esto no estoy diciendo que no haya futuro para un enfoque diferente de estos problemas muy antiguos (pronósticos), solo estoy diciendo que para comprender cómo atacar el mercado, es necesario comprender cómo funcionan y piensan ciertas organizaciones.