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 Tue Apr 23 14:31:10 UTC 2024 by a Ubuntu 24.04 LTS.

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.70% average profit over 71 trades.

Time Token Open Close Hours Profit
2024-04-16 13:00:00 Coinbase-ETC-GBP 20.73 21.37 16 3.1%
2024-04-16 13:00:00 Kraken-AXS-EUR 6.50 6.71 66 3.2%
2024-04-16 13:00:00 Kraken-KP3R-EUR 74.13 75.40 67 1.7%
2024-04-16 13:00:00 Coinbase-DOT-EUR 6.17 6.38 56 3.3%
2024-04-16 13:00:00 Coinbase-AXS-EUR 6.47 6.69 58 3.3%
2024-04-16 13:00:00 Kraken-LTC-GBP 62.81 64.72 34 3.0%
2024-04-10 11:00:00 Kraken-XMR-EUR 123.20 114.31 56 -7.2%
2024-04-09 01:00:00 Kraken-MLN-EUR 23.48 24.57 16 4.6%
2024-04-02 02:00:00 Coinbase-MASK-EUR 5.18 5.36 5 3.5%
2024-04-02 02:00:00 Coinbase-ICP-GBP 14.18 14.66 28 3.4%
2024-04-02 02:00:00 Kraken-BCH-EUR 585.44 548.66 38 -6.3%
2024-04-02 02:00:00 Coinbase-AAVE-EUR 116.80 109.13 6 -6.6%
2024-04-02 02:00:00 Coinbase-FIL-GBP 7.25 6.78 22 -6.5%
2024-04-02 02:00:00 Binance-BCH-EUR 586.80 549.20 38 -6.4%
2024-04-02 02:00:00 Coinbase-BCH-EUR 586.65 548.92 38 -6.4%
2024-04-01 14:00:00 Binance-ICP-EUR 16.78 15.77 15 -6.0%
2024-04-01 14:00:00 Coinbase-ICP-GBP 14.35 13.37 19 -6.8%
2024-04-01 14:00:00 Kraken-BADGER-EUR 6.26 5.85 35 -6.6%
2024-03-31 07:00:00 Kraken-FIL-EUR 8.90 9.31 17 4.5%
2024-03-30 14:00:00 Kraken-MASK-EUR 5.21 5.41 42 3.7%
2024-03-30 06:00:00 Kraken-KP3R-EUR 89.90 96.27 15 7.1%
2024-03-29 18:00:00 Coinbase-SOL-GBP 147.33 152.23 5 3.3%
2024-03-29 16:00:00 Kraken-SOL-GBP 146.98 152.30 7 3.6%
2024-03-29 04:00:00 Kraken-LTC-GBP 74.28 76.96 5 3.6%
2024-03-28 09:00:00 Kraken-MLN-EUR 25.51 23.87 23 -6.4%
2024-03-27 19:00:00 Kraken-KP3R-EUR 89.37 92.20 28 3.2%
2024-03-26 08:00:00 Kraken-XRT-EUR 6.39 5.90 28 -7.6%
2024-03-23 21:00:00 Kraken-MLN-EUR 25.71 23.89 14 -7.1%
2024-03-22 22:00:00 Coinbase-LTC-EUR 76.28 79.53 12 4.3%
2024-03-22 22:00:00 Kraken-LTC-GBP 65.49 68.18 12 4.1%
2024-03-22 22:00:00 Coinbase-AAVE-GBP 92.20 96.14 4 4.3%
2024-03-22 22:00:00 Kraken-AAVE-GBP 92.21 96.35 4 4.5%
2024-03-22 22:00:00 Coinbase-AAVE-EUR 107.30 110.73 3 3.2%
2024-03-22 22:00:00 Kraken-ATOM-GBP 8.91 9.20 17 3.4%
2024-03-22 10:00:00 Coinbase-SOL-GBP 139.66 145.31 60 4.0%
2024-03-18 23:00:00 Binance-ICP-EUR 11.35 10.58 6 -6.8%
2024-03-17 16:00:00 Kraken-FORTH-EUR 4.88 5.06 2 3.6%
2024-03-17 15:00:00 Coinbase-AVAX-EUR 50.51 52.23 4 3.4%
2024-03-17 07:00:00 Kraken-APT-EUR 12.47 13.31 1 6.8%
2024-03-17 07:00:00 Binance-APT-EUR 12.54 13.34 1 6.4%
2024-03-17 07:00:00 Coinbase-RNDR-EUR 9.72 10.21 2 5.0%
2024-03-15 17:00:00 Binance-LINK-EUR 17.77 16.66 30 -6.2%
2024-03-15 17:00:00 Kraken-DOT-EUR 9.48 9.91 2 4.5%
2024-03-15 17:00:00 Kraken-MKR-EUR 2520.07 2599.13 7 3.1%
2024-03-15 03:00:00 Kraken-AVAX-EUR 48.91 45.83 6 -6.3%
2024-03-15 03:00:00 Coinbase-AVAX-EUR 48.93 45.89 6 -6.2%
2024-03-15 03:00:00 Binance-EGLD-EUR 64.27 60.29 35 -6.2%
2024-03-15 03:00:00 Binance-AVAX-EUR 48.91 45.88 6 -6.2%
2024-03-15 03:00:00 Kraken-EGLD-EUR 63.74 65.71 4 3.1%
2024-03-14 13:00:00 Kraken-UNI-EUR 12.86 12.07 14 -6.1%
2024-03-14 13:00:00 Coinbase-UNI-EUR 12.87 12.06 14 -6.3%
2024-03-12 17:00:00 Kraken-QTUM-EUR 4.64 4.83 2 3.9%
2024-03-10 22:00:00 Binance-EGLD-EUR 60.68 62.77 12 3.4%
2024-03-10 22:00:00 Kraken-MOVR-EUR 20.93 21.57 16 3.0%
2024-03-05 02:00:00 Kraken-KP3R-EUR 80.87 84.37 12 4.3%
2024-03-05 02:00:00 Kraken-KSM-EUR 48.51 50.28 6 3.6%
2024-03-04 12:00:00 Kraken-MASK-EUR 4.45 4.13 31 -7.2%
2024-03-04 07:00:00 Kraken-BADGER-EUR 5.25 5.49 6 4.5%
2024-03-03 16:00:00 Kraken-FARM-EUR 45.96 47.64 45 3.7%
2024-03-01 07:00:00 Coinbase-ICP-EUR 11.74 12.28 19 4.6%
2024-03-01 07:00:00 Kraken-KSM-EUR 45.87 47.46 18 3.5%
2024-02-29 04:00:00 Binance-LINK-EUR 17.94 18.62 5 3.8%
2024-02-28 00:00:00 Coinbase-RNDR-EUR 6.62 6.86 5 3.7%
2024-02-27 09:00:00 Kraken-NMR-EUR 29.35 30.39 30 3.5%
2024-02-26 21:00:00 Kraken-FIL-GBP 6.37 5.97 23 -6.3%
2024-02-26 19:00:00 Coinbase-FIL-EUR 7.31 7.59 10 3.8%
2024-02-26 19:00:00 Kraken-FIL-EUR 7.32 7.58 10 3.5%
2024-02-15 14:00:00 Coinbase-RNDR-EUR 4.61 4.92 9 6.7%
2024-02-14 01:00:00 Binance-AVAX-EUR 36.69 38.30 8 4.4%
2024-02-09 04:00:00 Binance-LINK-EUR 16.91 17.64 44 4.3%
2024-02-04 15:00:00 Coinbase-ICP-GBP 10.05 10.36 2 3.1%

Benchmarks


----------------------------------------------------------------
Benchmark                      Time             CPU   Iterations
----------------------------------------------------------------
BM_is_entry                54472 ns        54465 ns        12712
BM_is_entry2               41592 ns        41584 ns        16896
BM_to_exit                   218 ns          218 ns      3199915
BM_to_exit2                  242 ns          242 ns      2880282
BM_to_vwap                  7515 ns         7514 ns        93237
BM_to_vwap2                 7510 ns         7510 ns        93273
BM_is_recent_dip2            803 ns          803 ns       861520
BM_to_atr                  63405 ns        62841 ns        11146
BM_to_atr2                  2391 ns         2390 ns       289753
BM_to_atr3                  2411 ns         2409 ns       293358
BM_to_average_func         0.333 ns        0.333 ns   1000000000
BM_to_average_func2        0.328 ns        0.327 ns   1000000000
BM_to_average_volume       59514 ns        59415 ns        11312
BM_to_average_volume2       1875 ns         1875 ns       373271
BM_to_size                 0.628 ns        0.628 ns   1000000000
BM_to_first                0.338 ns        0.338 ns   1000000000
BM_to_last                 0.630 ns        0.630 ns   1000000000
BM_to_sum                  0.629 ns        0.628 ns   1000000000
BM_to_sum2                 0.331 ns        0.331 ns   1000000000
BM_to_spot                 0.333 ns        0.333 ns   1000000000
BM_identity                  244 ns          244 ns      2876299
BM_identity2                 244 ns          244 ns      2875934
BM_to_profit               0.330 ns        0.330 ns   1000000000
BM_to_time                 0.642 ns        0.642 ns   1000000000
BM_to_open                 0.332 ns        0.332 ns   1000000000
BM_to_high                 0.334 ns        0.333 ns   1000000000
BM_to_low                  0.329 ns        0.329 ns   1000000000
BM_to_close                0.341 ns        0.341 ns   1000000000
BM_to_volume               0.632 ns        0.632 ns   1000000000