Obscura

Government Contract Tickers

A crosswalk from federal-contract recipient names to ticker symbols, so government awards can be matched to public companies.

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

Category Government Columns 5 Refresh Daily Entity key ticker Point-in-time available_date

What one row means

One recipient-name-to-ticker match: a distinct USAspending federal-contract recipient name that, after normalization (uppercase, strip punctuation and corporate suffixes like INC/CORP/LLC), exact-matches a normalized EDGAR company name, paired with that company's ticker and CIK — a derived crosswalk row, not a contract or event record. Built by normalizing recipient names against the EDGAR ticker dictionary so `usaspending_awards` can be joined per-ticker.

One row per recipient_name.

Derived in-database from edgar_tickers, usaspending_awards.

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 gov_contract_tickers: synced (ingestion/recompute time): available_date = synced_at::date — there is no source event to key on, this is a pure derived crosswalk recomputed and fully upserted on every run.

Refresh cadence

Obscura refreshes gov_contract_tickers 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 — 5 columns

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

ColumnTypeDescription
recipient_nametext · not nullRaw (non-normalized) USAspending recipient name as it appears in `usaspending_award.recipient_name`, e.g. "THE GEO GROUP, INC.". Primary/conflict key of the table — one row per distinct recipient name that found a match, upserted in place on every run.
tickertext · not nullStock ticker of the matched EDGAR-listed company, taken from `edgar_ticker.ticker` for the dictionary entry whose normalized name equals the recipient's normalized name. On a normalization collision, the shorter ticker string wins (a heuristic tie-break, not a guarantee of the "primary" class).
cikbigint · not nullSEC Central Index Key of the matched company, copied from `edgar_ticker.cik` for the same dictionary entry that supplied `ticker`. Lets the row join directly to edgar_filings/edgar_ticker without a second name-matching pass.
matched_nametextThe original (pre-normalization) EDGAR company display name that the recipient matched against, e.g. "GEO GROUP INC" for recipient "THE GEO GROUP, INC.". Stored so a human can audit why a match fired without re-deriving the normalization.
available_datedatePUBLIC-availability date = the date-part of `synced_at`: the day this recipient-to-ticker match was last (re)computed and made available. DB-generated, read-only. There is no underlying contract, filing, or period event for this table to key on instead — the crosswalk is a snapshot fact, so `available_date` correctly tracks recompute day rather than any source event date.

Access gov_contract_tickers

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="gov_contract_tickers",
    symbols=["NVDA", "AAPL"],
    start="2024-01-01",
)

Create a free account Browse all 95 datasets

Frequently asked questions

What is in the gov_contract_tickers dataset?

A crosswalk from federal-contract recipient names to ticker symbols, so government awards can be matched to public companies. One recipient-name-to-ticker match: a distinct USAspending federal-contract recipient name that, after normalization (uppercase, strip punctuation and corporate suffixes like INC/CORP/LLC), exact-matches a normalized EDGAR company name, paired with that company's ticker and CIK — a derived crosswalk row, not a contract or event record. Built by normalizing recipient names against the EDGAR ticker dictionary so `usaspending_awards` can be joined per-ticker.

How do I avoid look-ahead bias with gov_contract_tickers?

Filter on gov_contract_tickers.available_date, the day the publisher made the row public. For this dataset that date is derived as follows — synced (ingestion/recompute time): available_date = synced_at::date — there is no source event to key on, this is a pure derived crosswalk recomputed and fully upserted on every run. A query of the form WHERE available_date <= '<as-of date>' never sees a row before it existed.

In what formats can I get gov_contract_tickers?

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="gov_contract_tickers". The column schema is public at https://api.obscura.trade/v1/catalog/gov_contract_tickers.

Can I filter gov_contract_tickers by company or symbol?

Yes. gov_contract_tickers carries ticker, the column the API's symbols filter resolves against.

How often is gov_contract_tickers updated?

Obscura refreshes gov_contract_tickers 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

EDGAR TickersThe crosswalk between SEC CIK numbers, tickers and exchanges. The join key between EDGAR data and market prices. USAspending AwardsFederal contracts and grants from USAspending: recipient, amount, agency and purpose. Border CrossingsMonthly inbound crossings at U.S. land ports on the Canadian and Mexican borders, split by mode (trucks, trains, persona… Congress LeaderboardWhich members of Congress have done best on the stock purchases they disclose: one dollar-weighted, one-year-forward ret… Congress TradesStock and asset trades disclosed by members of Congress and their households under the STOCK Act, parsed from House and … FEMA DisastersFederally declared disasters with type, location and dates, from FEMA. GPR Index DailyThe daily Geopolitical Risk index of Caldara and Iacoviello, derived from newspaper coverage of geopolitical tension. GPR Index MonthlyThe monthly Geopolitical Risk index (Caldara and Iacoviello), with deeper history than the daily version.