EnableYourData.com

KPI · Projects and time

Cost performance index (CPI): formula and example.

The cost performance index (CPI) is the ratio between earned value and the actual cost of a project. Earned value is the budgeted cost of the work actually completed. A CPI below 1 means you are spending more than the completed work was budgeted to cost.

Cost performance index (CPI) formula

Earned value ÷ actual cost

Worked example

An Acme Groothandel project has a budget of €120,000. The work completed so far was budgeted at €60,000 (earned value) but has cost €75,000. The CPI is €60,000 ÷ €75,000 = 0.80. At this cost level the project will come in at €120,000 ÷ 0.80 = €150,000.

Fictitious figures for Acme Groothandel, a sample wholesaler.

How to read this KPI

A CPI of 1 means the project is exactly on budget; above 1 is cheaper and below 1 is more expensive than planned. A CPI that drops below 1 early in a project rarely recovers on its own. Use it together with the SPI, which shows whether you are on schedule.

Pitfalls with cost performance index (CPI)

  • Basing earned value on hours spent rather than work delivered; the CPI is then always 1.
  • Booking costs only when the invoice arrives, so actual costs lag behind.
  • Adding up or averaging CPIs across a portfolio; calculate it from total earned value and total cost.

SQL & DAX

Calculating cost performance index (CPI) in SQL and DAX

Two examples on a fictitious data warehouse for Acme Groothandel: a PostgreSQL query and a measure for a Power BI model. Adjust table and column names to your own model.

SQL · PostgreSQL
SELECT project_id,
       budget_amount,
       earned_value,
       actual_cost,
       ROUND(earned_value / NULLIF(actual_cost, 0), 2) AS cpi,
       ROUND(budget_amount / NULLIF(earned_value / NULLIF(actual_cost, 0), 0), 0) AS estimate_at_completion
FROM projects
WHERE status = 'active'
ORDER BY cpi;
DAX · Power BI
CPI = DIVIDE ( SUM ( Projects[EarnedValue] ), SUM ( Projects[ActualCost] ) )
Estimate at Completion = DIVIDE ( SUM ( Projects[BudgetAmount] ), [CPI] )

In ENABLE

Tracking this KPI in ENABLE

Plain-language questions

Ask for cost performance index (CPI) per month, customer or product in the SQL Explorer with AI. The AI writes the SQL, you see the query and run it yourself; the AI only receives metadata.

Read more →

In your Power BI dashboard

Define the KPI as a measure in your Power BI model and show it in the portal, with "Last refreshed" next to it. Access profiles and optional row-level security decide who sees which figures.

Read more →

Custom dashboards (pilot)

Add the KPI as a tile to a custom dashboard, compared with last year. The Dashboard Builder is a pilot and can be switched on per client.

Read more →

Monthly targets

With the built-in Targets app you set a target for the KPI per month, so you see actuals and target side by side.

Read more →

FAQ

Frequently asked questions

How do you calculate the cost performance index?

Divide earned value by actual cost to date. Earned value is the budgeted cost of the work already completed. A result below 1 means the project is costing more than budgeted.

What does a CPI of 0.8 mean?

A CPI of 0.8 means every euro spent delivers only 80 cents of budgeted work. If that continues, total cost will be roughly the budget divided by 0.8, so 25% higher. That figure is the estimate at completion.

What is the difference between CPI and SPI?

CPI compares completed work with cost, so it tells you about budget. SPI compares completed work with what should have been done according to the plan, so it tells you about time. A project can be on budget but behind schedule, or the other way round.

Use AI on your own data. Securely, and without the headache.

In an online demo we show how ENABLE makes your data securely available and how you build on it: describing an app in the AI Builder, plain-language questions, dashboards and APIs. And how we set it up and manage it for you.