En casi todos los proyectos de construcción, ingeniería o desarrollo con los que he trabajado, existe un ritual fijo: la reunión de avance mensual donde alguien proyecta una Curva S en la pantalla.
La línea azul es el plan. La línea roja es lo real. Todo el mundo mira si la roja está sobre o bajo la azul, alguien comenta que “vamos atrasados” o “vamos adelantados”, y la reunión avanza al siguiente punto.
Eso no es leer una Curva S. Es mirar un termómetro sin saber qué es la fiebre.
La Curva S es, en realidad, el punto de partida de un sistema completo de diagnóstico que la mayoría de los equipos nunca activa. Este artículo despliega esas capas.
Qué es estructuralmente una Curva S
Una Curva S es la representación acumulada de cualquier variable de proyecto a lo largo del tiempo. Su característica forma sigmoidea, lenta al inicio, acelerada en el centro y lenta al final, no es arbitraria: es el reflejo del ciclo de vida natural de cualquier proyecto bien planificado.
Los proyectos arrancan despacio (movilización, diseño, permisos). Aceleran en fase de ejecución. Y desaceleran en los cierres, terminaciones y pruebas.
Esa forma tiene consecuencias matemáticas directas que casi nadie aprovecha.
import numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom scipy.special import expit # Función sigmoide
# Simulación de curva S teórica para un proyecto de 12 mesesmeses = np.arange(0, 13)
# El parámetro k controla la "pendiente" de la aceleración centraldef curva_s(t, t_total, k=8): """Genera una distribución S normalizada entre 0 y 100%.""" t_norm = (t / t_total) * k - k / 2 s = expit(t_norm) # Normalizar para que empiece en 0 y termine en 100 s = (s - s[0]) / (s[-1] - s[0]) * 100 return s
avance_planificado = curva_s(meses, t_total=12)
df = pd.DataFrame({ 'mes': meses, 'avance_plan_pct': np.round(avance_planificado, 1)})
print(df.to_string(index=False)) mes avance_plan_pct 0 0.0 1 3.7 2 10.1 3 20.9 4 35.7 5 51.8 6 65.6 7 76.7 8 84.8 9 90.4 10 94.3 11 97.3 12 100.0Se observa que el mes 6 solo acumula el 65,6% del avance aunque sea la mitad del tiempo. Eso es la forma S en acción: la carga de trabajo real vive en la mitad del proyecto.
Si a mes 6 muestras un 65% real contra un 65,6% planificado, el termómetro está en verde: estás exactamente en plan. El error habitual es el inverso: mostrar ese número a alguien que lo compara mentalmente con el 50% del tiempo transcurrido. Sin la curva planificada como referencia, parece un sobrerrendimiento. Con ella, es simplemente el cumplimiento del plan.
Las tres curvas que deberían estar siempre juntas
La mayoría de los equipos trabajan con dos líneas: plan y real. El estándar profesional trabaja con tres:
| Curva | Pregunta que responde |
|---|---|
| PV — Planned Value | ¿Cuánto trabajo debería estar hecho a hoy, valorizado al presupuesto? |
| EV — Earned Value | ¿Cuánto trabajo está realmente completado, valorizado al presupuesto original? |
| AC — Actual Cost | ¿Cuánto dinero se ha gastado realmente para ejecutar ese trabajo? |
En literatura antigua y contratos de origen militar encontrarás BCWS, BCWP y ACWP. Son exactamente los mismos conceptos con la nomenclatura previa al PMBOK moderno.
La diferencia entre EV y PV te dice si vas adelantado o atrasado en tiempo.
La diferencia entre EV y AC te dice si vas dentro o fuera de presupuesto.
Son dos preguntas distintas. La mayoría de los proyectos solo responden una.
Las tres curvas del Earned Value Management (EVM)
La brecha entre PV y EV revela atraso; la brecha entre AC y EV revela sobrecosto.
Importante (El error conceptual más frecuente)
Comparar el gasto real (AC) contra el plan (PV) es una trampa. Si gastaste el 60% del presupuesto y llevas el 50% del tiempo, parece que vas bien. Pero si solo completaste el 40% del trabajo (EV), estás sobre-gastando y atrasado al mismo tiempo. Sin la curva de Earned Value, ese diagnóstico es invisible.
Los índices que transforman la curva en lenguaje gerencial
Una vez que tienes las tres curvas, puedes calcular cuatro indicadores que convierten el gráfico en decisiones concretas.
# Valores de ejemplo en un proyecto al mes 6 (de 12 planificados)# Presupuesto total: $100.000.000
PV = 55_000_000 # Lo que debería estar gastado/avanzado según planEV = 44_000_000 # El valor del trabajo realmente completado (al costo planificado)AC = 52_000_000 # Lo que realmente se ha gastado
# ─── Índices de desempeño ────────────────────────────────────────────SPI = EV / PV # Schedule Performance Index (eficiencia de tiempo)CPI = EV / AC # Cost Performance Index (eficiencia de costo)
print(f"SPI (Índice de Desempeño de Plazo): {SPI:.2f}")print(f"CPI (Índice de Desempeño de Costo): {CPI:.2f}")print()
if SPI < 1: print(f" → Plazo: Atrasado. Por cada $1 de trabajo planificado, solo se completan ${SPI:.2f}.")elif SPI > 1: print(f" → Plazo: Adelantado. Eficiencia temporal del {SPI*100:.0f}%.")
if CPI < 1: print(f" → Costo: Sobre-gastado. Por cada $1 de trabajo real, se gastan ${1/CPI:.2f}.")elif CPI > 1: print(f" → Costo: Bajo el presupuesto. Eficiencia de costo del {CPI*100:.0f}%.")SPI (Índice de Desempeño de Plazo): 0.80CPI (Índice de Desempeño de Costo): 0.85
→ Plazo: Atrasado. Por cada $1 de trabajo planificado, solo se completan $0.80. → Costo: Sobre-gastado. Por cada $1 de trabajo real, se gastan $1.18.Un SPI de 0,80 significa que el equipo está ejecutando al 80% de la velocidad planificada. Un CPI de 0,85 significa que cada peso de trabajo real está costando $1,18 en vez de $1.
Matriz de Desempeño SPI vs CPI
Visualización del estado de salud del proyecto. El cuadrante superior derecho es el objetivo.
Advertencia (La trampa del SPI al final del proyecto)
El SPI convencional (EV/PV) tiene una falla matemática conocida: converge a 1.0 al acercarse al cierre, aunque el proyecto termine meses tarde. Esto ocurre porque tanto EV como PV se aproximan a BAC al final, haciendo que su cociente se acerque a 1 independientemente del atraso real. Un proyecto con 3 meses de retraso puede mostrar SPI = 0.97 en el último mes. Para control de cronograma serio existe Earned Schedule (ES) — una extensión del EVM de Walt Lipke (2003) que mide el atraso directamente en unidades de tiempo. Es la evolución correcta del SPI cuando el plazo importa tanto como el costo.
Esos números solos ya son información de alto valor. Pero lo más poderoso viene a continuación.
La proyección al cierre: EAC
Con el SPI y el CPI medidos, ya no necesitas adivinar cómo cerrará el proyecto. Puedes calcularlo.
El Estimate at Completion (EAC) es la proyección del costo final del proyecto basada en el desempeño actual. Existen varias fórmulas según el supuesto que se quiera hacer:
BAC = 100_000_000 # Budget at Completion (presupuesto original total)
# ─── Fórmula 1: El CPI actual se mantiene hasta el final ────────────# (El supuesto más conservador y estadísticamente más preciso en proyectos largos)EAC_cpi = BAC / CPI
# ─── Fórmula 2: El trabajo restante se ejecuta según plan ───────────# (Asume que el sobrecosto fue una anomalía y el equipo "se recupera")EAC_optimista = AC + (BAC - EV)
# ─── Fórmula 3: Ponderación SPI y CPI (fórmula compuesta) ───────────# Usada cuando tanto el plazo como el costo están afectadosEAC_compuesta = AC + (BAC - EV) / (CPI * SPI)
print(f"Presupuesto original (BAC): ${BAC:>14,.0f}")print()print(f"EAC Conservador (CPI constante): ${EAC_cpi:>14,.0f} (+{(EAC_cpi/BAC - 1)*100:.1f}%)")print(f"EAC Optimista (costo restante=plan):${EAC_optimista:>14,.0f} (+{(EAC_optimista/BAC - 1)*100:.1f}%)")print(f"EAC Compuesto (CPI × SPI): ${EAC_compuesta:>14,.0f} (+{(EAC_compuesta/BAC - 1)*100:.1f}%)")print()
# Varianza al cierreVAC = BAC - EAC_cpiTCPI = (BAC - EV) / (BAC - AC)
print(f"Varianza al cierre (VAC): ${VAC:>14,.0f}")print(f"TCPI (CPI que necesitas de ahora en adelante para cerrar en presupuesto): {TCPI:.2f}")Presupuesto original (BAC): $ 100,000,000
EAC Conservador (CPI constante): $ 117,647,059 (+17.6%)EAC Optimista (costo restante=plan):$ 108,000,000 (+8.0%)EAC Compuesto (CPI × SPI): $ 130,208,333 (+30.2%)
Varianza al cierre (VAC): $ -17,647,059TCPI (CPI que necesitas de ahora en adelante para cerrar en presupuesto): 1.25Proyección al Cierre (EAC) vs. Presupuesto Original (BAC)
Comparativa de escenarios finales basados en el desempeño actual de costo y plazo.
El TCPI es el indicador más brutal de todos y el menos presentado en reuniones: si el proyecto necesita un TCPI de 1,25 para cerrar en presupuesto, eso significa que, desde hoy, el equipo debe ejecutar al 125% de eficiencia en costo. Si actualmente ejecuta al 85%, eso es estructuralmente imposible sin cambios. La varianza al cierre es prácticamente una certeza matemática.
Intuición (Por qué el TCPI no se presenta en reuniones)
Porque obliga a tomar decisiones difíciles. Un TCPI > 1.15 es la señal para renegociar alcance, aumentar el presupuesto o re-planificar el cronograma. Mientras el equipo pueda mostrar “vamos en el 80% del avance”, la presión de la decisión se pospone. El TCPI elimina esa posibilidad.
Más allá del avance financiero: rangos de control y gestión de recursos
El sistema EVM que acabamos de construir trabaja sobre la curva de avance financiero. Pero existen otras variantes de la Curva S, menos conocidas y más ignoradas, que son críticas para el control avanzado:
- La Curva Banana (curva envolvente): Define un rango de tolerancia real basado en la holgura del cronograma, eliminando falsas alarmas en reuniones de avance.
- La Curva de Horas Hombre y Materiales: Anticipa cuellos de botella logísticos antes de que paren la producción en terreno.
- La Curva de Flujo de Caja: Calcula el capital de trabajo mínimo que la empresa necesita para sobrevivir operando bajo el agua durante la vida del proyecto.
Importante (Segunda parte de este artículo)
El análisis detallado de estas tres curvas, con código Python y visualizaciones interactivas, está en Tipos de Curva S menos comunes: Rangos de control y gestión de recursos .
El patrón que delata el sesgo de optimismo
Volviendo al punto que dejamos pendiente del artículo anterior sobre promedios: el sesgo de optimismo tiene una firma visual característica en la Curva S real de proyectos mal planificados.
Se ve así: avance real y curva base corren casi paralelos durante los primeros 6-7 meses. Todo parece controlado. Luego, en los últimos tramos, la curva real se aplana, el famoso “modo pánico” del cierre, y la brecha se abre de forma pronunciada.
Firma visual del Sesgo de Optimismo (Síndrome del 90%)
La curva real corre paralela por meses, dando una falsa sensación de control, hasta que se estanca repentinamente al final.
La causa no es que el equipo trabaje mal al final. Es que el sesgo de optimismo en las estimaciones de inicio acumuló una deuda invisible que solo se vuelve visible cuando ya no hay tiempo para devolverla.
La cura no es trabajar más en el sprint final. Es medir mejor desde el primer mes.
# Señales de alerta temprana en los primeros 3 meses:# Si el SPI en el mes 3 ya muestra desviación, el proyecto tiene problema estructural.
def diagnostico_temprano(spi_mes3: float, cpi_mes3: float) -> str: """ Clasifica el estado de salud del proyecto en mes 3 como indicador predictivo. La investigación en EVM muestra que el CPI al 20% de avance es estadísticamente estable para el resto del proyecto (Christensen, 1993). """ if spi_mes3 >= 0.95 and cpi_mes3 >= 0.95: return "✓ Proyecto saludable. Alta probabilidad de cierre dentro del rango." elif cpi_mes3 < 0.90: return "✗ ALERTA CRÍTICA: CPI bajo en fase temprana. Muy difícil de recuperar. Revisar EAC." elif spi_mes3 < 0.85: return "⚠ Atrasado estructuralmente. El equipo necesita refuerzo o re-planificación." else: return "⚠ Desviación moderada. Monitorear semanalmente."
# Ejemplo con los valores actualesprint(diagnostico_temprano(spi_mes3=0.80, cpi_mes3=0.85))✗ ALERTA CRÍTICA: CPI bajo en fase temprana. Muy difícil de recuperar. Revisar EAC.El hallazgo de Christensen (1993), replicado múltiples veces en literatura de gestión de proyectos, es contundente: el CPI medido cuando el proyecto llega al 20% de avance tiene una correlación de 0,94 con el CPI final. En otras palabras, si tienes problemas de costo en el mes 2 o 3, los tendrás al cierre. La pendiente del CPI en fase anticipada es un predictor casi determinista.
Eso convierte la Curva S temprana en el activo de información más valioso del proyecto. Y es el que menos equipos miran.
La estructura mínima para leer bien una Curva S
Para cualquier proyecto con presupuesto relevante, la pantalla de control de avance debería mostrar obligatoriamente:
- Las tres curvas: PV (plan), EV (avance ganado), AC (costo real)
- SPI y CPI actuales con semáforo de color
- EAC en tres escenarios (conservador, base y optimista)
- TCPI: el CPI requerido para cerrar en presupuesto
- Curva envolvente (banana): para saber si la desviación es operacional o crítica
- Curva de flujo de caja: para monitorear la brecha de financiamiento
Los puntos 1 al 4 están desarrollados en este artículo. Los puntos 5 y 6 se analizan en detalle en la segunda parte .
Si tu proyecto solo muestra el gráfico de “línea azul vs línea roja”, está mostrando el 15% de la información disponible.
Conclusión
La Curva S no es un gráfico de avance. Es un sistema de diagnóstico.
En su forma más básica te dice cuánto llevas hecho. En su forma completa te dice si vas a terminar a tiempo, cuánto va a costar realmente, cuándo necesitas más caja, y si hay tiempo de corregirlo o si la deuda de planificación ya es estructural.
La diferencia entre leer solo la curva básica y leer el sistema completo es la diferencia entre manejar mirando el retrovisor y manejar con el tablero encendido.
Un proyecto no fracasa el último mes. Fracasa en el primero, cuando nadie midió el SPI ni el CPI porque “aún era temprano”. Para entonces, el problema ya tenía cuatro meses de antigüedad.