13. Flujos de fondos: ingresos, egresos y convención de signos

Un flujo de fondos registra cantidades que entran o salen en momentos determinados. Los signos permiten expresar ambas direcciones con una misma estructura numérica.

13.1 Qué es un flujo de fondos

Un flujo de fondos es una secuencia de movimientos monetarios ordenados en el tiempo. Cada movimiento contiene, como mínimo, un momento y un importe.

Un flujo puede representar cobros, pagos, aportes, devoluciones o cualquier otro movimiento relevante para la persona o entidad cuyo punto de vista estamos estudiando.

13.2 Primero debemos elegir una perspectiva

Un mismo pago es un egreso para quien lo realiza y un ingreso para quien lo recibe. Por eso la convención de signos solo tiene sentido después de responder:

¿Desde el punto de vista de quién se describe la operación?

La perspectiva debe mantenerse sin cambios durante todo el análisis.

13.3 Una convención práctica de signos

+Ingreso

Dinero que entra: se representa con un valor positivo.

Egreso

Dinero que sale: se representa con un valor negativo.

0Sin movimiento

En ese momento no existe entrada ni salida registrada.

Podría adoptarse otra convención, pero debe declararse y aplicarse de forma consistente.

13.4 Los ingresos

Un ingreso aumenta el efectivo disponible desde la perspectiva elegida. Algunos ejemplos son cobrar una venta, recibir un préstamo, recuperar un depósito o percibir una devolución.

La causa económica no determina por sí sola el signo: recibir un préstamo es un ingreso inicial aunque cree una obligación futura.

13.5 Los egresos

Un egreso reduce el efectivo disponible: pagar una compra, entregar un capital, abonar una cuota o afrontar un costo. Se escribe con signo negativo.

El signo no significa que la decisión sea “mala”. Solo indica la dirección del movimiento desde la perspectiva seleccionada.

13.6 Representación mediante flechas

Sobre una línea de tiempo es habitual dibujar los ingresos hacia arriba y los egresos hacia abajo. El valor cero permanece sobre el eje.

t = 0t = 1t = 2

13.7 Importe, signo y momento forman una unidad

Escribir +$50.000 no basta si no sabemos cuándo ocurre. Del mismo modo, escribir t = 3 no informa si existe un cobro o un pago.

flujo = { momento, importe con signo, concepto }

El concepto es descriptivo; el signo y el momento permiten operar con el dato.

13.8 La misma operación desde dos perspectivas

Entrega de $100.000 y devolución posterior de $112.000.
MomentoQuien recibe inicialmenteQuien entrega inicialmente
t = 0+$100.000−$100.000
t = n−$112.000+$112.000

Los flujos tienen iguales magnitudes y signos opuestos. Ninguna columna debe mezclar movimientos de ambos participantes.

13.9 Suma algebraica nominal

Podemos sumar los importes con signo para obtener un resumen aritmético: ingresos menos egresos. Si los movimientos ocurren en fechas diferentes, esa suma no representa automáticamente ganancia, rentabilidad ni equivalencia financiera.

Advertencia temporal: la suma nominal ignora el valor del dinero en el tiempo. En este tema se utiliza únicamente para practicar signos y controlar datos.

13.10 Orden y acumulación aritmética

Recorrer el arreglo en orden temporal permite calcular un saldo acumulado puramente contable:

const flujos = [-100000, 20000, -10000, 45000, 70000];
let acumulado = 0;

for (const flujo of flujos) {
  acumulado += flujo;
  console.log(acumulado);
}

Este recorrido ayuda a detectar el efecto aritmético de cada movimiento, pero no traslada capitales entre fechas.

13.11 Flujos como objetos de JavaScript

Una estructura explícita conserva el significado de cada dato:

const flujos = [
  { periodo: 0, importe: -100000, concepto: "aporte inicial" },
  { periodo: 1, importe: 20000, concepto: "cobro" },
  { periodo: 2, importe: -10000, concepto: "pago" }
];

const ingresos = flujos.filter(flujo => flujo.importe > 0);
const egresos = flujos.filter(flujo => flujo.importe < 0);

console.log("Cantidad de ingresos:", ingresos.length);
ingresos.forEach(flujo => console.log(`Ingreso en t=${flujo.periodo}: ${flujo.importe}`));
console.log("Cantidad de egresos:", egresos.length);
egresos.forEach(flujo => console.log(`Egreso en t=${flujo.periodo}: ${flujo.importe}`));

En el tema siguiente profundizaremos la representación completa con objetos y arreglos.

13.12 Simulador de flujos y signos

Ingresá un movimiento para cada período. Los valores positivos se dibujan hacia arriba, los negativos hacia abajo y los ceros permanecen sobre el eje.

Secuencia de ingresos y egresos

Resumen nominal para practicar la convención de signos.

MomentoImporte con signoInterpretación
t = 0Egreso
t = 1Ingreso
t = 2Egreso
t = 3Ingreso
t = 4Ingreso
Total de ingresos$135.000,00
Total de egresos$110.000,00
Suma algebraica nominal$25.000,00

    La suma de $25.000,00 es nominal: no compara financieramente fechas diferentes.

    13.13 Comprobaciones útiles

    • Declarar la perspectiva antes de asignar signos.
    • Rechazar valores vacíos o no numéricos.
    • Ordenar los movimientos por fecha o período.
    • Distinguir un flujo cero de un dato faltante.
    • Conservar el signo original al formatear el importe.
    • No llamar rentabilidad a una suma nominal de fechas distintas.

    13.14 Ejercicio propuesto

    Desde la perspectiva de un proyecto se realiza un desembolso inicial de $80.000 y luego se reciben $25.000, $30.000 y $40.000 al final de los períodos 1, 2 y 3.

    1. Asigná el signo de cada movimiento.
    2. Representá los flujos sobre una línea de tiempo.
    3. Calculá la suma algebraica nominal.
    4. Guardá la secuencia en un arreglo de objetos.
    5. Explicá por qué esa suma no demuestra por sí sola que el proyecto sea conveniente.
    Ver solución y código

    La secuencia es [-80000, 25000, 30000, 40000]. La suma nominal es +$15.000, pero combina importes de fechas diferentes sin aplicar un modelo temporal.

    const flujos = [
      { periodo: 0, importe: -80000 },
      { periodo: 1, importe: 25000 },
      { periodo: 2, importe: 30000 },
      { periodo: 3, importe: 40000 }
    ];
    
    const sumaNominal = flujos.reduce(
      (total, flujo) => total + flujo.importe,
      0
    );
    
    console.log(sumaNominal); // 15000

    13.15 Ideas para recordar

    • Todo flujo debe tener momento, importe y perspectiva.
    • Los ingresos se representan con signo positivo y los egresos con signo negativo.
    • El signo indica dirección, no conveniencia.
    • La operación vista por la contraparte invierte los signos.
    • El cero es un movimiento nulo; no equivale a un dato ausente.
    • Sumar flujos de fechas distintas no establece equivalencia financiera.

    En el próximo tema representaremos operaciones financieras mediante objetos y arreglos.