patternfetch vs raw OHLCV & candle APIs
A fair, side-by-side look at token-compact market data for AI agents — and an honest answer to when you should reach for raw candles instead.
TL;DR — Raw candle/OHLCV APIs give you every tick and total control. patternfetch gives an LLM agent the digested market state — patterns, levels, regime, interpreted indicators, and a one-line summary — in a fraction of the tokens. Use raw when you need full granularity; use patternfetch when an agent needs cheap, ready-to-reason context.
They are not really competitors so much as different shapes of the same underlying data. A raw API is a firehose you process yourself. patternfetch is a pre-chewed summary an LLM can read directly. The right choice depends on whether you or a model is the consumer.
Side-by-side
| Capability | patternfetch | Raw OHLCV / candle API | Generic crypto data API |
|---|---|---|---|
| Asset coverage | US stocks, ETFs and crypto spot — one schema across all three | Varies — often one asset class per vendor | Crypto only, by definition |
| Output shape | Digested brief (patterns, levels, regime, indicator state, summary) | Raw OHLCV arrays you parse yourself | Raw arrays / mixed endpoints (prices, tickers, order books) |
| Tokens per call into an LLM | Compact — a few hundred tokens | Large — thousands of tokens for a long candle array | Large — raw payloads, often more verbose JSON |
| Numeric-hallucination risk for an LLM | Lower — interpreted state + one-line summary, little arithmetic for the model | Higher — the model must do its own math on raw numbers | Higher — same raw-number problem |
| Candlestick + chart patterns | Yes — detected with confidence | No — you compute them | No — you compute them |
| Support / resistance levels | Yes — clustered with strength | No | No |
| Trend / regime label | Yes — trend, strength, volatility | No | No |
| Interpreted indicators (RSI / EMA / ATR) | Yes — value and state (e.g. "neutral", "above_20_50") | No — raw values at best, usually you compute them | Sometimes raw values; rarely interpreted |
| One-line summary (nl field) | Yes — ready-to-reason natural-language line | No | No |
| MCP server | Yes — Streamable HTTP at /mcp | Rare / varies | Varies |
| OAuth one-click connect | Yes — Authorize once, key minted for you | Rare | Rare |
| Pay-per-call with x402 / no account | Yes — USDC on Base, no signup; plus Stripe | Rare — usually account + plan | Rare — usually account + plan |
| Full tick granularity / compute your own indicators | Limited — compact candles via /v1/candles, not bulk tick export | Yes — this is what raw APIs are for | Often yes — depends on the provider |
"Higher/lower hallucination risk" is relative, not a benchmark: the more raw arithmetic an LLM has to do on long number arrays, the more it tends to slip — which is the failure mode the interpreted brief is designed to avoid (see the methodology). We've tried to be honest in both directions: patternfetch wins on agent-readiness and token cost; raw APIs win clearly on granularity and control. "Generic crypto data API" varies a lot by vendor, so those cells say "varies" where a blanket claim would be unfair.
When to use raw OHLCV instead
Be candid: there are jobs where a raw candle/OHLCV API is simply the right tool, and patternfetch is not.
- Backtesting your own strategy. You want full, deterministic history at native resolution to replay your logic bar-by-bar. A raw export beats a digested brief here.
- Custom indicators. If you've built proprietary signals and want to compute them yourself from first principles, you need the raw inputs, not someone else's interpretation.
- Sub-minute granularity. Tick-level or sub-minute data for microstructure work is outside what a market-state brief is meant to carry.
- Asset classes we don't cover. patternfetch covers US stocks, ETFs and crypto spot in one schema. If you need FX, futures or options, a broader raw data vendor is the fit.
In all of these, you are the consumer and you want maximum control. That's the firehose case.
When patternfetch wins
The flip side: when an LLM or agent is the consumer, the digested brief is usually the better shape.
- LLM / agent context. The brief is already framed as patterns, levels, regime and a summary — exactly the abstractions a model reasons over, with no preprocessing step.
- Token budgets. A few hundred tokens instead of a multi-thousand-token candle array per ticker. Across many symbols or many turns, that's the difference between affordable and not.
- Avoiding numeric hallucination. Interpreted indicator state and a one-line summary mean the model rarely has to do arithmetic on raw numbers — where LLMs are least reliable.
- Fast integration via MCP. Add the MCP server, click Authorize, done — no SDK, no indicator library, no data plumbing.
- No infra. No streaming pipeline, no indicator computation, no candle storage. One call returns the whole market state.
The same data, two shapes
Raw OHLCV (you process this)
[
[1718000000000, 60125.4, 60480.0,
59890.1, 60310.7, 1284.5],
[1718014400000, 60310.7, 60720.2,
60180.0, 60655.9, 1102.8],
… 198 more rows …
]
// then: you compute RSI, EMA, ATR,
// find patterns, cluster S/R, label
// the regime — and feed it all to the
// model as thousands of tokens.
patternfetch brief (token-compact)
{
"codec": { "rows":"60125.4,60480,…",
"sax":"dcefdcbe","precision":1 },
"analysis": {
"patterns":[{"name":"double_bottom",
"confidence":0.86}],
"levels":{ "support":[{"price":59820.4}],
"resistance":[{"price":63450.8}] },
"regime":{ "trend":"up","volPct":2.13 },
"indicators":{ "rsi":{"v":58.3,"state":"neutral"} },
"nl":"BTC/USDT: uptrend (moderate),
RSI 58.3 (neutral), double_bottom (conf 0.86, n=18, hist 51% over 10b)."
}
}
Note the brief still carries codec.rows — the underlying OHLCV numbers — so you're never locked out of the raw data. You just don't have to spend tokens (or a model's arithmetic) on it unless you want to. See it live →
Pricing snapshot
A no-signup demo (POST /v1/demo), free MCP tool discovery, and a free key with $3.00 starter credit (300 briefs) — no card. Then pay per call: brief $0.01, candles $0.005, delta $0.008, analogs $0.05. Pay with x402 (USDC on Base, no account) or a Stripe card. Full breakdown on the pricing page.
The honesty layer: every pattern ships its base rate
Most pattern and signal APIs hand a model a confident-looking "double_bottom", 0.86 and let it quote that blind. patternfetch attaches an evidence block to every detected pattern — the backtested historical hit-rate for that exact pattern, timeframe and confidence band, the pattern-free baseline for the same market and horizon, and a cluster-robust interval on the difference — measured with no lookahead (chart patterns are scored only from the bar they become knowable). A hit rate on its own cannot be read: a drifting market moves it away from 50% with no pattern involved. Measured against the baseline instead, three of the 105 buckets we tested clear an uncorrected interval — fewer than the ~5.3 that chance alone would produce, and all three are crypto. The only one that lands above its baseline (double_top 1d, +9.78pp) rests on n=149 and does not survive correcting for having tested 105 buckets; on US stocks & ETFs it is 0 of 60. The evidence block reports exactly that, instead of laundering a shape score into a confident call. Impersonal market data, not advice. See the method →