Your country

Tools that support it use your country for local currency, number formats, units and paper size. Your choice is saved only in this browser.

Type a name or a two-letter code. Use the up and down arrow keys to move through the countries, Enter to choose one and Escape to close.

Project Management & Agile  Module 5 – Cost, budgets and earned value

Earned value management on a worked project

Compute planned value, earned value and actual cost from a project status, turn them into variances and indices, and read the S-curve they draw.

  • Intermediate
  • 10 minutes
  • Examples run with Python 3.14.8
  • By MySmartCoPilot
Free core, Pro depth: 4 of 10 minutes free
Free: Earned value adds a third number to the plan and the actual · Variances and indices say how far off the project is. With a pass: 2 in-depth parts and 3 interview answers, about 6 minutes.

What you will learn

  • Compute planned value, earned value and actual cost from a status report
  • Calculate the cost and schedule variances and the CPI and SPI
  • Estimate the final cost several ways and test the forecast with the TCPI
  • Read an S-curve and explain what each index can and cannot show

Before you start

What you’ll learn · Before you start

What you will learn

  • Compute planned value, earned value and actual cost from a status report
  • Calculate the cost and schedule variances and the CPI and SPI
  • Estimate the final cost several ways and test the forecast with the TCPI
  • Read an S-curve and explain what each index can and cannot show

Before you start

On this page

Four months into a ten-month warehouse automation project, 11,300 thousand has been spent and the plan expected 11,225 by now: on the face of it, the project is on budget. Earned value says otherwise, because only 10,020 worth of the planned work is done, so the project is both over cost and behind schedule.

You will compute the three numbers of earned value from four A part of the project's work with one responsible manager and its own budget and plan, where actual costs are collected and earned value is measured., turn them into variances and indices, and read the S-curve they draw; then you will forecast the final cost from them and see where the method misleads.

Earned value adds a third number to the plan and the actual

Comparing spending with the plan mixes two questions: how much work is done, and what it cost. Earned value management separates them with three numbers taken at one status date, all in money:

  • planned value (PV): The budget of the work the plan scheduled to be done by the status date, also called the budgeted cost of work scheduled. (PV), the budgeted cost of work scheduled: the budget of the work the plan said would be done by now, 11,225.
  • earned value (EV): The budget of the work actually done by the status date, also called the budgeted cost of work performed; it measures progress in money. (EV), the budgeted cost of work performed: the budget of the work actually done, 10,020.
  • actual cost (AC): What the work done by the status date really cost, also called the actual cost of work performed. (AC), the actual cost of work performed: what that work cost, 11,300.

Each is measured against the budget at completion (BAC): The total budget of all the work in the performance baseline: the sum of the control accounts' budgets, without the management reserve. (BAC), 24,000, the sum of the control accounts’ budgets. The program builds the three from the accounts’ status and prints their monthly totals:

Month-4 earned value of four control accounts Python · evm.py
"""Earned value at the month-4 status date of an invented warehouse-automation project (budget at completion 24,000).

Money is in thousands. Four control accounts, each with a budget and a monthly plan; for each the team reports the
work performed, valued at its budget (earned value), and what it actually cost. Planned value is the budget of the
work scheduled up to the status date. Decimal arithmetic, rounded half up for printing.
CV = EV - AC, SV = EV - PV, CPI = EV / AC, SPI = EV / PV.
"""

from decimal import ROUND_HALF_UP, Decimal

STATUS_MONTH = 4
# Control account: (name, budget, planned spend per month {month: amount}, EV by month, AC by month, cumulative)
ACCOUNTS = [
    ("Racking and civil works", 6000, {m: 1500 for m in range(1, 5)},
     {1: 1200, 2: 2700, 3: 4300, 4: 6000}, {1: 1150, 2: 3000, 3: 4800, 4: 6600}),
    ("Conveyor and sorter", 9600, {m: 1600 for m in range(3, 9)},
     {3: 800, 4: 2400}, {3: 1100, 4: 2900}),
    ("Warehouse software", 5400, {m: 675 for m in range(2, 10)},
     {2: 450, 3: 1000, 4: 1620}, {2: 500, 3: 1150, 4: 1800}),
    ("Training and handover", 3000, {m: 1000 for m in range(8, 11)}, {}, {}),
]


def cumulative(by_month, month):
    """The latest cumulative value reported at or before this month (0 before the first report)."""
    known = [m for m in by_month if m <= month]
    return Decimal(by_month[max(known)]) if known else Decimal(0)


def planned(plan, month):
    return sum((Decimal(v) for m, v in plan.items() if m <= month), Decimal(0))


def r(x, places="1"):
    return x.quantize(Decimal(places), rounding=ROUND_HALF_UP)


BAC = sum(Decimal(a[1]) for a in ACCOUNTS)
assert all(sum(a[2].values()) == a[1] for a in ACCOUNTS), "each plan spreads its whole budget"

print(f"Status at the end of month {STATUS_MONTH}, budget at completion {r(BAC)}")
print(f"{'Control account':<24} {'Budget':>6} {'PV':>6} {'EV':>6} {'AC':>6} {'CV':>6} {'SV':>6}")
tot = {"pv": Decimal(0), "ev": Decimal(0), "ac": Decimal(0)}
for name, budget, plan, ev_m, ac_m in ACCOUNTS:
    pv, ev, ac = planned(plan, STATUS_MONTH), cumulative(ev_m, STATUS_MONTH), cumulative(ac_m, STATUS_MONTH)
    tot["pv"] += pv
    tot["ev"] += ev
    tot["ac"] += ac
    print(f"{name:<24} {budget:>6} {r(pv):>6} {r(ev):>6} {r(ac):>6} {r(ev - ac):>6} {r(ev - pv):>6}")
pv, ev, ac = tot["pv"], tot["ev"], tot["ac"]
print(f"{'Project':<24} {r(BAC):>6} {r(pv):>6} {r(ev):>6} {r(ac):>6} {r(ev - ac):>6} {r(ev - pv):>6}")
print()
print(f"CPI = EV / AC = {r(ev)} / {r(ac)} = {r(ev / ac, '0.001')}: each 1.00 spent earned {r(ev / ac, '0.01')} of planned work")
print(f"SPI = EV / PV = {r(ev)} / {r(pv)} = {r(ev / pv, '0.001')}: {r(ev / pv * 100, '0.1')} % of the work planned by now is done")
print(f"Percent complete = EV / BAC = {r(ev / BAC * 100, '0.01')} %; percent spent = AC / BAC = {r(ac / BAC * 100, '0.01')} %")
print()
print("The S-curve, cumulative (PV for every month of the plan; EV and AC up to the status date):")
print(f"{'Month':<6} {'PV':>6} {'EV':>6} {'AC':>6}")
for month in range(1, 11):
    pvm = sum(planned(a[2], month) for a in ACCOUNTS)
    if month <= STATUS_MONTH:
        evm = sum(cumulative(a[3], month) for a in ACCOUNTS)
        acm = sum(cumulative(a[4], month) for a in ACCOUNTS)
        print(f"{month:<6} {r(pvm):>6} {r(evm):>6} {r(acm):>6}")
    else:
        print(f"{month:<6} {r(pvm):>6}")

Output

Status at the end of month 4, budget at completion 24000
Control account          Budget     PV     EV     AC     CV     SV
Racking and civil works    6000   6000   6000   6600   -600      0
Conveyor and sorter        9600   3200   2400   2900   -500   -800
Warehouse software         5400   2025   1620   1800   -180   -405
Training and handover      3000      0      0      0      0      0
Project                   24000  11225  10020  11300  -1280  -1205

CPI = EV / AC = 10020 / 11300 = 0.887: each 1.00 spent earned 0.89 of planned work
SPI = EV / PV = 10020 / 11225 = 0.893: 89.3 % of the work planned by now is done
Percent complete = EV / BAC = 41.75 %; percent spent = AC / BAC = 47.08 %

The S-curve, cumulative (PV for every month of the plan; EV and AC up to the status date):
Month      PV     EV     AC
1        1500   1200   1150
2        3675   3150   3500
3        7450   6100   7050
4       11225  10020  11300
5       13500
6       15775
7       18050
8       21325
9       23000
10      24000

Recorded with Python 3.14.8 on macOS 26 arm64. To run it yourself: mise exec python@3.14.8 -- python3 evm.py

The racking is finished and has earned its whole 6,000, but it cost 6,600. The conveyor should have earned 3,200 by now and has earned 2,400 for 2,900 spent. Drawn over time, PV is the S-curve of the cost baseline, with EV and AC drawn against it up to the status date:

S-curve of the warehouse project: planned value to 24,000 over ten months; earned value and actual cost up to month 4.06,00012,00018,00024,0000246810MonthStatus dateBAC 24,000PVAC 11,300EV 10,020

The cost baseline as an S-curve, with EV and AC at the status date

Text description of the diagram

The horizontal axis is the month, from 0 to 10; the vertical axis is cumulative money in thousands, from 0 to 24,000, the budget at completion (BAC), marked by the top grid line.

- Planned value (PV), a dashed grey line, rises along the cost baseline: 1,500 after month 1, 3,675 after month 2, 7,450 after month 3, 11,225 after month 4, then 13,500, 15,775, 18,050, 21,325 and 23,000, reaching 24,000 after month 10. - Actual cost (AC), a dark line with square markers, is drawn up to the status date: 1,150, 3,500, 7,050 and 11,300. It runs just above planned value at month 4. - Earned value (EV), a blue line with round markers, is drawn up to the status date: 1,200, 3,150, 6,100 and 10,020. It runs below both other lines from month 2 on. - A dotted vertical line marks the status date, the end of month 4.

At the status date the gap between AC and EV, 1,280, is the cost overrun, and the gap between PV and EV, 1,205, is the work behind schedule, measured in money.

The vertical gap between AC and EV is cost; the gap between PV and EV is schedule, measured in money.

Checkpoint

Check: Planned value, earned value and actual cost

  1. One question At a status date, which of the three numbers is the budget of the work actually done?

    Choose one answer.

    Show the answer: One question

    Answer: Earned value (EV)

    PV, EV and AC are all in money at one status date: the budget of the work scheduled, the budget of the work done, and the cost of the work done. At month 4 of the warehouse project they were 11,225, 10,020 and 11,300.

Variances and indices say how far off the project is

Two subtractions and two divisions turn the three numbers into a verdict. GAO’s cost guide uses the usual signs: negative variances and indices below 1.0 are unfavourable.

CV=EV−AC,SV=EV−PV,CPI=EVAC,SPI=EVPVCV = EV - AC, \quad SV = EV - PV, \quad CPI = \frac{EV}{AC}, \quad SPI = \frac{EV}{PV}

In words, the cost variance (CV): Earned value minus actual cost. A negative value means the work done cost more than its budget. is −1,280 and the schedule variance (SV): Earned value minus planned value, in money. A negative value means less work is done than the plan scheduled by now. −1,205. The cost performance index (CPI): Earned value divided by actual cost: the budgeted work bought by each unit of money spent. Below 1.0 is unfavourable. of 0.887 says each 1.00 spent bought 0.89 of planned work, and the schedule performance index (SPI): Earned value divided by planned value: the share of the scheduled work that is done. Below 1.0 is unfavourable. of 0.893 says 89.3 % of the work planned by now is done. Step through how each figure follows, then two accounts:

Interactive · step by step Month 4 of the warehouse project, measured Step through the three numbers of the status date, then the two variances and two indices built from them, then two control accounts.
Month 4 of the warehouse project, measured, step 9 of 9. Showing Planned value (PV) (11,225 of 24,000), Earned value (EV) (10,020 earned), Actual cost (AC) (11,300 spent), Schedule variance (EV − PV = −1,205), SPI, schedule index (EV ÷ PV = 0.893), Cost variance (EV − AC = −1,280), CPI, cost index (EV ÷ AC = 0.887). In focus: Schedule variance, Cost variance.Planned value (PV)11,225 of 24,000Earned value (EV)10,020 earnedActual cost (AC)11,300 spentSchedule varianceEV − PV = −1,205SPI, schedule indexEV ÷ PV = 0.893Cost varianceEV − AC = −1,280CPI, cost indexEV ÷ AC = 0.887conveyor: −800

The drawing shows the whole scene; its 9 steps are listed below.

Every step as text
  1. What the plan scheduled. By the end of month 4 the plan scheduled 11,225 of the budget's work, all of the racking, two months of the conveyor and three of the warehouse software.
  2. What the work is worth. The work actually done, valued at its budget, is worth 10,020, the racking's full 6,000 plus 2,400 of the conveyor and 1,620 of the software.
  3. What it cost. The same work cost 11,300. Against planned value alone, spending looks only 75 above the plan, which hides both problems.
  4. Behind, measured in money. The schedule variance is EV minus PV, 10,020 minus 11,225, or minus 1,205. Work worth 1,205 that the plan expected by now is not done.
  5. Over cost. The cost variance is EV minus AC, 10,020 minus 11,300, or minus 1,280. The work done cost 1,280 more than its budget.
  6. How much of the plan is done. The schedule index divides EV by PV, 10,020 by 11,225, which gives 0.893. Of the work planned by now, 89.3 % is done.
  7. What each 1.00 bought. The cost index divides EV by AC, 10,020 by 11,300, which gives 0.887. Each 1.00 spent so far bought 0.89 of planned work.
  8. Racking: finished, over cost. The racking is finished, so it has earned its whole budget and its schedule variance is 0. It still cost 6,600 for 6,000 of work, a cost variance of minus 600.
  9. Conveyor: behind and over. The conveyor earned 2,400 of the 3,200 planned and spent 2,900, so its schedule variance is minus 800 and its cost variance minus 500. It drives most of the schedule gap.

An index travels better than a variance: −1,280 is serious in a budget of 24,000 and trivial in one of 2,400,000, while 0.887 means the same in both. The racking shows why cost and schedule are read together: a finished account always has SV 0, whenever it finished, so only the racking’s CV of −600 shows its overrun.

Four more tools complete the method. An estimate at completion (EAC): A forecast of the final cost of the work: the actual cost so far plus the remaining work, re-priced with an efficiency index. (EAC) re-prices the remaining work with an efficiency index to forecast the final cost. The to-complete performance index (TCPI): The cost efficiency the remaining work would need for the project to finish at a target, such as the budget or a forecast. (TCPI) is the efficiency the remaining work needs to finish at a target. earning rule: The rule that decides how much of a work package's budget counts as earned at each stage of its work, such as 0/100 or 50/50. such as 0/100 and 50/50 decide how much of a started work package counts as earned. earned schedule: An extension of earned value management that states schedule performance in units of time, such as months, instead of money. restates the schedule gap in months.

Key idea

Spending against the plan says nothing on its own: earned value says how much planned work the money bought, so cost and schedule can be judged apart.

Checkpoint

Check: Cost and schedule variances and indices

  1. Question 1 of 2 A control account has PV 4,000, EV 4,500 and AC 5,000 at the status date. Which statement is right?

    Choose one answer.

    Show the answer: Question 1 of 2

    Answer: It is ahead of schedule and over cost

    SV = EV − PV = +500 and CV = EV − AC = −500. More work than planned is done, and it cost more than its budget: each 1.00 spent bought 0.90 of planned work.

  2. Question 2 of 2 The warehouse's racking account is finished, with SV 0 and CV −600. A manager reads SV 0 as "the racking was on time". What is wrong with that?

    Choose one answer.

    Show the answer: Question 2 of 2

    Answer: A finished account has earned its whole budget, so its SV is 0 whenever it finished; SV cannot say if it was late

    Schedule variance is measured in money, so when an account is complete it always shows 0. Whether it finished on time is a question for the schedule's dates, or for earned schedule.

Forecasting the final cost, with GAO's tests Pro: opens with a Pro, Premium or Ultimate pass

The month-4 numbers already hold several forecasts of the final cost. This part computes five of them, tests three targets against the efficiency the remaining work would need, and shows why an early overrun rarely goes away.

In this part:

  • Five estimates at completion from one status report
  • The to-complete index tests any target with numbers
  • Why an early overrun rarely recovers, as a range

1 runnable example (Python) · about 5 minutes

Opening this part with your pass…

This part opens with any MySmartCoPilot pass.

  • Pro pass · 1 week₹79$2.99
  • 30 days₹179$5.99
  • 1 year₹1,699$45

One payment; a pass never renews. The price shown is the total you pay: no fees or charges are added at checkout.

It also opens every other in-depth part in Learn and every Pro tool. Sales are final, except where the law gives you a right to withdraw, for example in the EU and the UK (refund policy).

Where earned value misleads, reproduced in numbers Pro: opens with a Pro, Premium or Ultimate pass

Earned value is only as honest as the rule that decides what counts as earned, and its schedule index has a known flaw near the end of a project. This part reproduces both on the warehouse project and shows the fixes.

In this part:

  • One status, four earning rules, and the CPI each gives
  • SPI returns to 1.0 even when a project finishes two months late

1 runnable example (Python) · about 4 minutes

Opening this part with your pass…Pro part. It opens with the same pass as the part above.

Practise: the three numbers and their indices

The questions use the warehouse project’s month-4 status and a few new accounts. Work out each number before you choose:

Practice that adapts to you

Practise this lesson

6 questions about 4 ideas of this lesson. Each answer is explained at once, and what you get right is kept in this browser.

  1. Question 1 of 6 A six-month work package with a budget of 3,000 is planned to be spent evenly. What is its planned value at the end of month 2?

    Type a number.

    Show the answer: Question 1 of 6

    Answer: 1000 thousand

    Planned value is the budget of the work scheduled by the status date: two sixths of 3,000, which is 1,000, whatever has really been done or spent.

  2. Question 2 of 6 A package budgeted at 1,000 has reached milestones worth 60 % of it, and 800 has been spent on it. What is its earned value?

    Type a number.

    A hint

    Earned value comes from the work done and the budget, never from the spending.

    Show the answer: Question 2 of 6

    Answer: 600 thousand

    EV = 60 % of the budget = 600. The 800 spent is its actual cost, so its CPI is 600 ÷ 800 = 0.75.

  3. Question 3 of 6 What does a schedule variance of −1,205 say?

    Choose one answer.

    Show the answer: Question 3 of 6

    Answer: Work worth 1,205 of budget that the plan expected by now is not done yet

    At month 4, EV was 10,020 and PV 11,225, so SV = −1,205: the project is behind by that much planned work.

  4. Question 4 of 6 At a status date EV is 7,200, PV is 8,000 and AC is 7,000. What are the SPI and the CPI?

    Choose one answer.

    Show the answer: Question 4 of 6

    Answer: SPI 0.90 and CPI 1.03

    SPI = EV ÷ PV and CPI = EV ÷ AC. This project is behind its plan but spending less than its work's budget.

  5. Question 5 of 6 Two projects both report CV −500. Project A has EV 2,500; project B has EV 250,000. Which statement is right?

    Choose one answer.

    Show the answer: Question 5 of 6

    Answer: A has a CPI of about 0.83 and a real cost problem; B has a CPI of about 0.998

    Indices compare across projects of any size, which is why reports show them beside the variances.

  6. Question 6 of 6 On a project's S-curve at the status date, AC lies above PV and EV lies below both. What does the figure say?

    Choose one answer.

    Show the answer: Question 6 of 6

    Answer: The project is behind schedule and over cost

    This is the warehouse at month 4: PV 11,225, EV 10,020, AC 11,300. The AC–EV gap is cost, the PV–EV gap is schedule.

Interview questions

Warm-up: what do a CPI and an SPI below 1.0 mean?

A CPI below 1.0 means the work done so far cost more than its budget: at 0.887, each 1.00 spent earned 0.89 of planned work. An SPI below 1.0 means less work is done than the plan scheduled by now: at 0.893, 89.3 % of it. Both use earned value, the budget of the work actually done, which is what makes them comparable across projects.

Three harder questions follow, about a report that looks green, a supplier’s optimistic forecast and progress that is estimated rather than measured. Decide what you would check first, then open each first step:

  1. Mid to senior

    A monthly report shows a data-centre move at 6,100 spent against 6,000 planned and calls it green. You learn that the work done is worth 4,800 of budget. What is the real status, and what do you tell the steering group?

    Model answer, Pro. Model answers open with any pass; prices are in the notice on this page. First step and follow-ups

  2. Mid to staff

    A supplier's contract has a budget of 50,000. At 30 % complete its CPI is 0.85, and the supplier forecasts a final cost of 52,000. Do you accept the forecast, and how do you argue your answer?

    Model answer, Pro. First step and follow-ups

  3. Mid to senior

    On a software programme, earned value comes from each team's own percent-complete estimates. For three months the CPI has been above 1.0, yet the releases keep slipping. What do you suspect, and what do you change?

    Model answer, Pro. First step and follow-ups

Flashcards · 4 cards

Recall it, then check

Say the answer to yourself before you look: recalling it is what makes it stick.

  1. What three numbers does earned value take at a status date?

    Planned value (PV, budget of work scheduled), earned value (EV, budget of work actually done), actual cost (AC, what that work cost). All three are in money, so cost and schedule can be judged apart. BAC is the total budget.

  2. What are CV, SV, CPI and SPI, and which values are unfavourable?

    CV = EV − AC; SV = EV − PV; CPI = EV / AC; SPI = EV / PV. Negative variances and indices below 1.0 are unfavourable. CPI 0.887 means each 1.00 spent bought 0.89 of planned work; SPI 0.893 means 89.3 % of the planned work is done.

  3. Why does an EVM index travel across projects while a variance does not?

    A variance of −1,280 is serious in a 24,000 budget and trivial in a 2,400,000 one. CPI 0.887 means the same in both. A finished account always has SV 0 whenever it finished, so cost and schedule must be read together.

  4. On an EVM S-curve, what do the two gaps mean?

    PV is the cumulative baseline, with EV and AC drawn against it up to the status date. The vertical gap between AC and EV is the cost problem; the gap between PV and EV is the schedule problem, measured in money.

Key takeaways

  • Planned value, earned value and actual cost, taken at one status date, separate how much work is done from what it cost.
  • The cost and schedule variances are EV − AC and EV − PV, and the CPI and SPI divide EV by AC and by PV, with values below 1.0 unfavourable.
  • Indices compare across projects of any size, and a finished account always shows a schedule variance of 0, so cost and schedule are read together.
  • On an S-curve, the gap between AC and EV is the cost problem and the gap between PV and EV is the schedule problem.

Terms in this lesson

actual cost (AC)
What the work done by the status date really cost, also called the actual cost of work performed.
budget at completion (BAC)
The total budget of all the work in the performance baseline: the sum of the control accounts' budgets, without the management reserve.
cost performance index (CPI)
Earned value divided by actual cost: the budgeted work bought by each unit of money spent. Below 1.0 is unfavourable.
cost variance (CV)
Earned value minus actual cost. A negative value means the work done cost more than its budget.
earned schedule
An extension of earned value management that states schedule performance in units of time, such as months, instead of money.
earned value (EV)
The budget of the work actually done by the status date, also called the budgeted cost of work performed; it measures progress in money.
earning rule
The rule that decides how much of a work package's budget counts as earned at each stage of its work, such as 0/100 or 50/50.
estimate at completion (EAC)
A forecast of the final cost of the work: the actual cost so far plus the remaining work, re-priced with an efficiency index.
planned value (PV)
The budget of the work the plan scheduled to be done by the status date, also called the budgeted cost of work scheduled.
schedule performance index (SPI)
Earned value divided by planned value: the share of the scheduled work that is done. Below 1.0 is unfavourable.
schedule variance (SV)
Earned value minus planned value, in money. A negative value means less work is done than the plan scheduled by now.
to-complete performance index (TCPI)
The cost efficiency the remaining work would need for the project to finish at a target, such as the budget or a forecast.

References

Related tools

Report a problem with this lesson

Quick answers and tool search

Type to search tools or to get a quick answer, for example 18% of 2500. Use the up and down arrow keys to move through the results, Enter to choose, and Escape to close.