Project Record
Portfolio-Aware Liquidity Scoring for Bonds, Loans and CDS
Preview prompt
Summarize the Ionitsa project record titled "Portfolio-Aware Liquidity Scoring for Bonds, Loans and CDS" for a technical reader. Cover the problem or research question, implementation or method, evidence or results, and limitations. Separate facts stated on the page from your own assessment, note anything unclear or unverified, and avoid promotional language. Primary source: https://ionitsa.com/projects/portfolio-aware-credit-liquidity-score.md Canonical page: https://ionitsa.com/projects/portfolio-aware-credit-liquidity-score/
A production liquidity score that combines Markit and Bloomberg market evidence with position concentration, liquidation capacity and point-in-time stress conditions.
Executive Summary
A credit instrument can look liquid in a market-data terminal and still be hard for a particular fund to exit. The missing variable is the position itself. A 25 million line do not have the same liquidity even when they share an identifier, price and vendor score. The same problem appears in syndicated loans, where transfer and settlement frictions matter, and in CDS, where liquidity belongs to a legal contract and tenor rather than merely an issuer name.
I implemented a portfolio-aware liquidity framework across bonds, loans and CDS. It combined Markit and Bloomberg observations with proprietary positions, fund NAV, issuer concentration and internal execution history. The output was a bounded score, an estimated liquidation horizon, a stress score and a set of reason codes. This let portfolio and risk teams distinguish a liquid instrument from a liquid position.
The central design choice was to avoid treating either vendor as ground truth. Inputs were normalized within comparable market buckets, stale or conflicting evidence was penalized, and the resulting market score was adjusted for the fund’s share of executable capacity. A point-in-time regime variable made the adjustment stronger when spreads widened, volatility rose or dealer support weakened.
This project demonstrates fixed-income market microstructure, cross-asset data normalization, portfolio risk engineering and explainable model design. The formulation below reconstructs the implemented idea without exposing licensed vendor fields, internal thresholds or proprietary fund data.
Problem
Liquidity is not a permanent security attribute. It is conditional on the side of the trade, requested size, time horizon and market state. Define the question at observation time as:
What fraction of position could the fund execute within horizon , at an acceptable cost, using only information available by ?
Three distinctions follow.
- Instrument liquidity describes the market’s general capacity to trade a bond, loan facility or CDS contract.
- Position liquidity asks whether the fund’s actual balance is small or large relative to that capacity.
- Portfolio liquidity asks whether many positions are likely to demand the same scarce dealer balance sheet during a redemption or risk-reduction event.
A simple average of vendor scores answers only part of the first question. The implemented score therefore moves in layers: market evidence, data quality, position capacity and market regime.
Inputs and instrument identity
The production feature dictionary was vendor- and entitlement-specific. The model only requires economically meaningful groups, so the public description uses generic fields rather than claiming a particular proprietary schema.
| Dimension | Bonds | Loans | CDS |
|---|---|---|---|
| Tightness | executable or composite bid-offer | bid-offer and price dispersion | par-spread or upfront bid-offer |
| Depth | observable size, trade-size proxy | facility depth and dealer indications | quoted notional and dealer breadth |
| Activity | trade count, volume, days since trade | update frequency and recent transfers | quote updates and tenor activity |
| Resilience | spread recovery after shocks | price-update recovery | quote return and curve normalization |
| Friction | denomination, issue size, optionality | assignment, consent and settlement | tier, currency, clause, tenor and roll |
Identity is resolved before scoring. A bond requires a point-in-time security identifier; a loan requires the facility or tranche rather than only the borrower; CDS requires the reference entity, seniority, currency, restructuring clause, tenor and contract version. A confident score on the wrong instrument is worse than a missing score.
Bloomberg describes its Liquidity Assessment as estimating liquidation cost and horizon at position level under current and stressed conditions. S&P Global’s fixed-income pricing suite, which includes products originating from IHS Markit, describes pricing and liquidity measures across bonds, leveraged loans and CDS. Those sources support the data layer; they do not remove the need for fund-specific calibration.
Step 1 — point-in-time normalization
Raw measures cannot be compared directly across asset classes, currencies, ratings or maturities. A five-basis-point spread means something different for a government bond, a high-yield bond and five-year CDS. Each feature is first directionally aligned so that larger means more liquid, then transformed within a comparable bucket using an empirical cumulative distribution known at time :
The reference distribution ends at , before the scored observation. This prevents future market structure from leaking into historical scores. Buckets can be hierarchical—asset class, currency, rating, maturity and seniority—with shrinkage toward a broader parent bucket when the sample is thin.
For a cost-like feature such as bid-offer, the sign is reversed before applying the transform. Extreme observations are winsorized using thresholds estimated from the same trailing window. Missing values are not silently imputed as average liquidity.
Step 2 — vendor evidence without false precision
Let be the normalized score from source , after combining its available feature groups. Source weights depend on coverage, historical freshness and validation against internal executions, and sum to one. The fused market score is:
The weighted geometric mean is intentionally conservative: one weak source pulls the result down more than it would under an arithmetic mean. The second term penalizes vendor disagreement. Disagreement is information—it often signals a stale composite, a sparse market or a mapping problem.
Data quality enters separately:
where is age since the last valid observation measured in asset-class-appropriate units and is a weighted missingness score. This prevents a stale but historically attractive quote from retaining a high liquidity classification.
Step 3 — make the position part of the score
Let be the absolute portfolio balance at market value, the fund’s net asset value, and the estimated executable daily capacity. Two ratios capture different risks:
is the position’s fund concentration. is expected days to liquidate when the fund limits itself to participation rate . Capacity is estimated from vendor depth and activity, then recalibrated against the fund’s own RFQs, fills, slippage and dealer responses. For a market with no trustworthy volume, is a conservative executable-size estimate rather than a fabricated ADV.
Issuer or risk-cluster crowding matters too. Let be exposure to issuer, sector, country or a dealer-dependent liquidity bucket . This catches the case where ten modest positions all need the same exit channel.
Step 4 — market conditions as of the scoring date
The model uses a contemporaneous regime index, not today’s market description applied retrospectively. Let be trailing standardized indicators such as broad credit bid-offer, cross-sectional quote dispersion, rates volatility, credit-index volatility, funding stress and dealer-response breadth. Then:
lies between zero and one, with one representing severe stress. All standardization parameters are estimated using observations available at . The feature set can vary with entitlement, but its meaning must remain stable: it measures the probability that normal execution assumptions are failing.
The model includes an interaction between regime and baseline illiquidity. Stress should hurt a thin loan or off-the-run bond more than an already deep, actively quoted instrument.
The portfolio-aware liquidity score
The layers combine on the log-odds scale. Define . The instrument-position score is:
The starred quantities are policy scales, not universal constants. For example, can represent the maximum comfortable liquidation horizon for the instrument class. The coefficients are constrained to be non-negative so that more concentration, longer liquidation time, greater crowding or greater stress cannot mechanically improve liquidity.
This form has useful operating properties:
- the result remains between zero and 100;
- doubling a tiny balance has little effect, while increasing an already large position is penalized;
- stale or incomplete data can suppress an otherwise strong score;
- market stress affects every position but penalizes weak instruments more;
- every movement can be decomposed into vendor, data, position and regime contributions.
The score is a ranking and control variable, not a promise that an order will execute at a stated price.
From positions to the fund
A NAV-weighted arithmetic mean can hide a dangerous tail: many liquid holdings may overwhelm one position that cannot be sold. The portfolio headline is therefore a weighted harmonic mean:
For decisions, the more direct quantity is the fraction of the portfolio that can be liquidated by horizon :
is useful for monitoring and limits; answers a cash planning question. Both should be reported by asset class and under normal and stressed participation assumptions.
Worked example
Consider three hypothetical positions in a $500 million fund. The values below illustrate the mechanics; they are not historical results or vendor outputs.
| Position | Market score | Balance / NAV | Days to liquidate | Regime | Final score |
|---|---|---|---|---|---|
| Actively traded bond | 0.82 | 0.4% | 0.7 | 0.30 | 72 |
| Leveraged loan | 0.61 | 2.4% | 6.0 | 0.30 | 39 |
| Five-year CDS | 0.76 | 0.8% | 1.8 | 0.30 | 62 |
If the bond balance rises from 0.4% to 4.0% of NAV while market observations are unchanged, its final score must fall: the instrument did not become less liquid, but the fund’s position did. If the regime index then rises from 0.30 to 0.85, the loan receives a larger additional penalty because its baseline market score was already weaker. That is the intended behaviour.
Implementation
The production pipeline was organized around point-in-time reproducibility:
flowchart LR A[Vendor files and APIs] --> B[Identity and timestamp controls] B --> C[Asset-class normalization] C --> D[Vendor fusion and data-quality penalty] E[Positions, NAV and internal executions] --> F[Capacity and concentration] G[Market-wide indicators] --> H[As-of regime index] D --> I[Portfolio-aware score] F --> I H --> I I --> J[Limits, dashboards and reason codes]
Every observation carried source, observed-at, received-at and effective-at
timestamps. The daily job froze its inputs, score version, calibration version
and overrides. Outputs included the score, expected liquidation horizon,
normal/stress liquidatable fractions and reason codes such as STALE_QUOTE,
VENDOR_DISAGREEMENT, POSITION_TOO_LARGE and STRESS_SENSITIVE.
Scores were recalculated after positions and NAV arrived, rather than copied unchanged from a market-data feed. Manual overrides required an expiry date and an owner so that a one-off trading judgement could not become permanent model state.
Calibration and validation
Internal execution data turns the framework from a plausible formula into a fund-specific model. Calibration targets can include realized half-spread, slippage, time to completion, fill ratio and dealer response rate. The preferred validation is walk-forward: coefficients and normalization windows are fit on past observations and tested on later executions.
The score should pass five classes of tests:
- Monotonicity: larger balances, staler quotes and greater stress never improve the score while other inputs are fixed.
- Ranking: lower-scored positions subsequently exhibit higher cost, lower fill rates or longer completion times.
- Calibration: predicted liquidation bands match realized frequencies.
- Stress stability: the model responds during known dislocations without requiring future information or arbitrary overrides.
- Mapping and lineage: each score can be reproduced from the exact contract, input snapshot and parameter version.
Performance is reported by asset class and liquidity bucket. A single pooled accuracy measure would let numerous liquid bonds disguise weak loan or CDS behaviour.
Trade-offs and model boundary
The model deliberately favors explainability over a black-box prediction of transaction cost. A monotone gradient-boosted model could estimate execution outcomes more flexibly, but a controlled score is easier to challenge, version and use in portfolio limits. The two can coexist: machine learning can estimate capacity or supply a challenger model without owning the final governance rule.
Vendor scores are correlated because they observe the same market, so source weights do not create independent evidence. Internal executions are also selection-biased: the fund trades what it believes it can trade. Limit orders, abandoned RFQs and quote requests should therefore be retained, not only fills.
CDS liquidity is not equivalent to the liquidity of the cash bond it may hedge. Loan settlement time is not the same as price impact. Short-side liquidity, borrow, consent, counterparty capacity and portfolio liquidation feedback may need separate penalties. The framework makes those additions explicit rather than hiding them in an unexplained vendor number.
References
- Bloomberg Liquidity Assessment — position-level liquidation cost and horizon under current and stressed conditions.
- S&P Global Fixed Income Pricing Suite — pricing and liquidity coverage for fixed income, loans and CDS, including products originating from IHS Markit.
- IOSCO, Open-ended Fund Liquidity and Risk — liquidity stress testing and the relationship between asset liquidity and redemption demand.
- BIS, Shifting Tides: Market Liquidity and Market-making in Fixed Income Instruments — turnover, bid-offer, dealer inventory and the fragility of liquidity under stress.