Skip to content

Earned value and the S-curve

Mode: reference.

The Timeline view of the work-package register ends with a panel and an S-curve. This page states every calculation behind them, so you can check a figure by hand. It also states every condition under which earned value does not calculate. The app estimates nothing. Every number is arithmetic on fields you entered.

The panel depends on the budgets on the project’s work packages. Tollgate adds up the budget baselines of all packages, then picks one of three outcomes.

Condition The panel shows
The budget baselines add up to more than 0 Earned value and the earned-value S-curve
No budget baseline, and at least one package has both planned dates Schedule progress and a curve of planned against actual % complete. See The schedule-only curve below
No budget baseline, and no package has both planned dates No plan baseline yet and no curve

The No plan baseline yet panel explains that approving the business case freezes budget and dates. It shows the same text in Standard mode, which has no approval. Tollgate never draws a curve it cannot calculate.

A project with no budget has no earned value, because earned value is a share of a budget. To get the earned-value panel, add a budget to one work package. To get the schedule-only curve, add planned start and end dates.

Each work package carries the fields below. A calculation skips a package that lacks a field it needs.

Field on the work package Used as
Budget baseline The budget at completion (BAC) for that package
Planned start and end baseline The dates that carry the planned value
Progress (%) The share of the package’s work done, 0 to 100
Actual spend The actual cost (AC)
Forecast spend The package’s own forecast at completion, if you set one
Baseline budget phasing Optional. The planned spend per period. It replaces the straight-line spread
Forecast end Where the forecast-to-complete line ends on the chart

Progress is what you entered. Tollgate does not infer it from Jira issues.

Advanced mode. The baseline is the budget and planned dates that the business case approval froze. Until the business case is approved, the baseline fields are empty and the project has no earned value.

Standard mode. No approval freezes a baseline, so the plan is the baseline. Each package’s Budget is its budget baseline, and its Planned start and Planned end are its baseline dates for earned value. Before v6.7.1, Standard read only the budget. With no baseline dates, planned value had no window to spread over and read 0. It now reads both. This applies to earned value only: the work-package register and timeline bars show no baseline dates or slip against a baseline in Standard.

All figures are money. “Today” is the date you open the page.

Figure Meaning Calculation
BAC, budget at completion The package’s baseline budget Budget baseline, or 0 when blank
PV, planned value The budget you planned to use by today See Planned value below
EV, earned value The budget worth of work done BAC × Progress ÷ 100
AC, actual cost What you spent Actual spend, or 0 when blank
EAC, estimate at completion What the package will cost See Estimate at completion below

A package with baseline budget phasing has an amount per month, week or day. Its PV is the sum of:

  • every phased amount whose period ended before today
  • the current period’s amount, pro-rated by how far through the period today is

A package with no phasing spreads its budget in a straight line between the baseline planned start and end:

  • before the planned start: 0
  • after the planned end: the whole budget
  • between: Budget × (days from the planned start ÷ days from the planned start to the planned end)
  • a start and end on the same day: the whole budget from that day on

A package contributes 0 to PV when its budget baseline is blank or 0, or when either baseline date is blank. The phased figures are the exception: they carry their own periods and do not need the dates.

EV is BAC × Progress ÷ 100. A package has no EV (the calculation reads it as 0) when either input is blank:

  • it has no budget baseline, or
  • it has no progress figure.

A package at 0% earns 0. A package at 100% earns its whole budget, whatever it spent.

EAC takes the first of these that applies:

  1. The forecast spend you entered, when the field has a value. Tollgate records your judgement and does not replace it.
  2. BAC ÷ CPI, when the package’s CPI exists and is above 0.
  3. BAC.

A package with spend but no earned value has a CPI of 0. It falls to BAC, not to a division by zero.

Figure Calculation Reads as
SV, schedule variance EV − PV Negative: behind plan
CV, cost variance EV − AC Negative: spend is ahead of the work done
SPI, schedule performance index EV ÷ PV Below 1: behind plan
CPI, cost performance index EV ÷ AC Below 1: each dollar spent earned less than a dollar of work
VAC, variance at completion BAC − EAC Negative: the forecast finishes over budget

SPI is blank when PV is 0. That happens before the plan starts, when no package has dates, or when no package has a budget. Nothing was planned, so there is no ratio. It is not a ratio of 0.

CPI is blank when AC is 0. Nothing spent means no ratio.

The project’s BAC, PV, EV, AC and EAC are the sums of the packages’ figures. Tollgate calculates SPI, CPI, SV, CV and VAC from those sums. It never averages the packages’ own ratios, because an average would weigh a $10k package the same as a $2m one. The project’s SPI and CPI are blank on a zero denominator, as above.

A package without a budget adds nothing to BAC or PV. It still adds its actual spend to AC if you entered one, and its EAC counts as 0 unless you set a forecast.

Each line below is a real condition in the calculation.

  • No package has a budget baseline. BAC is 0, so the panel shows the schedule-only curve or No plan baseline yet. In Advanced mode this is every project before its business case is approved.
  • A package has no budget baseline. Its EV, PV and BAC are 0.
  • A package has no progress figure. Its EV is 0.
  • A package has no baseline dates. Its PV is 0, unless it carries phased budget. It never counts as behind plan.
  • Today is before every planned start. PV is 0, so SPI is blank.
  • Nothing is spent. AC is 0, so CPI is blank.
  • The budget exists but PV and EV are both 0. The panel reads No earned value yet.

The headline sentence comes from the project’s SV and CV:

  • Schedule half. On plan when SV is 0. Otherwise Work is $X behind plan for a negative SV, or Work is $X ahead of plan.
  • Cost half. spend matches earned value when CV is 0. Otherwise spend is $X over earned value for a negative CV, or spend is $X under earned value.

Below it: SPI 0.55 · CPI 0.82, then EAC $1.6M · +$55k vs baseline. The second figure is EAC minus BAC.

How Tollgate draws the earned-value S-curve

Section titled “How Tollgate draws the earned-value S-curve”

The chart plots three cumulative lines over the timeline’s date range, one point per reporting period. The period is the project’s reporting cadence: daily, weekly or monthly. A project can set its own cadence. Otherwise the site default applies, and that is monthly out of the box.

Planned. Tollgate recalculates PV for the end of every period from the inputs, across the whole range. The planned line always reflects the current baseline.

Earned and Actual come from two sources.

Past periods use a stored reading. Every save of a work package records its progress, actual spend, forecast spend, budget and forecast end against the current period. A later save in the same period replaces the earlier one. Tollgate keeps up to 120 readings per package and drops the oldest first. A period with no reading uses the most recent reading from a period that ended before it. A period before any reading adds 0.

The current period always uses the package’s live figures, the same numbers the headline and the cost tile use. Its point sits on today’s date, and its planned value is read at today. Past periods are read at their last day.

A project whose packages have no readings shows a flat history and a live current point.

Future periods show planned value only.

Forecast to complete is a straight line from today’s earned value to the project EAC. It ends at the latest forecast end date across the packages, or at the end of the timeline range if that is later. It projects the EAC. It is not a per-period forecast.

The hover card at any point shows the three values for that period.

A project with no budget has no earned value. Its plan can still have dates, and its packages can still report % complete. In that case the panel is headed Schedule progress. It plots two lines:

  • Planned % complete
  • Actual % complete

The panel carries one of two notes:

  • No budget recorded, so this tracks % complete instead of earned value. No work package has a budget.
  • Budgets are not baselined yet, so this tracks % complete instead of earned value. Approving the business case sets the baseline. The work packages have budgets, but the business case is not approved yet (Advanced mode).

The curve has no spend line and no forecast line. Past periods are read at their last day. The current period is read at today.

Planned % for one package, at a date.

  • before the package’s planned start: 0%
  • after its planned end: 100%
  • between: (days from the start ÷ days from the start to the end) × 100

The window is the baseline dates when the package has a valid pair (end on or after start). Otherwise it is the package’s planned dates. A Standard project has no frozen baseline, so its planned dates are the window.

Actual % for one package. The progress you reported. A package with no progress figure counts as 0%. Progress is held between 0 and 100.

The project figure. Tollgate weights each package by the length of its window in days. A window of one day or less counts as one day. The project’s planned % is the weighted average of the packages’ planned %. The project’s actual % is the weighted average of their actual %. A six-month package moves the line more than a two-day one.

Packages left out. A package without both dates (baseline or planned) is left out of both lines. If no package has dates, the panel shows No plan baseline yet.

The curve uses the same reporting periods as the earned-value curve.

  • Planned is read at the end of each period, across the whole range.
  • Actual, past periods. The progress stored in the most recent reading from a period that ended before it. A period before a package’s first reading counts that package as 0%.
  • Actual, current period. The live progress of each package.
  • Future periods show the planned line only.
  • On plan: 40% complete when the two figures round to the same whole percent.
  • Otherwise 35% complete against 50% planned (15 points behind), or ahead.

The headline rounds each figure to a whole percent first, then subtracts.

Two packages, monthly cadence, today is 15 September. The date-to-date counts below are whole days between the dates.

Budget baseline Planned start to end Progress Actual Forecast
A $100,000 1 Aug to 30 Sep (60 days) 60% $70,000 none
B $50,000 1 Sep to 31 Oct (60 days) 10% $4,000 $56,000

Package A. PV = 100,000 × 45 ÷ 60 = $75,000. EV = $60,000. AC = $70,000. CPI = 0.857, so EAC = 100,000 ÷ 0.857 = $116,667.

Package B. PV = 50,000 × 14 ÷ 60 = $11,667. EV = $5,000. AC = $4,000. EAC = $56,000, because its own forecast wins.

Project. BAC $150,000 · PV $86,667 · EV $65,000 · AC $74,000 · EAC $172,667. SV = −$21,667 · CV = −$9,000 · SPI 0.75 · CPI 0.88 · VAC −$22,667.

Headline: Work is $21.7k behind plan; spend is $9.0k over earned value. Second line: SPI 0.75 · CPI 0.88. Third line: EAC $172.7k · +$22.7k vs baseline.

No package has a budget. Both packages start on day 0. Today is day 10.

Window Weight Planned % on day 10 Progress
A 10 days 10 100% (the window has ended) 100%
B 30 days 30 33.3% (10 ÷ 30) 0%

Planned = (10 × 100 + 30 × 33.3) ÷ 40 = 50%. Actual = (10 × 100 + 30 × 0) ÷ 40 = 25%.

Headline: 25% complete against 50% planned (25 points behind).

Progress drives EV. A package at 100% earns its whole budget, whatever the spend. A package at 0% earns nothing, whatever the spend.

Undated or unbudgeted packages. A package without a baseline budget or baseline dates adds nothing to PV. It never counts as behind plan. It still adds EV and AC where it has the inputs for them.

Readings. Tollgate records a reading only when you save a package. An edit in the register or on the timeline is a save. A drag of a bar is a save.

Rounding. The panel shows compact money, for example $1.6M or $55k. The calculations use the full figures.

The Cost tile. It uses the same actual and forecast fields. It compares them with the baseline budget directly. It does not use EV.