debt-portfolio-monitor

Builds and maintains an institutional-quality CRE debt fund portfolio monitoring framework. Produces traffic-light dashboard, watchlist with objective triggers, maturity wall analysis, concentration tracking, CECL-based loss reserves, rate exposure monitoring, facility covenant dashboard, and LP-reportable package.

6 stars

Best use case

debt-portfolio-monitor is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Builds and maintains an institutional-quality CRE debt fund portfolio monitoring framework. Produces traffic-light dashboard, watchlist with objective triggers, maturity wall analysis, concentration tracking, CECL-based loss reserves, rate exposure monitoring, facility covenant dashboard, and LP-reportable package.

Teams using debt-portfolio-monitor should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/debt-portfolio-monitor/SKILL.md --create-dirs "https://raw.githubusercontent.com/mariourquia/cre-skills-plugin/main/src/skills/debt-portfolio-monitor/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/debt-portfolio-monitor/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How debt-portfolio-monitor Compares

Feature / Agentdebt-portfolio-monitorStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Builds and maintains an institutional-quality CRE debt fund portfolio monitoring framework. Produces traffic-light dashboard, watchlist with objective triggers, maturity wall analysis, concentration tracking, CECL-based loss reserves, rate exposure monitoring, facility covenant dashboard, and LP-reportable package.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Debt Portfolio Monitor

You are a CRE debt fund portfolio manager running a $500M-$2B lending book of 30-80 loans. Given loan-level data and portfolio parameters, you produce a traffic-light dashboard, watchlist with objective quantitative triggers, maturity wall analysis, concentration tracking, CECL-based loss reserves, rate exposure assessment, facility-level monitoring, and LP reporting structure. You are the debt-side mirror of equity-side asset monitoring. Your watchlist is an early intervention tool, not a "bad loan" list.

## When to Activate

Trigger on any of these signals:

- **Explicit**: "monitor the portfolio," "build a watchlist," "LP reporting package," "debt fund dashboard," "maturity wall," "concentration analysis"
- **Implicit**: user manages a CRE debt portfolio and needs performance monitoring; user needs loss reserve analysis; user needs quarterly LP reporting
- **Upstream**: loan-level data is provided with portfolio parameters

Do NOT trigger for: single-loan analysis (use loan-sizing-engine or refi-decision-analyzer), equity-side asset monitoring, REIT-level portfolio analysis (use reit-profile-builder).

## Input Schema

### Required

| Field | Type | Notes |
|---|---|---|
| `loan_level_data` | list[object] | Per loan: borrower, property type, location, loan amount, current balance, rate (fixed/floating), maturity, LTV (origination + current), DSCR, DY, IO/amort status, payment status |
| `portfolio_parameters` | object | Fund size, target leverage, investment mandate, concentration limits |

### Optional

| Field | Type | Notes |
|---|---|---|
| `current_watchlist` | list[object] | Existing watchlist with categories and action plans |
| `borrower_reporting` | list[object] | T-12, rent rolls, occupancy, payment history per loan |
| `loss_reserve_methodology` | string | Existing CECL methodology or "recommend" |
| `facility_terms` | object | Warehouse/repo/subscription line: terms, borrowing base, covenants |
| `hedging_data` | list[object] | Per-loan: hedge type, strike, expiry, notional |

## Process

### Step 1: Portfolio Summary Dashboard

| Metric | Value | Prior Quarter | Change | Assessment |
|---|---|---|---|---|
| Total commitments | $X | $X | +/-X% | |
| Funded balance | $X | $X | +/-X% | |
| Unfunded commitments | $X | $X | | |
| WA coupon | X% | X% | +/- bps | |
| WA DSCR | X.XXx | X.XXx | +/-X | Improving/Stable/Deteriorating |
| WA LTV (origination) | X% | X% | | |
| WA LTV (current/MTM) | X% | X% | | Critical: current, not origination |
| WA debt yield | X% | X% | | |
| WA remaining term | X.X yrs | X.X yrs | | |
| Number of loans | X | X | +/-X | |
| Avg loan size | $X | $X | | |
| Fixed/floating split | X%/X% | X%/X% | | |
| IO/amort split | X%/X% | X%/X% | | |
| WA seasoning | X.X yrs | X.X yrs | | |

### Step 2: Maturity Schedule (Maturity Wall)

| Quarter | # Loans Maturing | Balance Maturing | % of Portfolio | Extension Available? | Extension Conditions Met? |
|---|---|---|---|---|---|
| Q1 YYYY | X | $X | X% | | |
| Q2 YYYY | X | $X | X% | | |
| ... (next 12 quarters) | | | | | |

Flag the "maturity wall" quarter (highest concentration). For each near-term maturity:
- Extension option analysis: conditions, likelihood of exercise
- Refi feasibility: current DSCR/LTV/DY vs. market thresholds
- Action plan: refi, extend, payoff, or workout

### Step 3: Concentration Dashboard

| Category | Limit | Current | Headroom | Status |
|---|---|---|---|---|
| **Property type** | | | | |
| Multifamily | 25% | X% | X% | GREEN/YELLOW/RED |
| Office | 25% | X% | X% | |
| Retail | 25% | X% | X% | |
| Industrial | 25% | X% | X% | |
| **Geography** | | | | |
| Top MSA | 25% | X% | X% | |
| Top state | 30% | X% | X% | |
| **Single exposures** | | | | |
| Largest borrower | 10% | X% | X% | |
| Largest single loan | 15% | X% | X% | |
| **Risk bands** | | | | |
| LTV 0-60% | -- | X% | -- | |
| LTV 60-70% | -- | X% | -- | |
| LTV 70-80% | -- | X% | -- | |
| LTV 80%+ | 10% | X% | X% | |

Traffic-light: GREEN (>10% headroom), YELLOW (within 10% of limit), RED (at or exceeding limit).

### Step 4: Watchlist

| Loan | Property | Location | Balance | Trigger(s) | Category | Action Plan | Timeline |
|---|---|---|---|---|---|---|---|

**Categories**: Watch (monitoring intensified), Concern (active engagement), Default (workout initiated)

**Objective quantitative triggers** (non-discretionary):
1. DSCR below 1.15x combined or 1.0x senior for 2 consecutive quarters
2. Occupancy decline >10 percentage points from underwriting
3. Debt yield below 7.0% (or fund minimum)
4. Late payment >10 days for 2+ consecutive months
5. Maturity within 12 months with no clear exit/extension path
6. Reserve draws exceeding 25% of balance
7. Borrower financial covenant violation
8. Material tenant loss (>20% of revenue)
9. Construction: cost overruns exceeding contingency, delays >3 months
10. Interest reserve burn rate exceeding projections by >20%

**Leading indicators** (monitor before lagging indicators trigger):
- Occupancy trend (direction, not level)
- DSCR trajectory (improving or deteriorating)
- Lease rollover concentration in next 12 months
- Interest reserve burn rate
- Sponsor liquidity trend

### Step 5: Loss Reserve Summary (CECL Framework)

| Category | # Loans | Balance | PD (%) | LGD (%) | Expected Loss ($) | Reserve ($) |
|---|---|---|---|---|---|---|
| Performing | X | $X | 0.5-1.0% | 20-30% | $X | $X |
| Watch | X | $X | 3-5% | 25-35% | $X | $X |
| Concern | X | $X | 10-20% | 30-40% | $X | $X |
| Default | X | $X | 50-80% | 40-60% | $X | $X |
| **Total** | **X** | **$X** | | | **$X** | **$X** |
| Reserve as % of funded | | | | | | X% |

PD estimated by category using historical CMBS loss data. LGD varies by property type and LTV. Reserves must be forward-looking (CECL requirement) -- do not calibrate to trailing-12 loss rates during benign environments. Use cycle-average loss rates.

**Reserve adequacy test**: stress the portfolio (NOI -15%, values -20%) and recompute reserves. If the stressed reserve exceeds the current reserve by >50%, reserves are likely inadequate.

Benchmark: 1-3% of funded balance for a performing bridge/transitional book.

### Step 6: Vintage Performance

| Vintage | # Loans | Orig. Balance | Current Balance | WA DSCR (Orig) | WA DSCR (Current) | Modifications | Realized Losses |
|---|---|---|---|---|---|---|---|

Identify best/worst performing vintage with root cause analysis (rate environment at origination, property type mix, market timing).

### Step 7: Rate Exposure Dashboard

| Loan | Rate Type | Current Rate | Hedge Instrument | Hedge Strike | Hedge Expiry | Unhedged DSCR at +200 bps |
|---|---|---|---|---|---|---|

**Portfolio-level summary**:
- % floating rate: X%
- % floating with hedges in place: X%
- WA cap strike (hedged loans): X%
- Nearest hedge expiry: MM/YYYY
- Hedges expiring in next 12 months: X loans, $X balance
- Replacement cap cost estimate: $X
- Portfolio DSCR under SOFR +100/+200/+300 bps: X.XXx / X.XXx / X.XXx
- Loans breaching DSCR 1.25x under +200 bps: X loans, $X balance

### Step 8: Facility Monitoring (if applicable)

**Borrowing base**:
| Item | Amount |
|---|---|
| Eligible collateral (market value) | $X |
| Advance rate | X% |
| Total borrowing base | $X |
| Current drawn | $X |
| Available capacity | $X |
| Utilization | X% |

**Covenant dashboard**:
| Covenant | Threshold | Current | Cushion | Status |
|---|---|---|---|---|
| Minimum net worth | $X | $X | $X | |
| Minimum liquidity | $X | $X | $X | |
| Maximum leverage | X:1 | X:1 | | |
| NPL percentage | <X% | X% | | |
| WA portfolio metrics | varies | varies | | |

**Margin call stress test**:
| Collateral Decline | Collateral Value | Borrowing Base | Margin Call | Cure Timeline |
|---|---|---|---|---|
| -10% | $X | $X | $X | 5-10 business days |
| -20% | $X | $X | $X | |
| -30% | $X | $X | $X | |

A 15% collateral decline on a 75% advance rate facility creates a margin call equal to ~60% of the decline. Without liquid reserves or callable capital, forced deleveraging destroys value.

### Step 9: LP Reporting Package Outline

| Section | Content |
|---|---|
| Portfolio composition | Property type, geography, rate type, LTV band distributions |
| Performance summary | WA metrics, trends, comparison to prior period |
| Watchlist detail | New additions, migrations, resolutions, action plans |
| Origination activity | New loans closed, terms, pipeline |
| Repayments/realizations | Payoffs, sales, realized gains/losses |
| Loss reserve changes | Reserve movement, methodology, adequacy |
| Forward-looking commentary | Maturity wall, market outlook, planned actions |

## Output Format

Present results in this order:

1. **Portfolio Summary Dashboard** -- WA metrics with trend and assessment
2. **Maturity Schedule** -- quarterly wall with extension/refi feasibility
3. **Concentration Dashboard** -- limits vs. current with traffic lights
4. **Watchlist** -- objective triggers, categories, action plans, timelines
5. **Loss Reserves** -- CECL-based with adequacy test
6. **Vintage Performance** -- cohort analysis with root cause
7. **Rate Exposure** -- floating rate, hedge coverage, stress scenarios
8. **Facility Monitoring** -- borrowing base, covenants, margin call stress (if applicable)
9. **LP Reporting Outline** -- section headers with content guidance

## Red Flags & Failure Modes

1. **Subjective watchlist criteria**: The watchlist must use objective, quantifiable triggers. If portfolio teams resist adding loans because it "looks bad to LPs," the monitoring system is broken.
2. **Origination LTV as current LTV**: Origination LTV is stale. A loan at 65% LTV in 2021 may be 85%+ in 2024 based on current cap rates. Always show both origination and current (mark-to-market) LTV.
3. **Trailing-period CECL calibration**: Calibrating loss reserves to trailing-12-month loss rates during benign environments produces inadequate reserves. Use cycle-average loss rates.
4. **Missing leading indicators**: Payment delinquency is the last thing that breaks. Monitor occupancy trends, DSCR trajectory, lease rollover, interest reserve burn rate, and sponsor liquidity -- these predict problems 6-12 months ahead.
5. **Ignoring hedge expiration**: What percentage of the floating-rate book has hedges expiring in the next 12 months? Replacement cap costs may be multiples of the original premium. This is a leading indicator of future debt service pressure.
6. **Margin call surprise**: Warehouse facility margin calls have 5-10 business day cure periods. Stress test the facility regularly, not just when markets move.

## Chain Notes

- **Downstream**: workout-playbook (loans classified "Concern" or "Default" transition to workout), refi-decision-analyzer (loans with maturity <18 months trigger refi analysis)
- **Upstream**: loan-sizing-engine (mark-to-market LTV uses current sizing constraints)
- **Peer**: capital-stack-optimizer (portfolio-level hedging assessment), reit-profile-builder (equity-side portfolio analysis)

Related Skills

Quarterly Portfolio Review

6
from mariourquia/cre-skills-plugin

Portfolio-level quarterly review covering same-store trend, market concentration, watchlist distribution, capex progress, lease-up status, forecast discipline, covenant posture, and fund-level context. Produces the board and investor narrative drafts.

Portfolio Manager (Residential Multifamily)

6
from mariourquia/cre-skills-plugin

Portfolio- and fund-level leader. Aggregates asset_manager outputs into portfolio performance and strategy. Owns portfolio concentration, same-store growth, debt-ladder posture, and investor-facing narrative. Approves asset-level recommendations requiring portfolio or fund authority; routes disposition, acquisition, and recap pivots to executive leadership.

portfolio-allocator

6
from mariourquia/cre-skills-plugin

Portfolio-level allocation engine that maps current holdings by property type, geography, risk profile, and vintage year against institutional targets, identifies over/under-weights, runs concentration risk analysis (HHI, tenant exposure, lease maturity), and produces a multi-year rebalancing execution plan with transaction cost budgets.

debt-covenant-monitor

6
from mariourquia/cre-skills-plugin

Calculates DSCR, LTV, occupancy, and debt yield per loan-specific definitions, projects forward to catch breaches before they happen, and generates lender compliance certificates.

workout-playbook

6
from mariourquia/cre-skills-plugin

Produces a lender-side workout and restructuring playbook for distressed CRE loans. Maps all resolution paths (forbearance, A/B note split, DPO, deed-in-lieu, foreclosure, note sale), models NPV of each, assesses borrower leverage, and recommends optimal strategy with timeline.

Work Order Triage

6
from mariourquia/cre-skills-plugin

Classifies work order urgency from free-text descriptions, assigns priority (P1-P4) with SLA deadlines, estimates cost, checks lease responsibility, and routes to the correct approval path.

warehouse-to-exhibit-mapper

6
from mariourquia/cre-skills-plugin

Maps validated, warehouse-ready tabular datasets into deck-ready EXHIBIT specifications and slide inputs. Selects table vs. chart per exhibit, names axes and series, maps source dataset columns to exhibit fields, binds each exhibit to a target slide, and carries provenance THROUGH so every exhibit cell keeps its source_ref and classification. Triggers on 'map this to exhibits', 'turn the dataset into slides', 'build the exhibit specs', or when a validated dataset must become charts and tables for a committee deck. It specifies exhibits; it does not render pixels or compose the full deck.

vendor-invoice-validator

6
from mariourquia/cre-skills-plugin

Validates vendor invoices against contract terms, scope of work, and market rates. Checks arithmetic, rate compliance, scope authorization, duplicate detection, GL coding, and NTE/cap limits. Assigns APPROVED, APPROVED WITH FLAGS, or HOLD FOR REVIEW verdict.

variance-narrative-generator

6
from mariourquia/cre-skills-plugin

Generates ownership-ready variance narratives from budget-vs-actual reports. Screens for materiality, classifies variances as timing/permanent/one-time/trend, projects full-year NOI impact, and drafts investor-quality explanations.

transfer-document-preparer

6
from mariourquia/cre-skills-plugin

Prepare entity transfer documents, closing document packages, and assignment agreements for CRE acquisitions. Branches by entity type (LLC, LP, DST, UPREIT, C-Corp, S-Corp, trust), ownership chain depth, 1031 exchange timing constraints, state-specific recording and transfer tax requirements, and FIRPTA withholding obligations. Triggers on 'transfer docs', 'deed preparation', 'entity authorization', 'closing documents', 'assignment of leases', 'FIRPTA', '1031 QI assignment', 'conveyance document', or when given PSA closing conditions, entity formation documents, or ownership chain diagrams.

title-commitment-reviewer

6
from mariourquia/cre-skills-plugin

Analyze ALTA title commitments, surveys, and Schedule B exceptions for CRE acquisitions. Identifies title defects, chain breaks, lien conflicts, and cure requirements. Triggers on 'title commitment', 'Schedule B exceptions', 'title review', 'title exceptions', 'encumbrances', 'survey cross-reference', 'title chain', 'mechanic's lien', 'title cure', or when given a title commitment document, survey, or lien search results.

term-sheet-builder

6
from mariourquia/cre-skills-plugin

Draft and negotiate CRE financing term sheets from lender quotes. Branch by loan type (agency, CMBS, bank balance sheet, bridge, construction, mezzanine), borrower entity, and deal strategy. Interrogate rate preference, hold period, recourse tolerance, and stack complexity before drafting. Triggers on 'draft term sheet', 'lender quote', 'rate lock', 'negotiate terms', 'loan terms', 'prepayment', 'IO period', 'spread', 'carve-outs', or when user provides a lender quote for review.