Methodology
Composite price equation
P_i,t = min { w₁·P_i,tTRADE + w₂·P_i,tCOMP + w₃·P_i,tMKT , L_i,t , P_i,tSECTOR_TRIGGER }
- Pillar 1 — Trade VWAP: time-decayed volume-weighted average of secondary trades.
w_j = q_j · exp(−ln 2 · δ_j / h); half-life h = 5 (DL) or 3 (ABF) trading days. Set q₁ = 0 if no trade in 30d. - Pillar 2 — Comparable issuer: median basket Z-spread + αilliq + βrating·Δrating + γsize·log₁₀(size), discounted via DCF (first-order duration approximation in POC).
- Pillar 3 — Sector index drift:
PMKT = P_{t−1} · (1 + β_i · ΔS_k,t) - Dynamic weights: w_j = (π_j · q_j) / Σ (π_k · q_k), with priors π = (0.55, 0.35, 0.10).
- Lowest-mark overlay: hard floor at lowest observed external co-lender mark.
- Sector trigger: if the sector's 5-day return falls below −2.5%, every position in that sector is marked down by that 5d return.
Data sourcing
| Input | Production source | POC source in this tool |
|---|---|---|
| Pillar 1 trades | ICE Private Credit Intelligence feed; Apollo market-making feed; LSTA settled trades → RS_DATA_WAREHOUSE.MARKET.SECONDARY_TRADES | Per-position trade tape, format price/size/days_ago; … |
| Pillar 2 comparables | ICE BAML indices; LSTA loan index; CDS curves; existing Edge BOND_REFERENCE, CDS_CURVES; new view COMP_BASKET_DAILY | User-entered basket median Z-spread + N (after IQR trim) |
| Cash flows | Existing Edge cash flow engine; /cashflows endpoint; RiskSpan Bond Analyzer MCP | First-order duration approximation: P ≈ 100 − (zpos − coupon) · ModDur |
| Pillar 3 sector index | ICE BAML; Morningstar/LSTA; Bloomberg ABS; RS NQM Spread Index → RS_DATA_WAREHOUSE.MARKET.SECTOR_INDEX_DAILY | User-entered 1d and 5d sector index returns |
| Lowest mark | BDC 10-Q/10-K filings; ICE PCI co-lender data; counterparty reports → new COLENDER_MARKS table | Optional per-position field |
| Sector trigger | Computed view on SECTOR_INDEX_DAILY; threshold parameter in config | Computed locally from 5d return + threshold |
Calibration parameters
Portfolio
| ID | Asset | Sector | Notional ($MM) | Coupon spread (bps) | ModDur (y) | Prev price | β to sector | Trades (price/size/days; …) | Basket med Z (bps) | Basket N | Δ rating (notches) | Sector 1d (%) | Sector 5d (%) | Lowest ext mark |
|---|
Trade format: price/size/days_ago; price/size/days_ago — e.g. 98.5/5/1; 98/3/4; 97.25/8/9. Leave blank for "no qualifying trade." Δ rating is position notch − basket median notch (positive = position weaker, adds spread). Lowest ext mark is optional — leave blank when no co-lender mark observed.