Fund-ready by construction.
The usual objection to frontier & emerging-market alt-data is that it fails the desk’s bar — look-ahead in the history, murky licensing, no way to join it to a security master. Certvas is built the other way round: point-in-time, license-clean, entity-resolved, and provenance-carrying on every value — so it clears both the research bar and the compliance bar.
Point-in-time (as_of, no look-ahead) · license-classed per value · DOI’d, versioned releases · no natural-person data · GLEIF-anchored entity spine · 4 provenance guarantees
Built for the analyst who does their own data engineering.
If you have a frontier or Africa mandate and no data team, your week goes to sourcing rather than research. AF-FUND is a file, not a platform: Parquet and CSV you can load, a REST API and MCP server when you automate, and no seat licences — the licence extends to your affiliates, employees and contractors acting on your behalf.
Three properties matter if you are backtesting. Restatements append a new vintage rather than overwriting, so an as_of query returns what was knowable on that date rather than what is known now. A null means “not known”, never an assumed zero, because nothing is estimated or interpolated. And every record carries the source document and the licence it is held under, so when someone asks where a number came from you can point at a filing page rather than at a vendor.
Coverage today is 120+ listed issuers across 8 markets, spanning 2009 to 2026, and the archive is deepening faster than it is widening. We would rather you knew that now than found it after a call.
The four things a desk actually checks.
No look-ahead
Every point-in-time endpoint takes as_of and returns only what was known at that date; revisions are kept as new vintages, never rewritten. Backtests see history as it was, not as later restated.
License-clean
Every value carries a license_class traced to a public License Register; only register-cleared sources ship — enforced in the pipeline, not promised. Releases are DOI’d and versioned, so a purchase is citable and auditable.
No personal data
Published tables contain no natural-person data — a structural rule enforced in the model layer and checked in CI. One fewer privacy review to clear.
Joins to your master
Everything resolves to a GLEIF-anchored entity spine with a free, stable Certvas ID — so it maps to the LEIs / tickers already in your security master instead of a bespoke reconciliation project.
The DDQ answers, up front.
| What a data team asks | Certvas |
|---|---|
| Do you have the right to distribute this data? | Yes — every value is classed against a public License Register; only cleared sources ship. Sources and terms are documented, not asserted. |
| Any personal / GDPR-scope data? | None. Organizations only; natural-person exclusion enforced in the model layer and checked in CI. |
| Is the history point-in-time (no look-ahead)? | Yes. as_of returns the latest vintage known at that date; revisions accrue as new vintages. Unit-tested against seeded revision timelines. |
| Provenance / auditability of a single value? | Every row carries source_ref, observed_at and license_class. Releases carry a DataCite DOI and a version. |
| How do we map it to our security master? | GLEIF-anchored spine + free Certvas ID resolver; supplier/issuer entities resolve to LEIs. |
| Delivery / integration? | Files (Parquet + CSV), REST API, MCP server, Snowflake share, and the certvas Python SDK — one schema and one provenance envelope across all of them. |
| Coverage & freshness? | Stated as measured, live figures (per-SKU quality-metrics), never a marketing number. African & EM focus; coverage accretes on a published cadence. |
We publish the exact coverage rather than overclaim. Certvas is early and frontier-focused: depth is stated in live metrics and is accreting, not presented as complete. The differentiator is not size — it is that what ships is point-in-time, license-clean, and defensible.
Point-in-time, in your notebook.
import certvas cv = certvas.Client(api_key="your-key") panel = cv.signals.procurement_demand(country="ZA", as_of="2025-06-30")
A point-in-time DataFrame with the license notice and as_of in df.attrs. The same data is reachable via the REST API, the MCP tool get_procurement_demand, and bulk Parquet.
Start with a free, fully-provenanced sample.
Validate the point-in-time behaviour and the license lineage end-to-end before you buy. Every tier ships the full schema, provenance annex and measured metrics.