[ Leaderboards · Methodology ]

How each board is computed

Six boards rank BDCs (or sectors) on a single credit signal. Each board's formula, source columns, sort rule, and per-row display format are documented below. The "see all" link on every leaderboard card routes to the equivalent /browse view sorted by the same metric.

[ Universal filters ]

Every BDC must clear two thresholds before being ranked on any board: ≥ $100M total debt fair value and ≥ 5 debt positions. The base universe is one row per BDC — its latest filing — limited to debt instruments (equity excluded per the 2026-05-22 audit). If fewer than 10 BDCs qualify, the rail falls back to fixture data rather than rendering a half-empty grid.

Non-Accruals

Measures:Share of debt fair value (FV) where the loan stopped paying interest.

Formula:SUM(fv WHERE is_on_non_accrual) ÷ SUM(fv)

Source:holding_active.is_on_non_accrual + .fair_value_usd

Sort:Least stressed = na% ASC. Most stressed = na% DESC. Tiebreak: total FV DESC.

Renders:primary 0.4% · secondary count of NA positions (e.g. 12 pos).

PIK

Measures:Share of debt FV paying interest in-kind instead of cash — higher = weaker borrower cash flow.

Formula:SUM(fv WHERE is_pik) ÷ SUM(fv)

Source:holding_active.is_pik + .fair_value_usd

Sort:Lowest reliance = pik% ASC. Highest reliance = pik% DESC. Tiebreak: total FV DESC.

Renders:primary 5.4% · secondary count of PIK positions.

Mark-Downs

Measures:FV-weighted average mark across debt positions — same formula the BDC browse table uses, so clicking 'see all' lands sorted by the SAME value.

Formula:SUM(fv × mark_pct_par) ÷ SUM(fv)

Source:holding_active.mark_pct_par + .fair_value_usd. Equivalent to mv_bdc_summary.avg_portfolio_mark_pct (the BDC table's weighted_avg_mark column).

Sort:Least stressed = weighted avg DESC (closer to par at top). Most stressed = weighted avg ASC (deepest impairment at top). Tiebreak: total FV DESC.

Renders:primary 98.7% (the weighted average) · secondary count of positions <90% par (e.g. 1 pos).

Yield

Measures:Trailing-12M dividend yield at current price. Public-traded only.

Formula:market_data_daily.dividend_yield_pct (latest trade date)

Source:market_data_daily, LATERAL join on BDC's ticker

Sort:Lowest yield ASC. Highest yield DESC. Tiebreak: total FV DESC. Excludes BDCs without market data (~39 of ~50 BDCs qualify).

Renders:primary 7.1% · no secondary.

Discount to NAV

Measures:Market price vs. published NAV. Positive = premium; negative = discount.

Formula:market_data_daily.nav_discount_premium_pct (latest)

Source:market_data_daily, same LATERAL join as Yield

Sort:Premium / smallest discount at top = DESC. Deepest discount at bottom = ASC. Tiebreak: total FV DESC.

Renders:primary +58% (premium) or −44% (discount) · secondary PREM or DISC.

Industries

Measures:Non-accrual issuer count per sector, aggregated across all BDC holders.

Formula:COUNT(DISTINCT spine_entity_id WHERE is_on_non_accrual) per sector

Source:spine_entity.sector + holding_active.is_on_non_accrual

Sort:Least affected ASC. Most affected DESC. Sectorless issuers excluded.

Renders:primary 38 · secondary ISSUERS. Ticker column shows the sector name.

Reading notes

NA / PIK / MK chips on each row are the same per-BDC totals on every board — context for "who this BDC is," not metric-specific. The same BDC shows the same chip counts on the Yield board as on the Mark-Downs board.

Why "0.0%" appears at the top of cleanest tiers. Many large BDCs genuinely have 0% non-accruals or 0% PIK in a given quarter's filings. The ascending sort puts them at the top of the least-stressed tier; the total-FV tiebreaker orders the tied group by portfolio size. So the visible result is mathematically correct — the largest clean BDC wins. Future iterations may switch the cleanest sort to "smallest non-zero" to surface differentiation; open question for design review.

WARREN BY QRATE LEADERBOARDS RECONCILED, NOT AGGREGATEDL3 GOLDEN COPY V1.0 © 2026 QRATE, INC.