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 Oct 9 17:38:48 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.54% average profit over 31 trades.

Time Token Open Close Hours Profit
2025-10-08 03:00:00 Coinbase-LINK-GBP 16.34 16.84 20 3.1%
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 Coinbase-SOL-GBP 123.11 126.81 19 3.0%
2025-08-06 12:00:00 Kraken-SOL-EUR 141.27 146.43 22 3.7%
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 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 17:00:00 Coinbase-ICP-GBP 4.44 4.17 21 -6.1%
2025-07-22 13:00:00 Kraken-KSM-EUR 14.53 13.42 28 -7.6%
2025-07-22 13:00:00 Binance-EGLD-EUR 15.06 15.55 16 3.3%
2025-07-22 13:00:00 Binance-APT-EUR 4.51 4.69 18 3.8%
2025-07-22 04:00:00 Coinbase-LINK-GBP 14.34 13.41 34 -6.5%
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-EUR 16.52 15.49 34 -6.2%
2025-07-21 10:00:00 Coinbase-UNI-GBP 7.75 8.10 3 4.6%

Benchmarks


----------------------------------------------------------------
Benchmark                      Time             CPU   Iterations
----------------------------------------------------------------
BM_is_entry                53060 ns        53056 ns        12992
BM_is_entry2               40555 ns        40554 ns        17402
BM_to_exit                   224 ns          224 ns      3143375
BM_to_exit2                  222 ns          222 ns      3141838
BM_to_vwap                  7546 ns         7546 ns        92821
BM_to_vwap2                 7638 ns         7606 ns        92704
BM_is_recent_dip2            893 ns          893 ns       786262
BM_to_atr                  60276 ns        60276 ns        11290
BM_to_atr2                  2436 ns         2436 ns       285115
BM_to_atr3                  2575 ns         2575 ns       276503
BM_to_average_func         0.338 ns        0.338 ns   2023055194
BM_to_average_func2        0.336 ns        0.336 ns   2029099654
BM_to_average_volume       61897 ns        61897 ns        11272
BM_to_average_volume2       1922 ns         1922 ns       371537
BM_to_size                 0.512 ns        0.512 ns   1380589982
BM_to_first                0.356 ns        0.356 ns   1992778898
BM_to_last                 0.348 ns        0.348 ns   2013132926
BM_to_sum                  0.339 ns        0.339 ns   2103021653
BM_to_sum2                 0.332 ns        0.332 ns   2018155081
BM_to_spot                 0.335 ns        0.335 ns   2115884747
BM_identity                  161 ns          161 ns      4372634
BM_identity2                 160 ns          160 ns      4374155
BM_to_profit               0.330 ns        0.330 ns   2197827806
BM_to_time                 0.342 ns        0.342 ns   2056043166
BM_to_open                 0.334 ns        0.334 ns   2117652758
BM_to_high                 0.325 ns        0.325 ns   2118830908
BM_to_low                  0.333 ns        0.333 ns   2055450360
BM_to_close                0.340 ns        0.340 ns   2122977506
BM_to_volume               0.336 ns        0.336 ns   2117919174