Market data you can trust, every time.

tickvault is a market data warehouse that proves its data on four dimensions: idempotent reprocessing, corrections, lineage, and observability. Built on a medallion architecture, every downstream dataset is derived, never fabricated.

~7.9M
minute bars
11 years
2015-2026
EUR/USD
+ GBP/USD
Bronze → Silver → Gold
medallion pipeline
EURUSD, last 60 days, real data
loading real data...

What it proves

Each of these is backed by an automated test or a dbt check that runs on every build, not just claims in a README.

Idempotency

Reprocessing an already-landed partition never changes its logical result, even though every reprocess writes a physically new, immutable file.

CI lands the same partition twice before every dbt build

Corrections

When source data for an already-landed partition genuinely changes, the new value wins everywhere downstream, and the old value is never deleted, just superseded.

is_correction computed independently in SQL, checked against Python

Lineage & versioning

Every row carries its run ID, source system, fetch time, and a content checksum. Full version history is queryable, not reconstructed by hand from raw files.

try it below: run_id is a real column in the demo data

Observability

Missing or suspiciously incomplete data is flagged automatically, as a dbt monitoring model and as a per-partition Dagster asset check, not discovered downstream by a confused analyst.

0 gaps across the full 2015-2026 EUR/USD backfill

How it works

Medallion architecture. Only bronze is written by ingestion. Everything downstream is derived and safe to rebuild.

SOURCE
ForexAnalytics.dbo.HistoricalPrices (SQL Server)
BRONZE
immutable, run-addressed Parquet + manifest tracking active/superseded per (symbol, day)
SILVER (dbt)
prices (current), prices_history (every version)
GOLD (dbt)
gold_prices, the published, stable table
API / FastAPI
UI / Streamlit
MONITORING (dbt)
bronze_gaps, bronze_anomalies

Bronze

Raw facts exactly as ingested. Never updated or deleted.

Silver

Cleaned, deduped, versioned views for analysis.

Gold

Curated, stable dataset for downstream consumption.

Monitoring

Gaps and anomalies surfaced as first-class data, not a side channel.

Delivery

A read-only API and dashboard for exploration and integration.

Try it yourself

Run real DuckDB queries against exported data, read-only, entirely in your browser. No server involved.

loading DuckDB-WASM...
Tables: recent_minute_bars (last 90 days), daily_summary (full 2015-2026 history), bronze_anomalies, bronze_gaps.

Results

All times in UTC. Read-only, in-browser only.