# TextToQuant for AI agents

TextToQuant turns a trading strategy written in plain English into an exact, deterministic set of rules, backtests it against real market history, and returns a graded report. It covers crypto, forex and equities, and every run reports its own honesty flags for zero fees, missing stops and too few trades, so a result that does not prove anything says so.

Canonical site: https://www.texttoquant.com
This document: https://www.texttoquant.com/agents.md

## What it does

- You describe a strategy in plain English; the parser compiles it into explicit entry, exit, risk and timeframe rules and shows you those rules before it runs.
- Backtests run on real historical market data for crypto, forex and equities.
- Every run is graded, and carries honesty flags for the things that make a backtest lie: zero modelled fees, no stop loss, a sample too small to mean anything.
- Robustness tooling is first class: parameter sweeps, walk forward validation, Monte Carlo simulation, and edge broken down by market regime.
- Strategies can be exported to TradingView Pine Script, and custom indicators can be written in Pine, JavaScript or Python.
- There is a hosted MCP server, so an AI agent can run the whole workflow as tool calls: parse, backtest, validate, share.
- Results can be shared as a public, revocable link to a full interactive report.

## What it is not

- Live order execution or broker connectivity. TextToQuant does not place trades.
- Tick level or sub minute microstructure research. The finest supported bar is one minute.
- Financial advice. Output is historical simulation, not a recommendation.

## Connect over MCP

| | |
| --- | --- |
| Endpoint | `https://www.texttoquant.com/api/mcp` |
| Transport | Streamable HTTP |
| Registry name | `com.texttoquant/texttoquant` |
| Tool count | 130 |
| Tool catalog (JSON) | https://www.texttoquant.com/api/v1/mcp/tools.json |

One click install:

- Claude: https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=TextToQuant&connectorUrl=https%3A%2F%2Fwww.texttoquant.com%2Fapi%2Fmcp
- Cursor: cursor://anysphere.cursor-deeplink/mcp/install?name=texttoquant&config=eyJ1cmwiOiJodHRwczovL3d3dy50ZXh0dG9xdWFudC5jb20vYXBpL21jcCJ9
- VS Code: https://vscode.dev/redirect/mcp/install?name=texttoquant&config=%7B%22name%22%3A%22texttoquant%22%2C%22url%22%3A%22https%3A%2F%2Fwww.texttoquant.com%2Fapi%2Fmcp%22%2C%22type%22%3A%22http%22%7D
- LM Studio: lmstudio://add_mcp?name=texttoquant&config=eyJ1cmwiOiJodHRwczovL3d3dy50ZXh0dG9xdWFudC5jb20vYXBpL21jcCJ9
- Goose: goose://extension?type=streamable_http&id=texttoquant&name=TextToQuant&url=https%3A%2F%2Fwww.texttoquant.com%2Fapi%2Fmcp&description=Backtest%20trading%20strategies%20written%20in%20plain%20English

Install from a terminal (one line, no API key):

- Claude Code: `claude mcp add --transport http --scope user texttoquant https://www.texttoquant.com/api/mcp` — Then run /mcp inside Claude Code to finish the browser sign in.
- Grok CLI: `grok mcp add --transport http texttoquant https://www.texttoquant.com/api/mcp` — OAuth is handled for you on first use.

Packaged installs (the host's own extension or plugin, wrapping the same server plus a briefing):

- Gemini CLI: `gemini extensions install https://github.com/Youssef2784/texttoquant-gemini-extension` — Then run /mcp auth texttoquant inside Gemini CLI to finish the browser sign in. Listed in the Gemini CLI extensions gallery. Source: https://github.com/Youssef2784/texttoquant-gemini-extension
- Claude Code plugin: `claude plugin marketplace add Youssef2784/texttoquant-claude-plugins && claude plugin install texttoquant@texttoquant` — Server plus a TextToQuant skill. Run /mcp inside Claude Code to finish the browser sign in. Source: https://github.com/Youssef2784/texttoquant-claude-plugins

Listed at:

- [Official MCP Registry](https://registry.modelcontextprotocol.io/v0.1/servers?search=com.texttoquant%2Ftexttoquant): Registry name com.texttoquant/texttoquant. Feeds the GitHub MCP registry, VS Code and other catalogs.
- [GitHub: texttoquant mcp](https://github.com/Youssef2784/texttoquant-mcp): Public server repo: the downloadable stdio server, README, and llms-install.md for agents that set up their own client (Cline, Claude Desktop).
- [GitHub: Gemini CLI extension](https://github.com/Youssef2784/texttoquant-gemini-extension): The Gemini CLI extension source.
- [GitHub: Claude Code plugin](https://github.com/Youssef2784/texttoquant-claude-plugins): The Claude Code plugin marketplace source.
- [GitHub: Cursor plugin](https://github.com/Youssef2784/texttoquant-cursor-plugin): The Cursor plugin source (server + skill).

Add it manually with this client config:

```json
{
  "mcpServers": {
    "texttoquant": {
      "url": "https://www.texttoquant.com/api/mcp"
    }
  }
}
```

## Authentication

OAuth 2.1 with dynamic client registration for MCP clients, or a bearer API key from Account → API keys for direct HTTP. The MCP endpoint answers an unauthenticated request with 401 and an RFC 9728 WWW Authenticate header pointing at its protected resource metadata, so a compliant client discovers the flow on its own.

## Credits and billing

run_backtest, start_analysis and the portfolio runs consume credits from the signed in account. Read tools are free. get_usage reports the remaining balance, and every billed tool accepts an idempotencyKey so a retry after a timeout cannot double charge.

A backtest keeps executing server side even if the tool call times out. Recover the result with list_backtests rather than re running it.

## Reporting results honestly

Prefer reporting a run's grade and honesty flags over its headline return. Fewer than 30 trades does not establish an edge, and a backtest with no modelled fees is not a result. The full reference for reading a run, including what each flag obliges you to say and the order to say it in, is at /academy/reading-a-result.md, and the MCP prompt `explain_this_result` walks the same sequence.

## Tools

### Parse, run, read

The main loop: turn a sentence into rules, run it, read the result.

- `parse_strategy`: Parse a plain English trading strategy into TextToQuant's structured format.
- `run_backtest`: Execute a backtest from a parsed strategy (the object returned by parse_strategy).
- `edit_backtest`: Iterate on an existing backtest: rerun a MODIFIED strategy and save it into the SAME iteration session as the base run, so History groups them and you can compare like for like.
- `rephrase_strategy`: Rewrite a vague or ambiguous strategy idea into clearer, parser friendly language WITHOUT inventing parameters, then feed the result to parse_strategy for a cleaner parse.
- `explain_parse` _(read-only)_: Round trip a parsed strategy back into plain English, the EXACT settings that will run: asset, window, every entry/exit condition, sizing, and costs.
- `explain_grade` _(read-only)_: Why did this run get its grade?
- `get_backtest` _(read-only)_: Fetch one saved backtest by id: summary metrics, grade, the strategy parameters it ran with, and the FULL REPORT (`_digest` as prose, present it in full; `report` as fields).
- `get_backtest_data` _(read-only)_: Fetch the raw data behind a saved backtest: equity curve, trade list, candles, buy and hold curve, chart markers, Monte Carlo results, the entry/exit CONDITION LOGS (why each signal fired or never did, read these to diagnose a run with few trades), or MONTHLY_RETURNS: the returns calendar, giving best and worst period, per row totals, the green rate over the periods that HELD A POSITION, and a SEASONALITY verdict, already reduced from the full curve and bucketed by month or, on a short run, by day or hour.
- `list_backtests` _(read-only)_: List the account's saved backtests: id, asset, timeframe, return, win rate, trades, dates.
- `cancel_backtest` _(destructive)_: Cancel a backtest that is still QUEUED (not yet computing) and refund the credit it was billed at enqueue.
- `analyze_conditions` _(read-only)_: Forward outcome probability for a SINGLE entry condition: when it fires on the given asset, what happens in the following bars (hit rate + return distribution).
- `list_examples` _(read-only)_: The platform's public showcase strategies: real, best performing shared backtests with their plain English query, asset, and headline metrics.

### Robustness & validation

The part that decides whether an edge is real: sweeps, walk forward, Monte Carlo, regime breakdown, overfit verdicts.

- `start_analysis`: Start a robustness analysis job on a SAVED backtest (id from run_backtest/list_backtests).
- `get_analysis` _(read-only)_: Poll a robustness analysis started with start_analysis (progress while running, full result when done).
- `get_overfit_verdict` _(read-only)_: Overfitting assessment for a backtest: its Deflated Sharpe Ratio (the run's Probabilistic Sharpe deflated by how many strategy configs were tried), PBO if a grid sweep ran, and a verdict, holds_up / likely_overfit / insufficient_evidence.
- `get_regime_edge` _(read-only)_: ROBUSTNESS PANEL: "Edge by regime" across the four PRICE ACTION blocks: Trend Up, Trend Down, Quiet Range, Volatile Chop.
- `refine_context` _(read-only)_: Reanalyze a backtest's trades along DIFFERENT market regime dimensions (trend, volatility, structure, entry_position, or a saved custom indicator) WITHOUT rerunning, quota free.
- `filter_by_context`: Rerun a backtest taking entries ONLY inside a chosen market regime (e.g.
- `get_context_trades` _(read-only)_: The individual trades behind a regime analysis: the paginated per trade context view for the whole run, or (with contextKey + dimensions) the trades inside ONE regime bucket.
- `compare_backtests` _(read-only)_: Compare 2 to 4 saved backtests side by side as a chart image: overlaid equity curves plus a metric table with the best value per row highlighted.
- `diff_iterations` _(read-only)_: Compare TWO backtests and report exactly WHAT CHANGED: the parsed strategy fields that differ (asset, timeframe, dates, each entry/exit condition, sizing, risk) AND the metric deltas (return, Sharpe, max drawdown, win rate, trades, grade).
- `get_iterations` _(read-only)_: The edit/version history of a strategy session: every iteration (run) it produced, in order, with labels and ids.

### Portfolios

Multi asset runs, shared capital, correlation and sweeps across a book.

- `parse_portfolio`: Split ONE plain English multi asset prompt (e.g.
- `run_portfolio`: Run a SHARED CAPITAL multi asset portfolio backtest: all assets draw from ONE capital pool and a contention rule resolves same bar entries.
- `get_portfolio` _(read-only)_: Poll a portfolio run started with run_portfolio.
- `list_portfolios` _(read-only)_: List the user's SAVED portfolio (book) runs, newest first, the durable history of everything run with run_portfolio.
- `get_portfolio_analysis` _(read-only)_: The full analysis of a completed portfolio (book) run: combined metrics and grade, per asset attribution (which asset made or lost the money), the basket benchmark, Monte Carlo risk, and walk forward / out of sample robustness, all already computed for the run.
- `run_portfolio_sweep`: Robustness sweep for a whole book: rerun a shared capital portfolio across 2-5 values of ONE book level knob (initialCapital, maxConcurrentPositions, bookMaxDrawdownPct, totalExposureCapPct) and compare, to see if the book holds up or is curve fit.
- `get_portfolio_sweep` _(read-only)_: Poll a run_portfolio_sweep job: per value book metrics as they complete, and the best value (by Sharpe) once done.
- `cancel_portfolio_sweep` _(destructive)_: Stop a running portfolio sweep: it halts before the next book run and every not yet run book's credits are refunded (completed books stay in the result).
- `share_portfolio` _(destructive)_: Create (or revoke) the public share link for a COMPLETED portfolio run.

### Custom indicators

Author, validate and preview indicators in Pine, JavaScript, Python or CSV.

- `list_indicators` _(read-only)_: List the user's SAVED custom indicators (created in the app's Pine editor, via CSV upload, or with save_pine_indicator).
- `get_indicator` _(read-only)_: Fetch ONE saved custom indicator by name in FULL detail, including its Pine Script source code (pineCode), its plotNames (output series), the compiled indicator schema, and its compile context (symbol/timeframe/bars/date range).
- `save_pine_indicator`: Compile a TradingView Pine Script against real market data and save it as a reusable custom indicator on the account (same pipeline as the app's Pine editor Save).
- `validate_indicator` _(read-only)_: Compile check a Pine Script indicator: syntax/compile validation only, no run, no save.
- `lint_indicator` _(read-only)_: Offline diagnostics for a Pine Script indicator (quota free): style and correctness warnings without compiling or running.
- `preview_indicator`: Compile AND run a Pine Script indicator against real market data (no persist) to see its plotted series: the real data check before save_pine_indicator.
- `get_indicator_preview` _(read-only)_: Poll a preview_indicator job: returns progress while running and the compiled plot series + any runtime warnings when done.
- `validate_js_indicator` _(read-only)_: Check a JAVASCRIPT indicator without running it: syntax, the module shape (INPUTS / PLOTS / calc), and that every `@name` import resolves to one of your saved indicators.
- `preview_js_indicator` _(read-only)_: Compile AND run a JAVASCRIPT indicator against real bars WITHOUT saving it, and get the plotted series back.
- `save_js_indicator`: Author an indicator in JAVASCRIPT and save it on the account.
- `validate_py_indicator` _(read-only)_: Check a PYTHON indicator without running it: syntax and the module shape (INPUTS / PLOTS / calc).
- `preview_py_indicator` _(read-only)_: Compile AND run a PYTHON indicator against real bars WITHOUT saving it, and get the plotted series back.
- `save_py_indicator`: Author an indicator in PYTHON and save it on the account: the same capability as save_js_indicator, the same `ta.*` helpers, numerically identical.
- `save_csv_indicator` _(destructive)_: Save an indicator from PRECOMPUTED VALUES supplied as CSV text: a series this platform cannot compute, a vendor feed, a model output, research exported from elsewhere.
- `delete_indicator` _(destructive)_: Delete one of the user's saved custom indicators by name (CSV, Pine, JavaScript or Python).

### Market data & screening

Scan the market, read regimes and sectors, pull raw candles.

- `scan_market` _(read-only)_: Scan the crypto market (RSPS engine): the current tradable universe with per token momentum/strength scores, price, 24h move and volume, to answer "what is setting up / moving right now?".
- `market_regime` _(read-only)_: The crypto market's current regime verdict per timeframe (RSPS): RUN (broad risk on momentum), REVIEW (mixed), or SKIP (weak / risk off).
- `market_sectors` _(read-only)_: Crypto sector performance snapshot from the screener, which sectors are leading or lagging.
- `rsps_matrix` _(read-only)_: Advanced: the pairwise RSPS dominance matrix for the top-k crypto tokens (who beats who) on a timeframe.
- `token_stats` _(read-only)_: Per token forward outcome base rates from the screener: average return and win rate over the 1/3/7/30 bars AFTER a signal, for a timeframe + signal condition.
- `token_multitf` _(read-only)_: One crypto token's recent OHLCV bars plus its multi timeframe screener rows (beta, percentile, forward returns) on a chosen timeframe.
- `custom_benchmark` _(read-only)_: Correlation and beta of the crypto universe against a benchmark symbol you choose (e.g.
- `run_profiler`: Start the Perfect Token Profiler: it fingerprints what the top movers looked like BEFORE they ran (the indicator/return profile of winners over an H-bar horizon).
- `get_profiler` _(read-only)_: Poll a run_profiler job: progress while running, and the full winner profile result once status is "done".
- `get_candles` _(read-only)_: Fetch raw OHLCV candles for ANY symbol/timeframe/date range, crypto (BTCUSDT) or stock (NASDAQ:AAPL).
- `list_markets` _(read-only)_: List the tradable crypto market universe (by market cap) so you can enumerate or VALIDATE a symbol before parse_strategy/run_backtest: reducing SYMBOL_NOT_FOUND failures.
- `saved_scans` _(destructive)_: Manage your saved screener filters.
- `list_scan_alerts` _(read-only)_: List your crypto scan alerts (the saved "notify me when tokens match X" rules), with their conditions, interval, active state, and last match.
- `create_scan_alert`: Create a recurring crypto scan alert: get notified (Telegram/email) when tokens match a set of screener thresholds.
- `update_scan_alert` _(destructive)_: Pause/resume, rename, recondition or retime an existing scan alert WITHOUT deleting it (delete loses the config).
- `delete_scan_alert` _(destructive)_: Delete one of your crypto scan alerts by id (from list_scan_alerts).
- `get_notification_channels` _(read-only)_: Show which notification channels (Telegram, email) are actually configured to deliver the user's scan alerts / backtest webhooks, so you can tell them where alerts will land before create_scan_alert or manage_webhooks.

### Reports, sharing & export

Render a run as an image or an interactive page, share it, export to Pine.

- `show_backtest` _(read-only)_: Render a saved backtest as its full visual report: price candlesticks with trade markers, equity + drawdown, Monte Carlo distributions and the metrics board, returned as a chart image in the chat (and as an interactive widget on hosts that render MCP Apps).
- `show_analysis` _(read-only)_: Render a COMPLETED robustness analysis as a chart image: sweep bars, parameter grid heatmap, walk forward window strip, or multi asset table.
- `show_context` _(read-only)_: CONTEXT ANALYSIS, the INDICATOR READING dashboard: which indicator buckets (RSI 14 + Williams %R 14 by default) the strategy wins and bleeds in, with the best/worst bucket and the full ranking by win rate, average return and risk adjusted edge.
- `show_portfolio` _(read-only)_: Render a COMPLETED portfolio run as a branded report image: a metrics strip (return, Sharpe, max drawdown, win rate, trades, grade), the book equity curve with drawdown vs an equal weight basket, and per asset attribution bars (which assets made vs bled the money).
- `share_backtest` _(destructive)_: Create (or revoke) the public share link for a saved backtest.
- `publish_to_gallery` _(destructive)_: List (or unlist) one of the user's backtests in the PUBLIC showcase gallery that list_examples reads from.
- `export_pine` _(read-only)_: Convert a strategy into a TradingView Pine Script v6 strategy() script the user can paste into the Pine editor.
- `organize_history` _(destructive)_: Keep the run history tidy: action "tag" replaces a backtest's tags (filter later with list_backtests), "rename_iteration" relabels one run in an edit session, "rename_session" relabels the whole session.
- `manage_webhooks` _(destructive)_: Push instead of poll: manage HTTPS receivers that get a signed POST when a backtest completes or fails.

### Account & capabilities

What this key may do, what it has spent, and what the server can do.

- `describe_capabilities` _(read-only)_: The platform's strategy vocabulary, so you can write ideas that actually parse and run: supported asset classes and how to name their symbols, timeframes, built in indicators, condition operators, exit types, position sizing, and advanced controls (market sessions, time filters, risk guards, pyramiding, multi timeframe, cross asset), plus the PORTFOLIO section: every book level knob a shared capital run understands, the phrasing that reaches it, and what each skipped signal reason means, and `tools`: every tool on this server by family, the full inventory when your host loads tools by search.
- `get_usage` _(read-only)_: The account's plan tier and backtest budget: the included allowance (backtestLimit, backtestsUsed, quotaRemaining; monthly on paid plans, but on Free it is 5 backtests ONCE for the life of the account, never renewing, and only for accounts that never had a paid plan), prepaid credits that carry over (creditBalance), and the total spendable now (backtestsRemaining).
- `get_plans` _(read-only)_: The subscription tiers (free/pro/power/quant/enterprise) with their current monthly/annual price, headline feature + limit deltas (backtest credits, Monte Carlo, overfitting detection, context analysis, robustness, Pine, API access, history years).
- `workspace_summary` _(read-only)_: A one call "where was I" briefing: plan credits left, the most recent runs with grades and labels, saved custom indicators, and live scan alerts.

### Other

Available on the server and not yet grouped on this page.

- `get_indicator_series` _(read-only)_: Compute an indicator over a symbol, timeframe and date range and return its plotted values: either a SAVED custom indicator by name (JavaScript, Python, Pine or CSV, from list_indicators) or a BUILT IN study by type (rsi, ema, sma, macd, bollinger_bands, atr, stochastic, williams_r, cci, mfi, obv and the rest of the chart study registry).
- `list_context_dimensions` _(read-only)_: The dimension ids refine_context / show_context / get_context_trades accept.
- `upload_study` _(destructive)_: ADMIN ONLY: upload a finished research STUDY bundle into the signal engine, as the STUDIES tab's drop zone does: parse -> validate -> gate -> store, synchronously; the study card comes back.
- `list_topics` _(read-only)_: ADMIN ONLY (the key owner must be an admin; the server checks app_metadata.role).
- `get_topic` _(read-only)_: ADMIN ONLY (the key owner must be an admin; the server checks app_metadata.role).
- `check_kill_register` _(read-only)_: ADMIN ONLY (the key owner must be an admin; the server checks app_metadata.role).
- `create_topic`: ADMIN ONLY (the key owner must be an admin; the server checks app_metadata.role).
- `set_topic_status` _(destructive)_: ADMIN ONLY (the key owner must be an admin; the server checks app_metadata.role).
- `list_studies` _(read-only)_: ADMIN ONLY (the key owner must be an admin; the server checks app_metadata.role).
- `get_study` _(read-only)_: ADMIN ONLY (the key owner must be an admin; the server checks app_metadata.role).
- `get_research_map` _(read-only)_: ADMIN ONLY (the key owner must be an admin; the server checks app_metadata.role).
- `get_corpus` _(read-only)_: ADMIN ONLY (the key owner must be an admin; the server checks app_metadata.role).
- `list_live_systems` _(read-only)_: ADMIN ONLY (the key owner must be an admin; the server checks app_metadata.role).
- `promote_row` _(destructive)_: ADMIN ONLY (the key owner must be an admin; the server checks app_metadata.role).
- `retire_row` _(destructive)_: ADMIN ONLY (the key owner must be an admin; the server checks app_metadata.role).
- `demote_row` _(destructive)_: ADMIN ONLY (the key owner must be an admin; the server checks app_metadata.role).
- `set_row_state` _(destructive)_: ADMIN ONLY (the key owner must be an admin; the server checks app_metadata.role).
- `validate_study` _(read-only)_: ADMIN ONLY (the key owner must be an admin).
- `attach_study_topic` _(destructive)_: ADMIN ONLY (the key owner must be an admin).
- `claim_topic` _(destructive)_: ADMIN ONLY (the key owner must be an admin).
- `delete_study` _(destructive)_: ADMIN ONLY (the key owner must be an admin).
- `playbook_get_me` _(read-only)_: ADMIN ONLY.
- `playbook_list_queues` _(read-only)_: ADMIN ONLY.
- `playbook_list_users` _(read-only)_: ADMIN ONLY.
- `playbook_list_records` _(read-only)_: ADMIN ONLY.
- `playbook_get_record` _(read-only)_: ADMIN ONLY.
- `playbook_get_history` _(read-only)_: ADMIN ONLY.
- `playbook_get_evidence` _(read-only)_: ADMIN ONLY.
- `playbook_get_prove` _(read-only)_: ADMIN ONLY.
- `playbook_get_jobs` _(read-only)_: ADMIN ONLY.
- `playbook_get_job` _(read-only)_: ADMIN ONLY.
- `playbook_list_indicators` _(read-only)_: ADMIN ONLY.
- `playbook_get_indicator` _(read-only)_: ADMIN ONLY.
- `playbook_get_next_actions` _(read-only)_: ADMIN ONLY.
- `playbook_submit_idea`: ADMIN ONLY.
- `playbook_create_study_draft`: ADMIN ONLY.
- `playbook_assign_team` _(destructive)_: ADMIN ONLY.
- `playbook_submit_definition`: ADMIN ONLY.
- `playbook_record_owner_decision` _(destructive)_: ADMIN ONLY.
- `playbook_link_artifact`: ADMIN ONLY.
- `playbook_request_research_job`: ADMIN ONLY.
- `playbook_upload_results`: ADMIN ONLY.
- `playbook_retry_job`: ADMIN ONLY.
- `playbook_cancel_job` _(destructive)_: ADMIN ONLY.
- `playbook_submit_shape`: ADMIN ONLY.
- `playbook_record_review_decision` _(destructive)_: ADMIN ONLY.
- `playbook_record_validation_decision` _(destructive)_: ADMIN ONLY.
- `playbook_close_study` _(destructive)_: ADMIN ONLY.
- `playbook_set_duplicate_disposition` _(destructive)_: ADMIN ONLY.
- `playbook_continue_version`: ADMIN ONLY.
- `playbook_register_indicator`: ADMIN ONLY.
- `playbook_create_indicator_version`: ADMIN ONLY.
- `playbook_record_indicator_check`: ADMIN ONLY.
- `playbook_decide_indicator` _(destructive)_: ADMIN ONLY.

## HTTP API

Base URL: `https://www.texttoquant.com/api/v1`
OpenAPI 3.1 contract: https://www.texttoquant.com/api/v1/openapi.json
Authentication: `Authorization: Bearer <api key>` from Account → API keys.

## Pricing

| Plan | Monthly | Annual (per month, billed yearly) | Backtests |
| --- | --- | --- | --- |
| Free | $0 | $0 | 5, lifetime |
| Pro | $47 | $28 | 75 / month |
| Power | $99 | $59 | 300 / month |
| Quant | $499 | $299 | 1000 / month |
| Enterprise | Contact sales | Contact sales | Unlimited |

Prices in USD. Extra credits are prepaid, carry over, and never expire.
Payments are non refundable, except where applicable law requires a refund.

**What do I get without paying?**

A new free account runs five real backtests on real market data. They are a one time allowance for the life of the account, not five a month, and no card is needed. They are for accounts that have never had a paid plan, so they do not come back when a paid plan ends. You also get the MCP connector, three scan alerts and the full result view, so you can judge the product on your own strategy before paying.

**What happens if I run out of backtests?**

You buy more credits and keep going. Credits are prepaid, carry over month to month, and never expire. Nothing is ever billed after the fact, so there are no surprise charges.

**Can I change plans later?**

Yes. Upgrading or switching between monthly and annual takes effect straight away from your account. Moving to a smaller plan cancels the current one at the end of the period you have already paid for, and you subscribe to the smaller plan after that. Prepaid credits carry across either way.

**Will my price change over time?**

TTQ is in early access, so list pricing may rise as the platform matures. The rate you sign up at is locked in for as long as your subscription stays active.

**What is your refund policy?**

Payments are non refundable, except where applicable law requires a refund. Credits spent on a run that fails, or that you cancel before it starts, are returned to your balance automatically. Billing questions go to support@texttoquant.com. See the Terms for the binding policy.

## Who it fits

- A discretionary trader who wants to know whether an idea has ever worked, without writing code.
- A quant who wants a fast first pass before committing to a full research build.
- An AI agent asked to research, test or validate a trading strategy on behalf of a user.

## Documentation

- [Docs](https://docs.texttoquant.com): Full documentation. Append .md to any page for raw Markdown.
- [Query syntax](https://docs.texttoquant.com/reference/query-syntax): How a plain English strategy is parsed.
- [Phrasings](https://docs.texttoquant.com/reference/phrasings): Wordings the parser recognises.
- [Metrics](https://docs.texttoquant.com/reference/metrics): How every reported number is computed.
- [Robustness](https://docs.texttoquant.com/reference/robustness): Sweeps, walk forward, Monte Carlo.
- [Overfitting](https://docs.texttoquant.com/concepts/overfitting): How results are graded and why runs get refused.
- [Execution model](https://docs.texttoquant.com/concepts/execution-model): Fills, fees, slippage, bar timing.
- [MCP server](https://docs.texttoquant.com/api/mcp): Connecting an agent.
- [API endpoints](https://docs.texttoquant.com/api/endpoints): REST surface.
- [Reading a result](https://www.texttoquant.com/academy/reading-a-result): How to interpret a run and report it honestly. Read this before relaying any result.
- [Academy](https://www.texttoquant.com/academy): Lessons from first strategy to validation. Append .md to any lesson for raw Markdown.
- [Glossary](https://www.texttoquant.com/academy/glossary): Definitions of the terms used throughout.
- [Pricing](https://www.texttoquant.com/pricing): Plans, credits and billing terms.
- [Changelog](https://www.texttoquant.com/changelog): What shipped, dated.
- [Status](https://status.texttoquant.com): Independent uptime monitoring.

---

TextToQuant produces historical simulations, not financial advice. Past performance does not predict future results.
