Public procurement records are one of the largest dated, legally required datasets about who pays whom. They are also easy to misread in ways that quietly break a backtest. This guide sets out what a record is, which date to trust, how to count, what a value means, how to link a supplier to a ticker, when to leave a field blank, and where AI belongs in the workflow: next to the data, never instead of it.
Procurement data has a reputation problem with quants. It looks like a revenue signal: match award records to listed suppliers, add up the values, trade the change before earnings. Teams that try it often find the signal noisier than expected, and conclude the data is poor. Usually the data is fine. It is being read with the wrong assumptions.
This guide collects the rules we apply when reading the record, drawing on our earlier research. Each section is one rule, with the evidence behind it. At the end is a checklist you can put to any procurement dataset, including ours.
A procurement record is a notice that a public buyer is required to publish about a step in a purchase: a tender opening, a contract awarded, a contract amended. It names a buyer, usually a supplier, states a value and carries dates. It is a statement made for transparency, not an entry in an accounting ledger.
That distinction drives everything that follows. A notice is not a contract, because one notice can cover several lots and one contract can generate many notices over its life. A contract is not a payment, because the stated value is usually the most that may be spent. And a published record is not a complete record, because availability varies enormously by country.
The scale is real. Our corpus holds 111,420,683 award records from 125 official publication systems, and the EU's official platform alone carried 2,666,865 contract awards from buyers in 179 countries for contracts concluded between 2015 and 2023. Disclosure practice differs from country to country, so a well-built signal knows which sources it is drawing on and weights them accordingly.
Three dates matter, and they are routinely collapsed into one. The award date is when the contract was concluded. The publication date is when the notice reached the public record. The knowable date is the earliest date a market participant could have acted, which for a published notice is the publication date.
2,666,865 award records across 179 buyer countries. 37.1% were published more than 30 days after the contract was concluded and 16.8% more than 90 days after. Contracts stated at €10 million or more had a median gap of 37 days. Medians by country ranged from 11 days (United Kingdom) to 37 days (Sweden).
The rule: key every signal on the publication date. Where a source does not provide one, either drop the record from point-in-time tests or apply a lag measured for that source, country and contract size, and label the result as estimated. A single global lag will be early in some countries, late in others, and wrong for large contracts everywhere. The full measurement is in The Look-Ahead Trap.
Public contract databases are version histories. When a contract is amended, the source usually publishes a new record carrying the contract's full current value, and the earlier records remain, because deleting them would destroy the audit trail.
| Record | Published | Stated value |
|---|---|---|
| Version 1, original award | 2024-09-24 | $918,276.48 |
| Version 2, amendment | 2025-08-15 | $1,710,049.32 |
| Version 3, amendment | 2026-08-07 | $1,809,912.09 |
| Naive sum of records | $4,438,237.89 | |
| Actual contract value | $1,809,912.09 |
Summing that contract's records overstates it by 145.2%. Across the corpus, 14,292,691 superseded versions carry $39.90 trillion, and the error concentrates on the largest awards, exactly where "top supplier" and "total spending" analyses look first.
The rule: resolve amendment chains on the source's own award identifiers, take the latest version for a contract's current value, and keep the earlier versions as point-in-time history rather than as additional awards. For backtests, the value known on a given date is the latest version published by that date. See The $39.9 Trillion Mirage.
Three terms are routinely conflated. An obligation is money a government has committed, the closest thing in the record to cash. A ceiling is the most a contract could reach if every option is exercised. A vehicle is a licence to sell under which orders are placed later; on multiple-award vehicles, the shared programme ceiling is restated on every holder's record.
Across 16,568,857 deduplicated definitive US federal awards stating both fields, ceilings totalled $8.74 trillion against $3.81 trillion obligated. Separately, 103,738 vehicle records stated $976.76 trillion of combined ceilings against $0.05 trillion obligated, because a shared ceiling is repeated on each awardee.
The rule: treat stated value as budget authority, not revenue. Prefer obligations where the source publishes them, exclude vehicles from award totals, and treat framework agreements as ceilings whose spending may or may not happen. Even obligations follow the government's budget cycle, with year-end true-ups and de-obligations, so expect that rhythm in any series built on them. The detail is in The Power Is Not in the Alpha.
The supplier on a procurement record is a legal entity: often a subsidiary, a local branch or a joint venture, named the way a clerk typed it. Linking it to a listed parent is where most procurement pipelines quietly introduce errors, and where those errors are hardest to see afterwards.
Match exactly, never by resemblance. Link on registry identifiers where the source publishes them, and on normalised exact names where it does not. Similarity scoring will cheerfully join two different companies with similar names, and every wrong join puts one company's contracts on another's ticker.
Date the link. Corporate ownership changes. A supplier acquired in 2022 belongs to its new parent from that date, not before. Using today's ownership map for a 2018 contract is look-ahead bias by another route. A link should state the period for which it is true and the evidence that makes it true.
Value the relationship, not just the amount. The record's most reliable fields are identities, dates and relationships. In the US federal corpus alone there are 2,588,594 subcontract records, showing who actually performs the work beneath the company that signed. Dependency on a single buyer, or on a single prime contractor, is a fact about the world that does not decay when a second fund reads it.
An honest null is a field left empty, and flagged, when the true value is not known, instead of being filled with a guess, a default or a value copied from another field. A dataset full of honest nulls looks less complete. It is also the only kind that can be trusted on a specific date.
The reason is asymmetric cost. A blank removes one row from a test and the test knows it. A filled value that is wrong stays in the test, looks like evidence, and shapes the result. A publication date copied from the award date, a ticker inferred from a similar name, a value converted at today's exchange rate: each makes a dataset look fuller and a backtest less true.
An honest null costs you a row. A confident wrong value costs you the backtest.
The rule: every field should state where it came from: taken from the source, derived by a stated rule, estimated, or unknown. Run every test twice, with and without the estimated rows. If the result depends on the estimates, it is a finding about the estimates.
AI is now part of most research workflows, and it is genuinely useful with procurement data. It can read notices in dozens of languages, explain what a field means, draft a query, and summarise thousands of records into something a person can review. Used that way, it makes a large, messy record far more approachable.
What it must never do is supply a number. A language model asked how much a supplier won, or when a contract was published, will produce a plausible answer whether or not the data contains one. In a field built on honest dating and honest nulls, a fluent guess is the most dangerous output there is, because it looks exactly like a fact.
AI is the interface; the record is the source. Every figure in an answer should trace to a query against the data, run and checkable. Where the data cannot answer, the right answer is "unknown". And no decision, whether a trade, a model change or a published claim, should rest on anything the data has not shown.
In practice that means three habits. Ground every answer: the AI works from query results it can cite, not from memory. Show the working: a number arrives with the query and the records behind it, so a person can check it. Allow it to say no: a system that cannot answer "the data doesn't show that" will fill the gap with something else. The same discipline that keeps a backtest honest keeps an AI-assisted workflow honest. The tool changes; the rule doesn't.
Six questions, one for each rule above. They apply to any vendor's data, including ours.
1. Coverage: which jurisdictions and sources are included, and how many records does each contribute? 2. Dates: does each date say whether it came from the source, was derived, or was estimated, and are missing dates left blank rather than filled? 3. Counting: how are amendment chains resolved, and is only the latest version counted? 4. Value: is the stated value a ceiling or an obligation, and are vehicles and frameworks separated from definitive awards? 5. Linking: how are suppliers linked to tickers, is the link exact and dated, and what happens when it cannot be proven? 6. Nulls and AI: are unknowns left blank and flagged, and if AI is used anywhere in the pipeline or the interface, can every number it gives be traced to a query?
If the answer to any of these is "we fill it in" or "trust us", the dataset may still be useful, but not for point-in-time work.
This guide reports no new measurement. Publication-gap figures are from The Look-Ahead Trap (TED contract award notices, contracts concluded 2015–2023, computed 23 October 2026). Versioning figures and the worked example are from The $39.9 Trillion Mirage (computed 15–16 August 2026). Ceiling, vehicle and subcontract figures are from The Power Is Not in the Alpha (as of 23 August 2026). Each article sets out its method and exclusions in full.
Ceiling and vehicle analyses are US federal only; other systems publish different value semantics. The rules here describe how we read the record; they are not a trading strategy and make no claim about returns.
Why hold procurement data at all? Because it is one of the few datasets that describes a company's customers rather than the company itself. Prices show what the market thinks; filings show what a company chooses to say. Procurement records show, by law, independently of the company, who paid whom, for what, when and where. For any business that sells to the public sector, that is an outside view of its customer base: which governments it depends on, which prime contractors it sits beneath, which jurisdictions it is exposed to, and whether that picture is widening or narrowing. It is a check on what companies report and a source of facts they don't. And unlike a crowded revenue signal, those relationships do not decay when a second fund reads them. A dependency on a single government customer is a fact about the world, verifiable by anyone against the public record. A quant book that leaves procurement data out is missing an independent record of who pays whom, published by the buyer rather than the seller.
Procurement data does not reward cleverness so much as discipline. Date by publication. Count each contract once. Read value as a ceiling. Link suppliers only where the link can be proven for the date. Leave unknowns blank. And whatever tools sit on top, from a spreadsheet to an AI model, keep the data at the centre: every number traced, every gap admitted, every decision earned by evidence. Applied consistently, those rules turn a messy public record into point-in-time data a quant can build on.
New research from Valan's procurement dataset, delivered as it publishes. No noise.