marcelolabre's picture
Uploading app files
0afdb9d verified

Default Cascade Simulation of Banks 2026

Overview

Interactive Dash application that simulates the impact of commercial real estate (CRE) defaults on U.S. bank capitalization. The app classifies banks into regulatory categories under two frameworks — Prompt Corrective Action (PCA) based on Tangible Equity Ratio, and Basel III based on Estimated CET1 Ratio — and displays the results as stacked bar charts with summary metric cards.

How It Works

CRE Loss Calculation

Each bank's CRE losses are computed as:

  • CRE Losses = CRE Total x Default Rate x LGD

When the Unrealized Losses toggle is ON, total losses also incorporate unrealized securities losses (positive values in the data, representing the magnitude of losses).

Tangible Equity Ratio (PCA Framework)

Banks are classified by Adjusted Equity-to-Assets:

  • Adjusted Equity-to-Assets = (Total Equity - CRE Losses - Unrealized Losses) / Total Assets

PCA categories:

Category Threshold
Well Capitalized >= 8%
Adequately Capitalized >= 4%
Undercapitalized >= 2%
Critically Undercapitalized >= 0%
Insolvent < 0%

Estimated CET1 Ratio (Basel III Framework)

Banks are also classified by Adjusted CET1 Ratio using an estimated Risk-Weighted Assets figure:

  • Estimated RWA = Total Assets x RWA Ratio
  • Adjusted CET1 = (CET1 Capital - CRE Losses - Unrealized Losses) / Estimated RWA

Basel III categories:

Category Threshold
Well Capitalized >= 6.5%
Undercapitalized >= 4.5%
Below Basel III Minimum >= 0%
Insolvent < 0%

Controls

Control Range Default Description
CRE Default Rate 0-50% 10% Percentage of CRE portfolio that defaults
Loss Given Default 0-100% 50% Loss severity on defaulted loans
Average RWA Ratio 50-75% 65% Assumed ratio of risk-weighted assets to total assets
Total Assets $10-100B $10B Minimum bank size filter
Unrealized Losses ON/OFF OFF Include unrealized securities losses in stress calculation
Has CRE Losses ON/OFF OFF Exclude banks with zero CRE exposure
Publicly Traded Only ON/OFF OFF Exclude non-publicly traded banks

Display

Stacked Bar Charts

Two horizontal stacked bar charts show the count of banks in each capitalization category:

  • Tangible Equity Ratio — Five-shade red bar (PCA categories)
  • Estimated CET1 Ratio — Four-shade purple bar (Basel III categories)

Metric Cards

Each framework displays three summary cards:

Metric Description
Total Losses Aggregate CRE losses (plus unrealized if toggled) across all filtered banks, in $B
Banks Undercapitalized / Below Minimum Count of banks falling below the adequately capitalized threshold, with their combined total assets
Banks Insolvent Count of banks with negative adjusted ratios, with their combined total assets

Data Source

The Banking Initiative at Florida Atlantic University — Q3 2025 FFIEC Call Reports.

Run Locally

pip install -r requirements.txt
python app.py
# Open http://localhost:8050

Customization

You can use this app with your own data by replacing the data.csv file. Your CSV must include the following columns in the same format:

Column Description Example
Ticker Stock ticker symbol (blank for non-public banks) JPM
Name Bank name JPMORGAN CHASE BANK
ST State abbreviation NY
Total Assets ($M) Total assets in millions 3459261
Total Equity ($M) Total equity in millions 312794
CRE Total ($M) Commercial real estate exposure in millions 174381
CET1 Capital ($M) Common Equity Tier 1 capital in millions 291288
Total Unrealized Loss ($M) Unrealized loss on investment securities in millions (positive values) 1842
Price Latest stock closing price in dollars 293.70
Volume Average 30-day trading volume 44276127
Volatility 30-day annualized volatility as percentage 26.0

Only banks with a non-blank Ticker and valid Price and Volatility values will be included in the simulation. All other columns in the CSV are ignored by this app but may be used by companion apps in the Signalpha suite.