4. 预测指标:完工估算(EAC)与完工尚需绩效指数(TCPI)在结算中的应用

在工程项目结算审核中,仅靠截止到当前的偏差指标(CV、SV)无法判断项目最终的成本走势。完工估算(EAC)与完工尚需绩效指数(TCPI)提供了从“当前状态”向“最终结果”预测的桥梁。结算审核人员利用这两个指标,可以判断承包商的成本控制是否在可控范围内,以及未来需要以何种效率完成剩余工作。

4.1 完工估算(EAC)的三种典型算法

EAC 代表在某一测量时点,预测项目完工时所需的总成本。根据项目当前偏差的性质与未来预期,结算审核中通常采用以下三种算法:

算法类型 计算公式 适用场景(结算审核视角)
EAC = AC + (BAC - EV) 实际成本 + 剩余工作原预算 当前偏差由一次性事件引起,剩余工作可按原预算效率执行。结算中常用于非承包商责任的变更或索赔已关闭的情况。
EAC = BAC / CPI 总预算 / 成本绩效指数 当前偏差具有典型性,未来成本绩效趋势与当前一致。结算中常用于承包商管理不善导致持续超支,且无改进措施。
EAC = AC + (BAC - EV) / (CPI × SPI) 实际成本 + 剩余工作按综合效率执行 进度与成本双重偏差,且两者相互影响。结算中常用于工期延误与成本超支并存的复杂项目。
结算审核提示: 在结算审核中,审计方应要求承包商提供选择 EAC 算法的依据。若承包商采用“BAC / CPI”算法,需重点审查其 CPI 是否剔除了非典型异常点,避免人为压低 EAC 以掩盖超支事实。

4.2 完工尚需绩效指数(TCPI)的结算逻辑

TCPI 表示在剩余预算内完成剩余工作所需达到的成本绩效水平。结算审核中,TCPI 用于评估承包商后续成本控制的可行性。其核心公式有两种口径:

  • 基于 BAC 的口径(目标不变): TCPI = (BAC - EV) / (BAC - AC)
  • 基于 EAC 的口径(目标调整): TCPI = (BAC - EV) / (EAC - AC)

当 TCPI > 1 时,表示剩余工作必须以高于当前效率的水平执行,这在结算审核中通常被视为高风险信号,意味着承包商可能面临严重的成本压力,甚至可能通过降低质量或虚报工程量来弥补。

审计风险点: 若结算审核时发现 TCPI(基于 BAC)持续大于 1.2,且承包商无法提供合理的改进计划,审计方应启动专项审查,重点核实剩余工程量的真实性与计价依据,防止承包商通过后期突击报量来平衡成本。

4.3 EAC 与 TCPI 在结算审核中的联动分析

结算审核不应孤立地看 EAC 或 TCPI,而应将两者结合,形成完整的预测闭环。下图展示了从当前绩效数据到最终结算结论的联动流程:

EAC 与 TCPI 结算审核联动分析流程 当前绩效数据 EV / AC / PV / BAC 计算 EAC 选择算法 EAC > BAC? 超预算? 计算 TCPI (BAC - EV) / (BAC - AC) TCPI > 1.1? 高风险? 否 常规审核流程 是 启动专项审计 结算审核结论 EAC 与 TCPI 联合判定风险等级

4.4 结算审核中的实战应用步骤

在工程项目结算审核中,应用 EAC 与 TCPI 可按以下步骤执行:

  1. 数据采集与验证: 从项目管理系统或结算报表中提取 EV、AC、BAC 数据,确保数据口径一致(通常以批准预算为基准)。
  2. EAC 计算与算法选择: 根据偏差性质选择 EAC 算法,计算预测完工成本。若 EAC 显著偏离 BAC,需记录偏差原因。
  3. TCPI 计算与阈值判断: 计算基于 BAC 的 TCPI,判断剩余工作所需效率。若 TCPI > 1.1,标记为高风险项。
  4. 联动分析与审计意见: 结合 EAC 与 TCPI 结果,形成结算审核意见。若 EAC 超支且 TCPI 过高,建议暂扣部分结算款或要求承包商提供履约保函。
实战案例: 某市政道路工程结算审核中,截至审核时点,BAC=5000万元,EV=3000万元,AC=3500万元。计算得 CPI=0.857,EAC=5000/0.857≈5833万元,TCPI=(5000-3000)/(5000-3500)=2000/1500≈1.33。审计方判定为高风险,要求承包商提供后续成本控制方案,并暂扣5%结算款作为风险抵押金。

4.5 接口调用示例:EAC 与 TCPI 计算函数

在 API 集成开发中,EAC 与 TCPI 的计算通常封装为独立的服务函数。以下为 Python 示例代码,可直接集成到结算审核系统的后端服务中:

def calculate_eac(bac, ev, ac, method='typical'):
    """
    计算完工估算(EAC)
    :param bac: 完工预算
    :param ev: 挣值
    :param ac: 实际成本
    :param method: 'typical'(典型偏差), 'atypical'(非典型偏差), 'composite'(综合偏差)
    :return: EAC 值
    """
    if method == 'atypical':
        return ac + (bac - ev)
    elif method == 'typical':
        cpi = ev / ac if ac != 0 else 1
        return bac / cpi if cpi != 0 else float('inf')
    elif method == 'composite':
        cpi = ev / ac if ac != 0 else 1
        spi = ev / pv if pv != 0 else 1  # pv 需作为参数传入
        return ac + (bac - ev) / (cpi * spi) if (cpi * spi) != 0 else float('inf')
    else:
        raise ValueError("Invalid method. Use 'typical', 'atypical', or 'composite'.")

def calculate_tcpi(bac, ev, ac, target='bac'):
    """
    计算完工尚需绩效指数(TCPI)
    :param bac: 完工预算
    :param ev: 挣值
    :param ac: 实际成本
    :param target: 'bac'(基于原预算)或 'eac'(基于调整后估算)
    :return: TCPI 值
    """
    remaining_work = bac - ev
    if target == 'bac':
        remaining_funds = bac - ac
    else:
        eac = calculate_eac(bac, ev, ac)
        remaining_funds = eac - ac
    return remaining_work / remaining_funds if remaining_funds != 0 else float('inf')

上述代码中,calculate_eac 函数支持三种算法切换,calculate_tcpi 函数支持基于 BAC 或 EAC 两种口径。在结算审核系统中,可通过 RESTful API 暴露这些函数,供前端审核界面调用。

4.6 结算审核中的常见误区与避坑指南

误区 错误表现 正确做法
EAC 算法选择不当 无论偏差性质如何,一律使用 BAC/CPI 根据偏差原因选择算法,非典型偏差使用 EAC=AC+(BAC-EV)
TCPI 口径混淆 使用基于 EAC 的 TCPI 替代基于 BAC 的 TCPI,低估风险 结算审核中优先使用基于 BAC 的 TCPI,除非合同已明确调整目标
忽略数据时效性 使用过期的 EV/AC 数据计算预测指标 确保数据截止时点为最新审核基准日
未联动分析 单独看 EAC 或 TCPI,未结合两者判断 EAC 超支且 TCPI>1.1 时,必须启动专项审计
审核工具建议: 建议在结算审核系统中内置 EAC/TCPI 计算模块,并设置自动预警阈值(如 TCPI>1.1 时自动标红)。同时,保留算法选择记录,便于后续审计追溯。