Crypto/stock backtester
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
.
Built with ♥ on Tue Apr 23 14:31:10 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.70% average profit over 71 trades.
Time | Token | Open | Close | Hours | Profit |
---|---|---|---|---|---|
2024-04-16 13:00:00 | Coinbase-ETC-GBP | 20.73 | 21.37 | 16 | 3.1% |
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-DOT-EUR | 6.17 | 6.38 | 56 | 3.3% |
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-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 | Kraken-BCH-EUR | 585.44 | 548.66 | 38 | -6.3% |
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-02 02:00:00 | Binance-BCH-EUR | 586.80 | 549.20 | 38 | -6.4% |
2024-04-02 02:00:00 | Coinbase-BCH-EUR | 586.65 | 548.92 | 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 | Coinbase-ICP-GBP | 14.35 | 13.37 | 19 | -6.8% |
2024-04-01 14:00:00 | Kraken-BADGER-EUR | 6.26 | 5.85 | 35 | -6.6% |
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-LTC-EUR | 76.28 | 79.53 | 12 | 4.3% |
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 | 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 | 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 | 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 | 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 | 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 | 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-KP3R-EUR | 80.87 | 84.37 | 12 | 4.3% |
2024-03-05 02:00:00 | Kraken-KSM-EUR | 48.51 | 50.28 | 6 | 3.6% |
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 | 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% |
2024-02-04 15:00:00 | Coinbase-ICP-GBP | 10.05 | 10.36 | 2 | 3.1% |
Benchmarks
---------------------------------------------------------------- Benchmark Time CPU Iterations ---------------------------------------------------------------- BM_is_entry 54472 ns 54465 ns 12712 BM_is_entry2 41592 ns 41584 ns 16896 BM_to_exit 218 ns 218 ns 3199915 BM_to_exit2 242 ns 242 ns 2880282 BM_to_vwap 7515 ns 7514 ns 93237 BM_to_vwap2 7510 ns 7510 ns 93273 BM_is_recent_dip2 803 ns 803 ns 861520 BM_to_atr 63405 ns 62841 ns 11146 BM_to_atr2 2391 ns 2390 ns 289753 BM_to_atr3 2411 ns 2409 ns 293358 BM_to_average_func 0.333 ns 0.333 ns 1000000000 BM_to_average_func2 0.328 ns 0.327 ns 1000000000 BM_to_average_volume 59514 ns 59415 ns 11312 BM_to_average_volume2 1875 ns 1875 ns 373271 BM_to_size 0.628 ns 0.628 ns 1000000000 BM_to_first 0.338 ns 0.338 ns 1000000000 BM_to_last 0.630 ns 0.630 ns 1000000000 BM_to_sum 0.629 ns 0.628 ns 1000000000 BM_to_sum2 0.331 ns 0.331 ns 1000000000 BM_to_spot 0.333 ns 0.333 ns 1000000000 BM_identity 244 ns 244 ns 2876299 BM_identity2 244 ns 244 ns 2875934 BM_to_profit 0.330 ns 0.330 ns 1000000000 BM_to_time 0.642 ns 0.642 ns 1000000000 BM_to_open 0.332 ns 0.332 ns 1000000000 BM_to_high 0.334 ns 0.333 ns 1000000000 BM_to_low 0.329 ns 0.329 ns 1000000000 BM_to_close 0.341 ns 0.341 ns 1000000000 BM_to_volume 0.632 ns 0.632 ns 1000000000