Coverage over the last 30 days
One block per day. A full day is 64 readings, which is 8 currencies across 8 three-hourly cycles. Short days are shown in amber rather than hidden.
What is in each table
Sentiment Append only
The score series. Rows are point in time and are never revised after publication. Database triggers reject edits and deletes outright.
- Rows live
- -
- Currencies
- -
- First reading
- -
- Latest reading
- -
News
Deduplicated headlines and links only. Article bodies are never stored or republished, and every headline keeps its link back to the publisher.
- Rows live
- -
- Sources
- -
- First headline
- -
- Latest headline
- -
Session scorecard Delete protected
Every pair and session read is frozen with a reference price at publication, then settled against the next session's open and marked aligned, contra or quiet.
- Reads recorded
- -
- Settled
- -
- First
- -
- Latest
- -
Price history
Reference prices used to settle the scorecard, so a read can never be marked correct against a price picked after the fact.
- Rows
- -
- First
- -
- Latest
- -
How to read this
- Scores are point in time. A reading published at 09:00 UTC keeps the value it had at 09:00 UTC forever. Nothing is backfilled or quietly corrected later
- Gap days are published, not hidden. If a cycle failed, the day shows short here rather than being smoothed over
- Settled scorecard rows are frozen. Once a read is settled against the next session's open it cannot be edited, and deletion is blocked at the database level
- Everything above is generated on request straight from the database, so it cannot drift from reality
Machine readable
The same report as JSON, no key required:
| Endpoint | Returns |
|---|---|
GET /data-quality.json | This coverage report |
GET /api/v1/sentiment | Current scores for the 8 majors. Key required, see the developer API |
Every field in the series is documented in the data dictionary published in the public repository.