Skip to content

Specialised Lending

Specialised Lending exposures are those where repayment depends primarily on the cash flows generated by the financed assets rather than the independent capacity of the borrower. These exposures receive special treatment under both SA and IRB frameworks.

Overview

Specialised lending categories:

Category Abbreviation Description
Project Finance PF Financing of large, complex projects
Object Finance OF Financing of physical assets (ships, aircraft)
Commodities Finance CF Structured financing of commodities
Income-Producing Real Estate IPRE Real estate with rental/sale income
High Volatility Commercial Real Estate HVCRE Speculative CRE development (PRA PS1/26 only)

Slotting Approach

The Slotting Approach maps exposures to supervisory categories based on qualitative criteria, rather than estimating PD:

flowchart LR
    A[Exposure] --> B[Assess Criteria]
    B --> C{Map to Category}
    C --> D[Strong]
    C --> E[Good]
    C --> F[Satisfactory]
    C --> G[Weak]
    C --> H[Default]
    D --> I[Risk Weight]
    E --> I
    F --> I
    G --> I
    H --> J[RW = 0%]

Slotting Categories

Assessment Criteria

Each exposure is assessed against supervisory criteria:

Factor Strong Good Satisfactory Weak
Financial strength Excellent Good Acceptable Deteriorating
Political/legal Very low Low Acceptable High
Transaction characteristics Very favorable Favorable Acceptable Unfavorable
Asset strength Very strong Strong Adequate Weak
Sponsor strength Excellent Good Adequate Weak

Project Finance Criteria

Factor Strong Good Satisfactory Weak
Market conditions Few competing suppliers Few suppliers, demand stable Average Weak or declining
Financial ratios Strong coverage Good coverage Adequate Weak
Stress resilience Robust Good Limited Poor
Contractual arrangements Strong contracts Acceptable Some weaknesses Significant gaps
Reserve accounts Comprehensive Adequate Minimum Insufficient

IPRE Criteria

Factor Strong Good Satisfactory Weak
LTV <60% 60-75% 75-85% >85%
DSCR >1.35x 1.2-1.35x 1.0-1.2x <1.0x
Location Prime Good Acceptable Weak
Tenant quality Strong Adequate Variable Poor
Lease length Long-term Medium-term Short-term Month-to-month

Risk Weights

CRR Risk Weights

UK CRR Art. 153(5) defines a single risk weight table (Table 1) with maturity-based splits, covering all specialised lending types (PF, OF, CF, IPRE):

Table 1 (PF, OF, CF, IPRE):

Category Maturity >= 2.5yr Maturity < 2.5yr
Strong 70% 50%
Good 90% 70%
Satisfactory 115% 115%
Weak 250% 250%
Default 0% 0%

No HVCRE Distinction in UK CRR

The UK onshored CRR does not contain a separate HVCRE table. All specialised lending uses Table 1 above. The original EU CRR had a separate Table 2 with elevated HVCRE weights, but this was not retained in UK onshoring. HVCRE is introduced by PRA PS1/26 (see Basel 3.1 section below). The calculator applies EU CRR Table 2 weights for is_hvcre=True CRR exposures (code divergence D3.22).

Basel 3.1 Risk Weights

PRA PS1/26 restructures slotting into a single Table A with subgrade columns (A/B for Strong, C/D for Good) and introduces HVCRE as a distinct sub-type with elevated weights (UK CRR has no HVCRE concept). The tables below show the default column values (B/D per Art. 153(5)(c)). Firms may optionally use the lower A/C column values for exposures with < 2.5 years residual maturity (Art. 153(5)(d)) or enhanced underwriting (Art. 153(5)(e)/(f)). See Key Differences for the full Table A with all columns.

Non-HVCRE (OF, CF, PF, IPRE):

Category Risk Weight
Strong 70%
Good 90%
Satisfactory 115%
Weak 250%
Default 0% (EL)

HVCRE:

Category Risk Weight
Strong 95%
Good 120%
Satisfactory 140%
Weak 250%
Default 0% (EL)

PRA Deviation from BCBS — No Pre-Operational PF Table

BCBS CRE33.6 Table 6 defines separate elevated slotting weights for pre-operational project finance (Strong 80%, Good 100%, Satisfactory 120%, Weak 350%). PRA PS1/26 does not adopt this distinction — all project finance uses the standard non-HVCRE Table A (Art. 153(5)) regardless of operational status. The pre-operational / operational distinction only applies under the SA approach (Art. 122B(2)(c): 130% pre-op, 100% operational, 80% high-quality operational).

From Category to Risk Weight: the Subgrade Step

The SlottingCategory enum exposed by the calculator is the coarse five-bucket grade — Strong, Good, Satisfactory, Weak, Default. Under PRA PS1/26 Art. 153(5) Table A (Basel 3.1) this maps onto a finer grid where Strong splits into columns A/B and Good splits into columns C/D — Satisfactory, Weak, and Default keep a single column each. The same A/B/C/D refinement governs the Art. 158(6) Table B expected-loss rates. Practitioners do not assign A/B/C/D directly; the calculator derives the column from a small set of input fields.

Inputs you set on the loader

For every specialised-lending row, set:

Loader column Type Meaning Driver of subgrade?
slotting_category str (one of "strong", "good", "satisfactory", "weak", "default") The coarse five-bucket category. Must be set before the calculator can look up a risk weight. Yes — selects the row of Table A.
is_hvcre bool (default False) High-Volatility CRE flag. PRA PS1/26 introduces a separate, elevated table for HVCRE; under CRR this flag has no UK legal basis (see code divergence D3.22). Yes — selects the HVCRE table vs. the standard Non-HVCRE table.
residual_maturity_years float Years to maturity. The calculator derives is_short_maturity = residual_maturity_years < 2.5 if not already set. Yes (CRR only — see warning below).
is_short_maturity bool (optional, derived from residual_maturity_years) Pre-computed maturity flag. A pre-existing value is never overwritten. Yes (CRR only).
sl_type str (one of "project_finance", "object_finance", "commodities_finance", "ipre", "hvcre") Specialised-lending sub-type. Does not affect the slotting table directly except that PRA PS1/26 routes IPRE / HVCRE to slotting unconditionally. No (does not change the column lookup).

There is no slotting_subgrade column. The A/B/C/D refinement is derived, not declared.

How the calculator picks the column

slotting_category = STRONG | GOOD          ──┐
is_hvcre          = True | False             │   →  Table A row + column → risk weight
is_short_maturity = True | False  (CRR only) │
  • Strong, default column (B) is used unless a concession applies.
  • Strong, column A is the short-maturity concession (Art. 153(5)(d), CRR Table 1 short-maturity column).
  • Good, default column (D) is used unless a concession applies.
  • Good, column C is the short-maturity concession.
  • Satisfactory, Weak, Default — single column, is_short_maturity is ignored.

Basel 3.1 short-maturity concession is not yet implemented

Under Basel 3.1, the calculator currently routes all slotting exposures to columns B (Strong) / D (Good) regardless of is_short_maturity (IMPLEMENTATION_PLAN.md items P1.97 non-HVCRE and P1.117 HVCRE). The Art. 153(5)(e) IPRE and Art. 153(5)(f) PF enhanced-underwriting concessions are also unimplemented — there is no input field to flag "meets enhanced-criteria threshold". Under CRR the maturity-based columns A/C are fully implemented via separate short / long maturity tables.

Worked example: "I have a Strong CRE exposure" → RW

  1. Confirm the exposure is HVCRE or non-HVCRE — set is_hvcre. A standard income-producing CRE deal is non-HVCRE (is_hvcre=False); speculative development or land-bank deals meeting the HVCRE criteria are is_hvcre=True.
  2. Assign slotting_category="strong" based on the qualitative slotting criteria (see Assessment Criteria above).
  3. Set residual_maturity_years from the loan's contractual maturity. The calculator derives is_short_maturity = residual_maturity_years < 2.5 automatically.
  4. The calculator combines (Strong × HVCRE flag × maturity) → column → risk weight.

For the actual numerical risk weights at each (category × subgrade × HVCRE) combination, do not rely on the summary tables on this page — they show only the default columns. The single source of truth is:

Defaulted Exposures

Defaulted specialised lending exposures receive a 0% risk weight (RWA = 0). Expected loss treatment is handled separately via the provisions and EL comparison framework (see Provisions).

Calculation Example

Exposure: - IPRE loan, £20m - LTV: 65% - DSCR: 1.25x - Prime location - Strong tenant - Category assessment: Good - Non-HVCRE, maturity >= 2.5 years

CRR Calculation:

# Category: Good, Non-HVCRE, >= 2.5yr
Risk_Weight = 90%

# RWA
RWA = EAD × Risk_Weight
RWA = £20,000,000 × 90%
RWA = £18,000,000

Basel 3.1 Calculation:

# Standard (Operational) Good = 90% (same as CRR >= 2.5yr)
RWA = £20,000,000 × 90%
RWA = £18,000,000

SA Alternative

Specialised lending can also be treated under SA when the slotting approach is not used:

Type SA Treatment
Project Finance Corporate risk weights
Object Finance Corporate risk weights
Commodities Finance Corporate risk weights
IPRE CRE risk weights
HVCRE CRE risk weights

When to use SA vs Slotting:

Use SA when Use Slotting when
External rating available No PD estimate available
IRB not approved IRB approved for portfolio
Lower SA RW expected Specialized assessment needed

Implementation

Slotting Calculator

import polars as pl
from datetime import date
from rwa_calc.engine.slotting.calculator import SlottingCalculator
from rwa_calc.contracts.config import CalculationConfig

calculator = SlottingCalculator()

calculate_branch() takes a pre-filtered slotting LazyFrame and returns a LazyFrame. Build a single-row frame for a single-exposure calculation:

df = pl.DataFrame({
    "exposure_reference": ["EX1"],
    "ead": [20_000_000.0],
    "slotting_category": ["good"],
    "is_hvcre": [False],
    "is_short_maturity": [False],
    "is_pre_operational": [False],
}).lazy()

result = calculator.calculate_branch(
    df, CalculationConfig.crr(reporting_date=date(2026, 12, 31))
).collect().to_dicts()[0]
# result["rwa"] -> 18_000_000.0

Risk Weight Lookup

Slotting risk weights are cited entries in the rulepack packs (src/rwa_calc/rulebook/packs/{crr,b31}.py), read through the resolved pack rather than a standalone lookup table:

from datetime import date
from rwa_calc.rulebook.resolve import resolve

# Resolve the frozen, content-hashed rulepack for the regime + reporting date
pack = resolve("crr", date(2026, 12, 31))

# Slotting risk weights are cited LookupTable entries on the pack, e.g.
# the base, short-maturity, HVCRE, and HVCRE-short slotting RW tables keyed
# by slotting category (read by engine/slotting/transforms.py).
slotting_rw_base = pack.lookup("slotting_rw_base")
# Non-HVCRE, standard maturity (>= 2.5yr), category GOOD -> 0.90

The SlottingCategory enum (rwa_calc.domain.enums) is still the canonical category key used by the slotting transforms.

Project Finance Detail

Pre-Operational Phase

Project is in construction or commissioning: - Construction risk present - Cash flows not yet established - Under PRA PS1/26 slotting, pre-operational PF uses the same risk weights as operational PF - Under SA (Art. 122B), pre-operational PF receives a higher weight (130% vs 100%)

Operational Phase

Project is generating cash flows: - Construction complete - Revenue stream established - Standard slotting weights apply (identical to pre-operational under PRA)

Phase Transition (SA Only)

The pre-operational / operational distinction only affects risk weights under the SA approach (Art. 122B(2)(c)), not under IRB slotting:

# Basel 3.1 SA applies different weights for PF by project phase
if framework == "BASEL_3_1" and approach == "SA" and lending_type == "PROJECT_FINANCE":
    if phase == "pre_operational":
        rw = 1.30  # 130% (Art. 122B(2)(c))
    elif phase == "high_quality_operational":
        rw = 0.80  # 80% (Art. 122B(4))
    else:
        rw = 1.00  # 100% operational (Art. 122B(2)(c))
# For IRB slotting, all PF uses standard non-HVCRE weights regardless of phase

HVCRE Treatment

High Volatility Commercial Real Estate receives higher risk weights under PRA PS1/26 (Basel 3.1) due to:

  • Speculative development
  • No established cash flows
  • Higher correlation to economic cycles

HVCRE Criteria:

  • CRE development or land acquisition
  • Repayment from future sale or refinancing
  • Uncertain outcome

HVCRE Is a PRA PS1/26 Introduction

UK CRR has no HVCRE concept. The term does not appear in UK CRR Art. 153(5) — all SL types use the same Table 1. HVCRE is introduced by PRA PS1/26 Table A (Art. 153(5)(a)(i)). The "CRR HVCRE" column below reflects the original EU CRR Table 2 values, which have no UK CRR legal basis.

Risk Weight Comparison:

Category CRR Table 1 (>=2.5yr) B31 HVCRE (Table A)
Strong 70% 95%
Good 90% 120%
Satisfactory 115% 140%
Weak 250% 250%

Supporting Factors

Infrastructure project finance may qualify for the 0.75 infrastructure supporting factor under CRR (Art. 501a). This factor is applied by the SupportingFactorCalculator after slotting risk weights are determined, not within the slotting engine itself.

See Supporting Factors for eligibility criteria and application details.

Basel 3.1

Infrastructure factor is removed under Basel 3.1.

Regulatory References

Topic CRR Article BCBS CRE
Specialised lending definition Art. 147(8) CRE33.1
Slotting categories Art. 153(5) CRE33.2
Risk weights Art. 153(5) CRE33.3-4
HVCRE PRA PS1/26 Art. 153(5) Table A (not in UK CRR) CRE33.5
Infrastructure factor Art. 501a N/A

Next Steps