← Certvas Ontology

Fundamentals

close: schema:MonetaryAmount

One extracted financial-statement line item, as filed, for one entity and period — and for one OBSERVATION of that value. Restatements arrive as new rows and nothing is ever overwritten, so (dataco_id, period_end, period_type, statement, line_item) is NOT unique; record_ref identifies the individual vintage. Two dates matter and they answer different questions: period_end is what the number describes, available_at is from when someone could have acted on it. A backtest must filter on both.

Slots

slotrangedescription
dataco_idstringrequiredCertvas entity identifier — a deterministic hash of the LEI where one exists, else a ULID. Stable across rebuilds, which is what lets it be a public, citable identifier.
period_enddaterequiredTHE EFFECTIVE DATE — the last day of the fiscal period the value describes. Filtering a backtest on this alone leaks: the number was not knowable until it was published.
period_typePeriodTypeEnumrequiredThe length of the reporting period.
statementStatementEnumrequiredWhich financial statement the line item belongs to.
line_itemstringrequiredCanonical taxonomy code for the line item, defined in the data dictionary.
value_reporteddecimalrequiredThe value exactly as filed, in the currency as filed. Never rescaled.
currency_reportedstringrequiredISO 4217 code of the currency the value was filed in.
value_usddecimaloptionalThe value converted to USD. Null where no conversion was applied.
conversion_refstringoptionalFX source and method used for value_usd, so the conversion is reproducible.
extraction_confidencedoublerequiredExtractor confidence in [0,1]. Published rows are accepted extractions only (>= 0.85); anything lower goes to a human review queue rather than to a customer.
source_pageintegeroptionalPage number within the source document, so a value can be checked against the filing.
source_doc_hashstringoptionalContent hash of the source filing in the raw archive.
record_refstringrequiredStable identifier for THIS observation (this vintage) — not for the value's natural key. Deterministic across rebuilds, so a re-push updates a row in place while a genuinely new vintage lands as a new row.
vintage_seqintegerrequired1 for the originally filed value, 2 and upward for each later restatement.
is_as_reportedbooleanrequiredTrue where vintage_seq = 1. The as-reported view filters on THIS rather than on `restated = false`: a value revised twice has two non-latest vintages, so a flag-based filter would return the intermediate revision alongside the original and duplicate the key.
restatedbooleanoptionalTrue where a LATER vintage carries a DIFFERENT value for the same key. DERIVED by comparing vintages, never read from an upstream flag — and a re-extraction producing the same number is not a restatement, so re-running the pipeline cannot manufacture phantom revisions.
superseding_record_refstringoptionalrecord_ref of the earliest later vintage that changed the value.
announcement_datedateoptionalTHE AVAILABILITY DATE — when the filing became public. Sourced as a fact and NULL when unevidenced, never inferred: every candidate must fall within [period_end, period_end + 1095 days], and one outside that window is discarded rather than clamped, because a repaired date is indistinguishable from an evidenced one downstream.
announcement_sourceAnnouncementSourceEnumoptionalWhich evidence tier announcement_date came from.
available_atdaterequiredFILTER AS-OF QUERIES ON THIS. `coalesce(announcement_date, observed_at)`, never null. The fallback direction is load-bearing: observed_at is always later than true publication for a backfilled filing, so it can only ever EXCLUDE a row from an as-of window, never admit one before it was knowable. Poor announcement-date coverage costs recall, never correctness.
filing_lag_daysintegeroptionalannouncement_date minus period_end, in days. NULL where unevidenced — deliberately never defaulted to 0, which would read as same-day publication.
observed_atdatetimerequiredWhen Certvas itself observed this value. Never a proxy for publication date.
source_refstringrequiredURL or document-hash pointer into the immutable raw archive.
license_classstringrequiredLicense Register ID governing redistribution of THIS row. Per-row rather than per-table because a single table legitimately mixes sources with different terms.
valid_fromdaterequiredStart of the interval over which this assertion holds.
valid_todateoptionalEnd of the validity interval; NULL means current. Half-open, so `valid_from <= t < valid_to` selects without double-counting the boundary.