GSE loan performance
get_loan_performanceFannie Mae and Freddie Mac single-family loan-performance analytics for exactly one topic.
Topics:
credit: monthly origination FICO and LTV (origination-UPB weighted). data.series {fico, ltv} and data.latest.
prepayment: monthly CPR and SMM (UPB weighted).
delinquency: monthly 30/60/90+ day delinquency rates (UPB-weighted stock rates).
loss: monthly loss severity (percent) and net loss (USD billions), plus data.latest_waterfall.
vintage: cumulative default-rate curves by vintage year over loan age (data.series = [{vintage, points}]).
transitions: loan-level monthly flows between Current/DQ30/DQ60/DQ90+/Modified/Liquidated (data.flows, top_n rows of {from, to, loans, upb, prob}) and data.history {cure_history, roll_30_60_history, roll_60_90_history}.
modification: outcomes at 6/12/18/24/36 months after a first 90+ DPD event, Modified vs NotModified arms (data.horizons, data.outcome_states, data.cohort_size, data.pooled, data.recent_vintages).
rate_sensitivity: modelled CPR under rate shocks (data.scenario = [{rate_shock_bps, predicted_cpr}], data.model {current_rate, current_cpr, slope}).
lock_in: active book by WAC vs today's mortgage rate: data.summary {total_upb, loan_count, wac_weighted, pct_below_mtg, pct_200bps_otm, pct_100bps_otm, pct_in_money} and data.largest_wac_age_cells {wac, age_band, upb}.
Use for: agency credit quality, prepayment speeds, delinquency, roll and cure rates, modification outcomes, losses, the lock-in effect. Do not use for: originator volume or market share (search_lenders / get_lender_profile), today's rates (get_market_snapshot), per-servicer performance (get_servicer_analytics).
Time-series topics return data.series {metric: [{date, value}, ...]} downsampled to max_points, plus data.latest. Scope is public GSE loan-level disclosures, not the whole U.S. market; meta.as_of is the latest reporting month.
Behavior: read-only, no auth or API key, no PII, idempotent and safe to retry. The public endpoint https://mtgmon.com/mcp allows about 60 requests/min and 250 tool calls/day per client IP. Result shape is {data, meta}; meta carries available, as_of, source_scope, weighting, units, cache_status, caveats, and truncated. If meta.available is false the data is unavailable or the cache is still warming (retry after a few seconds); never report it as zero.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| gse | No | 'all' = Fannie Mae + Freddie Mac combined (default), 'fnma' = Fannie Mae only, 'fhlmc' = Freddie Mac only. | all |
| top_n | No | Maximum ranked rows, 1-50 (default 20): transition flows, modification vintages, or lock-in WAC/age cells. Ignored by other topics. | |
| topic | Yes | Exactly one analytics topic: credit, prepayment, delinquency, loss (monthly time series); vintage (curves by vintage year); transitions (loan-level state flows); modification (post-90DPD outcomes); rate_sensitivity (CPR under rate shocks); lock_in (book by WAC vs today's rate). | |
| to_date | No | Latest month to include, ISO date YYYY-MM-DD; must be on or after from_date. Default: latest available month. | |
| from_date | No | Earliest month to include, ISO date YYYY-MM-DD. Applies to credit, prepayment, delinquency, loss, and transitions history. Default: full available history. | |
| max_points | No | Maximum points per time series after uniform downsampling, 1-120 (default 60). Use 120 for the finest monthly detail. Applies to time-series, vintage, and transitions topics. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | ||
| meta | Yes |