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 Sun May 5 14:31:12 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.18% average profit over 81 trades.

Time Token Open Close Hours Profit
2024-04-30 00:00:00 Kraken-EUL-EUR 5.47 5.64 1 3.1%
2024-04-29 22:00:00 Coinbase-ENS-EUR 15.03 14.00 12 -6.8%
2024-04-29 19:00:00 Coinbase-ICP-EUR 12.48 11.73 17 -6.0%
2024-04-29 19:00:00 Binance-ICP-EUR 12.48 11.72 17 -6.1%
2024-04-29 12:00:00 Kraken-MLN-EUR 20.35 18.98 24 -6.8%
2024-04-24 14:00:00 Binance-NEAR-EUR 6.44 6.69 3 3.9%
2024-04-24 14:00:00 Kraken-NEAR-EUR 6.43 6.69 3 4.0%
2024-04-24 08:00:00 Kraken-LPT-EUR 14.34 13.45 8 -6.2%
2024-04-24 02:00:00 Kraken-AKT-EUR 5.11 4.78 4 -6.5%
2024-04-23 20:00:00 Kraken-AVAX-EUR 35.96 33.78 30 -6.1%
2024-04-23 20:00:00 Coinbase-AVAX-EUR 35.98 33.61 30 -6.6%
2024-04-23 20:00:00 Binance-AVAX-EUR 36.01 33.66 30 -6.5%
2024-04-23 16:00:00 Kraken-RNDR-EUR 8.57 8.06 28 -6.0%
2024-04-16 13:00:00 Kraken-KP3R-EUR 74.13 75.40 67 1.7%
2024-04-16 13:00:00 Kraken-AXS-EUR 6.50 6.71 66 3.2%
2024-04-16 13:00:00 Kraken-LTC-GBP 62.81 64.72 34 3.0%
2024-04-16 13:00:00 Coinbase-ETC-GBP 20.73 21.37 16 3.1%
2024-04-16 13:00:00 Coinbase-AXS-EUR 6.47 6.69 58 3.3%
2024-04-16 13:00:00 Coinbase-DOT-EUR 6.17 6.38 56 3.3%
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-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 Coinbase-FIL-GBP 7.25 6.78 22 -6.5%
2024-04-02 02:00:00 Coinbase-AAVE-EUR 116.80 109.13 6 -6.6%
2024-04-02 02:00:00 Binance-BCH-EUR 586.80 549.20 38 -6.4%
2024-04-02 02:00:00 Coinbase-ICP-GBP 14.18 14.66 28 3.4%
2024-04-02 02:00:00 Coinbase-MASK-EUR 5.18 5.36 5 3.5%
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-04-01 14:00:00 Binance-ICP-EUR 16.78 15.77 15 -6.0%
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-LTC-GBP 65.49 68.18 12 4.1%
2024-03-22 22:00:00 Kraken-ATOM-GBP 8.91 9.20 17 3.4%
2024-03-22 22:00:00 Coinbase-AAVE-EUR 107.30 110.73 3 3.2%
2024-03-22 22:00:00 Coinbase-LTC-EUR 76.28 79.53 12 4.3%
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 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 Kraken-DOT-EUR 9.48 9.91 2 4.5%
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 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 Coinbase-AVAX-EUR 48.93 45.89 6 -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-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-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%

Benchmarks


----------------------------------------------------------------
Benchmark                      Time             CPU   Iterations
----------------------------------------------------------------
BM_is_entry                54473 ns        54469 ns        12867
BM_is_entry2               41171 ns        41171 ns        16944
BM_to_exit                   216 ns          216 ns      3259398
BM_to_exit2                  237 ns          236 ns      2966297
BM_to_vwap                  7519 ns         7517 ns        93341
BM_to_vwap2                 7514 ns         7513 ns        93298
BM_is_recent_dip2            807 ns          806 ns       872862
BM_to_atr                  63116 ns        63074 ns        11099
BM_to_atr2                  2469 ns         2467 ns       282843
BM_to_atr3                  2416 ns         2415 ns       291970
BM_to_average_func         0.313 ns        0.313 ns   1000000000
BM_to_average_func2        0.316 ns        0.316 ns   1000000000
BM_to_average_volume       58976 ns        58896 ns        11979
BM_to_average_volume2       1890 ns         1890 ns       372615
BM_to_size                 0.629 ns        0.629 ns   1000000000
BM_to_first                0.315 ns        0.315 ns   1000000000
BM_to_last                 0.631 ns        0.631 ns   1000000000
BM_to_sum                  0.626 ns        0.626 ns   1000000000
BM_to_sum2                 0.313 ns        0.313 ns   1000000000
BM_to_spot                 0.314 ns        0.314 ns   1000000000
BM_identity                  170 ns          170 ns      4120669
BM_identity2                 171 ns          171 ns      4107681
BM_to_profit               0.314 ns        0.314 ns   1000000000
BM_to_time                 0.627 ns        0.627 ns   1000000000
BM_to_open                 0.313 ns        0.313 ns   1000000000
BM_to_high                 0.313 ns        0.313 ns   1000000000
BM_to_low                  0.314 ns        0.314 ns   1000000000
BM_to_close                0.314 ns        0.314 ns   1000000000
BM_to_volume               0.629 ns        0.629 ns   1000000000