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 May 16 14:31:15 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.32% average profit over 84 trades.

Time Token Open Close Hours Profit
2024-05-13 22:00:00 Kraken-GMX-EUR 26.20 27.34 39 4.4%
2024-05-13 12:00:00 Kraken-LPT-GBP 13.50 14.12 5 4.6%
2024-05-08 16:00:00 Coinbase-BCH-GBP 366.34 340.45 48 -7.1%
2024-05-08 16:00:00 Kraken-BCH-EUR 425.99 395.50 48 -7.2%
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 Binance-ICP-EUR 12.48 11.72 17 -6.1%
2024-04-29 19:00:00 Coinbase-ICP-EUR 12.48 11.73 17 -6.0%
2024-04-29 12:00:00 Kraken-MLN-EUR 20.35 18.98 24 -6.8%
2024-04-24 14:00:00 Kraken-NEAR-EUR 6.43 6.69 3 4.0%
2024-04-24 14:00:00 Binance-NEAR-EUR 6.44 6.69 3 3.9%
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 Binance-AVAX-EUR 36.01 33.66 30 -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 16:00:00 Kraken-RNDR-EUR 8.57 8.06 28 -6.0%
2024-04-16 13:00:00 Kraken-AXS-EUR 6.50 6.71 66 3.2%
2024-04-16 13:00:00 Coinbase-DOT-EUR 6.17 6.38 56 3.3%
2024-04-16 13:00:00 Coinbase-ETC-GBP 20.73 21.37 16 3.1%
2024-04-16 13:00:00 Kraken-KP3R-EUR 74.13 75.40 67 1.7%
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-ICP-GBP 14.18 14.66 28 3.4%
2024-04-02 02:00:00 Binance-BCH-EUR 586.80 549.20 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-BCH-EUR 586.65 548.92 38 -6.4%
2024-04-02 02:00:00 Coinbase-MASK-EUR 5.18 5.36 5 3.5%
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-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 Coinbase-AAVE-EUR 107.30 110.73 3 3.2%
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 Coinbase-LTC-EUR 76.28 79.53 12 4.3%
2024-03-22 22:00:00 Kraken-AAVE-GBP 92.21 96.35 4 4.5%
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 Coinbase-RNDR-EUR 9.72 10.21 2 5.0%
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-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 Binance-AVAX-EUR 48.91 45.88 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 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 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 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 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%

Benchmarks


----------------------------------------------------------------
Benchmark                      Time             CPU   Iterations
----------------------------------------------------------------
BM_is_entry                56951 ns        56950 ns        11837
BM_is_entry2               42195 ns        42195 ns        16309
BM_to_exit                   221 ns          221 ns      3131546
BM_to_exit2                  243 ns          243 ns      2878420
BM_to_vwap                  7542 ns         7542 ns        93014
BM_to_vwap2                 7529 ns         7529 ns        93072
BM_is_recent_dip2            807 ns          807 ns       872761
BM_to_atr                  63855 ns        63854 ns        11140
BM_to_atr2                  2483 ns         2483 ns       275704
BM_to_atr3                  2501 ns         2501 ns       284156
BM_to_average_func         0.343 ns        0.343 ns   1000000000
BM_to_average_func2        0.343 ns        0.343 ns   1000000000
BM_to_average_volume       61338 ns        61335 ns        11660
BM_to_average_volume2       1917 ns         1917 ns       363539
BM_to_size                 0.646 ns        0.646 ns   1000000000
BM_to_first                0.333 ns        0.333 ns   1000000000
BM_to_last                 0.657 ns        0.657 ns   1000000000
BM_to_sum                  0.638 ns        0.638 ns   1000000000
BM_to_sum2                 0.362 ns        0.362 ns   1000000000
BM_to_spot                 0.335 ns        0.335 ns   1000000000
BM_identity                  176 ns          176 ns      3985149
BM_identity2                 174 ns          174 ns      3947668
BM_to_profit               0.349 ns        0.349 ns   1000000000
BM_to_time                 0.654 ns        0.654 ns   1000000000
BM_to_open                 0.345 ns        0.345 ns   1000000000
BM_to_high                 0.344 ns        0.344 ns   1000000000
BM_to_low                  0.352 ns        0.352 ns   1000000000
BM_to_close                0.353 ns        0.353 ns   1000000000
BM_to_volume               0.647 ns        0.647 ns   1000000000