Skip to main content
Logo
Tipos de Curva S menos comunes: Rangos de control y gestión de recursos
Resumen

Tipos de Curva S menos comunes: Rangos de control y gestión de recursos

17 de mayo de 2026
7 min de lectura

En la primera parte de esta guía analizamos la estructura básica de la Curva S y cómo utilizar la metodología de Valor Ganado (EVM) para proyectar el costo final de un proyecto. Sin embargo, limitarse a la curva física o financiera estándar es solo rascar la superficie.

Existen otras formas de modelar la Curva S que son mucho menos utilizadas por los equipos de proyecto, pero que resultan críticas para el control avanzado y la gestión de recursos clave. En esta sección nos enfocaremos en ellas.

La Curva Banana: el rango de control que no existe en el Excel de nadie

Este es el concepto más avanzado y el menos implementado: la curva envolvente o banana curve.

En lugar de tener una sola línea de plan, un plan robusto tiene tres curvas de avance planificadas:

  1. Curva Temprana (Early Start): Qué avance se lograría si cada actividad inicia en su fecha más temprana posible. Es la curva superior, el mejor escenario.
  2. Curva Base (Planned): El programa oficial negociado.
  3. Curva Tardía (Late Start): Qué avance habría si cada actividad inicia en su fecha más tardía sin atrasar el proyecto (usando la holgura total del cronograma). Es la curva inferior, el límite antes del atraso.

La zona entre la curva temprana y la tardía forma una banda con forma de banana. Mientras el avance real esté dentro de esa banda, el proyecto está en control, aunque visualmente parezca “atrasado” respecto a la curva base.

Advertencia (Cómo se construye realmente la Curva Banana)

En la práctica, la curva banana no se construye desplazando la curva base un número fijo de meses. Se construye desde el análisis CPM del cronograma: cada actividad tiene su propio Early Start y Late Start según su holgura individual. Actividades con holgura de 3 semanas generan una banda ancha; actividades en la ruta crítica tienen holgura cero y la banda se cierra. El resultado real tiene una envoltura ancha al inicio del proyecto (más holgura disponible) y se estrecha al final (el camino crítico converge). El código a continuación aplica un desplazamiento simétrico fijo como aproximación didáctica para entender el concepto, pero no para implementarlo en un proyecto real sin el cronograma CPM de respaldo.

import numpy as np
import pandas as pd
meses = np.arange(0, 13)
def s_curve(t, t_total, k=8, offset_months=0):
"""
Genera una curva S desplazada en el tiempo.
offset_months positivo = curva desplazada hacia adelante (más temprana).
offset_months negativo = curva desplazada hacia atrás (más tardía).
"""
t_shifted = t - offset_months
t_norm = (t_shifted / t_total) * k - k / 2
s = 1 / (1 + np.exp(-t_norm))
s = np.clip((s - s[0]) / (s[-1] - s[0]) * 100, 0, 100)
return np.round(s, 1)
curva_temprana = s_curve(meses, 12, offset_months=-1.5) # Adelantada 1.5 meses
curva_base = s_curve(meses, 12, offset_months=0)
curva_tardia = s_curve(meses, 12, offset_months=1.5) # Retrasada 1.5 meses
# Avance real del proyecto (simulado)
avance_real = np.array([0, 2.5, 7.0, 17.4, 30.1, 44.8, 60.0, None, None, None, None, None, None])
df_banana = pd.DataFrame({
'mes': meses,
'curva_temprana': curva_temprana,
'curva_base': curva_base,
'curva_tardia': curva_tardia,
'avance_real': avance_real,
})
# Diagnóstico al mes 6
mes_actual = 6
real_6 = avance_real[mes_actual]
rango_min = curva_tardia[mes_actual]
rango_max = curva_temprana[mes_actual]
base_6 = curva_base[mes_actual]
print(f"=== Diagnóstico al Mes {mes_actual} ===\n")
print(f" Avance Real: {real_6:.1f}%")
print(f" Curva Base: {base_6:.1f}%")
print(f" Rango de Control: [{rango_min:.1f}% - {rango_max:.1f}%]")
print()
if rango_min <= real_6 <= rango_max:
desviacion_base = real_6 - base_6
print(f" ✓ DENTRO DEL RANGO (desviación vs base: {desviacion_base:+.1f}%)")
print(f" El proyecto está bajo control aunque parezca 'atrasado' vs la base.")
else:
print(f" ✗ FUERA DEL RANGO - Se requiere acción correctiva.")
=== Diagnóstico al Mes 6 ===
Avance Real: 60.0%
Curva Base: 65.6%
Rango de Control: [51.8% - 76.7%]
✓ DENTRO DEL RANGO (desviación vs base: -5.6%)
El proyecto está bajo control aunque parezca 'atrasado' vs la base.

Curva Banana (Envolvente de Proyecto)

La zona azul define el rango aceptable de avance según las holguras del cronograma.

Un avance de 60% cuando la curva base dice 65,6% genera ansiedad inmediata en reunión. Pero si el rango de control va de 51,8% a 76,7%, ese 60% está perfectamente dentro de lo aceptable. La decisión de acción correctiva debe tomarse con el rango, no con la línea base como único referente.

La Curva S de Recursos: el uso que nadie hace

Hasta aquí hemos hablado del avance físico o financiero. Pero la Curva S puede y debe aplicarse a los recursos de forma separada:

  • Curva S de Horas Hombre: ¿El despliegue de mano de obra sigue el perfil planificado?

Curva S de Horas Hombre vs. Histograma de Personal

La campana (barras) dicta la logística de terreno. La curva S (línea) muestra el progreso acumulado.

Pico de Personal
185 Personas
Mes de Saturación
Mes 6
Aceleración Crítica
+50 Pers/Mes
Total Proyecto
204.300 HH

El gráfico superior muestra la Curva S de Horas Hombre combinada con el Histograma de Personal (la campana). Esta visualización revela información logística crítica: el “pico” mensual dicta la infraestructura de terreno necesaria (campamentos, buses, supervisores), mientras que la aceleración previa indica el riesgo de “apilamiento” de faenas.

  • Curva S de Materiales: ¿Las adquisiciones están al ritmo correcto?

Curva S de Materiales (Procura) vs. Avance Físico

El desplazamiento hacia la izquierda refleja compras tempranas. La larga cola final representa terminaciones y cambios.

Desfase Estructural
~2.5 Meses
Inventario Máximo
Mes 5 (43% Brecha)
Cola de Terminaciones
Meses 8 al 12
Riesgo Principal
Bodegaje Mermas

Nota cómo la curva de materiales (ámbar) crece rápido al inicio para asegurar el abastecimiento de equipos pesados, y luego se aplana formando una “cola” de varios meses destinada a compras menores y terminaciones de obra.

  • Curva S de Flujo de Caja: ¿Las salidas de dinero siguen el ritmo presupuestado?

De las tres, la curva de Flujo de Caja es crítica y casi nunca se modela correctamente en fase de planificación.

import numpy as np
import pandas as pd
# El avance físico puede ir según plan, pero el flujo de caja puede estar desfasado.
# Ejemplo: obra que paga materiales antes de instalarlos (stock de seguridad)
# y cobra al mandante con 30-45 días de desfase.
meses = np.arange(1, 13)
# Gasto real en materiales (se compra con 1 mes de anticipación al uso)
gasto_materiales_acum = np.array([
3.5, 9.2, 18.0, 30.5, 44.1, 56.8,
67.4, 76.2, 83.1, 88.9, 93.7, 97.5
])
# Ingresos del proyecto (cobros al mandante con 45 días de rezago)
ingresos_acum = np.array([
0.0, 1.2, 5.8, 14.3, 26.7, 40.0,
54.3, 65.8, 75.9, 83.1, 89.4, 94.8
])
# Brecha de caja en cada mes (en %, relativo al presupuesto total)
brecha_caja = gasto_materiales_acum - ingresos_acum
df_flujo = pd.DataFrame({
'mes': meses,
'gasto_acum_pct': gasto_materiales_acum,
'ingreso_acum_pct': ingresos_acum,
'brecha_caja_pct': brecha_caja
})
print("=== Análisis de Brecha de Caja por Curva S ===\n")
print(f"{'Mes':<5} {'Gasto (%)':<12} {'Ingreso (%)':<13} {'Brecha (%)'}")
print("-" * 45)
for _, row in df_flujo.iterrows():
alerta = " ← PICO" if row['brecha_caja_pct'] == brecha_caja.max() else ""
print(f" {int(row['mes']):<4} {row['gasto_acum_pct']:<12.1f} {row['ingreso_acum_pct']:<13.1f} {row['brecha_caja_pct']:.1f}%{alerta}")
print()
print(f"Brecha máxima de caja: {brecha_caja.max():.1f}% del presupuesto total en mes {np.argmax(brecha_caja)+1}")
=== Análisis de Brecha de Caja por Curva S ===
Mes Gasto (%) Ingreso (%) Brecha (%)
---------------------------------------------
1 3.5 0.0 3.5%
2 9.2 1.2 8.0%
3 18.0 5.8 12.2%
4 30.5 14.3 16.2%
5 44.1 26.7 17.4% ← PICO
6 56.8 40.0 16.8%
7 67.4 54.3 13.1%
8 76.2 65.8 10.4%
9 83.1 75.9 7.2%
10 88.9 83.1 5.8%
11 93.7 89.4 4.3%
12 97.5 94.8 2.7%
Brecha máxima de caja: 17.4% del presupuesto total en mes 5

Curva S de Flujo de Caja (Capital de Trabajo)

La zona sombreada representa la brecha de dinero que la empresa debe financiar.

Brecha Máxima
17.4%
Mes Crítico
Mes 5
Déficit a Financiar*
$87.0M
Cruce a Positivo
Mes 13

Si el presupuesto del proyecto es $500.000.000, la brecha de caja pico de 17,4% en el mes 5 equivale a $87.000.000 que la empresa debe financiar con capital propio o línea de crédito. Ese número debería estar calculado y presentado antes de firmar el contrato. La mayoría de los proyectos lo descubren en el mes 5.

Importante (La Curva S de flujo de caja es una herramienta financiera, no de ingeniería)

El área entre la curva de gastos y la curva de ingresos es el capital de trabajo mínimo requerido por el proyecto. Si esa área no está calculada antes de iniciar, la empresa entra al proyecto sin saber cuánto efectivo necesita. Ese error no lo comete la obra. Lo comete la Gerencia.

La ilusión del mes 12 y el margen atrapado

Si miras el gráfico y la tabla con detención, notarás algo muy contra-intuitivo: el proyecto termina físicamente en el mes 12, pero la línea de ingresos nunca cruza a la de gastos en pantalla. ¿No se supone que el proyecto era rentable y debía cerrarse con ganancias?

Sí, lo es (el margen teórico en este ejemplo es positivo). Pero aquí radica una de las trampas operativas más crueles de nuestra industria:

  1. Los gastos van al día: Tienes que comprar los materiales al contado o a 30 días, y pagar las horas hombre a fin de mes. Si no hay dinero, la obra física se detiene.
  2. Los ingresos van con rezago: Terminas el avance de este mes, presentas el Estado de Pago al mes siguiente, el cliente lo revisa, y te lo termina pagando a 45 o 60 días.
  3. Las retenciones secuestran el margen: Además, es habitual que el contrato te retenga un 5% al 10% de cada pago como garantía de fiel cumplimiento, monto que no se libera hasta la firma de la Recepción Definitiva, muchos meses después de que te fuiste del terreno.

Por lo tanto, el proyecto opera durante casi toda su vida física en déficit de caja. El tan anhelado “cruce”, donde por fin recuperas el capital de trabajo invertido y ves la utilidad líquida en tu cuenta de banco, ocurre matemáticamente recién en los meses 13, 14 o 15.

Esta es con precisión la razón por la cual decenas de empresas contratistas quiebran estando con múltiples proyectos vigentes: se enamoran de su utilidad estimada en el papel (Estado de Resultados), pero no prevén que necesitan suficiente oxígeno financiero para sobrevivir operando bajo el agua durante un año entero antes de poder cobrar su premio.

Conclusión

Estas curvas menos comunes no son adornos de reporte. Son herramientas operativas directas:

  • La Curva Banana protege al equipo de la micro-gestión al definir un rango de tolerancia real basado en la holgura del cronograma.
  • Las Curvas de Horas Hombre y Materiales alertan sobre cuellos de botella logísticos y de abastecimiento antes de que se detenga la producción.
  • La Curva de Flujo de Caja calcula de antemano el oxígeno financiero que requiere la empresa para sobrevivir operando bajo el agua.

Usar la Curva S en su máximo potencial requiere mirar más allá del avance físico. Requiere entender que todo avance físico arrastra un consumo de recursos y una dinámica financiera invisible que, si no es modelada, tarde o temprano pasa la factura.