Crypto/stock backtester 
See my other projects: turpin.dev.
Disclaimer
Don't invest what you can't afford to lose. Illustrations are for illustrative purposes only. History is not an indicator of future performance. That said...
Overview
Historic price data are fetched daily via the Marketstack and CryptoCompare APIs, and converted to CSV format using Python; each currency pair is then analysed in C++. Finally, the table below is generated using the trade summary.
Profiling
The C++ code is profiled using gprof
and visualised with gprof2dot
and graphviz
.
Built with ♥ on Thu May 8 17:36:06 UTC 2025 by a Ubuntu 25.04.
Backtests
- 446 currency pairs (from Marketstack, Coinbase, Kraken, Binance)
- 3% take profit
- 6% stop loss
- 68 candles window size
- 0.5 minimum ATR (normalised)
- 4.3 minimum entry price
0.46% average profit over 66 trades.
Time | Token | Open | Close | Hours | Profit |
---|---|---|---|---|---|
2025-05-05 21:00:00 | Kraken-AAVE-EUR | 155.94 | 146.11 | 15 | -6.3% |
2025-05-05 01:00:00 | Coinbase-AAVE-GBP | 129.99 | 134.05 | 5 | 3.1% |
2025-04-30 07:00:00 | Kraken-LINK-GBP | 10.88 | 11.22 | 28 | 3.2% |
2025-04-28 10:00:00 | Coinbase-ENS-EUR | 16.21 | 16.77 | 64 | 3.5% |
2025-04-28 00:00:00 | Coinbase-AAVE-GBP | 125.03 | 128.80 | 6 | 3.0% |
2025-04-26 21:00:00 | Kraken-AVAX-EUR | 19.55 | 19.36 | 67 | -1.0% |
2025-04-15 06:00:00 | Kraken-ETH-GBP | 1241.41 | 1191.77 | 67 | -4.0% |
2025-04-14 07:00:00 | Binance-LINK-EUR | 11.09 | 11.54 | 4 | 4.0% |
2025-04-14 07:00:00 | Kraken-INJ-EUR | 7.22 | 6.74 | 49 | -6.6% |
2025-04-13 22:00:00 | Coinbase-ETH-GBP | 1217.03 | 1255.68 | 12 | 3.2% |
2025-04-12 11:00:00 | Kraken-LTC-EUR | 66.93 | 69.73 | 4 | 4.2% |
2025-04-11 09:00:00 | Kraken-ETH-EUR | 1362.84 | 1404.42 | 24 | 3.1% |
2025-04-11 00:00:00 | Coinbase-ETH-EUR | 1346.34 | 1390.57 | 17 | 3.3% |
2025-04-11 00:00:00 | Coinbase-ETC-EUR | 13.16 | 13.70 | 38 | 4.1% |
2025-04-11 00:00:00 | Kraken-AAVE-EUR | 117.25 | 120.78 | 17 | 3.0% |
2025-04-11 00:00:00 | Coinbase-ETH-GBP | 1167.87 | 1204.21 | 17 | 3.1% |
2025-04-11 00:00:00 | Coinbase-LTC-EUR | 65.56 | 67.76 | 10 | 3.4% |
2025-04-11 00:00:00 | Kraken-BCH-EUR | 258.16 | 266.59 | 10 | 3.3% |
2025-04-11 00:00:00 | Kraken-ETH-EUR | 1346.71 | 1391.29 | 17 | 3.3% |
2025-04-11 00:00:00 | Kraken-KSM-EUR | 11.66 | 12.01 | 18 | 3.1% |
2025-04-11 00:00:00 | Binance-LTC-EUR | 65.56 | 67.75 | 10 | 3.4% |
2025-04-11 00:00:00 | Kraken-LTC-EUR | 65.56 | 67.73 | 10 | 3.3% |
2025-04-11 00:00:00 | Binance-ETH-EUR | 1346.82 | 1390.92 | 17 | 3.3% |
2025-04-11 00:00:00 | Kraken-UNI-EUR | 4.47 | 4.62 | 16 | 3.3% |
2025-04-11 00:00:00 | Binance-BNB-EUR | 512.19 | 527.77 | 39 | 3.0% |
2025-04-09 11:00:00 | Coinbase-SOL-EUR | 95.51 | 101.52 | 6 | 6.3% |
2025-04-09 11:00:00 | Coinbase-SOL-GBP | 82.27 | 87.60 | 6 | 6.5% |
2025-04-09 11:00:00 | Binance-SOL-EUR | 95.58 | 101.49 | 6 | 6.2% |
2025-04-09 11:00:00 | Coinbase-BTC-GBP | 59839.73 | 62145.68 | 6 | 3.9% |
2025-04-09 09:00:00 | Coinbase-BCH-EUR | 247.58 | 258.16 | 8 | 4.3% |
2025-04-06 17:00:00 | Kraken-MLN-EUR | 9.05 | 8.31 | 9 | -8.2% |
2025-04-03 07:00:00 | Kraken-ETH-GBP | 1384.06 | 1397.68 | 67 | 1.0% |
2025-04-03 07:00:00 | Coinbase-ETH-GBP | 1383.85 | 1397.96 | 67 | 1.0% |
2025-04-02 21:00:00 | Kraken-AAVE-EUR | 147.01 | 137.86 | 13 | -6.2% |
2025-04-02 14:00:00 | Kraken-LTC-GBP | 64.33 | 66.77 | 5 | 3.8% |
2025-04-02 14:00:00 | Kraken-INJ-EUR | 8.08 | 7.51 | 20 | -7.0% |
2025-04-02 14:00:00 | Coinbase-AVAX-EUR | 17.73 | 16.52 | 9 | -6.9% |
2025-04-02 14:00:00 | Kraken-LTC-EUR | 76.90 | 79.79 | 5 | 3.8% |
2025-04-02 14:00:00 | Coinbase-UNI-EUR | 5.62 | 5.25 | 22 | -6.5% |
2025-04-02 14:00:00 | Binance-LTC-EUR | 76.89 | 79.79 | 5 | 3.8% |
2025-04-02 14:00:00 | Coinbase-LTC-GBP | 64.27 | 66.72 | 5 | 3.8% |
2025-03-18 16:00:00 | Kraken-NMR-EUR | 9.60 | 8.98 | 41 | -6.4% |
2025-03-17 07:00:00 | Kraken-AVAX-EUR | 16.98 | 17.53 | 45 | 3.2% |
2025-03-16 22:00:00 | Kraken-LTC-GBP | 70.04 | 72.34 | 4 | 3.3% |
2025-03-13 14:00:00 | Coinbase-ETH-EUR | 1730.40 | 1783.73 | 50 | 3.1% |
2025-03-12 12:00:00 | Kraken-APT-EUR | 4.78 | 4.91 | 67 | 2.6% |
2025-03-08 01:00:00 | Binance-BCH-EUR | 358.77 | 336.23 | 40 | -6.3% |
2025-03-07 09:00:00 | Binance-SOL-EUR | 133.08 | 137.26 | 10 | 3.1% |
2025-03-07 09:00:00 | Binance-LTC-EUR | 95.23 | 98.54 | 19 | 3.5% |
2025-03-07 09:00:00 | Kraken-BTC-EUR | 81861.87 | 76934.43 | 54 | -6.0% |
2025-03-07 09:00:00 | Kraken-SOL-EUR | 133.14 | 137.26 | 10 | 3.1% |
2025-03-07 09:00:00 | Coinbase-BTC-EUR | 81858.32 | 76942.67 | 54 | -6.0% |
2025-03-07 09:00:00 | Kraken-BTC-GBP | 68738.90 | 64478.67 | 53 | -6.2% |
2025-03-07 09:00:00 | Coinbase-BTC-GBP | 68746.51 | 64617.68 | 53 | -6.0% |
2025-03-07 09:00:00 | Coinbase-SOL-GBP | 111.77 | 115.25 | 10 | 3.1% |
2025-03-07 09:00:00 | Binance-BTC-EUR | 81888.56 | 76962.80 | 54 | -6.0% |
2025-03-07 09:00:00 | Coinbase-SOL-EUR | 133.13 | 137.27 | 10 | 3.1% |
2025-03-07 09:00:00 | Coinbase-LTC-EUR | 95.21 | 98.49 | 19 | 3.4% |
2025-03-04 11:00:00 | Kraken-BCH-GBP | 243.61 | 251.19 | 12 | 3.1% |
2025-03-03 17:00:00 | Coinbase-LINK-GBP | 12.76 | 11.97 | 2 | -6.2% |
2025-03-03 17:00:00 | Kraken-LINK-EUR | 15.46 | 14.52 | 2 | -6.1% |
2025-02-28 16:00:00 | Kraken-WBTC-EUR | 81124.67 | 85530.23 | 48 | 5.4% |
2025-02-28 14:00:00 | Coinbase-AVAX-EUR | 20.49 | 21.12 | 4 | 3.1% |
2025-02-24 15:00:00 | Kraken-MKR-EUR | 1439.40 | 1347.93 | 6 | -6.4% |
2025-02-22 05:00:00 | Kraken-LINK-EUR | 16.79 | 15.73 | 57 | -6.3% |
2025-02-18 03:00:00 | Coinbase-LINK-EUR | 18.01 | 16.83 | 13 | -6.5% |
Benchmarks
---------------------------------------------------------------- Benchmark Time CPU Iterations ---------------------------------------------------------------- BM_is_entry 52424 ns 52424 ns 12669 BM_is_entry2 40388 ns 40324 ns 17292 BM_to_exit 231 ns 231 ns 3070294 BM_to_exit2 226 ns 226 ns 3115906 BM_to_vwap 7530 ns 7530 ns 93040 BM_to_vwap2 7566 ns 7566 ns 93396 BM_is_recent_dip2 889 ns 889 ns 787825 BM_to_atr 60604 ns 60511 ns 11609 BM_to_atr2 2402 ns 2401 ns 292028 BM_to_atr3 2542 ns 2542 ns 272832 BM_to_average_func 0.336 ns 0.336 ns 2071183230 BM_to_average_func2 0.340 ns 0.340 ns 2131529103 BM_to_average_volume 61135 ns 61135 ns 11290 BM_to_average_volume2 1902 ns 1902 ns 371110 BM_to_size 0.510 ns 0.510 ns 1356459705 BM_to_first 0.329 ns 0.329 ns 2122837224 BM_to_last 0.335 ns 0.335 ns 2096344093 BM_to_sum 0.337 ns 0.337 ns 2075193793 BM_to_sum2 0.332 ns 0.332 ns 2144417841 BM_to_spot 0.339 ns 0.339 ns 2095665966 BM_identity 163 ns 163 ns 4318294 BM_identity2 162 ns 162 ns 4314270 BM_to_profit 0.334 ns 0.334 ns 2091409410 BM_to_time 0.332 ns 0.332 ns 2136603298 BM_to_open 0.333 ns 0.333 ns 2092043638 BM_to_high 0.331 ns 0.331 ns 2101248686 BM_to_low 0.340 ns 0.340 ns 2082837469 BM_to_close 0.333 ns 0.332 ns 2089993196 BM_to_volume 0.332 ns 0.332 ns 2050927477