Add backtesting engine with SMA cross strategy

Reads features from Supabase, simulates SMA(3)/SMA(20) crossover signals,
and outputs P&L, drawdown, and trade logs per instrument/granularity.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Brent Neale
2026-02-16 15:58:00 +10:00
parent 31c74d4e5f
commit 187ebe9a9e
5 changed files with 412 additions and 0 deletions
+19
View File
@@ -0,0 +1,19 @@
time,instrument,granularity,side,price,position_size,equity,drawdown
2026-02-16 02:52:00+00:00,EUR_USD,M1,BUY,1.18646,100.0,10000.0,0.0
2026-02-16 03:03:00+00:00,EUR_USD,M1,FLAT,1.18654,0.0,10000.01,2e-06
2026-02-16 03:13:00+00:00,EUR_USD,M1,BUY,1.18672,100.0,10000.01,2e-06
2026-02-16 03:30:00+00:00,EUR_USD,M1,FLAT,1.18659,0.0,10000.0,3e-06
2026-02-16 03:44:00+00:00,EUR_USD,M1,BUY,1.18676,100.0,10000.0,3e-06
2026-02-16 03:47:00+00:00,EUR_USD,M1,FLAT,1.18666,0.0,9999.99,3e-06
2026-02-16 03:55:00+00:00,EUR_USD,M1,BUY,1.18672,100.0,9999.99,3e-06
2026-02-16 04:07:00+00:00,EUR_USD,M1,FLAT,1.18664,0.0,9999.98,4e-06
2026-02-16 04:10:00+00:00,EUR_USD,M1,BUY,1.18674,100.0,9999.98,4e-06
2026-02-16 04:15:00+00:00,EUR_USD,M1,FLAT,1.18666,0.0,9999.97,5e-06
2026-02-16 04:27:00+00:00,EUR_USD,M1,BUY,1.18672,100.0,9999.97,5e-06
2026-02-16 04:31:00+00:00,EUR_USD,M1,FLAT,1.18661,0.0,9999.96,6e-06
2026-02-16 05:01:00+00:00,EUR_USD,M1,BUY,1.18627,100.0,9999.96,6e-06
2026-02-16 05:02:00+00:00,EUR_USD,M1,FLAT,1.18619,0.0,9999.96,6e-06
2026-02-16 05:09:00+00:00,EUR_USD,M1,BUY,1.18628,100.0,9999.96,6e-06
2026-02-16 05:19:00+00:00,EUR_USD,M1,FLAT,1.1862,0.0,9999.95,7e-06
2026-02-16 05:25:00+00:00,EUR_USD,M1,BUY,1.18635,100.0,9999.95,7e-06
2026-02-16 05:32:00+00:00,EUR_USD,M1,FLAT,1.18623,0.0,9999.94,8e-06
1 time instrument granularity side price position_size equity drawdown
2 2026-02-16 02:52:00+00:00 EUR_USD M1 BUY 1.18646 100.0 10000.0 0.0
3 2026-02-16 03:03:00+00:00 EUR_USD M1 FLAT 1.18654 0.0 10000.01 2e-06
4 2026-02-16 03:13:00+00:00 EUR_USD M1 BUY 1.18672 100.0 10000.01 2e-06
5 2026-02-16 03:30:00+00:00 EUR_USD M1 FLAT 1.18659 0.0 10000.0 3e-06
6 2026-02-16 03:44:00+00:00 EUR_USD M1 BUY 1.18676 100.0 10000.0 3e-06
7 2026-02-16 03:47:00+00:00 EUR_USD M1 FLAT 1.18666 0.0 9999.99 3e-06
8 2026-02-16 03:55:00+00:00 EUR_USD M1 BUY 1.18672 100.0 9999.99 3e-06
9 2026-02-16 04:07:00+00:00 EUR_USD M1 FLAT 1.18664 0.0 9999.98 4e-06
10 2026-02-16 04:10:00+00:00 EUR_USD M1 BUY 1.18674 100.0 9999.98 4e-06
11 2026-02-16 04:15:00+00:00 EUR_USD M1 FLAT 1.18666 0.0 9999.97 5e-06
12 2026-02-16 04:27:00+00:00 EUR_USD M1 BUY 1.18672 100.0 9999.97 5e-06
13 2026-02-16 04:31:00+00:00 EUR_USD M1 FLAT 1.18661 0.0 9999.96 6e-06
14 2026-02-16 05:01:00+00:00 EUR_USD M1 BUY 1.18627 100.0 9999.96 6e-06
15 2026-02-16 05:02:00+00:00 EUR_USD M1 FLAT 1.18619 0.0 9999.96 6e-06
16 2026-02-16 05:09:00+00:00 EUR_USD M1 BUY 1.18628 100.0 9999.96 6e-06
17 2026-02-16 05:19:00+00:00 EUR_USD M1 FLAT 1.1862 0.0 9999.95 7e-06
18 2026-02-16 05:25:00+00:00 EUR_USD M1 BUY 1.18635 100.0 9999.95 7e-06
19 2026-02-16 05:32:00+00:00 EUR_USD M1 FLAT 1.18623 0.0 9999.94 8e-06
+15
View File
@@ -0,0 +1,15 @@
time,instrument,granularity,side,price,position_size,equity,drawdown
2026-02-13 16:20:00+00:00,EUR_USD,M5,BUY,1.18684,100.0,10000.0,0.0
2026-02-13 18:15:00+00:00,EUR_USD,M5,FLAT,1.18742,0.0,10000.05,7e-06
2026-02-13 18:30:00+00:00,EUR_USD,M5,BUY,1.1878,100.0,10000.05,7e-06
2026-02-13 19:00:00+00:00,EUR_USD,M5,FLAT,1.18712,0.0,9999.99,1.2e-05
2026-02-13 20:50:00+00:00,EUR_USD,M5,BUY,1.18708,100.0,9999.99,1.2e-05
2026-02-13 21:40:00+00:00,EUR_USD,M5,FLAT,1.18682,0.0,9999.97,1.5e-05
2026-02-15 22:10:00+00:00,EUR_USD,M5,BUY,1.18719,100.0,9999.97,1.5e-05
2026-02-15 22:55:00+00:00,EUR_USD,M5,FLAT,1.18708,0.0,9999.96,1.6e-05
2026-02-16 01:20:00+00:00,EUR_USD,M5,BUY,1.18645,100.0,9999.96,1.6e-05
2026-02-16 01:40:00+00:00,EUR_USD,M5,FLAT,1.1864,0.0,9999.96,1.6e-05
2026-02-16 01:55:00+00:00,EUR_USD,M5,BUY,1.18654,100.0,9999.96,1.6e-05
2026-02-16 02:15:00+00:00,EUR_USD,M5,FLAT,1.18625,0.0,9999.93,1.8e-05
2026-02-16 02:30:00+00:00,EUR_USD,M5,BUY,1.18654,100.0,9999.93,1.8e-05
2026-02-16 04:20:00+00:00,EUR_USD,M5,FLAT,1.18663,0.0,9999.94,1.8e-05
1 time instrument granularity side price position_size equity drawdown
2 2026-02-13 16:20:00+00:00 EUR_USD M5 BUY 1.18684 100.0 10000.0 0.0
3 2026-02-13 18:15:00+00:00 EUR_USD M5 FLAT 1.18742 0.0 10000.05 7e-06
4 2026-02-13 18:30:00+00:00 EUR_USD M5 BUY 1.1878 100.0 10000.05 7e-06
5 2026-02-13 19:00:00+00:00 EUR_USD M5 FLAT 1.18712 0.0 9999.99 1.2e-05
6 2026-02-13 20:50:00+00:00 EUR_USD M5 BUY 1.18708 100.0 9999.99 1.2e-05
7 2026-02-13 21:40:00+00:00 EUR_USD M5 FLAT 1.18682 0.0 9999.97 1.5e-05
8 2026-02-15 22:10:00+00:00 EUR_USD M5 BUY 1.18719 100.0 9999.97 1.5e-05
9 2026-02-15 22:55:00+00:00 EUR_USD M5 FLAT 1.18708 0.0 9999.96 1.6e-05
10 2026-02-16 01:20:00+00:00 EUR_USD M5 BUY 1.18645 100.0 9999.96 1.6e-05
11 2026-02-16 01:40:00+00:00 EUR_USD M5 FLAT 1.1864 0.0 9999.96 1.6e-05
12 2026-02-16 01:55:00+00:00 EUR_USD M5 BUY 1.18654 100.0 9999.96 1.6e-05
13 2026-02-16 02:15:00+00:00 EUR_USD M5 FLAT 1.18625 0.0 9999.93 1.8e-05
14 2026-02-16 02:30:00+00:00 EUR_USD M5 BUY 1.18654 100.0 9999.93 1.8e-05
15 2026-02-16 04:20:00+00:00 EUR_USD M5 FLAT 1.18663 0.0 9999.94 1.8e-05
+11
View File
@@ -0,0 +1,11 @@
time,instrument,granularity,side,price,position_size,equity,drawdown
2026-02-16 03:05:00+00:00,USD_JPY,M1,BUY,153.046,100.0,10000.0,0.0
2026-02-16 03:19:00+00:00,USD_JPY,M1,FLAT,153.054,0.0,10000.01,3e-06
2026-02-16 03:34:00+00:00,USD_JPY,M1,BUY,153.057,100.0,10000.01,3e-06
2026-02-16 04:04:00+00:00,USD_JPY,M1,FLAT,153.06,0.0,10000.01,3e-06
2026-02-16 04:16:00+00:00,USD_JPY,M1,BUY,153.056,100.0,10000.01,3e-06
2026-02-16 05:09:00+00:00,USD_JPY,M1,FLAT,153.215,0.0,10000.11,2e-06
2026-02-16 05:23:00+00:00,USD_JPY,M1,BUY,153.228,100.0,10000.11,2e-06
2026-02-16 05:29:00+00:00,USD_JPY,M1,FLAT,153.184,0.0,10000.08,5e-06
2026-02-16 05:30:00+00:00,USD_JPY,M1,BUY,153.214,100.0,10000.08,5e-06
2026-02-16 05:44:00+00:00,USD_JPY,M1,FLAT,153.205,0.0,10000.08,5e-06
1 time instrument granularity side price position_size equity drawdown
2 2026-02-16 03:05:00+00:00 USD_JPY M1 BUY 153.046 100.0 10000.0 0.0
3 2026-02-16 03:19:00+00:00 USD_JPY M1 FLAT 153.054 0.0 10000.01 3e-06
4 2026-02-16 03:34:00+00:00 USD_JPY M1 BUY 153.057 100.0 10000.01 3e-06
5 2026-02-16 04:04:00+00:00 USD_JPY M1 FLAT 153.06 0.0 10000.01 3e-06
6 2026-02-16 04:16:00+00:00 USD_JPY M1 BUY 153.056 100.0 10000.01 3e-06
7 2026-02-16 05:09:00+00:00 USD_JPY M1 FLAT 153.215 0.0 10000.11 2e-06
8 2026-02-16 05:23:00+00:00 USD_JPY M1 BUY 153.228 100.0 10000.11 2e-06
9 2026-02-16 05:29:00+00:00 USD_JPY M1 FLAT 153.184 0.0 10000.08 5e-06
10 2026-02-16 05:30:00+00:00 USD_JPY M1 BUY 153.214 100.0 10000.08 5e-06
11 2026-02-16 05:44:00+00:00 USD_JPY M1 FLAT 153.205 0.0 10000.08 5e-06
+24
View File
@@ -0,0 +1,24 @@
time,instrument,granularity,side,price,position_size,equity,drawdown
2026-02-13 15:15:00+00:00,USD_JPY,M5,BUY,153.089,100.0,10000.0,0.0
2026-02-13 15:45:00+00:00,USD_JPY,M5,FLAT,152.948,0.0,9999.91,9e-06
2026-02-13 15:55:00+00:00,USD_JPY,M5,BUY,153.132,100.0,9999.91,9e-06
2026-02-13 16:20:00+00:00,USD_JPY,M5,FLAT,152.894,0.0,9999.75,2.5e-05
2026-02-13 17:45:00+00:00,USD_JPY,M5,BUY,152.828,100.0,9999.75,2.5e-05
2026-02-13 17:50:00+00:00,USD_JPY,M5,FLAT,152.757,0.0,9999.71,2.9e-05
2026-02-13 17:55:00+00:00,USD_JPY,M5,BUY,152.808,100.0,9999.71,2.9e-05
2026-02-13 18:00:00+00:00,USD_JPY,M5,FLAT,152.792,0.0,9999.7,3e-05
2026-02-13 18:05:00+00:00,USD_JPY,M5,BUY,152.818,100.0,9999.7,3e-05
2026-02-13 19:10:00+00:00,USD_JPY,M5,FLAT,152.81,0.0,9999.69,3.1e-05
2026-02-13 20:10:00+00:00,USD_JPY,M5,BUY,152.788,100.0,9999.69,3.1e-05
2026-02-13 20:25:00+00:00,USD_JPY,M5,FLAT,152.734,0.0,9999.65,3.5e-05
2026-02-13 21:50:00+00:00,USD_JPY,M5,BUY,152.717,100.0,9999.65,3.5e-05
2026-02-15 22:05:00+00:00,USD_JPY,M5,FLAT,152.632,0.0,9999.6,4e-05
2026-02-15 23:00:00+00:00,USD_JPY,M5,BUY,152.695,100.0,9999.6,4e-05
2026-02-16 01:30:00+00:00,USD_JPY,M5,FLAT,153.008,0.0,9999.8,2e-05
2026-02-16 02:10:00+00:00,USD_JPY,M5,BUY,153.089,100.0,9999.8,2e-05
2026-02-16 02:55:00+00:00,USD_JPY,M5,FLAT,153.012,0.0,9999.75,2.5e-05
2026-02-16 03:05:00+00:00,USD_JPY,M5,BUY,153.087,100.0,9999.75,2.5e-05
2026-02-16 03:20:00+00:00,USD_JPY,M5,FLAT,153.022,0.0,9999.71,2.9e-05
2026-02-16 03:50:00+00:00,USD_JPY,M5,BUY,153.062,100.0,9999.71,2.9e-05
2026-02-16 04:05:00+00:00,USD_JPY,M5,FLAT,153.02,0.0,9999.68,3.2e-05
2026-02-16 04:15:00+00:00,USD_JPY,M5,BUY,153.092,100.0,9999.68,3.2e-05
1 time instrument granularity side price position_size equity drawdown
2 2026-02-13 15:15:00+00:00 USD_JPY M5 BUY 153.089 100.0 10000.0 0.0
3 2026-02-13 15:45:00+00:00 USD_JPY M5 FLAT 152.948 0.0 9999.91 9e-06
4 2026-02-13 15:55:00+00:00 USD_JPY M5 BUY 153.132 100.0 9999.91 9e-06
5 2026-02-13 16:20:00+00:00 USD_JPY M5 FLAT 152.894 0.0 9999.75 2.5e-05
6 2026-02-13 17:45:00+00:00 USD_JPY M5 BUY 152.828 100.0 9999.75 2.5e-05
7 2026-02-13 17:50:00+00:00 USD_JPY M5 FLAT 152.757 0.0 9999.71 2.9e-05
8 2026-02-13 17:55:00+00:00 USD_JPY M5 BUY 152.808 100.0 9999.71 2.9e-05
9 2026-02-13 18:00:00+00:00 USD_JPY M5 FLAT 152.792 0.0 9999.7 3e-05
10 2026-02-13 18:05:00+00:00 USD_JPY M5 BUY 152.818 100.0 9999.7 3e-05
11 2026-02-13 19:10:00+00:00 USD_JPY M5 FLAT 152.81 0.0 9999.69 3.1e-05
12 2026-02-13 20:10:00+00:00 USD_JPY M5 BUY 152.788 100.0 9999.69 3.1e-05
13 2026-02-13 20:25:00+00:00 USD_JPY M5 FLAT 152.734 0.0 9999.65 3.5e-05
14 2026-02-13 21:50:00+00:00 USD_JPY M5 BUY 152.717 100.0 9999.65 3.5e-05
15 2026-02-15 22:05:00+00:00 USD_JPY M5 FLAT 152.632 0.0 9999.6 4e-05
16 2026-02-15 23:00:00+00:00 USD_JPY M5 BUY 152.695 100.0 9999.6 4e-05
17 2026-02-16 01:30:00+00:00 USD_JPY M5 FLAT 153.008 0.0 9999.8 2e-05
18 2026-02-16 02:10:00+00:00 USD_JPY M5 BUY 153.089 100.0 9999.8 2e-05
19 2026-02-16 02:55:00+00:00 USD_JPY M5 FLAT 153.012 0.0 9999.75 2.5e-05
20 2026-02-16 03:05:00+00:00 USD_JPY M5 BUY 153.087 100.0 9999.75 2.5e-05
21 2026-02-16 03:20:00+00:00 USD_JPY M5 FLAT 153.022 0.0 9999.71 2.9e-05
22 2026-02-16 03:50:00+00:00 USD_JPY M5 BUY 153.062 100.0 9999.71 2.9e-05
23 2026-02-16 04:05:00+00:00 USD_JPY M5 FLAT 153.02 0.0 9999.68 3.2e-05
24 2026-02-16 04:15:00+00:00 USD_JPY M5 BUY 153.092 100.0 9999.68 3.2e-05