Ready to go further
Next: how to backtest
A step by step method for honest results.
What is included
- What it is, in plain words
- The formula or mechanism, with exact arithmetic
- How it hits grid, martingale and DCA bots
- A check you can run before you switch a bot on
Who it is for
- People who run or plan to run a trading bot
- Anyone reading a backtest or a bot sales page
- Readers who want the numbers, not the pitch
- Not advice, and not a signal service
Key facts
- backtrader is a Python library you use from your own code. This page explains the general method, not the product's current features.
- A bot is only as trustworthy as its test. Before relying on any result here, check costs, fills, data and timing, and keep a stretch of data the rule never saw.
- The worked example on this page uses made-up numbers, checked in node on 31 Oct 2026. It shows the arithmetic, not how any product performs.
- Prices, fees, markets, versions, limits and supported languages change and belong to the vendor. We state none of them. Check the vendor's current pages.
- Start on a simulated account, keep stops where they still work if the bot stops, and move to real money only in very small steps, if at all.
What it is
Backtrader is an open source Python library for backtesting trading ideas and, through broker integrations, running them live. It is a library, not an application: you write Python code that uses it, so the quality of the result depends on your code and your data as much as on the library. Being open source, it is free to read and change, and its maintenance status and the state of its integrations are things to check on the project's own page, because open source projects can slow down or stop.
The vocabulary is worth knowing. A central engine, usually called Cerebro, holds data feeds, strategies, a broker simulation and analysers. A strategy is a class with a method called once per bar. Indicators are objects the strategy creates once and reads each bar. This page explains how it works in general terms. We have not tested it for this page. Check the vendor's current terms.
How a bot connects here
The connection style is your own Python code using a library, with optional broker integrations for live use.
- Data feeds. You load data from a file, a data frame or a vendor. The library does not check that it is correct.
- The strategy method. Called once per bar. Your logic decides to buy, sell or wait.
- The simulated broker. It applies a cash balance, commission and, if you set it, slippage. By default the settings are plain, so set them to match reality.
- Order timing. In libraries of this kind a market order sent on one bar is usually filled on the next bar, at its open, by default. Read the documentation for the current rule and test it.
- Live use. Through integrations that you or others maintain. Check they are current before relying on them.
Worked example: warm up eats data
Every indicator needs a number of bars before it can produce a value. A strategy built on a 200 bar average cannot trade until bar 200. If the test data is short, much of it is spent warming up, and the remaining trades may be too few to mean anything. Numbers are made up and checked in node.
| Case | Warm up bars | Bars of data | Bars left to trade | Share of data |
|---|---|---|---|---|
| 3 indicators, longest 200 bars, 1,000 bars of data | 200 | 1000 | 800 | 80% |
| Same rule, daily data, about 252 bars (one year) | 200 | 252 | 52 | 21% |
| Shorter rule, longest 50 bars, 252 bars | 50 | 252 | 202 | 80% |
With 1,000 bars and a 200 bar warm up, 800 bars (80 percent) remain. With a year of daily data, about 252 bars, a 200 bar warm up leaves only 52 bars, 21 percent, and a test over 52 bars cannot tell skill from luck. Cutting the longest indicator to 50 bars leaves 202. The lesson is to match the length of the rule to the length of the data, and to check the number of trades produced, not only the profit line. See how to backtest and the Python trading bot page.
What to verify before trusting a backtest here
These checks apply to any platform of this kind. The answers come from the vendor's current documentation and from your own tests, not from this page.
| Check | Why it matters |
|---|---|
| Order timing default | Confirm on which bar and at what price a market order fills, and that your logic assumes the same. |
| Commission and slippage set | The defaults are plain. Enter your own. |
| Warm up versus data length | Count the bars left and the trades produced. |
| Data correctness | Missing bars, time zones and adjustments. The library trusts your file. |
| Parameter optimization count | Count every run. See overfitting. |
| Project maintenance status | Check that the library and any live integration are current for your Python version. |
How bots break on this kind of platform
- Stale integration. A live link that no longer matches the broker's current API.
- Optimistic fills. Stops and limits filled at the best price in a bar.
- Logic written for the test. Code that works on a complete data frame but not on a stream.
- No state on restart. A live bot that forgets its positions.
- Unclear timing. Look-ahead by reading data you should not have. See look-ahead bias.
A safe order of work
Backtest with honest costs, forward test on new data, run on a simulated account for weeks, then trade a very small size and compare each step with the one before. See forward testing and paper trading.
What this page does not tell you
It does not tell you whether the product is suitable, what it costs, or how it behaves today. Those change and belong to the vendor. It does not give a strategy to trade. This page explains how it works in general terms. We have not tested it for this page. Check the vendor's current terms.
Keep Going
Related Tools and Guides
Keep exploring
FAQ
Frequently Asked Questions
Is backtrader free?
It is open source, so the library itself is free to use under its licence. Data, brokers and your computer are separate things with their own costs. Check the project page for its licence.
Can backtrader trade live?
Libraries of this type can often connect to brokers through integrations. Check that the integration you would use is current and that it matches your broker's present API.
Does a good backtrader backtest mean a bot will make money?
No. A backtest shows how a rule behaved on past data under its assumptions. Costs, fills, data and luck can all make live results different.
Should I test on a simulated account before real money?
Yes, as a general practice. A simulated account tests your code and your plumbing. Its fills are usually kinder than real ones, so it does not prove a rule works.
Have you tested backtrader?
No. This page explains how it works in general terms and we have not tested it for this page. Check the vendor's current terms.
Are the numbers on this page real?
Example numbers are made up to show how the maths works, and the page says so. A figure only counts as exact when the page says it was calculated on a stated date. Nothing you enter in a calculator leaves your browser.
Can I use this to decide whether to run a bot?
It can show whether a bot's numbers hold together and how much an account can lose. It cannot say what the market will do, and it is not advice. Use it to ask better questions, then read the terms of your own broker or exchange.
Is this financial advice?
No. It is general education. The numbers are made up and it does not consider your situation.
Know the Risk Before You Run It
Free calculators and guides, added every week. Leave your details and we will email you when new ones go up.
Trading carries a risk of loss