Project · finance business partnering

Business Unit Performance Dashboard

An illustrative management-reporting cockpit for a generic Nordic wholesale-bank division with five product lines. Three layers of the monthly pack — KPI tiles, FTP-aware NII variance waterfall, per-line performance table — plus an interactive sensitivity panel and a ROAC-vs-hurdle view, all reading from a synthetic dataset built in Python and queried through SQLite.

Illustrative synthetic data. Not affiliated with or representative of any real bank. All numbers generated by pipeline/generate_data.py.
Headline KPIs
NII variance — YTD Actual vs Budget
Decomposition: volume · customer margin · FTP · other
FTP-aware NII bridge
Budget NII → effects → Actual NII (NOK millions)
Three things leadership should know
Auto-generated from the YTD variance data
    Monthly trend — last 24 months
    Solid lines: actuals through Apr 2026. Dashed: forecast through Dec 2026.
    Per product line — YTD performance
    Actual vs Budget · annualised ROAC
    Product line Income Opex Impairment PBT C/I Allocated capital ROAC
    ROAC vs hurdle rate
    Hurdle = 11.0% · annualised YTD return on allocated capital
    Sensitivity — interest-bearing book
    Move volume growth, customer spread, and FTP rate to see live NII and division ROAC impact
    Lending volume growth 0.0%
    vs YTD Actual baseline · applies to LSF + TB books
    Customer spread shift 0 bps
    parallel shift to customer rates on lending and deposits
    FTP funding-cost shift 0 bps
    parallel shift in the internal transfer rate
    NII (YTD, NOK m)
    PBT (YTD, NOK m)
    Division ROAC (annualised)
    vs hurdle (11.0%)
     
    How it's built
    Pipeline lives at prosjekter/forretningsenhet-dashboard/pipeline/
    A pandas script generates 24 months of synthetic Actual / Budget / Forecast figures and writes them to a single fact table in SQLite. The reporting blocks above are produced by readable .sql files (one per view), and a small Python step rolls the results into the data.json this page consumes. Commentary is rule-based; an optional Anthropic-API variant is wired in behind a flag and off by default so the page works without any key.
    Python · pandas SQLite SQL Chart.js Vanilla JS
    ← Back to projects