Data
Most market data
reaches you fourth-hand.
By the time a figure lands in your model it has been fetched, mapped, repackaged and relicensed by people you have never spoken to. Ours comes from the issuer.
Nobody sells you a filing. They sell you their copy of someone else's copy.
Every hop between the issuer and your screen does three quiet things. It resets the timestamp to whenever the vendor got round to fetching. It makes a judgment call about what maps to what. And it attaches a licence term written for a business that isn’t yours.
None of that is visible in the cell. You just get the number.
The chain you inherit
4 hops
source document
fetched, re-timestamped
mapped, renamed
EBIT 408.4
Four timestamps, no citation. The figure drifts and nobody records why.
One hop
EQLsource document
EBIT 412.0 · p.14, table 3
Same figure, one timestamp, one citation. Illustrative example.
Three things break, and they break expensively
You inherit decisions you never made.
Somewhere upstream, a person or a script decided that this line item is operating income and that one isn't. That choice is now load-bearing in your model, and there is no document describing it.
You can't chase a correction.
When the figure is wrong — and periodically it is — the remedy is a support ticket. Tickets close on the vendor's calendar. Your position doesn't.
You can't clear the licence.
The reason legal blocks your data from touching a model is almost never about the data. It's about a redistribution clause four contracts upstream that nobody at your firm signed and nobody at your firm can renegotiate.
So we went and got it ourselves
First-party isn’t a sourcing preference. It’s the only arrangement where the answer to “where did this come from” is a document instead of a company name.
Here’s what that looks like across what we handle.
Filings and Earnings
Collected from officially appointed mechanisms and issuer IR at publication, in ESEF/iXBRL where the issuer files it that way. Every version is kept, so a restatement adds a vintage instead of overwriting one. You can ask what the filing said on a given date and get the answer that was true then, which is the difference between a backtest and a look-ahead..
Press releases
Regulatory and non-regulatory, separated at publication, with the issuer's own classification and the distributing mechanism both preserved. Whether a release carries inside information under MAR Article 17 is a judgment call, and most feeds make it for you silently. Keeping it visible lets an event study separate a profit warning from a product launch on the issuer's basis rather than a vendor's.
Earnings calls and transcripts
Speaker-tagged and searchable while the Q&A is still being argued about internally. Speaker tagging isn't cosmetic: who gets called on, in what order, and who gets skipped tells you which register the company is playing to. Calls that move between Swedish and English come through as one document, not two partial ones.
Other calls and events
Capital markets days, AGMs, deal calls, and the unscheduled call that follows a profit warning. Coverage economics push vendors to staff what they can schedule, which is exactly backwards — the unscheduled session is where information density is highest and comparable coverage is thinnest.
Reported financials
Standardised from the statement itself, not from a summary of it, and kept alongside the as-reported figures rather than replacing them. European issuers lean hard on alternative performance measures, so a vendor's 'EBIT' for a Nordic industrial might be the company's adjusted number, a recomputed one, or a blend, and nothing in the field tells you which. Every line points back to the table, page and document it came from, so the bridge from as-reported to standardised is a click rather than a ticket.
Forward estimates
Aligned to the same standardised line items as the actuals, so consensus and reported figures compare without a mapping layer of your own. Without that alignment, a surprise number is partly measuring your own mapping error. Consensus is point-in-time and the contributing panel is visible, because a mean that still carries a broker who hasn't published since last quarter is a different number from the live one.
Fund data
Holdings, flows and exposures traced to the fund's own filings and disclosures rather than a redistributor's snapshot, with the as-of date intact so positions reconcile to a source document. Regulatory holdings files arrive on a lag; the monthly letters don't. We read the letters as well, so a position change comes with the manager's own stated reasoning attached and cited , and you can come at it from the stock as easily as from the fund.
One layer underneath everything you cover
33,000 companies, seen from above
Every building on that skyline files, reports and restates. We track what they publish the moment they publish it — and keep the document behind every figure.
Four layers, and you can see through all of them
Nothing is flattened on the way down. Each layer keeps a reference to the one beneath it, so the figure on your screen still knows which page it came from.
Point-in-time isn't a feature we added
It’s what happens when you keep the source instead of a summary of it.
Aggregated feeds overwrite. A restatement lands, the earlier print quietly disappears, and your backtest ends up trading on numbers nobody actually had that morning. Because we hold the documents rather than a rolling snapshot of their contents, history stays where it was. We didn’t design that. We just never threw anything away.
Every filing, call and release lands in one stream — each item still attached to the document it came from.
Inbox
SANDQ3 interim report
Sandvik AB · filed 07:00:04
NOVORegulatory press release
Novo Nordisk · MAR-disclosable
ASMLEarnings call transcript
ASML · speaker-tagged
This got urgent faster than anyone planned for
An agent that produces a number it cannot cite is not a research tool. It’s an audit finding.
Under the EU AI Act and DORA you are expected to evidence where an input came from and what happened to it on the way in. “Our vendor says so” is not a lineage record. Provenance stopped being a nice property of well-run data the moment models started consuming it unsupervised — and most of the market is now discovering that the feed they’ve paid for since 2011 cannot be put in front of a model at all.
Ours can. Not because we bolted on a compliance layer, but because there is nobody upstream of us to ask.
Fifty-six European jurisdictions, connected source by source
There was no shortcut, and the shortcut is the entire problem. It’s slow, unglamorous plumbing — filing portals with inconsistent schemas, national mechanisms with their own rules, issuers who publish a PDF and nothing else. We built it anyway, on EU infrastructure, because it’s the only way to hand you a figure and the page it came from in the same breath.
Three ways in, one provenance model
The lineage doesn’t change depending on how you consume it.
Pick a number. Any number.
Send us a figure from any company in our universe — one you already have, from whoever you have it from now. We’ll return the document, the page and the timestamp it came from, and you can see for yourself whether they match.