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 Jul 10 17:36:18 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.56% average profit over 44 trades.
Time | Token | Open | Close | Hours | Profit |
---|---|---|---|---|---|
2025-06-30 20:00:00 | Kraken-LPT-EUR | 5.35 | 5.36 | 67 | 0.2% |
2025-06-18 01:00:00 | Coinbase-UNI-EUR | 6.48 | 6.68 | 4 | 3.1% |
2025-06-18 01:00:00 | Coinbase-LINK-EUR | 11.38 | 10.98 | 67 | -3.5% |
2025-06-11 18:00:00 | Kraken-INJ-EUR | 11.90 | 11.16 | 16 | -6.2% |
2025-06-02 18:00:00 | Kraken-INJ-EUR | 10.39 | 10.90 | 5 | 4.9% |
2025-05-31 18:00:00 | Kraken-MLN-EUR | 7.25 | 7.55 | 2 | 4.1% |
2025-05-30 09:00:00 | Kraken-ETH-EUR | 2305.22 | 2197.32 | 67 | -4.7% |
2025-05-30 09:00:00 | Coinbase-UNI-GBP | 4.84 | 4.48 | 16 | -7.4% |
2025-05-30 09:00:00 | Coinbase-ETH-EUR | 2305.12 | 2197.66 | 67 | -4.7% |
2025-05-24 09:00:00 | Kraken-SOL-GBP | 129.39 | 128.02 | 67 | -1.1% |
2025-05-24 08:00:00 | Kraken-APT-EUR | 4.76 | 4.46 | 31 | -6.3% |
2025-05-24 08:00:00 | Kraken-BCH-EUR | 376.78 | 361.94 | 67 | -3.9% |
2025-05-23 20:00:00 | Kraken-LTC-GBP | 72.61 | 71.50 | 67 | -1.5% |
2025-05-19 18:00:00 | Kraken-KSM-EUR | 16.33 | 16.85 | 8 | 3.2% |
2025-05-19 15:00:00 | Kraken-LINK-EUR | 13.73 | 14.17 | 10 | 3.2% |
2025-05-17 13:00:00 | Kraken-EUL-EUR | 8.60 | 8.63 | 67 | 0.3% |
2025-05-17 10:00:00 | Kraken-ETH-EUR | 2221.93 | 2295.65 | 29 | 3.3% |
2025-05-15 18:00:00 | Kraken-QNT-EUR | 87.59 | 82.15 | 30 | -6.2% |
2025-05-15 01:00:00 | Coinbase-SOL-EUR | 157.75 | 148.24 | 49 | -6.0% |
2025-05-15 01:00:00 | Coinbase-SOL-GBP | 133.01 | 124.70 | 49 | -6.2% |
2025-05-13 12:00:00 | Coinbase-LINK-EUR | 15.00 | 15.66 | 7 | 4.4% |
2025-05-13 12:00:00 | Binance-LINK-EUR | 15.00 | 15.45 | 6 | 3.0% |
2025-05-13 12:00:00 | Kraken-ICP-EUR | 5.08 | 5.23 | 6 | 3.1% |
2025-05-13 12:00:00 | Coinbase-AAVE-EUR | 196.91 | 203.47 | 4 | 3.3% |
2025-05-13 12:00:00 | Kraken-LINK-EUR | 14.99 | 15.67 | 7 | 4.5% |
2025-05-13 12:00:00 | Binance-AVAX-EUR | 22.10 | 23.02 | 7 | 4.1% |
2025-05-13 12:00:00 | Kraken-LINK-GBP | 12.62 | 13.17 | 7 | 4.4% |
2025-05-13 12:00:00 | Kraken-QNT-EUR | 88.28 | 83.88 | 67 | -5.0% |
2025-05-13 12:00:00 | Coinbase-AVAX-EUR | 22.08 | 23.01 | 7 | 4.2% |
2025-05-13 12:00:00 | Coinbase-LINK-GBP | 12.61 | 13.18 | 7 | 4.6% |
2025-05-13 12:00:00 | Coinbase-ETC-EUR | 17.71 | 18.46 | 7 | 4.2% |
2025-05-13 11:00:00 | Kraken-AVAX-EUR | 22.09 | 23.02 | 8 | 4.2% |
2025-05-13 11:00:00 | Kraken-KSM-EUR | 19.18 | 19.89 | 7 | 3.7% |
2025-05-13 11:00:00 | Kraken-DOT-EUR | 4.52 | 4.67 | 14 | 3.3% |
2025-05-13 11:00:00 | Coinbase-DOT-EUR | 4.52 | 4.66 | 13 | 3.0% |
2025-05-13 11:00:00 | Binance-DOT-EUR | 4.52 | 4.66 | 13 | 3.0% |
2025-05-12 00:00:00 | Kraken-BCH-EUR | 364.06 | 361.12 | 67 | -0.8% |
2025-05-12 00:00:00 | Coinbase-LTC-GBP | 75.69 | 77.98 | 11 | 3.0% |
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% |
Benchmarks
---------------------------------------------------------------- Benchmark Time CPU Iterations ---------------------------------------------------------------- BM_is_entry 53582 ns 53501 ns 13166 BM_is_entry2 40343 ns 40342 ns 17287 BM_to_exit 222 ns 222 ns 3071919 BM_to_exit2 237 ns 237 ns 2955435 BM_to_vwap 7615 ns 7615 ns 91807 BM_to_vwap2 7615 ns 7615 ns 92013 BM_is_recent_dip2 890 ns 890 ns 787756 BM_to_atr 60875 ns 60874 ns 11568 BM_to_atr2 2430 ns 2426 ns 289897 BM_to_atr3 2606 ns 2605 ns 274144 BM_to_average_func 0.331 ns 0.331 ns 2080270692 BM_to_average_func2 0.341 ns 0.341 ns 2037469347 BM_to_average_volume 61963 ns 61963 ns 11208 BM_to_average_volume2 1922 ns 1922 ns 366372 BM_to_size 0.512 ns 0.511 ns 1359529419 BM_to_first 0.337 ns 0.337 ns 2022560887 BM_to_last 0.338 ns 0.338 ns 2048864433 BM_to_sum 0.345 ns 0.344 ns 2076111739 BM_to_sum2 0.335 ns 0.335 ns 2044313897 BM_to_spot 0.345 ns 0.344 ns 2098178232 BM_identity 163 ns 163 ns 4290796 BM_identity2 163 ns 163 ns 4305119 BM_to_profit 0.350 ns 0.350 ns 1985565816 BM_to_time 0.348 ns 0.348 ns 2005282257 BM_to_open 0.338 ns 0.338 ns 2079397331 BM_to_high 0.352 ns 0.352 ns 1995054636 BM_to_low 0.349 ns 0.349 ns 1923083025 BM_to_close 0.355 ns 0.355 ns 1953090151 BM_to_volume 0.345 ns 0.345 ns 2011982696