| # 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](https://business.fau.edu/departments/finance/banking-initiative/) β Q3 2025 FFIEC Call Reports. |
|
|
| ## Run Locally |
|
|
| ```bash |
| 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. |
|
|