Not a backtest engine — the data layer under one, solved. The hard part of backtesting is reconstructing what you would have known: which tickers matched your condition on that day, with no look-ahead and no survivorship bias. Here that’s a query parameter — any screen with ?asof= returns the market as it stood, delisted tickers included, and aligned series price the trades. Your strategy logic and execution stay yours.
Free plan. Every ticker, every signal, real-time data, all-time history.
what you get
| Point-in-time scans | Any SQL screen with ?asof= answers as of that moment — candidate sets with no look-ahead by construction |
| No survivorship bias | Delisted tickers stay in every as-of answer — the past includes the companies that didn’t make it |
| Signals included | Indicators, fundamentals and flags are part of the point-in-time row — entry conditions read as they stood, not recomputed |
| Pricing the trades | Aligned series return entry and exit prices for the whole candidate set on one time grid |
| Intraday tiers | Date-only as-of resolves to the daily close; timestamps resolve to 1-hour and 1-minute state |
| Same query, live | The backtested screen runs unchanged in the present — or as a webhook, so the strategy goes live without translation |
Every read runs in three tenses: live, as of any past moment (add ?asof=; no look-ahead, no survivorship bias), or on push — the same query as a webhook that fires when the answer changes. Under it sits the computed table: every US equity plus rates, FX and crypto, every signal precomputed and refreshed continuously, all-time history. Data included — there’s no feed to bring.
one call
The candidate set for a condition on 15 March 2023 — exactly what the screen would have returned that day:
POST /v2/scan
{ "q": "above_sma_200 AND rsi_14 < 40", "asof": "2023-03-15" }
// → { "as_of": "2023-03-15",
// "_meta": { "resolution": "daily",
// "interval_reason": "date-only asof resolves to the daily close" },
// "results": [ … the market as it stood … ] }Step the date, and each answer is an independent point-in-time reconstruction — then price entries and exits for the candidates from aligned series.
Ready to wire it into something? Build a backtester walks it end to end. Reference: as-of queries · series · the SQL surface.
questions
No — it’s the data layer a backtest engine needs: point-in-time candidate sets, survivorship-complete history, and aligned pricing. Portfolio simulation, fills and P&L stay in your code (or your framework of choice), which is where they belong — that logic is your strategy.
By construction rather than by discipline. An ?asof= answer is computed from the state recorded at that moment — a screen can’t see a value that didn’t exist yet — and delisted tickers are kept in the record, so past answers include the names that later disappeared. The two classic backtest leaks are closed before your code runs.
Because every action it takes — an alert, a screen result, an order — is a condition over derived values: RSI below 30, price above the 200-day average, volume three times normal. Raw data doesn’t contain those. Something has to compute and refresh them for every symbol, continuously, and keep the history so past answers are reproducible. That’s a data pipeline, not a feature — you either build and operate it, or query one that already runs.
Every call here is also a native tool call: install the MCP server and Claude, ChatGPT, Cursor, or any MCP runtime queries the market directly. Computed state is what makes that work well: hand a model raw data and its context window fills with math to do; hand it computed answers and the context goes to decisions. A scan returns the tickers matching your condition: a list, not a workload.
The Free plan needs no card and carries the full data side: every ticker, every signal, real-time data, all-time history and as-of queries, at 10,000 calls a month and 60 a minute. Paid plans start at $29/mo, remove the monthly cap, and raise the rate limit; webhooks and streaming come with them. Data depth is never a tier lever: every plan sees the same table.
in the wild
What people are saying.
“dude. whoah.”
“Tickerbot is insane. It turns Claude into a quant.”
“Best value for hobbyists and advanced traders alike.”
get started
Free plan. Every ticker, every signal, real-time data, all-time history.