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 Fri Apr 19 14:31:16 UTC 2024 by a Ubuntu Noble Numbat (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.06% average profit over 78 trades.

Time Token Open Close Hours Profit
2024-04-16 13:00:00 Kraken-AXS-EUR 6.50 6.71 66 3.2%
2024-04-16 13:00:00 Coinbase-ETC-GBP 20.73 21.37 16 3.1%
2024-04-16 13:00:00 Coinbase-DOT-EUR 6.17 6.38 56 3.3%
2024-04-16 13:00:00 Kraken-LTC-GBP 62.81 64.72 34 3.0%
2024-04-16 13:00:00 Coinbase-AXS-EUR 6.47 6.69 58 3.3%
2024-04-16 13:00:00 Kraken-KP3R-EUR 74.13 75.40 67 1.7%
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-AAVE-EUR 116.80 109.13 6 -6.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 Coinbase-FIL-GBP 7.25 6.78 22 -6.5%
2024-04-02 02:00:00 Coinbase-BCH-EUR 586.65 548.92 38 -6.4%
2024-04-02 02:00:00 Kraken-BCH-EUR 585.44 548.66 38 -6.3%
2024-04-02 02:00:00 Binance-BCH-EUR 586.80 549.20 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 Kraken-BADGER-EUR 6.26 5.85 35 -6.6%
2024-04-01 14:00:00 Coinbase-ICP-GBP 14.35 13.37 19 -6.8%
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 Kraken-ATOM-GBP 8.91 9.20 17 3.4%
2024-03-22 22:00:00 Kraken-LTC-GBP 65.49 68.18 12 4.1%
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 Coinbase-AAVE-GBP 92.20 96.14 4 4.3%
2024-03-22 22:00:00 Coinbase-LTC-EUR 76.28 79.53 12 4.3%
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 Coinbase-RNDR-EUR 9.72 10.21 2 5.0%
2024-03-17 07:00:00 Binance-APT-EUR 12.54 13.34 1 6.4%
2024-03-17 07:00:00 Kraken-APT-EUR 12.47 13.31 1 6.8%
2024-03-15 17:00:00 Binance-LINK-EUR 17.77 16.66 30 -6.2%
2024-03-15 17:00:00 Kraken-MKR-EUR 2520.07 2599.13 7 3.1%
2024-03-15 17:00:00 Kraken-DOT-EUR 9.48 9.91 2 4.5%
2024-03-15 03:00:00 Binance-EGLD-EUR 64.27 60.29 35 -6.2%
2024-03-15 03:00:00 Kraken-AVAX-EUR 48.91 45.83 6 -6.3%
2024-03-15 03:00:00 Kraken-EGLD-EUR 63.74 65.71 4 3.1%
2024-03-15 03:00:00 Binance-AVAX-EUR 48.91 45.88 6 -6.2%
2024-03-15 03:00:00 Coinbase-AVAX-EUR 48.93 45.89 6 -6.2%
2024-03-14 13:00:00 Coinbase-UNI-EUR 12.87 12.06 14 -6.3%
2024-03-14 13:00:00 Kraken-UNI-EUR 12.86 12.07 14 -6.1%
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-KSM-EUR 48.51 50.28 6 3.6%
2024-03-05 02:00:00 Kraken-KP3R-EUR 80.87 84.37 12 4.3%
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 Kraken-KSM-EUR 45.87 47.46 18 3.5%
2024-03-01 07:00:00 Coinbase-ICP-EUR 11.74 12.28 19 4.6%
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 Kraken-FIL-EUR 7.32 7.58 10 3.5%
2024-02-26 19:00:00 Coinbase-FIL-EUR 7.31 7.59 10 3.8%
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%
2024-01-31 19:00:00 Binance-SOL-EUR 93.30 87.01 7 -6.7%
2024-01-31 19:00:00 Kraken-AVAX-EUR 32.39 30.35 6 -6.3%
2024-01-31 19:00:00 Coinbase-SOL-GBP 79.44 74.17 7 -6.6%
2024-01-31 19:00:00 Coinbase-SOL-EUR 93.25 86.99 7 -6.7%
2024-01-31 09:00:00 Binance-SOL-EUR 92.85 87.01 17 -6.3%
2024-01-31 09:00:00 Binance-EGLD-EUR 51.36 48.23 16 -6.1%
2024-01-30 12:00:00 Kraken-INJ-EUR 34.16 32.11 21 -6.0%

Benchmarks


----------------------------------------------------------------
Benchmark                      Time             CPU   Iterations
----------------------------------------------------------------
BM_is_entry                55108 ns        55070 ns        12749
BM_is_entry2               41825 ns        41796 ns        16554
BM_to_exit                   217 ns          216 ns      3252941
BM_to_exit2                  238 ns          237 ns      2952019
BM_to_vwap                  7559 ns         7553 ns        93291
BM_to_vwap2                 7506 ns         7505 ns        92221
BM_is_recent_dip2            801 ns          801 ns       873944
BM_to_atr                  64037 ns        63994 ns        10922
BM_to_atr2                  2447 ns         2446 ns       284106
BM_to_atr3                  2425 ns         2423 ns       292866
BM_to_average_func         0.339 ns        0.339 ns   1000000000
BM_to_average_func2        0.347 ns        0.347 ns   1000000000
BM_to_average_volume       59676 ns        59670 ns        11820
BM_to_average_volume2       1879 ns         1879 ns       370270
BM_to_size                 0.631 ns        0.630 ns   1000000000
BM_to_first                0.346 ns        0.346 ns   1000000000
BM_to_last                 0.648 ns        0.648 ns   1000000000
BM_to_sum                  0.632 ns        0.631 ns   1000000000
BM_to_sum2                 0.331 ns        0.331 ns   1000000000
BM_to_spot                 0.335 ns        0.335 ns   1000000000
BM_identity                  162 ns          161 ns      4343013
BM_identity2                 160 ns          160 ns      4298078
BM_to_profit               0.341 ns        0.341 ns   1000000000
BM_to_time                 0.632 ns        0.632 ns   1000000000
BM_to_open                 0.332 ns        0.332 ns   1000000000
BM_to_high                 0.340 ns        0.340 ns   1000000000
BM_to_low                  0.333 ns        0.333 ns   1000000000
BM_to_close                0.330 ns        0.330 ns   1000000000
BM_to_volume               0.639 ns        0.638 ns   1000000000