Historical data and analysis

Live risk tells you where you are. History tells you how you got there, whether the limit you set was ever the right one, and what the book actually did during the last dislocation. Safetifi records the series as it computes it — on your own database, under your own retention policy.

Recorded on the grid, not whenever the process happened to start

Snapshots land on exact UTC boundaries — :00, :15, :30, :45 — and every dataset in a cycle shares one timestamp. That is what makes an end-of-day figure an end-of-day figure rather than a reading taken four minutes past midnight, and it is what lets slots be joined and bucketed by arithmetic instead of by tolerance windows.

  • Twenty metrics per slot, recorded for the whole book and for each client
  • One row per slot, written once and never revised
  • Every slot stamped with how stale the underlying marks were
  • Off-grid recomputes reach the screen but are deliberately not recorded

Raw for the recent past, hourly for ever

Full resolution is kept for a configurable recent window, then rolled up to hourly and retained. The roll-up keeps minimum, maximum and last for each metric rather than an average, because averaging is what hides the dip to 0.95× coverage that was the only thing worth seeing in that hour.

  • Retention set by an administrator, not per user
  • Legal hold: set the raw window to zero days and nothing is purged
  • Purges are logged, so a gap in the series has an explanation
  • Breach, call and liquidation events are captured exactly and never purged

PostgreSQL, with TimescaleDB where you have it

One database engine, deliberately. Where the TimescaleDB extension is present the history tables are created as hypertables; where it is not, the same schema runs as plain PostgreSQL tables and everything else is identical. It is an accelerator, never a requirement — so the choice of managed host stays yours.

Ask the history questions

The series is not a data lake you export and forget. Build dashboards from a catalogue of nine datasets, chart any metric over any window, put a trend column beside a live figure, group and total the rows, export to CSV or Excel — and save a query as a watch, so a condition you care about raises an alert the moment it turns true rather than the next time somebody looks.

Questions

Historical data & analysis: common questions

Full-resolution slots are kept for a configurable recent window — fourteen days by default — and then rolled up to hourly and retained. Both settings are administrator-controlled, and setting the raw window to zero days is a legal hold that stops purging entirely.

No. TimescaleDB is detected at connection time and used to create hypertables where it exists; where it does not, the identical schema runs on plain PostgreSQL. Note that availability decides your host: Timescale Cloud, Azure Flexible Server and self-managed PostgreSQL have the extension, while AWS RDS/Aurora and Google Cloud SQL do not.

Because an average hides exactly what you are looking for. A collateral coverage ratio that averaged 1.4× over an hour may have touched 0.95× inside it, and that moment is the only part of the hour that mattered.

Yes — charts over any recorded metric, trend columns beside live figures, grouping, subtotals and CSV or Excel export. Exports carry the raw values, not the formatted text on screen.

See it against your own book

A pilot connects one channel against a slice of your live book and reports what it finds — client by client, product by product.