Skip to main content
Parameters, response columns and types are generated from the SQL catalog and render under Endpoints → Screens in the sidebar. This page carries what a schema cannot: what each screen measures, what else looks the same, and how to narrow one that is too wide.
These are signals, not verdicts. A row is a fund or a series whose public filings crossed a stated threshold. It is not a score, a rating, a rank of suspicion or a finding, and none of those is served. Every pattern below has an innocent explanation that produces exactly the same row. Confirm against the fund’s own filings before repeating anything a screen returns.

Overview

The same screens the dashboard runs on /suspicious, /dormant and /fidc, served from one definition: each screen_* function calls the screen the dashboard reads, so the page and the API cannot disagree about who crossed a line. Three more screens look at how funds file rather than what they hold — restatements, late and silent filers — and have no dashboard page. They follow the same contract and live on Filing-behaviour screens. The machine-readable twin is screens in catalog(): per screen, the defaults, the allowed ranges, the output filters and a meaning that says what else produces the same pattern.

Every row says how it got there

Two columns close every row, whatever the screen:
A row read without its params is a claim without its premise. Keep them together when you pass a result on.

Calling one

With no arguments, every screen reproduces its dashboard page.
A threshold outside its range, or null, raises 22023 naming the range. It is never clamped: a screen evaluated at a threshold you did not ask for is a different screen with your label on it.

Too many rows: narrow, don’t page

Screens do not page. Above one 1,000-row page they raise 22023 (Conventions → Row caps) — a screen is a short list or it is the wrong screen. Two of them exceed a page at their defaults, and take output filters that narrow the result without changing the screen (echoed in params like the thresholds):
  • screen_dormant_funds — p_dormancy (empty_shell or parked_capital) and p_min_nav (keep classes whose last NAV is at least this). The parked-capital population alone was 8,257 classes in September 2026: pin p_dormancy and walk p_min_nav bands.
  • screen_delinquency_drivers — p_driver, one of the five classes. Every FIDC with enough observations gets a row, stable included.
An unknown filter value raises 22023; it is not ignored.

What each screen cannot tell apart

Windows and freshness

  • dormant_funds, dormant_trend and delinquency_drivers anchor on the family’s latest complete period (coverage().complete_through), never on today, so a partially-filed month cannot read as “no flow”.
  • captive_vehicles and evergreen_aging look back from today; a month CVM has not published yet is simply absent.
  • delinquency_drivers refuses a window that starts before 2025-01: FIDC delinquency is not filed before then (the regime break). Shorten p_months or move p_end.

Limits

No tier ceiling: the page is the ceiling, identically for every caller. The binding limit is the query budget — 3 s anonymous, 8 s signed in. dormant_trend over its full 60-month range is the heaviest call here; if it times out anonymously, sign in or shorten p_history_months.