Crypto/stock backtester pipeline

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.

gprof profile

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