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 Feb 20 18:36:08 UTC 2025 by a Ubuntu Plucky Puffin (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.01% average profit over 64 trades.

Time Token Open Close Hours Profit
2025-02-18 03:00:00 Coinbase-LINK-EUR 18.01 16.83 13 -6.5%
2025-02-14 21:00:00 Kraken-ATOM-EUR 4.72 4.61 67 -2.3%
2025-02-12 13:00:00 Kraken-AAVE-GBP 195.02 203.29 9 4.2%
2025-02-12 12:00:00 Kraken-ZEC-EUR 30.88 32.17 13 4.2%
2025-02-12 12:00:00 Coinbase-AAVE-EUR 235.43 244.12 10 3.7%
2025-02-12 04:00:00 Kraken-APT-EUR 5.69 5.88 19 3.3%
2025-02-12 03:00:00 Coinbase-LINK-GBP 14.90 15.44 20 3.6%
2025-02-04 17:00:00 Kraken-EGLD-EUR 22.18 20.75 30 -6.4%
2025-01-25 18:00:00 Kraken-NEAR-EUR 4.70 4.85 14 3.3%
2025-01-25 18:00:00 Kraken-LINK-EUR 23.81 24.56 23 3.1%
2025-01-25 18:00:00 Coinbase-DOT-EUR 6.07 5.69 33 -6.3%
2025-01-25 18:00:00 Kraken-AVAX-EUR 34.13 35.31 2 3.5%
2025-01-25 18:00:00 Binance-NEAR-EUR 4.72 4.43 33 -6.2%
2025-01-23 21:00:00 Coinbase-RNDR-EUR 6.66 6.88 14 3.3%
2025-01-20 11:00:00 Kraken-SOL-EUR 250.53 231.32 13 -7.7%
2025-01-18 18:00:00 Binance-ETH-EUR 3162.63 3303.91 21 4.5%
2025-01-18 16:00:00 Kraken-NEAR-EUR 5.26 5.43 10 3.2%
2025-01-18 16:00:00 Kraken-LTC-GBP 103.06 95.88 17 -7.0%
2025-01-18 16:00:00 Kraken-QNT-EUR 111.98 103.70 17 -7.4%
2025-01-18 16:00:00 Binance-EGLD-EUR 34.21 31.95 20 -6.6%
2025-01-18 16:00:00 Coinbase-ICP-EUR 10.29 9.48 32 -7.8%
2025-01-18 14:00:00 Kraken-FIL-EUR 5.37 5.01 19 -6.7%
2025-01-18 14:00:00 Kraken-ZEC-EUR 51.45 47.96 18 -6.8%
2025-01-11 17:00:00 Kraken-ICP-EUR 9.93 10.25 4 3.2%
2025-01-11 17:00:00 Binance-ICP-EUR 9.93 10.23 4 3.1%
2025-01-07 11:00:00 Coinbase-DOT-EUR 7.44 6.94 7 -6.7%
2025-01-05 11:00:00 Kraken-EUL-EUR 5.20 4.89 15 -6.0%
2025-01-01 18:00:00 Kraken-RUNE-EUR 4.37 4.51 9 3.1%
2025-01-01 17:00:00 Coinbase-SOL-EUR 183.42 189.88 8 3.5%
2025-01-01 17:00:00 Kraken-SOL-GBP 151.56 156.84 8 3.5%
2025-01-01 17:00:00 Kraken-SOL-EUR 183.48 189.61 8 3.3%
2024-12-28 16:00:00 Kraken-RAY-EUR 4.75 4.91 2 3.3%
2024-12-28 15:00:00 Coinbase-UNI-EUR 12.78 12.97 67 1.4%
2024-12-22 23:00:00 Coinbase-ICP-GBP 7.91 8.29 21 4.8%
2024-12-22 23:00:00 Coinbase-ICP-EUR 9.55 10.01 21 4.8%
2024-12-22 14:00:00 Coinbase-ICP-GBP 7.97 8.29 30 4.1%
2024-12-22 14:00:00 Kraken-ENS-EUR 33.11 34.24 30 3.4%
2024-12-22 13:00:00 Kraken-AVAX-EUR 36.46 37.79 34 3.6%
2024-12-22 13:00:00 Coinbase-ETC-EUR 25.37 26.46 32 4.3%
2024-12-22 03:00:00 Binance-DOT-EUR 6.68 6.90 7 3.4%
2024-12-18 14:00:00 Binance-SOL-EUR 205.96 188.04 28 -8.7%
2024-12-18 14:00:00 Kraken-SOL-GBP 170.14 155.66 28 -8.5%
2024-12-18 14:00:00 Coinbase-SOL-GBP 170.17 155.77 28 -8.5%
2024-12-17 09:00:00 Binance-LTC-EUR 112.29 116.16 8 3.4%
2024-12-17 09:00:00 Coinbase-LTC-EUR 112.62 116.16 8 3.1%
2024-12-17 09:00:00 Kraken-LTC-EUR 112.08 116.06 8 3.5%
2024-12-17 09:00:00 Coinbase-LTC-GBP 92.82 96.01 8 3.4%
2024-12-15 05:00:00 Kraken-ATOM-GBP 7.05 7.52 5 6.6%
2024-12-14 07:00:00 Kraken-ETC-EUR 32.11 31.44 67 -2.1%
2024-12-13 18:00:00 Kraken-BCH-EUR 507.13 500.66 67 -1.3%
2024-12-13 18:00:00 Coinbase-BCH-GBP 421.80 436.51 55 3.5%
2024-12-08 18:00:00 Kraken-ENS-EUR 38.65 36.27 15 -6.1%
2024-12-08 18:00:00 Kraken-APT-EUR 13.56 12.71 15 -6.3%
2024-12-08 17:00:00 Coinbase-ATOM-EUR 9.48 8.84 16 -6.7%
2024-12-08 17:00:00 Kraken-RAY-EUR 4.72 4.43 19 -6.2%
2024-12-08 17:00:00 Coinbase-LTC-GBP 104.59 97.24 16 -7.0%
2024-12-05 10:00:00 Kraken-AXS-EUR 8.83 9.10 36 3.1%
2024-12-05 09:00:00 Kraken-ZEC-EUR 66.57 69.28 9 4.1%
2024-12-05 01:00:00 Coinbase-LTC-EUR 122.45 126.37 10 3.2%
2024-12-03 11:00:00 Kraken-FARM-EUR 53.90 58.41 1 8.4%
2024-12-03 09:00:00 Kraken-ENS-EUR 38.92 41.48 16 6.6%
2024-12-02 19:00:00 Coinbase-BCH-EUR 487.13 506.31 2 3.9%
2024-12-02 19:00:00 Kraken-BCH-EUR 490.21 505.96 2 3.2%
2024-12-02 19:00:00 Kraken-ETC-EUR 31.24 32.27 2 3.3%

Benchmarks


----------------------------------------------------------------
Benchmark                      Time             CPU   Iterations
----------------------------------------------------------------
BM_is_entry                55576 ns        55574 ns        12709
BM_is_entry2               42703 ns        42702 ns        16192
BM_to_exit                   238 ns          238 ns      2926976
BM_to_exit2                  242 ns          242 ns      2953114
BM_to_vwap                  7537 ns         7537 ns        93321
BM_to_vwap2                 7518 ns         7517 ns        92904
BM_is_recent_dip2            802 ns          802 ns       873288
BM_to_atr                  65139 ns        65138 ns        10790
BM_to_atr2                  2393 ns         2393 ns       293517
BM_to_atr3                  2567 ns         2563 ns       275493
BM_to_average_func         0.329 ns        0.329 ns   1000000000
BM_to_average_func2        0.334 ns        0.334 ns   1000000000
BM_to_average_volume       59317 ns        59317 ns        11822
BM_to_average_volume2       1882 ns         1882 ns       372939
BM_to_size                 0.507 ns        0.507 ns   1000000000
BM_to_first                0.331 ns        0.331 ns   1000000000
BM_to_last                 0.340 ns        0.340 ns   1000000000
BM_to_sum                  0.327 ns        0.327 ns   1000000000
BM_to_sum2                 0.330 ns        0.330 ns   1000000000
BM_to_spot                 0.338 ns        0.338 ns   1000000000
BM_identity                  162 ns          162 ns      4274828
BM_identity2                 162 ns          162 ns      4338260
BM_to_profit               0.331 ns        0.331 ns   1000000000
BM_to_time                 0.333 ns        0.333 ns   1000000000
BM_to_open                 0.328 ns        0.328 ns   1000000000
BM_to_high                 0.336 ns        0.336 ns   1000000000
BM_to_low                  0.331 ns        0.331 ns   1000000000
BM_to_close                0.328 ns        0.327 ns   1000000000
BM_to_volume               0.331 ns        0.331 ns   1000000000