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 26 14:31:16 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.21% average profit over 78 trades.

Time Token Open Close Hours Profit
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 Kraken-AVAX-EUR 35.96 33.78 30 -6.1%
2024-04-23 20:00:00 Binance-AVAX-EUR 36.01 33.66 30 -6.5%
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 Coinbase-AXS-EUR 6.47 6.69 58 3.3%
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-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-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 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-FIL-GBP 7.25 6.78 22 -6.5%
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-01 14:00:00 Kraken-BADGER-EUR 6.26 5.85 35 -6.6%
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-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 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 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 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-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 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 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-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 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%

Benchmarks


----------------------------------------------------------------
Benchmark                      Time             CPU   Iterations
----------------------------------------------------------------
BM_is_entry                54913 ns        54904 ns        12838
BM_is_entry2               41906 ns        41878 ns        16823
BM_to_exit                   216 ns          216 ns      3211014
BM_to_exit2                  237 ns          237 ns      2924075
BM_to_vwap                  7644 ns         7637 ns        92219
BM_to_vwap2                 7612 ns         7606 ns        91217
BM_is_recent_dip2            802 ns          802 ns       874321
BM_to_atr                  62977 ns        62968 ns        11129
BM_to_atr2                  2421 ns         2421 ns       290774
BM_to_atr3                  2430 ns         2428 ns       286702
BM_to_average_func         0.340 ns        0.340 ns   1000000000
BM_to_average_func2        0.339 ns        0.339 ns   1000000000
BM_to_average_volume       58827 ns        58827 ns        11937
BM_to_average_volume2       1878 ns         1878 ns       373243
BM_to_size                 0.628 ns        0.628 ns   1000000000
BM_to_first                0.334 ns        0.334 ns   1000000000
BM_to_last                 0.630 ns        0.630 ns   1000000000
BM_to_sum                  0.629 ns        0.629 ns   1000000000
BM_to_sum2                 0.331 ns        0.331 ns   1000000000
BM_to_spot                 0.331 ns        0.331 ns   1000000000
BM_identity                  172 ns          172 ns      4088448
BM_identity2                 172 ns          172 ns      4028144
BM_to_profit               0.331 ns        0.331 ns   1000000000
BM_to_time                 0.635 ns        0.635 ns   1000000000
BM_to_open                 0.344 ns        0.344 ns   1000000000
BM_to_high                 0.331 ns        0.331 ns   1000000000
BM_to_low                  0.340 ns        0.340 ns   1000000000
BM_to_close                0.341 ns        0.341 ns   1000000000
BM_to_volume               0.630 ns        0.630 ns   1000000000