Obscura

EDGAR N-PX Votes

Fund proxy-voting records from N-PX filings: how each fund voted on management and shareholder proposals.

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

Category Regulatory Columns 18 Refresh Every weekday Point-in-time available_date

What one row means

A single N-PX proxy-voting record: how one reporting fund voted on one ballot item (`proxyTable` entry) at one portfolio company's shareholder meeting, versus management's recommendation.

One row per (filename, seq) — seq is the zero-based ordinal position of the <proxyTable> block within the N-PX submission at filename..

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 edgar_npx_votes: published: available_date recovered via filename -> edgar_filings.event_date (the EDGAR daily-index filing/dissemination date), the true public-availability anchor; occurred_on (the shareholder-meeting date) is the separate real-world event date and is NOT when the vote became public.

Refresh cadence

Obscura refreshes edgar_npx_votes every weekday — 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 — 18 columns

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

ColumnTypeDescription
filenametext · not nullEDGAR archive path of the source N-PX submission (e.g. edgar/data/{cik}/{accession}.txt); PK part and join key to edgar_filings for the true public/filing date.
seqinteger · not nullZero-based ordinal of the <proxyTable> block within the submission; disambiguates multiple votes in one filing (PK part).
issuer_nametextName of the portfolio company whose meeting was voted at, from <issuerName> (nullable).
cusiptextCUSIP of the voted security, from <cusip> (nullable; indexed via ix_edgar_npx_votes_cusip).
isintextISIN of the voted security, from <isin> (nullable).
available_datedateThe filing's SEC dissemination date — when the public could first see it. Recovered from edgar_filings via filename. The point-in-time anchor.
occurred_ondateThe shareholder-meeting date the vote was cast at (the real-world event).
vote_descriptiontextFree-text description of the ballot item, from <voteDescription> (e.g. 'Say-on-pay advisory vote', 'Election of directors').
categorytextBallot-item category, from <categoryType> (e.g. 'SECTION 14A SAY-ON-PAY VOTES').
vote_sourcetextOrigin of the proposal, from <voteSource>: "ISSUER" or "SHAREHOLDER".
shares_voteddouble precisionNumber of shares the fund voted on the item, from <sharesVoted> (comma-stripped).
shares_on_loandouble precisionNumber of shares on loan (and thus not voted), from <sharesOnLoan>.
how_votedtextHow the fund voted, from the first <howVoted> record: FOR / AGAINST / ABSTAIN / WITHHELD etc.
mgmt_recommendationtextManagement's recommendation on the item, from <managementRecommendation>; comparing to how_voted surfaces votes-against-management.
figitextFIGI security identifier of the voted security, from <figi> (nullable; a canonical cross-dataset security id some post-2024 N-PX filings emit alongside cusip/isin).
vote_seriestextSeries/class of the voted security in multi-series holdings, from <voteSeries> (nullable; disambiguates which share class was voted).
vote_managertextIndex into the filing's included-managers list attributing the vote to a specific sub-adviser in an aggregated multi-manager N-PX, from <voteManager> (nullable).
scraped_attimestamp with time zone · not nullInternal ingestion timestamp (Utc::now() at upsert; DB default current_timestamp). Ingestion metadata, not a data event time; excluded from exports.

Access edgar_npx_votes

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="edgar_npx_votes",
    start="2024-01-01",
)

Create a free account Browse all 95 datasets

Frequently asked questions

What is in the edgar_npx_votes dataset?

Fund proxy-voting records from N-PX filings: how each fund voted on management and shareholder proposals. A single N-PX proxy-voting record: how one reporting fund voted on one ballot item (`proxyTable` entry) at one portfolio company's shareholder meeting, versus management's recommendation.

How do I avoid look-ahead bias with edgar_npx_votes?

Filter on edgar_npx_votes.available_date, the day the publisher made the row public. For this dataset that date is derived as follows — published: available_date recovered via filename -> edgar_filings.event_date (the EDGAR daily-index filing/dissemination date), the true public-availability anchor; occurred_on (the shareholder-meeting date) is the separate real-world event date and is NOT when the vote became public. A query of the form WHERE available_date <= '<as-of date>' never sees a row before it existed.

In what formats can I get edgar_npx_votes?

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

How often is edgar_npx_votes updated?

Obscura refreshes edgar_npx_votes on a every weekday 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.