FAQ
Everything we get asked.
We don't run a support inbox. This page is the support inbox. If you spot a gap, file an issue and we'll add the answer here.
Getting started
What is Bagtester?▾
An MCP-native backtesting service. You write a Python trading strategy in your AI coding agent (Claude Code, Codex, Cursor), submit it through Bagtester's MCP server, and get standardized backtest results back — equity curve, Sharpe, drawdown, trade log — all in seconds.
Why MCP-first?▾
Because AI coding agents are how the next generation of strategies will be written. We deliver structured, agent-readable outputs by default so the agent can decide what to do next — rerun on a longer window, sweep parameters, or recommend a tier upgrade if needed. The agent becomes part of the workflow, not just the editor.
Do I need a paid plan to try it?▾
No. Free tier ships with 500 credits / month on a rolling 30-day refresh. That's about 10 single 1-year minute-mode backtests on BTC, ETH, or SOL, or several short backtests for quick iteration. Sign up, get an API key, point your agent at https://bagtester.com/api/mcp.
How do I integrate Bagtester with my coding agent?▾
Add the MCP server URL
https://bagtester.com/api/mcp to your agent's config, with your API key as a Bearer token. See /docs/quickstart for per-agent setup snippets.What does my strategy look like?▾
Subclass bagtester.Strategy, override on_bar(self, ctx, bar). Use ctx.buy/sell/close for orders. Subscribe to symbols in on_init. Pre-installed: numpy, pandas, polars, scipy, scikit-learn, statsmodels, ta-lib, pandas-ta. See /docs/strategies for templates.
Data
What asset classes are covered?▾
Crypto (top 50 USDT pairs), FX (16 majors with tick history back to 2003), US stocks (top 200 with 1-minute intraday + EOD), curated US ETFs (~50 covering broad index, sector, bond, commodity, vol, international, factor strategies), and crypto perp funding rates. Cash indices (SPX itself) are computed continuously, not directly tradable — most algo strategies trade SPY/QQQ/etc. ETF proxies anyway.
How fresh is the data?▾
End-of-day data is published the next morning (UTC). Crypto OHLCV is monthly archive — yesterday's data appears the day after. Tick data (FX + crypto top-3) updates daily. Bagtester is for backtesting, not live trading — there is intentionally no real-time stream.
How far back does the history go?▾
FX tick history back to 2003. Crypto top-50 1-minute bars back to ~2019. US stocks 1-minute intraday back to ~2017, EOD back to ~2010. ETFs depend on listing date but most have a decade or more.
Are stocks tick-level?▾
Not at this tier. US stocks are 1-minute intraday from a single venue (~2-3% of consolidated tape volume). Tick stocks (NBBO) are on the Phase 3 roadmap once revenue justifies the licensing cost. We'll annotate the Confidence Score so your agent knows when intraday-only data is the binding constraint.
Can I see what's available before submitting?▾
Yes — the MCP tool
list_available_data returns a structured asset catalog. get_data_sample returns recent OHLCV rows so you (or your agent) can verify schema and value ranges before committing credits.Where does your data come from?▾
We don't disclose data vendors publicly to retain commercial flexibility. All data is licensed for our use. If a specific data property matters to you (e.g. 'is this consolidated tape or single-venue?'), the answer is documented in /docs/data — we describe data character even when we don't name sources.
Can I bring my own data?▾
Not in Phase 1B. Custom CSV uploads are on the soft-deferred list — driven by Phase 2 user demand.
Execution modes
What's the difference between minute, hybrid, and tick mode?▾
Minute mode fills orders at the next bar's open with a constant slippage. Cheap, fast, optimistic — good for sketches. Hybrid mode fills within the next bar's OHLC with adverse selection (calibrated against historic tick data) — closer to realistic execution slippage without paying for tick storage. Tick mode walks the actual trade stream and fills based on which side of the book gets hit — HFT-realistic. Costs scale 1×/3×/10×.
Which mode should I use?▾
If you're early in iteration: minute. Once your strategy looks promising: hybrid to validate execution-slippage realism. If you want HFT-grade accuracy or need to model spread-crossing fills: tick (BTC/ETH/SOL only for now).
Why isn't tick mode available for stocks?▾
Tick stock data (NBBO consolidated tape) requires substantially more licensing budget. Phase 3 add-on. For now, hybrid mode on US stocks is the most realistic available simulation.
Why isn't tick mode available for FX yet?▾
We have FX tick data ingested. The tick engine wires up FX as a follow-up after we calibrate against the crypto top 3 first. This is so users with FX strategies aren't surprised by execution differences when we ship.
Pricing & billing
What's a credit?▾
A credit is a unit of data processed, not a unit of time. The formula: 1 credit per 10,000 bars in minute mode. A 1-year crypto minute backtest is ~53 credits (525,600 minute bars). A 3-month minute backtest is ~13 credits. Hybrid mode multiplies by 3, tick mode by 10. Parameter sweeps charge N × per-combination credits. Walk-forward charges proportionally to windows × in-sample combinations. Wall-clock time varies (cold-start, queue, mode) — credits do not.
What happens if a backtest fails?▾
Failed jobs are not charged — neither infrastructure errors (our fault) nor user-code errors (your fault). You only pay for backtests that complete.
Can I cancel anytime?▾
Yes. Subscriptions run until the current period ends; we don't pro-rata refund unused days. Re-subscribe later and pick up where you left off.
Refund policy?▾
Strict: 7-day money-back applies ONLY for first-month users with less than 50% credits used. After day 7: no refunds. Infrastructure-error credit refunds are automatic. User-code-error charges are not refunded (see above — failed jobs aren't charged in the first place, but if your code completes a useless backtest the charge stands).
Does the free-tier refresh stack?▾
No. The refresh is a top-up, not an addition. If you have 12 credits left at day 30, we set you to 500. If you have 700 credits left (e.g. you topped up), nothing happens. Heavy users top up; hoarders don't accumulate.
What payment methods are supported?▾
Credit/debit card via Stripe, in EUR. SEPA Direct Debit available for European customers via Stripe Checkout. No wire-transfer / PO support at our scale.
Strategies & code
Are there limits on what my strategy code can do?▾
Yes — security boundaries. No pip install at runtime, no network egress, 4-hour wall-clock cap. Any pure-Python logic plus the pre-installed scientific stack works. You can use any of the libraries listed in /docs/strategies.
Can I install custom Python packages?▾
Not at this tier. We curate the runtime stack. If a package is missing that you genuinely need (e.g. vectorbt, riskfolio-lib), open an issue and we'll consider adding it to the next image cut.
Can my strategy take parameters?▾
Yes — define __init__(self, **kwargs) on your Strategy subclass. Submit with the params field on submit_strategy, or use optimize_strategy with a param_grid.
What's parameter optimization?▾
A Quant-tier MCP tool that takes your strategy + a parameter grid (e.g. {fast: [10, 20, 50], slow: [100, 200]}) and runs every combination, returning ranked results by Sharpe, return, or your chosen metric. Up to 1,000 combinations per call. Trader plans can run sweeps up to 50 combinations.
What's walk-forward analysis?▾
A Quant-tier MCP tool that splits your date range into rolling in-sample / out-of-sample windows. For each window: optimize on in-sample, test on out-of-sample. The out-of-sample sequence tells you whether your strategy generalizes or just curve-fits.
Can my strategy access the future?▾
No. The engine enforces causality — on_bar(t) only sees data up to bar t. Pending orders fill at bar t+1, so you can never use information you wouldn't have had at decision time.
MCP integration
What MCP tools are exposed?▾
submit_strategy, get_backtest_results, list_my_jobs, list_available_data, get_data_sample (free); optimize_strategy, walk_forward, improve_strategy (Quant). All return structured JSON with stable schema_version.
Can I call the MCP server without an agent?▾
Yes — it's plain JSON-RPC over HTTP POST. See /docs/api for raw curl examples. But why not let your agent do it.
How do I authenticate?▾
Bearer token in the Authorization header. Generate a key in your dashboard. Trader and Quant tiers can have multiple keys (3 / 10 respectively).
Are there rate limits?▾
No per-second rate limits. Concurrent-backtest limits per tier (1 / 5 / 10) prevent runaway parallelism but the API itself accepts as many requests as your credits cover.
Security & privacy
Is my strategy code seen by other users?▾
No — strategies are stored against your account. Public sharing is opt-in per result and you choose the privacy level (metrics-only, named, or full code).
How is my code executed?▾
In an isolated Cloud Run worker with no network egress, no pip install, and a wall-clock cap. Each job runs in a fresh process — no state leaks between users.
Where is data stored?▾
EU region (Frankfurt) for Postgres, multi-region for object storage. We are GDPR-compliant. Account deletion wipes your data within 30 days.
Do you sell or share my data?▾
No. We don't sell user data, share strategy code with third parties, or train models on submissions.
The Confidence Score
What is it?▾
A 0-10 internal score that captures how much we trust a given backtest — based on sample size, time-range diversity, Sharpe plausibility, drawdown severity, and execution realism. Currently computed for every job but NOT yet returned in the public API.
Why isn't it exposed yet?▾
We want at least 100 real-user backtests in the wild to validate that the formula behaves sensibly across the strategy distribution, not just the synthetic tests we ran in development. Once calibrated, it surfaces in MCP responses + dashboard + share pages.
Will my agent be able to act on it?▾
That's the design intent — yes. The score includes structured improvement suggestions tagged with tier_required, so the agent can recommend (e.g.) "extend to 365 days" or "use hybrid mode" without you having to interpret raw metrics.
Common gotchas
Why does my backtest say 'No data found'?▾
Check date range and symbol. list_available_data shows the canonical list. Free tier covers BTC, ETH, SOL — request other symbols and it will reject. For Trader+, also check the date is within our history window for that asset class (FX from 2003, crypto from 2019, etc.).
Why is my Sharpe ratio negative?▾
Your strategy is loss-making in this window. Check if you're overfitting to a different regime or if your assumptions don't hold. The Confidence Score (when surfaced) will flag negative Sharpe explicitly.
Why is my Sharpe ratio above 5?▾
Almost always overfitting or lookahead bias. Double-check that on_bar only references data up to the current bar. Try walk-forward — if OOS Sharpe is much lower, you have a problem.
Why does hybrid mode produce worse results than minute mode?▾
Because it's more realistic. Minute mode is optimistic — fills happen at the bar open with a tiny constant slippage. Hybrid models adverse selection: aggressive orders cross the spread and get hit at less favorable prices within the bar. Real markets do the same to your live orders.
Why does my optimize_strategy take a long time?▾
Each combination is a full backtest. 50 combinations × 5 seconds = 250 seconds. Quant tier supports up to 1,000 combinations per call; Trader is capped at 50. For larger sweeps, split into sequential calls — credit cost scales linearly with combination count.
Operational
How do I get support?▾
We're intentionally support-light during pre-launch. Read the FAQ + /docs first. Critical bugs: open a GitHub issue at github.com/bagtester. We do not run a support email or chat at this scale — it's why our pricing is what it is.
Will there be a status page?▾
Yes — coming in Sprint 5 / Phase 1C. For now, our Cloud Run worker auto-scales and we monitor uptime via Vercel + Supabase dashboards.
What's on the roadmap?▾
Tick mode for FX (Sprint 4 follow-up), tick stocks (Phase 3 with budget), strategy library + comparison (Sprint 4), Pro tier with monte-carlo + custom indicators (Phase 1C), more pre-installed libraries on demand. Slack/Discord integrations are not on the roadmap — by design, we are agent-first.
Is Bagtester a regulated entity?▾
No — we are a software-as-a-service tool for backtesting. Backtest results are not investment advice, do not constitute a recommendation, and past performance does not guarantee future results. Trade your own strategies at your own risk.
Still unanswered?