Chart Library vs asking an LLM — base rates vs a guess.
If you’re building a trading agent, the tempting shortcut is to let the model answer empirical questions directly: “What usually happens after a setup like this?” An LLM will answer — fluently, confidently, instantly. The problem is where that answer comes from: a blur of training text, not the actual historical record. It is a guess dressed as a statistic.
Chart Library is the opposite trade-off. It doesn’t reason or opine. It retrieves the real historical analogs of your subject and returns what they actually did next, with a calibrated confidence band and an audit receipt — never a forecast. The two compose: let the LLM reason, and give it Chart Library as the tool it calls for the base rates.
Why an LLM is the wrong place to get historical base rates
- It hallucinates the history. Ask for the forward-return distribution after a pattern and the model fabricates plausible-looking numbers. There is no row in a database behind them — nothing you can audit, reproduce, or cite.
- It emits a direction, not a distribution. LLMs are trained to be helpful and decisive, so they drift toward “this looks bullish” — exactly the over-confident, un-quantified call a trading agent should never make.
- No calibration, no error bars. Even when an LLM hedges, the hedge is vibes. There is no measured relationship between its confidence and how often it’s right.
- Frozen, survivorship-biased knowledge. Its “memory” ends at a training cutoff and over-weights the names and stories that made it into text.
What Chart Library returns instead
Hand it any (symbol, date, timeframe). It finds the cohort of historical days whose raw price-and-volume shape most resembles your subject — then reports what that cohort actually did:
- The forward-return distribution at 1, 5, and 10 days (p10 / median / p90, up-rate), from real resolved analogs.
- A calibrated band — widened/tightened by a conformal layer fit on hundreds of thousands of past predicted-vs-realized cases, conditioned on volatility regime, cohort tightness, and event proximity (earnings, quarter/month end).
- A coverage receipt you can verify: the nominal 80% band held 80.8% across 300K+ audited cases, with a PIT histogram flat to within ~0.5pp.
- The drivers that separated past winners from losers — descriptive attribution, never causal advice.
It is a similarity-and-calibration engine, deliberately not a return predictor. It tells your agent what the precedent was; your agent decides what to do with it.
Use both — the LLM reasons, Chart Library grounds
This isn’t “replace your model.” A capable agent is a reasoning loop that calls tools. Chart Library is the tool it calls when the question is empirical:
- The agent recognizes it needs a base rate → calls
pull_comps/cohort_analyzeover the hosted MCP (free, keyless for the core loop). - It gets back the calibrated distribution + receipt, and can now cite the precedent in its reasoning instead of inventing it.
- The LLM does what it’s good at — synthesis, explanation, planning — on top of a number it didn’t have to make up.
Frequently asked questions
- Can't a bigger / newer model just know this?
- No amount of scale turns training text into an auditable historical database. The single-name forward-return signal is close to irreducibly noisy; the value isn't a sharper point forecast, it's honest, calibrated base rates retrieved from real data — which is a retrieval-and-calibration problem, not a language problem.
- Does Chart Library predict the price?
- Never. It surfaces what historical analogs did, as a calibrated distribution with a coverage receipt. It is similarity-only by design — outcomes and calibration live in a layer on top, never baked into a directional forecast.
- How does my agent call it?
- Connect to the hosted MCP at chartlibrary.io/mcp (no account for the core research loop) or pip install chartlibrary-mcp. The canonical loop is search → pull_comps → introspect → track_record.
Run a cohort_analyze call.
Free Sandbox tier — 1,000 calls/day, no authentication. MCP install for Claude or Cursor takes 30 seconds.