Obscura

FDIC Financials

Quarterly financials for every FDIC-insured bank: assets, deposits, income and capital.

fdic_financials — the dataset name to pass to the Obscura API.

Category Regulatory Columns 42 Refresh Daily Point-in-time available_date

What one row means

One FDIC-certified bank's (`cert`) key aggregated Call Report financial metrics -- total assets, deposits, equity, net income, ROA, ROE -- for a single quarterly reporting date, as exposed by FDIC BankFind's `/financials` endpoint (itself an aggregation of the institution's Consolidated Reports of Condition and Income / "Call Report" filed with the FFIEC).

One row per (cert, period_end) -- one row per FDIC-certified institution per quarterly report date.

Point-in-time availability

Every Obscura dataset carries available_date: the calendar day the publisher made the row available, day-of, with no session rounding. It is the one column a backtest filters on, and it means the same thing on every dataset in the catalog.

For fdic_financials: release_calendar: available_date = period_end (Call Report quarter-end / REPDTE) + 55 calendar days, a STORED generated column covering the ~30-35d FFIEC Call Report filing deadline plus FDIC BankFind aggregation/publish lag.

Refresh cadence

Obscura refreshes fdic_financials daily — the most frequent scheduled job that re-collects or re-exports it. This is Obscura's own pipeline cadence, not the upstream publisher's release schedule; when a row became public is recorded per row in available_date.

Schema — 42 columns

The full public column list for fdic_financials, with the meaning of every field. The same schema is served unauthenticated at https://api.obscura.trade/v1/catalog/fdic_financials.

ColumnTypeDescription
certbigint · not nullFDIC certificate number, the institution's unique regulatory identifier (BankFind field CERT, coerced from a JSON number to i64). Part of the primary key; the natural join key to other FDIC-published/ BankFind bank datasets.
period_enddate · not nullCall Report quarter-end reporting date (BankFind REPDTE), parsed from the source's 'YYYYMMDD' string. The period this row's financials cover -- NOT when they became public; see `available_date` for that. Part of the primary key alongside `cert`.
assetsdouble precisionTotal assets for the quarter, in $ thousands (BankFind ASSET field, the FFIEC Call Report convention of reporting in thousands of dollars). Nullable -- dropped to None when the source field is missing or non-numeric for that institution/quarter.
depositsdouble precisionTotal deposits for the quarter, in $ thousands (BankFind DEP field). Nullable on missing/non-numeric source data.
equitydouble precisionTotal equity capital (net worth / regulatory capital) for the quarter, in $ thousands (BankFind EQ field). Nullable on missing/non-numeric source data.
net_incomedouble precisionNet income for the quarter, in $ thousands (BankFind NETINC field; can be negative for a loss quarter). Nullable on missing/non-numeric source data.
roadouble precisionReturn on assets, in percent (BankFind ROA field) -- FDIC's own computed ratio of (typically annualized) net income to average total assets for the quarter. Nullable on missing/non-numeric source data.
roedouble precisionReturn on equity, in percent (BankFind ROE field) -- FDIC's own computed ratio of (typically annualized) net income to average equity for the quarter. Nullable on missing/non-numeric source data.
rssd_idbigintFederal Reserve RSSD identifier of this institution (BankFind RSSDID), the primary key linking a bank to Fed/NIC (National Information Center) data -- the top cross-regulator join key. Nullable on missing source.
rssd_hcrbigintRSSD identifier of the top-tier holding company (BankFind RSSDHCR), parsed from the source's numeric string. The parent-org linkage key -- a DIFFERENT entity's RSSD than `rssd_id`, so it is not the row's own `rssd`. Nullable on missing source.
name_hcrtextName of the top-tier holding company (BankFind NAMEHCR); the human-readable label for the parent org referenced by `rssd_hcr`. Nullable/None when blank.
par_certbigintFDIC certificate number of the direct parent institution (BankFind PARCERT), parsed from the source's numeric string -- the intra-FDIC ownership linkage. `0` in the source means "no parent". Nullable.
nametextShort institution name (BankFind NAME); the human-readable entity label for this `cert`. Nullable/None when blank.
name_fulltextFull/legal institution name (BankFind NAMEFULL); the long-form variant of `name`. Nullable/None when blank.
statetextTwo-letter state abbreviation of the institution's headquarters (BankFind STALP). Nullable/None when blank.
state_nametextFull state name of the institution's headquarters (BankFind STNAME); the spelled-out variant of `state`. Nullable/None when blank.
citytextCity of the institution's headquarters (BankFind CITY). Nullable/None when blank.
ziptextZIP code of the institution's headquarters (BankFind ZIP), stringified from the source's numeric value. Nullable/None when blank.
countytextCounty of the institution's headquarters (BankFind STCNTY); the source emits the county NAME, e.g. "Green Lake", not a FIPS code. Nullable.
cbsatextCore Based Statistical Area / metro label of the headquarters (BankFind CBSA); the source emits a metro NAME string, e.g. "MADISON, WI", or null for non-metro institutions. Nullable/None when blank.
msa_nametextMetropolitan Statistical Area name (BankFind MSA_NAME); an alternate metro label, often blank. Nullable/None when blank.
activebigintActive/inactive status flag (BankFind ACTIVE): 1 = live insured institution, 0 = inactive (failed/merged/closed). Distinguishes live vs. dead banks. Nullable on missing source.
bank_classtextCharter/regulator class (BankFind BKCLASS): N (national bank), SM/NM (state member/nonmember), SB (savings bank), SA (savings association), etc. -- the institution's regulatory category. Nullable/None when blank.
num_empbigintNumber of employees (BankFind NUMEMP), an institution-scale attribute. Nullable on missing source.
established_datedateDate the institution was established (BankFind ESTYMD), parsed from the source's 'YYYYMMDD' integer. Entity-lifecycle timestamp. Nullable.
effective_datedateEffective date of the institution's current structure/record (BankFind EFFDATE), parsed from 'YYYYMMDD'. Nullable on missing source.
end_effective_datedateEnd of the effective-record period (BankFind ENDEFYMD), parsed from 'YYYYMMDD'; the source uses 99991231 (9999-12-31) as an open-ended sentinel. Nullable on missing source.
insured_datedateDate the institution's FDIC insurance took effect (BankFind INSDATE), parsed from 'YYYYMMDD'. Nullable on missing source.
liabilitiesdouble precisionTotal liabilities for the quarter, in $ thousands (BankFind LIAB). Nullable on missing/non-numeric source data.
net_loans_leasesdouble precisionNet loans and leases for the quarter, in $ thousands (BankFind LNLSNET). Nullable on missing/non-numeric source data.
interest_incomedouble precisionTotal interest income for the quarter, in $ thousands (BankFind INTINC). Nullable on missing/non-numeric source data.
interest_expensedouble precisionTotal interest expense for the quarter, in $ thousands (BankFind EINTEXP; the plain `INTEXP` key is not exposed by `/financials`). Nullable on missing/non-numeric source data.
noninterest_incomedouble precisionTotal noninterest income for the quarter, in $ thousands (BankFind NONII). Nullable on missing/non-numeric source data.
noninterest_expensedouble precisionTotal noninterest expense for the quarter, in $ thousands (BankFind NONIX). Nullable on missing/non-numeric source data.
net_interest_margindouble precisionNet interest margin figure for the quarter (BankFind NIM), in $ thousands as emitted by the source. Nullable on missing/non-numeric source data.
core_depositsdouble precisionCore deposits for the quarter, in $ thousands (BankFind COREDEP). Nullable on missing/non-numeric source data.
deposits_insureddouble precisionInsured deposits for the quarter, in $ thousands (BankFind DEPINS). Nullable on missing/non-numeric source data.
deposits_uninsureddouble precisionUninsured deposits for the quarter, in $ thousands (BankFind DEPUNINS). Nullable on missing/non-numeric source data.
tier1_leverage_ratiodouble precisionTier-1 (core capital) leverage ratio, in percent (BankFind RBC1AAJ) -- a key regulatory capital-adequacy signal. Nullable on missing/non-numeric source data.
total_rbc_ratiodouble precisionTotal risk-based capital ratio, in percent (BankFind RBCRWAJ) -- a key regulatory capital-adequacy signal. Nullable on missing/non-numeric source data.
cblr_indicatorbigintCommunity Bank Leverage Ratio framework indicator (BankFind CBLRIND): 1 = institution elected the CBLR framework, 0 = did not. A flag, not the ratio value itself. Nullable on missing source.
available_datedate · not nullPUBLIC-availability date = period_end + 55 calendar days, a STORED generated column implementing the release-calendar rule (FFIEC Call Report filing deadline + FDIC BankFind aggregation/publish lag). The point-in-time column to filter/join on -- NEVER `period_end` itself, which is only the reporting period, not when the numbers went public.

Access fdic_financials

Two delivery paths, one identifier. Both require an Obscura account and an active subscription; the catalog entry and the schema above are public.

import obscura

client = obscura.Client("obs_live_…")

df = client.query(
    dataset="fdic_financials",
    start="2024-01-01",
)

Create a free account Browse all 95 datasets

Frequently asked questions

What is in the fdic_financials dataset?

Quarterly financials for every FDIC-insured bank: assets, deposits, income and capital. One FDIC-certified bank's (`cert`) key aggregated Call Report financial metrics -- total assets, deposits, equity, net income, ROA, ROE -- for a single quarterly reporting date, as exposed by FDIC BankFind's `/financials` endpoint (itself an aggregation of the institution's Consolidated Reports of Condition and Income / "Call Report" filed with the FFIEC).

How do I avoid look-ahead bias with fdic_financials?

Filter on fdic_financials.available_date, the day the publisher made the row public. For this dataset that date is derived as follows — release_calendar: available_date = period_end (Call Report quarter-end / REPDTE) + 55 calendar days, a STORED generated column covering the ~30-35d FFIEC Call Report filing deadline plus FDIC BankFind aggregation/publish lag. A query of the form WHERE available_date <= '<as-of date>' never sees a row before it existed.

In what formats can I get fdic_financials?

As a Parquet bulk export (POST https://api.obscura.trade/v1/download) or as JSON from the typed query API (POST https://api.obscura.trade/v1/query), both with dataset="fdic_financials". The column schema is public at https://api.obscura.trade/v1/catalog/fdic_financials.

How often is fdic_financials updated?

Obscura refreshes fdic_financials on a daily schedule — that is the most frequent scheduled job that re-collects or re-exports the table. It is Obscura's own pipeline cadence, not the upstream publisher's release schedule; when the publisher makes a row available is described by the availability rule above, and is recorded per row in available_date.

Related datasets

CFTC Commitments of TradersThe CFTC's weekly Commitments of Traders report: how commercial, non-commercial and small traders are positioned in each… ECHO Enforcement CasesEnvironmental enforcement actions and penalties from the EPA's ECHO database. ECHO FacilitiesEPA-regulated facilities and their compliance history, from ECHO. EDGAR 13F FilingsMetadata for every 13F report, the quarterly filing where large institutional managers list their U.S. equity holdings. EDGAR 13F HoldingsThe line-item positions inside each 13F: which manager held which security, and how much, each quarter. EDGAR 8-K ItemsThe item numbers reported on each 8-K (5.02 officer changes, 2.01 acquisitions, 1.01 material agreements, and so on), so… EDGAR Dilution MetricsShare-issuance headroom and overhang metrics built from companies' XBRL filings: authorized versus outstanding shares, a… EDGAR Filing TextSignals mined from the text of filings, such as mentions of distress, litigation, going-concern doubt and restructuring.