Earned Value for Construction Schedulers
Earned value measures progress in a common unit, usually dollars or labor hours, so you can compare work done against work planned and money spent. For a scheduler, it's a useful cross-check on the CPM update: the schedule tells you which path drives completion, and earned value tells you whether the job as a whole is producing at the planned rate. This post covers the core terms, works a small example by hand, and explains where earned value tells schedulers the wrong thing.
What you need
Earned value requires a schedule that's cost-loaded or resource-loaded, a baseline, and a way to measure progress on each activity. If you don't have a loaded schedule, see Resource Loading and Cost Loading: Do You Need Them? first.
The three base quantities:
| Term | Abbreviation | Meaning |
|---|---|---|
| Planned value | PV | Budgeted value of the work the baseline says should be done by the data date |
| Earned value | EV | Budgeted value of the work actually done by the data date |
| Actual cost | AC | What it actually cost to do that work |
And the budget at completion (BAC): the total budget for all the work.
The important idea is that EV is measured in budget dollars, not actual dollars. If an activity is budgeted at $100,000 and is 40% complete, EV is $40,000, no matter what was spent.
The derived measures
| Measure | Formula | Reading |
|---|---|---|
| Schedule variance | SV = EV − PV | Negative means less work done than planned |
| Cost variance | CV = EV − AC | Negative means the work done cost more than budgeted |
| Schedule performance index | SPI = EV / PV | Below 1.0 means behind plan |
| Cost performance index | CPI = EV / AC | Below 1.0 means over budget |
| Estimate at completion | EAC = BAC / CPI | One common forecast of final cost, assuming current cost efficiency continues |
| Estimate to complete | ETC = EAC − AC | Cost of remaining work |
| Variance at completion | VAC = BAC − EAC | Projected overrun (negative) or underrun |
There are several EAC formulas. BAC / CPI is the simplest and assumes cost performance to date continues. Others weight in SPI or use a bottom-up re-estimate. Pick one and say which.
Worked example
A small early-phase package. Figures in thousands of dollars. Data date is the end of week 10.
| Activity | Budget | Planned % at data date | Actual % complete | PV | EV | AC |
|---|---|---|---|---|---|---|
| Underground utilities | 80 | 100% | 100% | 80 | 80 | 95 |
| Footings | 120 | 100% | 100% | 120 | 120 | 130 |
| Slab on grade | 90 | 100% | 100% | 90 | 90 | 85 |
| Steel erection | 400 | 75% | 50% | 300 | 200 | 230 |
| Metal deck | 110 | 20% | 0% | 22 | 0 | 0 |
| Total | 800 | 612 | 490 | 540 |
PV = budget × planned %. EV = budget × actual %. AC comes from job cost.
Now the measures:
SV = EV - PV = 490 - 612 = -122
CV = EV - AC = 490 - 540 = -50
SPI = EV / PV = 490 / 612 = 0.80
CPI = EV / AC = 490 / 540 = 0.91
EAC = BAC / CPI = 800 / (490/540) = 800 x 540 / 490 = 881.6
ETC = EAC - AC = 881.6 - 540 = 341.6
VAC = BAC - EAC = 800 - 881.6 = -81.6
Reading it: the package has earned 80 cents of planned work for every planned dollar, and is spending about $1.10 for every dollar earned. At the current cost efficiency, this $800k package finishes around $882k.
Look at where the variance lives. Almost all of the schedule variance (−100 of −122) is steel erection, which is half done instead of three-quarters. The other −22 is metal deck, which hasn't started because it follows steel. The utilities overran cost but finished on time. That breakdown is more useful than the totals.
Where earned value misleads schedulers
SPI doesn't know about the critical path
SPI weighs every dollar the same. A $300,000 delay in non-critical sitework and a $300,000 delay in critical steel produce the same SPI. Only one of them moves substantial completion.
The reverse happens too. A job can show SPI of 1.0 because non-critical work is running ahead while the critical path slips. Always read SPI next to the CPM forecast, never instead of it. If they disagree, trust the critical path for completion dates and use SPI to understand production overall.
SPI goes back to 1.0 at the end
At completion, EV = PV = BAC, so SPI = 1.0 regardless of how late the job finished. In the last third of a project, SPI drifts toward 1.0 and stops telling you much. A job finishing three months late will still end with SPI 1.0.
One response is earned schedule, which measures schedule performance in time rather than dollars. You find the point on the baseline PV curve where planned value equaled today's earned value, and compare that time to the actual time elapsed. In the example above, if the baseline PV reached $490k at the end of week 8, then:
Earned schedule = 8 weeks
Actual time = 10 weeks
SPI(t) = 8 / 10 = 0.80
Schedule variance in time = 8 - 10 = -2 weeks
SPI(t) doesn't converge to 1.0 at the end, and "two weeks behind" is easier to explain to an owner than "SPI 0.80." It still ignores the critical path, though.
Percent complete drives everything
EV is only as good as the percent complete behind it. If the super estimates steel at 50% by eye, EV is an estimate of an estimate. Better methods for measuring physical progress:
| Method | How it works | Good for |
|---|---|---|
| Units complete | Quantities installed / total quantity | Steel tons, LF of pipe, SF of drywall |
| Weighted milestones | Fixed credit at defined steps | Equipment: set, piped, wired, started up |
| 0/100 or 50/50 | No credit until done, or half at start | Short activities |
| Level of effort | Credit with time elapsed | Supervision, general conditions |
Pick a method per activity type and keep it consistent across updates. Don't let percent complete on the cost side and remaining duration on the schedule side tell different stories. If drywall is 90% complete but has 15 of 20 days remaining, one of them is wrong.
Baseline changes reset the numbers
PV comes from the baseline. Re-baseline, and PV changes, which resets SV and SPI. If you re-baseline after a major change, keep reporting against the original as well so cumulative performance isn't lost. See Baselines: When to Set Them and When to Re-Baseline.
Using it in the monthly update
Earned value fits naturally into the monthly cycle. After you enter progress (see How to Run a Monthly Schedule Update):
- Compute PV, EV, and AC by activity, then roll up by WBS, area, or trade.
- Look at SPI and CPI by trade or area, not just project-wide.
- Find the activities driving the largest SV and CV.
- Compare those against the critical path. A big negative SV on a critical activity is the headline. On a high-float activity, it's a footnote.
- Report SPI and CPI trends over several months. A single month is noisy.
schedule.construction computes earned value from a cost- or resource-loaded schedule and its baseline, which takes care of the arithmetic. Interpreting it against the critical path is still the scheduler's job. For tracing schedule slips themselves, see Reading Schedule Variance.
Key takeaways
- EV is the budgeted value of work done; compare it to PV for schedule performance and AC for cost performance.
- SPI treats all dollars equally and ignores the critical path, so always read it next to the CPM forecast.
- SPI converges to 1.0 at completion; earned schedule gives a time-based alternative.
- Earned value is only as good as the progress measurement behind it; use objective methods where you can.
- Break variance down by activity and trade; the totals hide where the problem is.