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 Sep 11 17:38:53 UTC 2025 by a Ubuntu Questing Quokka (development branch).
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.45% average profit over 41 trades.
Time | Token | Open | Close | Hours | Profit |
---|---|---|---|---|---|
2025-08-19 12:00:00 | Kraken-LINK-GBP | 18.24 | 19.13 | 27 | 4.8% |
2025-08-19 12:00:00 | Coinbase-LINK-EUR | 21.09 | 22.09 | 27 | 4.8% |
2025-08-18 15:00:00 | Binance-AVAX-EUR | 20.27 | 19.85 | 67 | -2.1% |
2025-08-18 15:00:00 | Kraken-AVAX-EUR | 20.22 | 19.88 | 67 | -1.7% |
2025-08-18 15:00:00 | Coinbase-AVAX-EUR | 20.25 | 19.84 | 67 | -2.0% |
2025-08-15 06:00:00 | Kraken-GNO-EUR | 126.24 | 118.42 | 13 | -6.2% |
2025-08-12 06:00:00 | Coinbase-LINK-GBP | 16.00 | 16.63 | 7 | 3.9% |
2025-08-11 20:00:00 | Kraken-LINK-EUR | 18.41 | 19.26 | 17 | 4.6% |
2025-08-06 12:00:00 | Kraken-SOL-EUR | 141.27 | 146.43 | 22 | 3.7% |
2025-08-06 12:00:00 | Coinbase-SOL-GBP | 123.11 | 126.81 | 19 | 3.0% |
2025-08-06 12:00:00 | Coinbase-SOL-EUR | 141.24 | 146.39 | 22 | 3.6% |
2025-08-01 04:00:00 | Kraken-KP3R-EUR | 5.15 | 5.31 | 1 | 3.1% |
2025-07-30 09:00:00 | Kraken-RPL-EUR | 6.32 | 6.52 | 8 | 3.1% |
2025-07-29 11:00:00 | Kraken-UNI-EUR | 8.89 | 8.34 | 57 | -6.2% |
2025-07-29 11:00:00 | Coinbase-UNI-EUR | 8.89 | 8.34 | 57 | -6.2% |
2025-07-29 10:00:00 | Coinbase-AVAX-EUR | 21.43 | 20.03 | 33 | -6.5% |
2025-07-26 21:00:00 | Kraken-KP3R-EUR | 5.16 | 5.38 | 28 | 4.1% |
2025-07-24 15:00:00 | Binance-BNB-EUR | 660.65 | 676.91 | 67 | 2.5% |
2025-07-24 05:00:00 | Binance-BNB-EUR | 647.96 | 667.78 | 43 | 3.1% |
2025-07-22 17:00:00 | Coinbase-ICP-GBP | 4.44 | 4.17 | 21 | -6.1% |
2025-07-22 17:00:00 | Kraken-ICP-EUR | 5.11 | 4.73 | 24 | -7.4% |
2025-07-22 17:00:00 | Kraken-ETH-GBP | 2739.13 | 2768.57 | 67 | 1.1% |
2025-07-22 13:00:00 | Binance-APT-EUR | 4.51 | 4.69 | 18 | 3.8% |
2025-07-22 13:00:00 | Binance-EGLD-EUR | 15.06 | 15.55 | 16 | 3.3% |
2025-07-22 13:00:00 | Kraken-KSM-EUR | 14.53 | 13.42 | 28 | -7.6% |
2025-07-22 04:00:00 | Binance-LINK-EUR | 16.52 | 15.49 | 34 | -6.2% |
2025-07-22 04:00:00 | Kraken-LINK-EUR | 16.48 | 15.48 | 34 | -6.0% |
2025-07-22 04:00:00 | Coinbase-LINK-GBP | 14.34 | 13.41 | 34 | -6.5% |
2025-07-22 04:00:00 | Coinbase-LINK-EUR | 16.52 | 15.49 | 34 | -6.2% |
2025-07-21 10:00:00 | Coinbase-UNI-GBP | 7.75 | 8.10 | 3 | 4.6% |
2025-07-17 12:00:00 | Coinbase-AAVE-EUR | 278.49 | 287.33 | 18 | 3.2% |
2025-07-17 00:00:00 | Coinbase-UNI-EUR | 7.71 | 8.18 | 25 | 6.1% |
2025-07-15 16:00:00 | Coinbase-SOL-GBP | 120.03 | 124.14 | 17 | 3.4% |
2025-07-15 12:00:00 | Kraken-AVAX-EUR | 18.00 | 18.66 | 6 | 3.6% |
2025-07-15 12:00:00 | Coinbase-AAVE-EUR | 266.93 | 277.92 | 4 | 4.1% |
2025-07-15 12:00:00 | Coinbase-AVAX-EUR | 18.05 | 18.66 | 6 | 3.4% |
2025-07-15 12:00:00 | Binance-LINK-EUR | 13.17 | 13.66 | 5 | 3.7% |
2025-07-15 12:00:00 | Coinbase-LINK-GBP | 11.43 | 11.83 | 5 | 3.5% |
2025-07-15 12:00:00 | Coinbase-LINK-EUR | 13.16 | 13.65 | 5 | 3.7% |
2025-07-15 12:00:00 | Binance-AVAX-EUR | 18.05 | 18.66 | 6 | 3.4% |
2025-06-30 20:00:00 | Kraken-LPT-EUR | 5.35 | 5.36 | 67 | 0.2% |
Benchmarks
---------------------------------------------------------------- Benchmark Time CPU Iterations ---------------------------------------------------------------- BM_is_entry 57976 ns 57885 ns 12158 BM_is_entry2 44912 ns 44906 ns 15173 BM_to_exit 252 ns 252 ns 2740848 BM_to_exit2 267 ns 267 ns 2557985 BM_to_vwap 8128 ns 8128 ns 86166 BM_to_vwap2 8118 ns 8118 ns 86517 BM_is_recent_dip2 921 ns 921 ns 757731 BM_to_atr 67771 ns 67765 ns 9894 BM_to_atr2 3308 ns 3304 ns 213598 BM_to_atr3 3289 ns 3289 ns 191910 BM_to_average_func 0.394 ns 0.394 ns 2021898875 BM_to_average_func2 0.375 ns 0.375 ns 1706413415 BM_to_average_volume 71228 ns 71226 ns 9499 BM_to_average_volume2 2359 ns 2358 ns 282339 BM_to_size 0.540 ns 0.540 ns 1306280976 BM_to_first 0.363 ns 0.363 ns 1857881360 BM_to_last 0.371 ns 0.371 ns 1804642895 BM_to_sum 0.374 ns 0.374 ns 1942977006 BM_to_sum2 0.385 ns 0.385 ns 1931055983 BM_to_spot 0.369 ns 0.369 ns 1841791015 BM_identity 189 ns 189 ns 3785535 BM_identity2 197 ns 197 ns 3630090 BM_to_profit 0.373 ns 0.373 ns 1926775681 BM_to_time 0.373 ns 0.373 ns 1873230180 BM_to_open 0.372 ns 0.372 ns 1968710635 BM_to_high 0.372 ns 0.372 ns 1856521637 BM_to_low 0.367 ns 0.367 ns 1868722815 BM_to_close 0.367 ns 0.367 ns 1889099675 BM_to_volume 0.377 ns 0.377 ns 1858359404