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 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