๐ฎ๐ณ Indian Stocks Backtest
Describe a strategy in plain English and PitTest backtests it against real NSE 1-minute data, in a sandboxed environment. No coding needed โ just describe it like you would to a person.
What to type
Describe entry, exit, position sizing, and which Indian stocks you want to test โ as much or as little detail as you want. Anything you don't specify gets a sensible default (see below), and the result always tells you exactly what was assumed.
Choosing which stocks
- Mention NIFTY50, NIFTY100, or NIFTY500 to run across that index
- Name a specific stock in capitals, e.g. RELIANCE, TCS โ you can list several
- Say nothing and it defaults to a random 5-stock quick test
Defaults โ what you get if you don't specify
| Setting | Default | How to override |
|---|---|---|
| Capital | โน1,00,000 | "capital 50000" or "2 lakh" |
| Brokerage/cost | โน0/trade | "cost 20/trade" or "brokerage 50 per trade" |
| Target (non-daily) | 1% | "target 2%" or "take profit 1.5%" |
| Stop-loss (non-daily) | 0.5% | "stop loss 1%" or "sl 0.5%" |
| Target (daily/swing) | 15% | same as above |
| Stop-loss (daily/swing) | 30% | same as above |
| Leverage | 1x (always) | not user-configurable |
| Dataset window | Full available history | "past 1 year", "last 6 months", "past 90 days" |
| Stock universe | Random 5 stocks | name NIFTY50/100/500 or a ticker |
Every result message ends with an "Assumed:" line stating exactly which defaults were applied โ nothing is hidden.
Important: if your message already explains a setting in words (even without the exact keyword), the system tries to follow your written explanation instead of silently overriding it with a default โ describe it as precisely as you can for the closest match.
"Create new strategy"
Re-sending the exact same description reuses the exact same generated code every time โ fully deterministic, identical results on every run. Saying "create new strategy" or "regenerate" forces a fresh AI-written implementation, which can differ slightly in logic and therefore give different (still individually valid) results. Only do this if you deliberately want to try a different implementation of the same idea.
Premium features Free right now
- Full trade-by-trade CSV download for every backtest
- The exact generated strategy code and parameters used for each run, visible in the chat
- Higher daily usage limits (see the Usage & Credits tab)
FAQ โ Indian Stocks
What do I type to run a backtest?
Describe entry, exit, position sizing, and which stocks in plain English โ as much or as little detail as you want. Anything you don't specify gets a sensible default, and the result always tells you exactly what was assumed. Example: "Run EMA 20/50 crossover on RELIANCE with 1% stop loss."
How do I choose which stocks to test?
Mention NIFTY50, NIFTY100, or NIFTY500 to run across that index, name specific stocks in capitals (e.g. RELIANCE, TCS), or say nothing and it defaults to a random 5-stock quick test.
What are the default capital, target, stop-loss, and leverage?
Capital defaults to โน1,00,000, target to 1% and stop-loss to 0.5% for non-daily strategies (15%/30% for daily/swing strategies), brokerage to โน0/trade, leverage is always 1x, and the stock universe defaults to a random 5 stocks over the full available history. Every default can be overridden by naming it in your description, and every result ends with an "Assumed:" line stating exactly which defaults were applied.
What does "create new strategy" do?
Re-sending the exact same description reuses the exact same generated code every time โ fully deterministic. Saying "create new strategy" or "regenerate" instead forces a fresh AI-written implementation, which can differ slightly in logic and therefore give different (still individually valid) results.
What premium features are included for free right now?
Full trade-by-trade CSV download for every backtest, the exact generated strategy code and parameters used for each run, and higher daily usage limits โ all free while the site is in testing.
๐ Global Stocks Backtest
Backtest a trading strategy worldwide: daily stock data covering 23 countries and 41,000+ stocks โ Australia, Belgium, Brazil, Canada, China, France, Germany, Indonesia, Ireland, Italy, Japan, Mexico, the Netherlands, Poland, Saudi Arabia, South Korea, Spain, Sweden, Switzerland, Taiwan, Turkey, the United Kingdom, and the United States. From the sidebar, click Global Stocks Backtest and pick a country to get started.
What's different from Indian stocks
| Indian Stocks | Global Stocks | |
|---|---|---|
| Bar resolution | 1-minute | Daily (no intraday data exists for these markets) |
| History | 4.5 years | Varies by country โ some back to the 1960s-90s, shown when you pick a country |
| Currency | โน (INR) always | Each country's own currency by default (ยฅ, โฌ, ยฃ, etc.) โ name any currency (e.g. "in USD", "in euros") and it converts, using a live exchange rate whenever one is reachable, or an honestly-labeled approximate rate as a fallback if it isn't. Either way, it's today's rate applied across the whole run, not the real historical FX rate on each trade's actual date. |
| Position holding | Intraday by default, daily/swing on request | Always daily/swing โ there's no intraday concept on daily bars |
Choosing which stocks (per country)
After picking a country, the same plain-English description you'd use for Indian stocks works here too. Which stocks actually get tested depends on what you say:
- Say nothing specific โ defaults to the top 5 large-cap stocks in that country, ranked by actual market cap (not random) โ the biggest, most liquid names
- Name a cap tier โ "mega cap", "large cap", "mid cap", "small cap", or "micro cap" โ โ runs across every stock in that entire tier for the chosen country
- Say "whole market" or "whole exchange" โ runs across every stock in that country, all cap tiers combined โ the biggest possible sweep (some countries have thousands of stocks, so this queues as a background job like NIFTY500 does)
- Name a specific ticker (e.g.
7203.Tfor a Tokyo-listed stock, orAAPL-style US tickers) โ tests just that stock
Defaults for global strategies
| Setting | Default |
|---|---|
| Capital | 100,000 units of that country's currency |
| Target / Stop-loss | 15% / 30% (same as Indian daily/swing strategies โ every global run is daily) |
| Leverage | 1x (always) |
| Trade duration units | Shown in days, not minutes โ daily bars don't have an intraday duration |
A few things worth knowing
- Data quality varies by country, same honesty as crypto โ some countries (US, Japan, UK) have deep multi-decade coverage; smaller markets have shorter, still-real history. The country picker shows the actual date range live before you commit to one.
- Currency conversion works for any currency, not just USD โ say "in USD", "in euros", "in yen", or name any currency you like, and every monetary figure in the result (P&L, capital, per-trade numbers) gets converted for you. It tries a live exchange rate first; if that lookup fails, it falls back to a static approximate rate instead of failing the whole run โ and the result always says plainly which of the two actually happened. Either way it's today's rate applied across the whole run, not the real historical FX rate on each trade's actual date, so treat the converted number as "what this would look like in that currency today," not a precise historical conversion.
- Cap tiers are Yahoo Finance's classification โ mega/large/mid/small/micro cap boundaries come from the underlying data source, not something PitTest defines itself.
FAQ โ Global Stocks
Which country has the most stocks?
The United States (~11,000 unique tickers), followed by China (~5,300), Japan (~3,800), and the United Kingdom (~3,200). The exact count and date range for every one of the 23 countries is shown live in the country picker.
Can I run the same strategy across multiple countries?
Not in one message โ each chat is scoped to one country (picked when you start it). Start a new Global Stocks Backtest chat and pick a different country to compare.
Why are trade durations shown in days, not minutes?
Global stock data is daily bars โ there's no intraday timestamp to measure minutes from, so a "trade duration" here genuinely means how many trading days a position was held.
Is the currency conversion accurate?
It converts every monetary figure in the result using a live exchange rate whenever it can reach one; if the live lookup fails, it falls back to a static approximate rate instead of failing the run, and the result always states which one actually happened. Either way, it applies today's rate across the whole backtest rather than the real historical FX rate on each trade's actual date โ a good way to see the numbers in a currency you're used to, not a precise historical conversion.
Can I convert to a currency other than USD?
Yes โ name any currency in your message (e.g. "in euros", "in yen", "in Australian dollars") and the result converts to that currency the same way. This works from any country's native currency to any other supported currency, not just to USD.
โก Crypto Backtest
Free crypto backtesting with real 1-minute candle data, covering 401 coins โ including Bitcoin (BTC), Ethereum (ETH), Solana (SOL), Dogecoin (DOGE), XRP, BNB, and Cardano (ADA) โ results always in USD. From the sidebar, click Crypto Backtest to start (no picker needed, just describe your strategy).
Choosing a coin
- Say nothing specific โ defaults to BTC only (unlike Indian/global stocks' random/top-5 default โ crypto has no natural "index" grouping, so it defaults to the single most reliable coin)
- Name a coin โ a symbol ("ETH", "DOGE") or common full name ("bitcoin", "ethereum", "dogecoin", "solana", etc.) โ tests that coin
- Say "whole market" โ runs across all 401 coins at once (queued as a background job, same as NIFTY500 โ this many sandboxed runs takes real time)
Not every coin we recognize by name has enough reliable data to backtest. If you name a real coin we know about but don't have solid history for, you'll get an honest note in the result (e.g. "requested XYZ unavailable") and BTC runs instead, rather than a silent wrong substitution.
Data coverage varies a lot by coin
This is real, audited data โ not every coin has the same amount of history, and we don't pretend otherwise:
| History available | Coins | Examples |
|---|---|---|
| 2.5+ years (the majors) | 204 | SOL, BTC, XRP, BNB, APT |
| 1.5โ2.5 years | 45 | FLOKI, PIXEL, WIF, METIS, AEVO |
| 1โ1.5 years | 46 | BERA, TST, LAYER, HEI, BIO |
| 6 months โ 1 year | 41 | PLUME, WLFI, USDE, LINEA, HOLO |
| Under 6 months | 65 | BANK, ALLO, ESP, MMT, MANTRA |
Whichever coin you pick, the result tells you its exact real date range and history length โ say e.g. "past 1 year" to test a shorter window than a coin's full history.
Defaults for crypto strategies
| Setting | Default |
|---|---|
| Capital | $100,000 |
| Target / Stop-loss | 1% / 0.5% (same as Indian intraday defaults), or 15% / 30% if you say "daily"/"swing" โ crypto is real 1-minute data, so both styles work |
| Leverage | 1x (always) |
| Market hours | 24/7 โ positions can hold across any time boundary, there's no session close to force an exit at (unlike NSE's 9:15โ15:30) |
| Currency | USD always (all data is USDT-quoted) |
A few things worth knowing
- Data comes from two exchanges (CoinDCX and CoinSwitch) โ you don't need to specify which; PitTest already picked whichever source had the more complete history for each coin.
- "Whole market" is a big job โ 401 sandboxed runs takes real time to finish, same as a NIFTY500 sweep. You'll see it queued with a live ETA, not stuck.
- USD is exact here, not approximate โ unlike global stocks' currency conversion, crypto data is natively USDT-quoted, so there's no FX approximation involved.
FAQ โ Crypto
Why isn't [some coin] available?
Not every coin has enough continuous recorded history to backtest reliably โ some have gaps from when they weren't being tracked. If you name a coin we recognize but don't have solid data for, you'll get an honest note saying so, and BTC runs instead.
Why does crypto use different default target/stop-loss than global stocks?
Crypto data is real 1-minute granularity (like NSE), so both tight intraday-style defaults (1%/0.5%) and wide daily/swing-style defaults (15%/30%, if you say "daily") make sense โ global stocks are daily-only, so they only ever use the wide defaults.
Does crypto trading ever pause for a "session close" like NSE does?
No โ crypto trades 24/7, so a position can be held across any time boundary. There's no forced exit at a market close the way there is for NSE's 9:15โ15:30 session.
How much history does BTC (the default) actually have?
BTC has continuous 1-minute data from January 2024 through the most recent recording date โ about 2.6 years, no gaps. Other majors (ETH, XRP, BNB, and more) have similarly long continuous history; smaller/newer coins have less, shown in the table above.
๐ค Using the Chatbot
The chat box isn't just for strategy descriptions โ it's a real assistant that understands PitTest itself. If you type something that reads like a question rather than a strategy, PitTest answers it directly instead of trying (and failing) to turn it into backtest code.
What you can ask it
- "What can you do?" or "How does this work?" โ a plain explanation of the product
- "Which country has the most data?" or "Does [coin] have enough history?" โ real, live facts, not a guess
- "What's the default capital?" or "How do usage credits work?" โ pulled from the same real numbers as this Guide
- Plain greetings like "hi" or "thanks" also get a normal reply instead of running a nonsense backtest
Asking for results in a different currency (Global Stocks)
This is a real function of the chatbot, not just this Guide talking about it: add a currency to your strategy description for a Global Stocks Backtest โ e.g. "in USD", "in euros", "convert to yen" โ and every monetary figure in that result (capital, P&L, per-trade numbers) is converted for you.
- Say nothing about currency โ results stay in that country's own native currency (ยฅ for Japan, โฌ for eurozone countries, etc.)
- Name a currency โ it converts using a live exchange rate fetched at the moment you run it, whenever that lookup succeeds
- If the live rate lookup fails (a network hiccup, the rate provider being down) โ it still converts, using a built-in approximate rate instead of failing your run โ and the result always says plainly which of the two actually happened, so you're never misled into thinking an assumed rate is a live one
Either way, the conversion applies today's rate to the whole backtest โ it's not the real historical FX rate on each individual trade's actual date, so treat a converted number as "what this looks like in that currency today," not a precise historical conversion. This isn't limited to USD โ you can ask for any of the currencies PitTest recognizes (dollars, euros, yen, pounds, rupees, yuan, and more).
It's grounded to only use real facts about PitTest โ it won't invent a feature, a number, or a data source that doesn't exist. If it genuinely doesn't know something, it says so and points you to this Guide instead of guessing.
How it decides "question" vs "strategy"
This happens automatically โ you don't need to phrase things specially. A message that looks like an actual strategy (mentions an indicator, a stock/coin, a percentage, or an action like "buy"/"sell") runs as a backtest as normal. Anything else โ a genuine question, a greeting, "test", "thanks" โ gets a direct answer instead. If you ever get a nonsense-feeling response to something you meant as a real strategy, try being a bit more specific (name an indicator or a number) so it's clearly recognized as one.
๐ณ Usage & Credits
You're currently getting 5× the standard daily usage budget, while the site is free during testing.
Usage is metered in credits, not a flat per-message count โ each symbol/stock/coin actually backtested costs 1 credit (that's the real sandbox/compute cost per one), and an unusually long or complex strategy description costs a little more (extra AI codegen cost). This applies the same way across all three markets. A single-coin/single-stock test barely touches your budget; a NIFTY500 sweep or a crypto "whole market" run uses a lot more of it, proportional to what it actually costs to run. Your free-trial budget is 1500 credits/day โ once billing starts, the standard plan will be 300 credits/day. Check your current usage any time from the account menu at the bottom of the sidebar.
FAQ โ Usage
How are usage credits metered, and what's the free daily budget?
Usage is metered in credits, not a flat per-message count โ each symbol/stock/coin actually backtested costs 1 credit, and an unusually long or complex strategy description costs a little more. The free-trial budget is 1500 credits/day, currently multiplied 5× while the site is free during testing; the standard plan will be 300 credits/day once billing starts.
๐ฌ Support
Found a bug? Something not working right? Have an idea for a feature, a new market, or a coin/country we should add? We want to hear about it.
๐ง Email us anytime:
This is genuinely checked โ bug reports, confusing results, missing data you expected, or just an idea you want to share. PitTest is an independent, solo-built project still in active testing, so real feedback directly shapes what gets fixed or built next.