Filings and amendments
A credit union files a Call Report once a quarter and may amend it, sometimes years later. NCUA's web service returns only the current version of a filing, and no endpoint accepts an old submission id, so a replaced filing cannot be fetched again. callbase keeps every version it has collected, the replaced ones included.
The tables hold the winning filing only. accounts, accounts_text and profiles carry exactly one filing per credit union per quarter, the newest. You never resolve amendments yourself.
The index holds all of them. The submissions index has
one row per filing held, and submissions.status says which one is current:
SELECT quarter,
count(*) FILTER (WHERE status = 'current') AS current,
count(*) FILTER (WHERE status = 'superseded') AS superseded
FROM read_parquet('https://data.quartercall.com/index/submissions.parquet')
GROUP BY quarter
ORDER BY quarter DESC; submissions.version and submissions.status are derived by callbase: it recognises an amendment
when a filing arrives for a quarter and charter it already holds, under a different submission id.
So an amendment made before callbase began collecting cannot be seen, and the history starts
where the collection did.
How this differs from NCUA's bulk files. NCUA's quarterly ZIPs are not regenerated after every
amendment, so a late amendment to an old quarter is in this data and not in the ZIP. submissions.source says where each filing came from: web and seed from the web service, bulk where no web-service capture exists yet.
Preliminary until NCUA's scrub. A quarter's filings arrive before NCUA has checked them, and NCUA
calls that data non-authorized until it publishes the quarter's bulk file. The manifest will name
the latest quarter NCUA has published a bulk file for in freshness.latest_bulk_cycle; until it
carries that key, treat every quarter as preliminary and do not headline its figures as final.
submissions.first_seen is when callbase first collected a filing. It is NULL for filings
collected before callbase began recording that time; the manifest's index.first_seen_from says
when it began.