Skip to main content
All Docs
FeaturesagentOS Block ManagerUpdated April 13, 2026

Reserve Fund Projection & Scenario Modelling

Reserve Fund Projection & Scenario Modelling

The Reserve Fund Projection tool generates a year-by-year financial forecast for a block's reserve fund, applying compound inflation to every asset's estimated replacement cost over a configurable planning horizon. A built-in scenario mode lets you explore what-if inflation rates without altering the block's saved settings.

Overview

CapabilityDetail
Planning horizon1–100 years (default: 30)
Inflation modellingCompound annual growth per asset
Scenario analysisAdjustable rate; changes never persisted
Benchmarking presets4 BCIS-aligned UK construction inflation rates
Shortfall detectionPer-year flag + first-shortfall-year indicator
Recommended contributionAutomatically calculated to avoid deficits

Configuring Per-Block Settings

Each reserve fund account has two projection parameters, editable via the account's Edit form:

Inflation Uplift (%)

The annual percentage rate applied to all future asset replacement costs. Stored internally as basis points.

  • Default: 3.00% (300 bp) — BCIS General Building Cost Index long-run average
  • Range: 0%–100%
  • Effect: A higher rate increases projected CapEx in later years, potentially surfacing shortfalls earlier.

Planning Horizon (years)

The number of years the projection covers, starting from the current calendar year.

  • Default: 30 years
  • Range: 1–100 years

How the Projection is Calculated

For each asset linked to the block that has an estimated replacement cost and a projected (or manually set) replacement year, the engine:

  1. Determines the number of years until replacement: yearsFromNow = replacementYear − currentYear
  2. Applies compound annual inflation: adjustedCost = baseCost × (1 + inflationRate)^yearsFromNow
  3. Places the inflation-adjusted cost into the corresponding year bucket.

The fund balance is then projected year by year:

openingBalance
  + annualContributions   (monthlyContribution × 12; zero for the current year)
  − inflationAdjustedExpenditures
= closingBalance

A year is flagged as a shortfall when closingBalance < 0.

Replacement year precedence: manualReplacementYear overrides projectedReplacementYear when both are set.


Reading the Projection View

The Projection View appears in the account detail panel beneath the Contributions vs. Expenditures chart.

Summary Cards

CardDescription
Total Projected CapExSum of all inflation-adjusted replacement costs within the horizon
Projected End BalanceFund balance at the final year of the horizon (green = positive, red = deficit)
Shortfall YearsCount of years where the closing balance goes negative; shows the first shortfall year
Recommended ContributionMonthly amount needed to cover all projected CapEx from the current balance

Balance-Over-Time Chart

A bar chart covering every year in the horizon. Green bars indicate a positive fund balance; red bars indicate a deficit. Hover over a bar to see the exact year and closing balance.

Year-by-Year Detail Table

Displays years that have asset expenditures plus every fifth year. Each row shows:

  • Opening balance — fund balance at the start of the year
  • Contributions — annual contribution added that year
  • Expenditure — total inflation-adjusted replacement costs due that year
  • Closing balance — resulting end-of-year balance

Shortfall rows are highlighted in red. Click any row to expand an asset breakdown listing each asset due for replacement that year, including:

  • Asset name and class
  • Inflation-adjusted cost vs. original base cost (base shown with strikethrough when different)
  • Benchmarked badge — cost derived from the benchmarking reference table
  • Early replacement badge — asset flagged for earlier-than-expected replacement

Data Quality Warning

If any assets are missing replacement cost or projected replacement year data, an amber warning banner shows how many assets are incomplete and notes that the projection may be understated.


Scenario Modelling

Scenario mode lets you explore the impact of different inflation rates on the projection without saving any changes to the block.

Activating Scenario Mode

Click Scenario Modelling in the top-right of the Projection View. An amber panel appears confirming that changes are NOT saved.

Adjusting the Rate

Slider — Drag to set a custom rate between 0% and 10% (step: 0.25%). The projection recalculates instantly.

Preset buttons — Click a preset to jump to a standard benchmark rate:

PresetRateDescription
Low (CPI-aligned)2.00%Aligned with Bank of England CPI target
Medium (default)3.00%BCIS General Building Cost Index long-run average
High (construction inflation)5.00%Reflects recent UK construction cost inflation
Very High7.00%Stress-test scenario for high-inflation environments

The header subtitle updates to show the active rate and a (scenario) tag to distinguish it from the saved projection.

Exiting Scenario Mode

Click Exit Scenario Mode. The view reverts to the block's configured inflation rate and the amber panel is dismissed.


Monthly Contribution Stats Card

The Monthly Contribution card on the account overview now displays the block's configured annual inflation uplift rate beneath the contribution figure, e.g.:

£450.00
↑ 3.00% annual inflation uplift

API Reference

All three endpoints are tRPC queries scoped to the authenticated organisation.

reserveFund.projection

Returns the year-by-year projection using the block's saved inflation uplift rate.

Input

{ accountId: string }

Key response fields

{
  inflationRatePercent: number;           // e.g. 3.00
  planningHorizonYears: number;           // e.g. 30
  currentYear: number;
  endYear: number;
  totalExpenditureOverHorizonPence: number;
  projectedEndBalancePence: number;       // negative = deficit
  shortfallYearsCount: number;
  firstShortfallYear: number | null;
  recommendedMonthlyContributionPence: number;
  assetsWithReplacementData: number;
  assetsWithoutReplacementData: number;
  years: ProjectionYear[];                // one entry per year
}

reserveFund.scenarioProjection

Same as projection but overrides the inflation rate for this query only.

Input

{
  accountId: string;
  scenarioInflationBasisPoints: number;  // 0–10000 (e.g. 500 = 5.00%)
}

The response is identical to projection with isScenario: true.

reserveFund.benchmarkingDefaults

Returns the BCIS-aligned inflation presets.

Input: none

Response

{
  defaultInflationBasisPoints: 300,
  scenarios: [
    { label: string; basisPoints: number; description: string },
    // ... 4 entries
  ]
}

Basis Points Convention

Inflation rates are stored and transmitted as basis points (integers) to avoid floating-point precision issues:

  • 1 bp = 0.01%
  • 100 bp = 1.00%
  • 300 bp = 3.00% (system default)
  • Conversion to rate: inflationRate = basisPoints / 10000

The edit form accepts decimal percentages (e.g. 3.00) and converts to basis points on save (Math.round(percent × 100)).