greenbook provides cost-benefit analysis primitives from
the HM Treasury Green Book. The v0.1.0 release covers the discounting
MVP: kinked STPR, discount factors, NPV, equivalent annual cost, and
GDP-deflator rebasing.
All bundled parameter tables carry vintage metadata. Inspect with:
gb_data_versions()
#> dataset
#> 1 stpr_schedule
#> 2 gdp_deflator
#> 3 optimism_bias
#> 4 metb
#> 5 wellby
#> 6 vpf
#> 7 qaly
#> 8 carbon_values
#> source
#> 1 HM Treasury Green Book 2022 Annex A6 / supplementary discounting guidance
#> 2 HM Treasury, GDP deflators at market prices (December 2025 Quarterly National Accounts release, calendar-year series, 2024 = 100)
#> 3 HM Treasury Supplementary Green Book Guidance: Optimism Bias (Mott MacDonald 2002)
#> 4 HM Treasury Green Book 2022 chapter on real terms and Marginal Excess Tax Burden
#> 5 HMT Wellbeing Guidance for Appraisal (July 2021)
#> 6 DfT Transport Analysis Guidance (TAG) data book v2.03FC (December 2025), Table A4.1.1, WTP element for fatal casualties
#> 7 DHSC Supplementary Green Book Guidance + NICE HTA thresholds
#> 8 DESNZ Valuation of Energy Use and GHG Emissions for Appraisal (November 2023), Data Tables 1-19, Table 3
#> last_updated
#> 1 2026-04-26
#> 2 2026-04-26
#> 3 2026-04-26
#> 4 2026-04-26
#> 5 2026-04-26
#> 6 2026-04-26
#> 7 2026-04-26
#> 8 2026-04-26
#> notes
#> 1 Kinked STPR: 3.5/3.0/2.5/2.0/1.5/1.0 percent across bands at 30/75/125/200/300 years. Health and catastrophic-risk variants per supplementary guidance.
#> 2 Outturn 1990-2024 from CGDP_Deflators_Qtrly_National_Accounts_December_2025_update.xlsx. Forecast years can be added via inflateR or the Spring Statement supplementary release.
#> 3 Indicative upper bounds for capex and duration uplift across six project categories. Values unchanged since 2003.
#> 4 Uplift on revenue raised through distortionary taxation. 20 percent in 2018 onwards (was 30 percent historically).
#> 5 WELLBY central value GBP 13000 in 2019 prices (low/central/high range). Convert to other base years via gb_deflator().
#> 6 Anchor 2023 = GBP 2,474,341 (WTP component). Other years derived by 2 percent annual real GDP per head growth per TAG methodology.
#> 7 GBP 70k per QALY in 2024 prices for cross-government appraisal. NICE thresholds GBP 20k-30k retained for HTA context.
#> 8 Single consolidated series (replacing historical traded / non-traded split). Low / central / high paths 2020-2050 in 2022 prices, GBP/tCO2e.The Green Book Social Time Preference Rate steps down at 30, 75, 125,
200, and 300 years. gb_stpr() returns the rate for any
year:
Three variants are supported:
gb_discount_factor() applies the kinked schedule
annually using prod(1 + r_t):
gb_discount_factor(0:5)
#> [1] 1.0000000 0.9661836 0.9335107 0.9019427 0.8714422 0.8419732
gb_discount_factor(c(0, 30, 31, 75, 76))
#> [1] 1.00000000 0.35627841 0.34590137 0.09421377 0.09191588The kink is correctly handled across band boundaries:
A simple appraisal: capex of GBP 100 in year 0, annual benefits of GBP 30 from year 1 to year 9.
costs <- c(100, rep(0, 9))
benefits <- c(0, rep(30, 9))
appraisal <- gb_npv(benefits - costs, base_year = 2024)
appraisal
#>
#> ── Green Book appraisal ────────────────────────────────────────────────────────
#> NPV (real, standard schedule): "GBP 128.2"
#> Horizon: 10 years (year 0 to 9)
#> Base year: 2024
#> Vintage: Green Book "2022"The result is a gb_appraisal object with full
provenance. Use summary() for a more detailed view:
To compare options of different durations, annualise the NPV:
gb_real() converts nominal values at year-of-occurrence
prices to real values at a chosen base year:
gb_real(nominal_values = c(100, 110, 120),
year = 2020:2022,
base_year = 2024)
#> [1] 117.352 128.451 132.596gb_rebase() does the same operation between two
real-terms base years:
gb_deflator() exposes the underlying factor:
v0.2.0 adds optimism bias (Mott MacDonald upper bounds), distributional weights, and Marginal Excess Tax Burden. v0.3.0 ships the valuation library: WELLBY, VPF, QALY, DESNZ carbon values. See the package GitHub repository for the full roadmap.