Bank Peer Group Analysis: A Practical Guide
Tell someone a bank has a 3.5% [net interest margin](https://www.bankregreports.com/blog/what-is-net-interest-margin/) and you have told them almost nothing. Is that good? Depends entirely on whether its peers are running 2.9% or …
Tell someone a bank has a 3.5% net interest margin and you have told them almost nothing. Is that good? Depends entirely on whether its peers are running 2.9% or 4.2%. Tell them it sits in the 30th percentile of its UBPR peer group and the picture snaps into focus immediately: this bank trails most of its competition on the metric that funds everything else. That is the entire point of bank peer group analysis — it converts isolated figures into judgments by anchoring every metric to the banks most like the one under review.
This guide covers how peer groups are constructed, how to read percentile rankings, when the standard UBPR assignment falls short, and how to build a custom peer group that makes the comparison genuinely revealing.

The chart above is why bank peer group analysis exists. A $180 million rural bank running 3.7% NIM looks mediocre against the industry. Against Peer Group 3, it is squarely median.
Why the Right Peer Group Changes the Entire Analysis
Every meaningful question in bank performance is comparative. Is this bank’s efficiency ratio high? Relative to whom? Is its capital strong? Compared to what? A $300 million rural community bank and a $30 billion urban regional bank operate under structurally different economics — deposit costs, loan mix, noninterest income opportunities, and overhead all diverge. Holding them to the same absolute benchmark tells you nothing about performance; it just measures size and business model.
Peer group analysis solves this by comparing each bank only against institutions that share its fundamental characteristics, so differences in the numbers reflect differences in execution, not differences in type.
The data to do this lives in FFIEC call reports — the FFIEC 031 (large banks), FFIEC 041 (most community banks), and FFIEC 051 (small, less complex institutions). Every metric worth tracking traces back to a specific MDRM code in one of those filings.
How the UBPR Assigns Peer Groups
The Uniform Bank Performance Report assigns every FDIC-insured bank to one of roughly a dozen standard peer groups. The assignment logic is straightforward but the implications matter a great deal:
Asset size is the primary sort. The UBPR uses cutoffs around $100 million, $300 million, $1 billion, $3 billion, and $10 billion in total assets (RCON2170 on Schedule RC of the call report). Cross a threshold and your peer group changes, which can shift percentile rankings significantly with no underlying change in performance.
Number of banking offices distinguishes unit banks from multi-branch networks within the same size band. A $200 million bank with two offices and one with twelve face different overhead structures and competitive dynamics.
Metropolitan versus non-metropolitan location separates urban and rural banks. Rural banks typically carry higher NIMs, different deposit betas, and narrower noninterest income profiles than metro peers of identical size.
Once assigned, every ratio in the UBPR appears alongside the peer group average and the bank’s percentile rank within that group. That percentile is where the useful information lives. The raw ratios are context; the percentiles are the verdict.
Reading Percentile Rankings Without Getting Fooled
A percentile ranking tells you where a bank sits in the distribution of its peers. 75th percentile on return on assets means it outperforms three-quarters of comparable banks on that metric. 20th percentile means it trails most of them.
Two things make percentiles more useful than raw ratios. First, they are self-calibrating. When the rate environment compresses margins industry-wide, a bank that holds its 55th percentile NIM ranking is actually performing well — its absolute number fell, but so did everyone else’s. The percentile captures relative performance. Second, they flag outliers instantly. Scanning percentile rankings across the standard ratio categories — capital adequacy, asset quality, earnings, liquidity, sensitivity — takes minutes and surfaces exactly which metrics warrant deeper investigation.
A practical rule that holds up across most cycles: any metric where a bank falls below the 25th percentile or above the 75th deserves a closer look. Low profitability percentiles may indicate operational drag or pricing problems. Anomalously high asset quality percentiles sometimes reflect underreserving rather than clean loans — check the ratio of the allowance (RCON3123) to nonaccruals (RCON5578) before concluding a bank’s credit is genuinely superior. High liquidity percentiles can mean excess uninvested cash dragging on earnings.
When the Standard UBPR Peer Group Is the Wrong Tool
The standard peer group handles most analytical situations. But two banks of nearly identical size can be poor peers if their business models diverge meaningfully. A commercial real estate specialist and a consumer-focused installment lender face completely different credit concentration profiles, interest rate risk exposures, and capital requirements. Averaging their metrics together and calling it a peer group produces a benchmark for neither.
Build a custom peer group when any of the following apply:
Business model mismatch. If the subject bank holds more than 40% of its loan portfolio (RCON2122 from Schedule RC-C) in a single category — CRE, C&I, agriculture, consumer — compare it against banks with similar concentrations. The UBPR peer group average may look fine while hiding that the bank is pricing its niche incorrectly relative to actual competitors.
Geographic competition. For community banks, the relevant competition is often in the same state or metro. Deposit pricing in rural Georgia differs from deposit pricing in suburban Atlanta. A statewide or MSA-filtered peer group captures competitive dynamics that the national size-based assignment misses entirely.
Strategic tracking. Boards and management teams often want to know how they stack up against a specific named set of institutions — not the abstract peer group average. Building and tracking a named competitor panel over time tells a different story than the UBPR percentile, and usually a more actionable one.
Threshold distortions. A bank sitting just above a UBPR size cutoff may be compared against institutions twice its scale. Pulling back to a tighter asset band fixes this.
Pulling Peer Data with the BankRegAPI
The standard workflow for peer analysis — downloading UBPR pages, building comparison sets from raw call report files, maintaining the roster as banks merge or fail — is tedious. The BankRegReports API handles the roster management and returns clean, validated data.
from bankregreports import BankReg
brr = BankReg("brr_your_key_here")
# Pull peer group metrics for a specific bank (FNB United, RSSD 57!)
# Returns the bank's ratios + peer group percentile for each metric
peer = brr.peer_group(rssd_id=631456, period="2024Q4")
print(peer.nim)
# BankMetric(value=0.0371, peer_pct=58, peer_avg=0.0348, peer_group="UBPR_3")
print(peer.efficiency_ratio)
# BankMetric(value=0.621, peer_pct=44, peer_avg=0.608, peer_group="UBPR_3")
print(peer.npa_ratio)
# BankMetric(value=0.0089, peer_pct=31, peer_avg=0.0072, peer_group="UBPR_3")
# 31st percentile on NPAs — worth pulling Schedule RI-B detail
The peer_pct field is the UBPR-aligned percentile within the assigned peer group. The peer_avg is the group median. NPA ratio at the 31st percentile here is the signal — pull Schedule RI-B (RIAD4635, RIAD4636 for charge-off detail) before concluding the asset quality story.

A bank improving in absolute terms while losing ground relative to peers is one of the most common analytical blind spots. The trend chart above shows exactly how that plays out — NIM and efficiency both drifting in the wrong direction against peers even in a period when the bank might be reporting nominally stable earnings.
A Workflow That Actually Holds Up
Start with the standard UBPR peer group for a baseline pass across all ratio categories. Look at capital (Tier 1, CET1), asset quality (NPAs, charge-offs from Schedule RI-B), earnings (ROA, ROE, NIM via RIAD4107, efficiency ratio), and liquidity. Flag anything outside the 25th–75th band.
Then investigate the flagged metrics at the source level — not the UBPR ratio, but the underlying call report schedules. A high NPA ratio could be one large relationship, a portfolio segment, or a classification problem. The UBPR tells you something is off; Schedule RC-N and RI-B tell you what.
Once you have the baseline, ask whether the assigned peer group is actually appropriate for this bank. If the business model or geography makes it a poor fit, rebuild the group. Track percentile trends quarterly, not just point-in-time readings.
The thing most analysts skip: relative position over time. A bank that improves its ROA from 0.85% to 0.95% looks like a turnaround. If its UBPR peer group moved from 0.90% to 1.10% over the same period, that bank is actually losing ground. Absolute trajectory and relative trajectory can point in opposite directions, and only one of them tells you whether management is outperforming its competition.
Frequently Asked Questions
What is bank peer group analysis? The practice of evaluating a bank’s performance by comparing its metrics against a group of similar institutions rather than against absolute industry averages. It puts ratios like profitability, capital, and efficiency in context — differences reflect performance rather than differences in bank size or type.
How are UBPR peer groups defined? The UBPR assigns each FDIC-insured bank to a standard peer group based primarily on asset size (RCON2170), number of banking offices, and metropolitan versus non-metropolitan location. Every ratio is reported alongside the peer group average and the bank’s percentile ranking within that group.
Why are percentile rankings more useful than raw ratios? A percentile shows where a bank stands in the distribution of its actual peers. It is self-calibrating for the shared operating environment — if the rate cycle compresses everyone’s margins, a stable percentile rank signals relative resilience. It also surfaces outliers immediately without requiring you to know what the “right” level of each ratio should be.
When should I build a custom peer group? When the standard UBPR group is a poor fit — the subject bank has a distinctive business model, competes in a specific geographic market, or the standard size band is too wide to be meaningful. The goal is to make peers as alike as possible in structure so the comparison isolates genuine performance differences.
What makes two banks good peers? Similar asset size, business model (loan mix, funding profile), geographic market, and charter type. The more alike the peers are on those structural dimensions, the more a difference in the ratios reflects a real performance difference rather than a structural one.
Where does the underlying data come from? FFIEC call reports (FFIEC 031/041/051) filed quarterly with the Federal Reserve, FDIC, and OCC. The UBPR aggregates and presents this data with peer group context. BankRegReports publishes clean, validated versions of the same data through its API, going back over 24 years.
The data referenced in this post is available through the BankRegReports Data API. The BankRegAPI Python SDK (pip install bankregreports) returns clean, UBPR-validated data from FFIEC, FDIC, Federal Reserve, NCUA, and SEC EDGAR in a single call. Get a free API key →