Getting started with greenbook

library(greenbook)

Why greenbook

greenbook provides cost-benefit analysis primitives from the HM Treasury Green Book: the kinked STPR, discount factors, NPV, equivalent annual cost, GDP-deflator rebasing, optimism bias, distributional weights and monetised valuation.

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 supplementary guidance: discounting (updated 28 October 2026), paragraph 3.8; pre-October 2026 schedule from the 2003 Green Book
#> 2                                     HM Treasury, GDP deflators at market prices, and money GDP: October 2026 (Budget), calendar-year series, 2025 = 100
#> 3                                                                      HM Treasury Supplementary Green Book Guidance: Optimism Bias (Mott MacDonald 2002)
#> 4                                HM Treasury Green Book 2018 and 2022 (the 2026 edition specifies no uplift; see chapter 6 Costs of raising public funds)
#> 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-10-31
#> 2   2026-10-31
#> 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 Vintage 2026-10 (default): 3.00/2.50/2.25 percent for years 1-30/31-75/76-125, no discounting beyond year 125, no health or catastrophic variants. Vintage 2003: 3.5/3.0/2.5/2.0/1.5/1.0 percent with health and catastrophic-risk variants.
#> 2                                                                 Outturn 1990-2025 (ONS Quarterly National Accounts, 30 September 2026). Forecast 2026-2031 chained from OBR October 2026 EFO growth rates; type column marks forecast years.
#> 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 kinked STPR

The Green Book Social Time Preference Rate is 3.00 percent for years 1 to 30, 2.50 percent for years 31 to 75 and 2.25 percent for years 76 to 125, following HM Treasury’s update of 28 October 2026. gb_stpr() returns the rate for any year:

gb_stpr(c(10, 30, 31, 75, 76, 125))
#> [1] 0.0300 0.0300 0.0250 0.0250 0.0225 0.0225
gb_schedule_table()
#>   year_from year_to standard health catastrophic
#> 1         0      30   0.0300     NA           NA
#> 2        31      75   0.0250     NA           NA
#> 3        76     125   0.0225     NA           NA

HM Treasury advises against discounting beyond year 125, so the default schedule stops there. The schedule in force before October 2026, with its health and catastrophic-risk variants, is available as vintage = "2003" for reproducing earlier appraisals:

gb_stpr(c(10, 30, 31, 75, 76, 200, 300), vintage = "2003")
#> [1] 0.035 0.035 0.030 0.030 0.025 0.020 0.015
gb_schedule_table(vintage = "2003")
#>   year_from year_to standard health catastrophic
#> 1         0      30    0.035 0.0150       0.0300
#> 2        31      75    0.030 0.0129       0.0257
#> 3        76     125    0.025 0.0107       0.0214
#> 4       126     200    0.020 0.0086       0.0171
#> 5       201     300    0.015 0.0064       0.0129
#> 6       301    1000    0.010 0.0043       0.0086

Discount factors

gb_discount_factor() applies the kinked schedule annually using prod(1 + r_t):

gb_discount_factor(0:5)
#> [1] 1.0000000 0.9708738 0.9425959 0.9151417 0.8884870 0.8626088
gb_discount_factor(c(0, 30, 31, 75, 76))
#> [1] 1.0000000 0.4119868 0.4019383 0.1356155 0.1326313

The kink is correctly handled across band boundaries:

df_30 <- gb_discount_factor(30)
df_31 <- gb_discount_factor(31)
df_31 / df_30  # 1 / 1.025 = 0.9756, the year-31 single-period factor
#> [1] 0.9756098

Net present value

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 133.6"
#> Horizon: 10 years (year 0 to 9)
#> Base year: 2024
#> Vintage: Green Book "2026-10"

The result is a gb_appraisal object with full provenance. Use summary() for a more detailed view:

summary(appraisal)
#> Green Book appraisal
#> --------------------
#> NPV          : GBP 133.6
#> Schedule     : standard
#> Horizon      : 10 years (year 0 to 9)
#> Base year    : 2024
#> Vintage      : Green Book 2026-10
#> Total inflow : GBP 270.0
#> Total outflow: GBP -100.0

Equivalent annual net cost

To compare options of different durations, annualise the NPV:

gb_eanc(appraisal)
#> [1] 17.15661

Real-terms rebasing

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.4778 128.4301 132.4863

gb_rebase() does the same operation between two real-terms base years:

gb_rebase(c(100, 200, 300), from = 2020, to = 2024)
#> [1] 117.4778 234.9555 352.4333

gb_deflator() exposes the underlying factor:

gb_deflator(from = 2020, to = 2024)
#> [1] 1.174778

What’s next

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.