Self-hosted market data · Launching soon

Backtest the market that actually existed.

StockQL turns EODHD and FMP feeds into a continuously checked, survivorship-bias-aware PostgreSQL database on your own machine — so you spend research cycles testing ideas, not repairing vendor data.

Every backtest starts with a data-cleaning detour

If you've done systematic research on retail-grade data, you already know the failure modes — because you've lost weeks to them:

Survivorship bias

Symbols vanish from vendor feeds when they delist. Your backtest quietly becomes a study of companies that happened to survive.

Partial snapshots

Bulk end-of-day files fetched too early are silently incomplete — hundreds of symbols missing, no completeness flag, filled in hours later.

Calendar chaos

Zero-volume placeholder rows on market holidays, exchanges mislabeled by the vendor's own metadata, venues that don't trade Monday–Friday.

Rented access

API-only vendors meter every query. Your research iterates at the speed of a rate limit, and your history disappears when you stop paying.

What StockQL gives you instead

Up and running in an afternoon

  1. Run the container. docker compose up on any Linux, macOS, or Windows machine with Docker.
  2. Add your keys. Bring your own EODHD and FMP API keys — you pay the data providers directly, at their prices, with no markup from us.
  3. Backfill. StockQL pulls full history for the exchanges you choose, validating as it goes.
  4. Stay current. The built-in scheduler ingests each trading day after the close, re-checks recent days for late data, and flags anything incoherent instead of silently storing it.

Built for the agent era

Claude Code, Codex, and every other coding agent already speak fluent SQL — what they can't do is untangle a vendor SDK, a notebook platform, and a deployment matrix standing between them and the data. StockQL removes the middle entirely:

A schema is the best prompt

Hand your agent the documented schema and a Postgres connection string, ask your question in English, and let it write the SQL. No API wrapper for it to hallucinate.

No platform in the middle

No bundled Jupyter, no add-on catalog, no proprietary research environment to learn — or to teach your agent. A database, and whatever tools you already use on top.

An English request becomes a tested, saved point-in-time scan against a StockQL database — generated SQL preserved, 146 matches in under a second
This isn't a mockup — it's a real run against a live StockQL database. One English prompt became a tested, saved point-in-time scan: the agent wrote the SQL, kept it with the scan, and reran it in 973 ms over 146 matches. Shown in StockQL Connect, the optional desktop workspace included with the license — the same query works from psql, a notebook, or your own agent. Full-size results · the generated SQL

Built by people who run it every day

StockQL isn't a data product designed on a whiteboard. It's the production system behind our own research database — tens of thousands of symbols ingested daily across 72 exchange calendars — packaged so you can run it too. Every validator in the product exists because the raw feeds burned us without it. More about us →

Common questions

Is StockQL a data provider?

No — and that's the point. The data comes from providers you contract with directly, under their retail terms. StockQL is the machinery that turns their feeds into one coherent, validated, queryable database. We never touch, resell, or redistribute market data.

Why bring my own API keys?

Redistribution licensing is what makes market data expensive. By fetching with your own keys, you pay providers their retail price and pay us once for the machinery — instead of paying a reseller's marked-up subscription forever.

What does the data cost me, roughly?

An EODHD "EOD Historical Data — All World" plan runs about $20/month; FMP has a free tier that covers the cross-checks. StockQL itself is a one-time purchase.

Is my data locked into StockQL?

No. It's a standard PostgreSQL database with a documented schema. pg_dump works. Every tool that speaks SQL works.

What about intraday data?

StockQL is end-of-day by design — the right resolution for portfolio-level systematic research. Intraday may come later; it isn't in the launch scope.

When does it launch?

We're finishing the packaging now. Join the waitlist and you'll get one email on launch day, with launch pricing that won't be repeated.

Own your data before your next research cycle