GUIDES

How to backtest a crypto trading strategy: a complete walkthrough with free sample data

Contents
The usual first obstacle with any backtesting tool is having nothing to test against. Recording your own data takes days before it becomes useful, which makes for a poor first hour. This guide removes that. Download one day of real recorded market data from our Downloads board, put it where the app expects, and run a backtest. Then — the part most guides skip, read the result correctly, which matters more than producing it.

1. What you need

- TraderWe installed and signed in - One sample file from the Downloads board. Coinbase spot is a reasonable start because the symbols are familiar; Binance perpetuals if you want the widest symbol list

2. Part 1 — Getting data in

1.1 Download a sample Open Downloads in the community. There is one post per venue, each with a single file, its size, and a SHA-256 hash. No sign-in required. Files run 18 to 42 MB. If a download finishes suspiciously fast, compare the hash before using it. A truncated database opens as a corrupt file rather than failing loudly, and you will spend an hour debugging a strategy when the problem is the file. 1.2 Understand the data folder TraderWe keeps your data outside the application folder deliberately, so that an update never touches your recordings, settings or trade history. Updating replaces the program and nothing else. Inside it: record/crypto/1s/ crypto_1s_20260812.db spot, per-second record/crypto/1m/ crypto_1m_20260812.db spot, per-minute record/futures/1s/ futures_1s_20260812.db perpetuals, per-second record/futures/1m/ futures_1m_20260812.db perpetuals, per-minute record/stock/1s/ stock_1s_20260812.db equities settings.db connected venues, universe, order settings trades.db every fill, permanently Each recording is a SQLite database with one table per symbol and 68 columns per row: price, per-interval buy and sell volume, turnover, trade strength, and ten levels of the order book on both sides. 1.3 Place and rename Spot files go in record/crypto/1m/, perpetual files in record/futures/1m/. Create the folder if it does not exist. Then rename. The app reads the asset class from the folder and the date from the filename, the venue is part of neither: - coinbase_1m_20260812.dbcrypto_1m_20260812.db - binance-futures_1m_20260812.dbfutures_1m_20260812.db Because the venue is not in the filename, only one venue can occupy a folder at a time. Swap the file to test a different one. This is a real limitation and it is on our list.

3. Part 2 — Running it

Open Backtest. The date appears in the available-data list. Select it. Now the strategy. Every strategy has two independent parts and beginners routinely write only the first. 2.1 The entry # BUY if Price > Sma(60): Buy() Sma(60) is a 60-tick moving average. On a one-minute file that is sixty minutes. 2.2 The exit — the part that decides your results # SELL if ProfitPct >= 2.0 or ProfitPct <= -1.0 or HoldTime >= 900: Sell() Three independent ways out: a target, a stop, and a time cap. Any one of them ends the trade. The time cap is the one people omit and the one that matters most. Without it a position that neither hits target nor stop sits there indefinitely, occupying capital and hiding the fact that your entry was wrong. HoldTime is in seconds, 900 is fifteen minutes. Press run.

4. Part 3 — Reading the result honestly

You now have a number. Here is what it is and is not. It is not an edge One day is one sample. The same rules on the next day will produce a different number, often a very different one. A single day tells you the rules execute; it tells you nothing about whether they work. The minimum honest test is many days across different conditions, and the useful comparison is against a deliberately uninformative baseline rather than against zero. If your clever entry does not clearly beat "enter on almost anything with a sensible exit", your edge is in the exit rules. Which is worth knowing and much cheaper to find out early. It is not your fill The simulator uses the recorded book, but a real order removes liquidity and invites reaction. The gap between simulated and real grows with your size. We measured this on the same files you just downloaded. Walking a market order down the recorded ladder, a $1,000 clip costs between 0.7 and 2.6 basis points against the midpoint depending on venue. A $25,000 clip could not be filled inside ten levels at all in 65% of minutes on the thinnest venue. If your backtest fills at the touch, it is describing a market that has infinite depth at the best price. It is not the whole market These files hold one venue's view. For the same symbol on the same day we measured a seven-fold difference in reported volume between two venues. Volume-based conditions calibrated on one feed are calibrated to a different market than the one you will trade. Stale data will flatter you Between 8.5% and 19% of recorded symbol-minutes had no update for five minutes or more. A moving average over a partially frozen window is smooth, and a volatility filter reading that window concludes conditions are calm. Both are artifacts. If your strategy looks unusually good on thin symbols, this is the first thing to check.

5. Part 4 — When nothing happens

No date in the list. The file is in the wrong folder, or the name does not match the crypto_1m_YYYYMMDD.db pattern exactly. The run completes with zero trades. Usually the entry condition never becomes true. Loosen it drastically — if Price > 0: will fire on every tick — to confirm the plumbing works, then tighten back in steps. This isolates "my condition is too strict" from "my data is not loading". One specific trap: angle conditions. ChangeAngle(n) is an angle in degrees, so the move it demands scales with the window. ChangeAngle(300) > 45 asks the change rate to rise about 60 points over five minutes, which does not happen. Widen the window and you must lower the angle. An error about an unknown name. A factor name is misspelled. The editor marks unknown names with an ✗ as you type and the same check runs before the backtest starts, so this fails loudly rather than silently treating the condition as false. Trades fire but sizes are zero. The computed order size landed below one unit, a small betting amount against a high-priced symbol. The app now states this on screen with the arithmetic behind it.

6. Part 5 — What to do next

Once the mechanics work, more sample days is not the useful next step. Your own recording is. Sample data tells you the software works. Your own recording tells you about the market you actually trade — your venue, your symbols, at the times you trade them. Every number in this guide came from measuring recordings, and the same questions are answerable in an afternoon once the data is yours. Our guide on recording your own market data covers universe selection, disk sizing, and what to verify on the first day.

Related reading

← All guides

Originally published by TraderWe on July 23, 2026. You may quote and link to this page. Republishing the full text without a link back to the original is not permitted.

3 replies

S
SpreadWatcher· Jul 2026 ago
One day of ticks is enough to see if your logic runs, not whether it survives. Would like the guide to be blunter that a single session tells you nothing about spread behaviour when the book thins out — my paper fills always look great until I check what the far side actually was.
R
RiskFirstRita· Jul 2026 ago
Good that it puts reading the result above generating it, that's the part people skip. Before anyone runs their first test I'd add a line to the checklist: write down what result would make you abandon the idea, and write it down before you press go.
R
RiskFirstRita· Jul 2026 ago· edited Aug 2026 ago
Good call putting "read the result correctly" ahead of producing it, because one day of sample data tells you almost nothing about drawdown. My rule before any strategy leaves the backtester: worst losing streak in the test, times the position size I'm actually planning, written down on paper. If that number makes me wince, the size is wrong, not the strategy. Beginners see a green equity curve on a day of data and size up like it's proven, please don't.
Sign in to reply →