diff --git a/benchmarks/vs_vectorbt/results/latest.json b/benchmarks/vs_vectorbt/results/latest.json index e3c1e5d..ca54335 100644 --- a/benchmarks/vs_vectorbt/results/latest.json +++ b/benchmarks/vs_vectorbt/results/latest.json @@ -1,14 +1,14 @@ { "repo": "manifoldbt/manifoldbt", - "run_id": "39971035390", - "run_url": "https://github.com/manifoldbt/manifoldbt/actions/runs/39971035390", - "commit": "665023e7bc70cad74c15f71b9b4bf259ebf754c0", - "run_started_at": "2026-10-23T14:36:12Z", + "run_id": "40212418887", + "run_url": "https://github.com/manifoldbt/manifoldbt/actions/runs/40212418887", + "commit": "5f2ca4d964c983a2c8ddf79e00ae05dccdae2060", + "run_started_at": "2026-10-25T16:35:37Z", "conclusion": "success", - "synced_at": "2026-10-23T15:00:31.672088+00:00", + "synced_at": "2026-10-25T16:59:22.907543+00:00", "backtests": { "schema_version": 2, - "generated_at": "2026-10-23T15:00:19.222518+00:00", + "generated_at": "2026-10-25T16:59:09.758059+00:00", "environment": { "os": "Linux", "os_release": "6.17.0-1022-azure", @@ -18,7 +18,7 @@ "ram_gb": 16.8, "python": "3.12.15", "versions": { - "manifoldbt": "0.28.1", + "manifoldbt": "0.29.0", "vectorbt": "0.28.4", "raptorbt": "0.9.0", "nautilus_trader": "1.231.0", @@ -26,10 +26,10 @@ "numba": "0.64.0", "pandas": "2.3.3" }, - "runner": "GitHub Actions 1000000966", + "runner": "GitHub Actions 1000001179", "ci": true, - "run_url": "https://github.com/manifoldbt/manifoldbt/actions/runs/39971035390", - "commit": "665023e7bc70cad74c15f71b9b4bf259ebf754c0", + "run_url": "https://github.com/manifoldbt/manifoldbt/actions/runs/40212418887", + "commit": "5f2ca4d964c983a2c8ddf79e00ae05dccdae2060", "pinned_cores": null, "engines": [ "manifoldbt", @@ -154,76 +154,76 @@ "timings": { "manifoldbt": { "samples_s": [ - 0.0049129980000088835, - 0.005460413999998082, - 0.005462429999994356 + 0.004589217000003032, + 0.004850591000007398, + 0.005061382000008052 ], - "min_s": 0.0049129980000088835, - "median_s": 0.005460413999998082, - "max_s": 0.005462429999994356, - "iqr_s": 0.0005494319999854724, - "iqr_over_median": 0.10062094192595386 + "min_s": 0.004589217000003032, + "median_s": 0.004850591000007398, + "max_s": 0.005061382000008052, + "iqr_s": 0.0004721650000050204, + "iqr_over_median": 0.09734174660454782 }, "vectorbt": { "samples_s": [ - 0.19100243100001535, - 0.18958835899999826, - 0.18812173800000664 + 0.18989840700000116, + 0.18665933799999834, + 0.185491485 ], - "min_s": 0.18812173800000664, - "median_s": 0.18958835899999826, - "max_s": 0.19100243100001535, - "iqr_s": 0.002880693000008705, - "iqr_over_median": 0.015194461385726384 + "min_s": 0.185491485, + "median_s": 0.18665933799999834, + "max_s": 0.18989840700000116, + "iqr_s": 0.0044069220000011455, + "iqr_over_median": 0.0236094376376776 }, "raptorbt": { "samples_s": [ - 0.010147952000011173, - 0.00945423100000653, - 0.00863286599999924 + 0.011037244000007718, + 0.009766984000009415, + 0.00853394899999671 ], - "min_s": 0.00863286599999924, - "median_s": 0.00945423100000653, - "max_s": 0.010147952000011173, - "iqr_s": 0.0015150860000119337, - "iqr_over_median": 0.1602548107837525 + "min_s": 0.00853394899999671, + "median_s": 0.009766984000009415, + "max_s": 0.011037244000007718, + "iqr_s": 0.0025032950000110077, + "iqr_over_median": 0.25630174064056976 }, "nautilus_trader": { "samples_s": [ - 6.7509463770000195, - 6.6670482739999954, - 6.8969683429999975 + 6.566695577999994, + 6.569845788000009, + 6.75013813999999 ], - "min_s": 6.6670482739999954, - "median_s": 6.7509463770000195, - "max_s": 6.8969683429999975, - "iqr_s": 0.22992006900000206, - "iqr_over_median": 0.034057457452679955 + "min_s": 6.566695577999994, + "median_s": 6.569845788000009, + "max_s": 6.75013813999999, + "iqr_s": 0.1834425619999962, + "iqr_over_median": 0.02792189770040854 } }, "speedup": { "vectorbt": { - "median_of_ratios": 34.720510019948094, - "min": 34.439203431476656, - "max": 38.876960869853804 + "median_of_ratios": 38.48177222109917, + "min": 36.64838674490582, + "max": 41.37926077583076 }, "raptorbt": { - "median_of_ratios": 1.7314128562431075, - "min": 1.5804076207856503, - "max": 2.0655314738562534 + "median_of_ratios": 2.0135657696133356, + "min": 1.686090676416665, + "max": 2.4050385937296985 }, "nautilus_trader": { - "median_of_ratios": 1262.6190803373452, - "min": 1220.9785327636948, - "max": 1374.0991502516006 + "median_of_ratios": 1354.4423324889665, + "min": 1333.6551439881935, + "max": 1430.8967255188968 } }, "noisy": true, "cpu_over_wall": { "manifoldbt": null, - "vectorbt": 1.0022638361854057, + "vectorbt": 1.0141460384173122, "raptorbt": null, - "nautilus_trader": 1.0002479456153321 + "nautilus_trader": 1.0001669707604532 } }, { @@ -361,76 +361,76 @@ "timings": { "manifoldbt": { "samples_s": [ - 0.00513459499998703, - 0.005277456999976948, - 0.005213673000014296 + 0.004663754999995717, + 0.004830913999995801, + 0.0049515960000121595 ], - "min_s": 0.00513459499998703, - "median_s": 0.005213673000014296, - "max_s": 0.005277456999976948, - "iqr_s": 0.00014286199998991833, - "iqr_over_median": 0.027401411632361025 + "min_s": 0.004663754999995717, + "median_s": 0.004830913999995801, + "max_s": 0.0049515960000121595, + "iqr_s": 0.0002878410000164422, + "iqr_over_median": 0.05958313478912943 }, "vectorbt": { "samples_s": [ - 0.8891324389999795, - 0.9032635690000177, - 0.7234873169999787 + 0.8770849199999873, + 0.8669933019999974, + 0.7005473920000043 ], - "min_s": 0.7234873169999787, - "median_s": 0.8891324389999795, - "max_s": 0.9032635690000177, - "iqr_s": 0.179776252000039, - "iqr_over_median": 0.20219288388829454 + "min_s": 0.7005473920000043, + "median_s": 0.8669933019999974, + "max_s": 0.8770849199999873, + "iqr_s": 0.176537527999983, + "iqr_over_median": 0.20362040582406202 }, "raptorbt": { "samples_s": [ - 0.00806641200000513, - 0.007813297000012653, - 0.010744780999999648 + 0.008406656000005341, + 0.007973456999991413, + 0.011009861000019328 ], - "min_s": 0.007813297000012653, - "median_s": 0.00806641200000513, - "max_s": 0.010744780999999648, - "iqr_s": 0.0029314839999869946, - "iqr_over_median": 0.36341858065086813 + "min_s": 0.007973456999991413, + "median_s": 0.008406656000005341, + "max_s": 0.011009861000019328, + "iqr_s": 0.0030364040000279147, + "iqr_over_median": 0.3611904662241426 }, "nautilus_trader": { "samples_s": [ - 6.707446388000022, - 6.704643343999976, - 6.840591395999979 + 6.648409901000008, + 6.604181857000015, + 6.836412517000014 ], - "min_s": 6.704643343999976, - "median_s": 6.707446388000022, - "max_s": 6.840591395999979, - "iqr_s": 0.13594805200000337, - "iqr_over_median": 0.020268227897165404 + "min_s": 6.604181857000015, + "median_s": 6.648409901000008, + "max_s": 6.836412517000014, + "iqr_s": 0.23223065999999903, + "iqr_over_median": 0.03493025602483813 } }, "speedup": { "vectorbt": { - "median_of_ratios": 171.1550788578596, - "min": 138.76729840900933, - "max": 173.16505761451984 + "median_of_ratios": 179.46775744729692, + "min": 141.4791093615642, + "max": 188.0641071413041 }, "raptorbt": { - "median_of_ratios": 1.5709928436469685, - "min": 1.4805041519138444, - "max": 2.0608850996159878 + "median_of_ratios": 1.8025509487554687, + "min": 1.6505069227062092, + "max": 2.2234974339571103 }, "nautilus_trader": { - "median_of_ratios": 1306.3243328864235, - "min": 1270.4306911509202, - "max": 1312.0484150005614 + "median_of_ratios": 1380.6482832975926, + "min": 1367.0667407877174, + "max": 1425.548705068365 } }, "noisy": true, "cpu_over_wall": { "manifoldbt": null, - "vectorbt": 1.0056110213298672, + "vectorbt": 1.0062890554332624, "raptorbt": null, - "nautilus_trader": 1.0003613779308405 + "nautilus_trader": 1.0000495656721633 } }, { @@ -512,57 +512,57 @@ "timings": { "manifoldbt": { "samples_s": [ - 0.02930831099999409, - 0.02786333800000307, - 0.026986781000005067 + 0.030056229999985362, + 0.027905966999981047, + 0.029465043000016067 ], - "min_s": 0.026986781000005067, - "median_s": 0.02786333800000307, - "max_s": 0.02930831099999409, - "iqr_s": 0.002321529999989025, - "iqr_over_median": 0.0833184451909089 + "min_s": 0.027905966999981047, + "median_s": 0.029465043000016067, + "max_s": 0.030056229999985362, + "iqr_s": 0.0021502630000043155, + "iqr_over_median": 0.07297674739531665 }, "vectorbt": { "samples_s": [ - 2.3125871169999925, - 2.0367222940000147, - 2.348297701000007 + 2.2958973809999748, + 2.022584758999983, + 2.290762328999989 ], - "min_s": 2.0367222940000147, - "median_s": 2.3125871169999925, - "max_s": 2.348297701000007, - "iqr_s": 0.3115754069999923, - "iqr_over_median": 0.1347302355485678 + "min_s": 2.022584758999983, + "median_s": 2.290762328999989, + "max_s": 2.2958973809999748, + "iqr_s": 0.27331262199999173, + "iqr_over_median": 0.11931077202553082 }, "raptorbt": { "samples_s": [ - 0.08003603599999565, - 0.07893809600000168, - 0.08009472899999537 + 0.0862717239999995, + 0.0799968630000194, + 0.08621247100001028 ], - "min_s": 0.07893809600000168, - "median_s": 0.08003603599999565, - "max_s": 0.08009472899999537, - "iqr_s": 0.0011566329999936897, - "iqr_over_median": 0.014451402865501143 + "min_s": 0.0799968630000194, + "median_s": 0.08621247100001028, + "max_s": 0.0862717239999995, + "iqr_s": 0.006274860999980092, + "iqr_over_median": 0.0727836811449163 } }, "speedup": { "vectorbt": { - "median_of_ratios": 78.90550625726807, - "min": 73.09685199956266, - "max": 87.01659160459212 + "median_of_ratios": 76.38673848986026, + "min": 72.47857632030299, + "max": 77.74508691532336 }, "raptorbt": { - "median_of_ratios": 2.8330452008295985, - "min": 2.7308307189729146, - "max": 2.967924518303251 + "median_of_ratios": 2.8703441516132098, + "min": 2.8666579803550163, + "max": 2.925923814194443 } }, "noisy": false, "cpu_over_wall": { "manifoldbt": null, - "vectorbt": 1.000357275062569, + "vectorbt": 1.0001143142765556, "raptorbt": null } }, @@ -669,57 +669,57 @@ "timings": { "manifoldbt": { "samples_s": [ - 0.028149244999980283, - 0.02859036299997797, - 0.026799353000001247 + 0.028028739999996333, + 0.02808768600002054, + 0.027762189000014814 ], - "min_s": 0.026799353000001247, - "median_s": 0.028149244999980283, - "max_s": 0.02859036299997797, - "iqr_s": 0.0017910099999767226, - "iqr_over_median": 0.06362550753947316 + "min_s": 0.027762189000014814, + "median_s": 0.028028739999996333, + "max_s": 0.02808768600002054, + "iqr_s": 0.00032549700000572557, + "iqr_over_median": 0.011612972970093132 }, "vectorbt": { "samples_s": [ - 8.589835797000006, - 8.572624073000014, - 8.593852751000014 + 8.423823564000003, + 8.399459742999994, + 8.346705745999998 ], - "min_s": 8.572624073000014, - "median_s": 8.589835797000006, - "max_s": 8.593852751000014, - "iqr_s": 0.021228677999999945, - "iqr_over_median": 0.0024713718051995875 + "min_s": 8.346705745999998, + "median_s": 8.399459742999994, + "max_s": 8.423823564000003, + "iqr_s": 0.07711781800000495, + "iqr_over_median": 0.009181283125295526 }, "raptorbt": { "samples_s": [ - 0.08689334700000018, - 0.09053714300000593, - 0.08931820300000481 + 0.0895477299999925, + 0.08744265400000018, + 0.08860237600001142 ], - "min_s": 0.08689334700000018, - "median_s": 0.08931820300000481, - "max_s": 0.09053714300000593, - "iqr_s": 0.00364379600000575, - "iqr_over_median": 0.040795670732488354 + "min_s": 0.08744265400000018, + "median_s": 0.08860237600001142, + "max_s": 0.0895477299999925, + "iqr_s": 0.002105075999992323, + "iqr_over_median": 0.023758685658633486 } }, "speedup": { "vectorbt": { - "median_of_ratios": 305.1533281623014, - "min": 299.8431350104446, - "max": 320.6738890673821 + "median_of_ratios": 300.54235631002695, + "min": 299.0442054569341, + "max": 300.6501305064793 }, "raptorbt": { - "median_of_ratios": 3.1667014161406657, - "min": 3.086880198742845, - "max": 3.332849229606426 + "median_of_ratios": 3.1914765798894367, + "min": 3.1132024902277897, + "max": 3.19485392493577 } }, "noisy": false, "cpu_over_wall": { "manifoldbt": null, - "vectorbt": 1.0001431640877414, + "vectorbt": 0.9996031363788465, "raptorbt": null } }, @@ -802,58 +802,58 @@ "timings": { "manifoldbt": { "samples_s": [ - 0.23302756500004307, - 0.23603869199996552, - 0.24001135899993642 + 0.233741211999984, + 0.23512118000002147, + 0.23021485099991423 ], - "min_s": 0.23302756500004307, - "median_s": 0.23603869199996552, - "max_s": 0.24001135899993642, - "iqr_s": 0.006983793999893351, - "iqr_over_median": 0.02958749661218412 + "min_s": 0.23021485099991423, + "median_s": 0.233741211999984, + "max_s": 0.23512118000002147, + "iqr_s": 0.004906329000107235, + "iqr_over_median": 0.02099043193165085 }, "vectorbt": { "samples_s": [ - 24.965410206, - 25.515395463000004, - 25.159790122999993 + 24.674878003000003, + 24.922488347000012, + 24.540430676000028 ], - "min_s": 24.965410206, - "median_s": 25.159790122999993, - "max_s": 25.515395463000004, - "iqr_s": 0.549985257000003, - "iqr_over_median": 0.021859691766555327 + "min_s": 24.540430676000028, + "median_s": 24.674878003000003, + "max_s": 24.922488347000012, + "iqr_s": 0.3820576709999841, + "iqr_over_median": 0.015483670109879897 }, "raptorbt": { "samples_s": [ - 0.8783135840000114, - 0.890122331999919, - 0.8881668889999901 + 0.8913235530000065, + 0.8901113879999798, + 0.8916558979999536 ], - "min_s": 0.8783135840000114, - "median_s": 0.8881668889999901, - "max_s": 0.890122331999919, - "iqr_s": 0.01180874799990761, - "iqr_over_median": 0.013295640882541098 + "min_s": 0.8901113879999798, + "median_s": 0.8913235530000065, + "max_s": 0.8916558979999536, + "iqr_s": 0.0015445099999737977, + "iqr_over_median": 0.0017328275403194538 } }, "speedup": { "vectorbt": { - "median_of_ratios": 107.13500871021584, - "min": 104.82749744776312, - "max": 108.09835983586848 + "median_of_ratios": 105.9984827695988, + "min": 105.56494420419833, + "max": 106.59794782748038 }, "raptorbt": { - "median_of_ratios": 3.7691402903336737, - "min": 3.700520228295634, - "max": 3.7710865301695917 + "median_of_ratios": 3.813292253315036, + "min": 3.7857558727797236, + "max": 3.8731467328329994 } }, "noisy": false, "cpu_over_wall": { - "manifoldbt": 1.1282262786871227, - "vectorbt": 0.9998599192419236, - "raptorbt": 1.0012787741523324 + "manifoldbt": 1.1157565316427998, + "vectorbt": 1.0000297145867332, + "raptorbt": 0.9988437209260209 } }, { @@ -959,58 +959,58 @@ "timings": { "manifoldbt": { "samples_s": [ - 0.2308562349999761, - 0.2334827449999466, - 0.23548766600004 + 0.23332408199996735, + 0.2330006459999936, + 0.22906738400001814 ], - "min_s": 0.2308562349999761, - "median_s": 0.2334827449999466, - "max_s": 0.23548766600004, - "iqr_s": 0.0046314310000639125, - "iqr_over_median": 0.01983628811655856 + "min_s": 0.22906738400001814, + "median_s": 0.2330006459999936, + "max_s": 0.23332408199996735, + "iqr_s": 0.0042566979999492105, + "iqr_over_median": 0.01826903947703788 }, "vectorbt": { "samples_s": [ - 100.24632598699998, - 99.98072737299992, - 99.992798601 + 98.52799191100002, + 98.22038439599999, + 98.40534740999999 ], - "min_s": 99.98072737299992, - "median_s": 99.992798601, - "max_s": 100.24632598699998, - "iqr_s": 0.265598614000055, - "iqr_over_median": 0.0026561774219348517 + "min_s": 98.22038439599999, + "median_s": 98.40534740999999, + "max_s": 98.52799191100002, + "iqr_s": 0.30760751500002925, + "iqr_over_median": 0.003125922758225739 }, "raptorbt": { "samples_s": [ - 0.904415350000022, - 0.8926298269999506, - 0.8843206249999866 + 0.8913295410000046, + 0.8879087999999911, + 0.8890489350000053 ], - "min_s": 0.8843206249999866, - "median_s": 0.8926298269999506, - "max_s": 0.904415350000022, - "iqr_s": 0.020094725000035396, - "iqr_over_median": 0.02251182336979706 + "min_s": 0.8879087999999911, + "median_s": 0.8890489350000053, + "max_s": 0.8913295410000046, + "iqr_s": 0.0034207410000135496, + "iqr_over_median": 0.0038476408500658396 } }, "speedup": { "vectorbt": { - "median_of_ratios": 428.2146304773948, - "min": 424.6201098319222, - "max": 434.23703062215475 + "median_of_ratios": 422.2795652572794, + "min": 421.5455453973406, + "max": 429.5912656425683 }, "raptorbt": { - "median_of_ratios": 3.823108328626832, - "min": 3.7552736413797416, - "max": 3.917656155139651 + "median_of_ratios": 3.820135210047154, + "min": 3.810756816528378, + "max": 3.8811677135140936 } }, "noisy": false, "cpu_over_wall": { - "manifoldbt": 1.1002724809081117, - "vectorbt": 0.9999005663322894, - "raptorbt": 0.9957611893195056 + "manifoldbt": 1.1216693237383115, + "vectorbt": 0.9998857418548708, + "raptorbt": 0.9968941590080963 } }, { @@ -1086,58 +1086,58 @@ "timings": { "manifoldbt": { "samples_s": [ - 0.007866064000040751, - 0.006250550000004296, - 0.006472875999975258 + 0.007114841999964483, + 0.006602743000030387, + 0.0070428400000537295 ], - "min_s": 0.006250550000004296, - "median_s": 0.006472875999975258, - "max_s": 0.007866064000040751, - "iqr_s": 0.0016155140000364554, - "iqr_over_median": 0.2495821023054714 + "min_s": 0.006602743000030387, + "median_s": 0.0070428400000537295, + "max_s": 0.007114841999964483, + "iqr_s": 0.0005120989999340964, + "iqr_over_median": 0.07271200253451585 }, "vectorbt": { "samples_s": [ - 0.20176602699996238, - 0.19890839799995774, - 0.19518191399993157 + 0.19727257600004577, + 0.19517797700007122, + 0.19198515199991562 ], - "min_s": 0.19518191399993157, - "median_s": 0.19890839799995774, - "max_s": 0.20176602699996238, - "iqr_s": 0.006584113000030811, - "iqr_over_median": 0.033101231854635975 + "min_s": 0.19198515199991562, + "median_s": 0.19517797700007122, + "max_s": 0.19727257600004577, + "iqr_s": 0.005287424000130159, + "iqr_over_median": 0.027090269514004797 }, "nautilus_trader": { "samples_s": [ - 13.104121166999903, - 13.199672702000044, - 13.321832899000015 + 12.848607558000026, + 12.848857593999924, + 12.842966200000092 ], - "min_s": 13.104121166999903, - "median_s": 13.199672702000044, - "max_s": 13.321832899000015, - "iqr_s": 0.21771173200011162, - "iqr_over_median": 0.016493721997146448 + "min_s": 12.842966200000092, + "median_s": 12.848607558000026, + "max_s": 12.848857593999924, + "iqr_s": 0.005891393999831962, + "iqr_over_median": 0.0004585239274557622 } }, "speedup": { "vectorbt": { - "median_of_ratios": 30.153816325336315, - "min": 25.65018883636303, - "max": 31.822543296161303 + "median_of_ratios": 27.726908904095207, + "min": 27.259621402509637, + "max": 29.560135386031682 }, "nautilus_trader": { - "median_of_ratios": 2058.101051070797, - "min": 1665.9057397615904, - "max": 2111.761797280395 + "median_of_ratios": 1823.5493351974649, + "min": 1805.8879674438542, + "max": 1945.987840802041 } }, - "noisy": true, + "noisy": false, "cpu_over_wall": { "manifoldbt": null, - "vectorbt": 0.9901715587860495, - "nautilus_trader": 0.9996056398529306 + "vectorbt": 1.009520799212439, + "nautilus_trader": 0.9992104044782968 } }, { @@ -1189,40 +1189,40 @@ "timings": { "manifoldbt": { "samples_s": [ - 0.046326603000011346, - 0.04304969200006781, - 0.04313296199995875 + 0.045826575999967645, + 0.041912604999993164, + 0.04134245700004158 ], - "min_s": 0.04304969200006781, - "median_s": 0.04313296199995875, - "max_s": 0.046326603000011346, - "iqr_s": 0.0032769109999435386, - "iqr_over_median": 0.07597231555641072 + "min_s": 0.04134245700004158, + "median_s": 0.041912604999993164, + "max_s": 0.045826575999967645, + "iqr_s": 0.004484118999926068, + "iqr_over_median": 0.10698736096042703 }, "vectorbt": { "samples_s": [ - 2.2030476449999696, - 2.4206321230000185, - 2.1773281830000997 + 2.1794898059999923, + 2.3697154029999865, + 2.181291428999998 ], - "min_s": 2.1773281830000997, - "median_s": 2.2030476449999696, - "max_s": 2.4206321230000185, - "iqr_s": 0.24330393999991884, - "iqr_over_median": 0.11043970862460498 + "min_s": 2.1794898059999923, + "median_s": 2.181291428999998, + "max_s": 2.3697154029999865, + "iqr_s": 0.1902255969999942, + "iqr_over_median": 0.08720778639248683 } }, "speedup": { "vectorbt": { - "median_of_ratios": 50.47944963766184, - "min": 47.5546986468969, - "max": 56.22879074247978 + "median_of_ratios": 52.76153347629543, + "min": 47.55951668746823, + "max": 56.53944447023451 } }, "noisy": false, "cpu_over_wall": { "manifoldbt": null, - "vectorbt": 0.999851793880055 + "vectorbt": 1.0014119852532521 } }, { @@ -1298,58 +1298,58 @@ "timings": { "manifoldbt": { "samples_s": [ - 0.004720108000014989, - 0.004348275999973339, - 0.004351543999973728 + 0.004552061000026697, + 0.004647761000001083, + 0.004977966999945238 ], - "min_s": 0.004348275999973339, - "median_s": 0.004351543999973728, - "max_s": 0.004720108000014989, - "iqr_s": 0.00037183200004164974, - "iqr_over_median": 0.08544829146709641 + "min_s": 0.004552061000026697, + "median_s": 0.004647761000001083, + "max_s": 0.004977966999945238, + "iqr_s": 0.00042590599991854106, + "iqr_over_median": 0.09163681177204289 }, "vectorbt": { "samples_s": [ - 0.18788963400004377, - 0.18744198399997458, - 0.42181937000009384 + 0.20035203899999487, + 0.18909133800002564, + 0.41975569100009125 ], - "min_s": 0.18744198399997458, - "median_s": 0.18788963400004377, - "max_s": 0.42181937000009384, - "iqr_s": 0.23437738600011926, - "iqr_over_median": 1.2474205256052853 + "min_s": 0.18909133800002564, + "median_s": 0.20035203899999487, + "max_s": 0.41975569100009125, + "iqr_s": 0.2306643530000656, + "iqr_over_median": 1.1512952608387055 }, "nautilus_trader": { "samples_s": [ - 6.6248271910000085, - 6.655864492999967, - 6.609391290000076 + 6.6150259749999805, + 6.619851294, + 6.58010412100009 ], - "min_s": 6.609391290000076, - "median_s": 6.6248271910000085, - "max_s": 6.655864492999967, - "iqr_s": 0.04647320299989133, - "iqr_over_median": 0.007015006076388879 + "min_s": 6.58010412100009, + "median_s": 6.6150259749999805, + "max_s": 6.619851294, + "iqr_s": 0.03974717299990971, + "iqr_over_median": 0.006008619338778912 } }, "speedup": { "vectorbt": { - "median_of_ratios": 43.10719558765908, - "min": 39.80621502716615, - "max": 96.93556356149462 + "median_of_ratios": 44.01347850980465, + "min": 40.68439362522763, + "max": 84.32271467543053 }, "nautilus_trader": { - "median_of_ratios": 1518.8611881300014, - "min": 1403.5329680971222, - "max": 1530.6904375529007 + "median_of_ratios": 1424.3097469939737, + "min": 1321.8456693410135, + "max": 1453.193613829249 } }, "noisy": true, "cpu_over_wall": { "manifoldbt": null, - "vectorbt": 1.016118667847441, - "nautilus_trader": 0.9994930652620644 + "vectorbt": 1.0009897836410182, + "nautilus_trader": 1.0002532735156902 } }, { @@ -1401,40 +1401,40 @@ "timings": { "manifoldbt": { "samples_s": [ - 0.03226409400008379, - 0.029703078000011374, - 0.029096354999978757 + 0.0309082370000624, + 0.02713492700002007, + 0.027422161999993477 ], - "min_s": 0.029096354999978757, - "median_s": 0.029703078000011374, - "max_s": 0.03226409400008379, - "iqr_s": 0.00316773900010503, - "iqr_over_median": 0.106646826302103 + "min_s": 0.02713492700002007, + "median_s": 0.027422161999993477, + "max_s": 0.0309082370000624, + "iqr_s": 0.003773310000042329, + "iqr_over_median": 0.1376007478930081 }, "vectorbt": { "samples_s": [ - 2.4227834939999866, - 2.148179094999932, - 2.3945496979999916 + 2.379179233000059, + 2.1600787889999538, + 2.3733355900000106 ], - "min_s": 2.148179094999932, - "median_s": 2.3945496979999916, - "max_s": 2.4227834939999866, - "iqr_s": 0.2746043990000544, - "iqr_over_median": 0.11467893075237204 + "min_s": 2.1600787889999538, + "median_s": 2.3733355900000106, + "max_s": 2.379179233000059, + "iqr_s": 0.2191004440001052, + "iqr_over_median": 0.09231751502959774 } }, "speedup": { "vectorbt": { - "median_of_ratios": 75.09225252051692, - "min": 72.32176729290849, - "max": 82.29723956838373 + "median_of_ratios": 79.60510780067166, + "min": 76.97557233676109, + "max": 86.5480843560247 } }, "noisy": false, "cpu_over_wall": { "manifoldbt": null, - "vectorbt": 0.9992086315014798 + "vectorbt": 0.9981781639848737 } }, { @@ -1486,40 +1486,40 @@ "timings": { "manifoldbt": { "samples_s": [ - 0.31510102199990797, - 0.30997897500003546, - 0.3119126610000649 + 0.31262750700000197, + 0.3111962330000324, + 0.3146126200000481 ], - "min_s": 0.30997897500003546, - "median_s": 0.3119126610000649, - "max_s": 0.31510102199990797, - "iqr_s": 0.005122046999872509, - "iqr_over_median": 0.016421414197968207 + "min_s": 0.3111962330000324, + "median_s": 0.31262750700000197, + "max_s": 0.3146126200000481, + "iqr_s": 0.003416387000015675, + "iqr_over_median": 0.010927979539611188 }, "vectorbt": { "samples_s": [ - 25.893134344999908, - 25.864682870000024, - 25.819573876999925 + 25.50565242399989, + 25.384886540000025, + 25.25498168499996 ], - "min_s": 25.819573876999925, - "median_s": 25.864682870000024, - "max_s": 25.893134344999908, - "iqr_s": 0.07356046799998239, - "iqr_over_median": 0.0028440506450324136 + "min_s": 25.25498168499996, + "median_s": 25.384886540000025, + "max_s": 25.50565242399989, + "iqr_s": 0.2506707389999292, + "iqr_over_median": 0.009874802418554712 } }, "speedup": { "vectorbt": { - "median_of_ratios": 82.77821680664177, - "min": 82.17407287561089, - "max": 83.4401199952257 + "median_of_ratios": 81.57195958087765, + "min": 80.27326330709843, + "max": 81.58479933117252 } }, "noisy": false, "cpu_over_wall": { - "manifoldbt": 1.0779166638891444, - "vectorbt": 0.9999047262108745 + "manifoldbt": 1.0869144072805237, + "vectorbt": 0.9999274987031038 } }, { @@ -1595,58 +1595,58 @@ "timings": { "manifoldbt": { "samples_s": [ - 0.018894026999987545, - 0.018525074000081077, - 0.02033012299989423 + 0.01874730500003352, + 0.018133202000171877, + 0.018228043999897636 ], - "min_s": 0.018525074000081077, - "median_s": 0.018894026999987545, - "max_s": 0.02033012299989423, - "iqr_s": 0.0018050489998131525, - "iqr_over_median": 0.09553543031426505 + "min_s": 0.018133202000171877, + "median_s": 0.018228043999897636, + "max_s": 0.01874730500003352, + "iqr_s": 0.0006141029998616432, + "iqr_over_median": 0.03369001083523234 }, "vectorbt": { "samples_s": [ - 0.22580127000003358, - 0.22789545399996314, - 0.5315867439999238 + 0.22161887799995839, + 0.22177825199992185, + 0.5228938720001679 ], - "min_s": 0.22580127000003358, - "median_s": 0.22789545399996314, - "max_s": 0.5315867439999238, - "iqr_s": 0.3057854739998902, - "iqr_over_median": 1.341779612681259 + "min_s": 0.22161887799995839, + "median_s": 0.22177825199992185, + "max_s": 0.5228938720001679, + "iqr_s": 0.3012749940002095, + "iqr_over_median": 1.3584514770200087 }, "nautilus_trader": { "samples_s": [ - 56.353062174, - 56.747392567999896, - 55.613515216999986 + 54.42115898600002, + 54.257276766999894, + 53.97369034099984 ], - "min_s": 55.613515216999986, - "median_s": 56.353062174, - "max_s": 56.747392567999896, - "iqr_s": 1.13387735099991, - "iqr_over_median": 0.020120953631567778 + "min_s": 53.97369034099984, + "median_s": 54.257276766999894, + "max_s": 54.42115898600002, + "iqr_s": 0.44746864500018546, + "iqr_over_median": 0.008247163729240881 } }, "speedup": { "vectorbt": { - "median_of_ratios": 12.301999657273473, - "min": 11.950934017411027, - "max": 26.147738702942892 + "median_of_ratios": 12.230506889948046, + "min": 11.821372618601027, + "max": 28.68623051398737 }, "nautilus_trader": { - "median_of_ratios": 2982.586093162519, - "min": 2735.5228110173916, - "max": 3063.2748116283656 + "median_of_ratios": 2961.024800099393, + "min": 2902.8790530640385, + "max": 2992.150904538846 } }, "noisy": true, "cpu_over_wall": { "manifoldbt": null, - "vectorbt": 1.0149363431723395, - "nautilus_trader": 0.9997393816350197 + "vectorbt": 1.0245360848345764, + "nautilus_trader": 0.9998024858649485 } }, { @@ -1698,40 +1698,40 @@ "timings": { "manifoldbt": { "samples_s": [ - 0.1555478900002072, - 0.1558432740000626, - 0.15616228399994725 + 0.15391949399986515, + 0.1544134859998394, + 0.1536693699999887 ], - "min_s": 0.1555478900002072, - "median_s": 0.1558432740000626, - "max_s": 0.15616228399994725, - "iqr_s": 0.0006143939997400594, - "iqr_over_median": 0.003942383806309232 + "min_s": 0.1536693699999887, + "median_s": 0.15391949399986515, + "max_s": 0.1544134859998394, + "iqr_s": 0.0007441159998506919, + "iqr_over_median": 0.004834449363843048 }, "vectorbt": { "samples_s": [ - 2.50202176300013, - 2.793003007000152, - 2.5243200089998936 + 2.478152567000052, + 2.76150361100008, + 2.4946091189999606 ], - "min_s": 2.50202176300013, - "median_s": 2.5243200089998936, - "max_s": 2.793003007000152, - "iqr_s": 0.29098124400002234, - "iqr_over_median": 0.11527113953959654 + "min_s": 2.478152567000052, + "median_s": 2.4946091189999606, + "max_s": 2.76150361100008, + "iqr_s": 0.2833510440000282, + "iqr_over_median": 0.11358534763699493 } }, "speedup": { "vectorbt": { - "median_of_ratios": 16.16472264840047, - "min": 16.085218275842873, - "max": 17.921870705815834 + "median_of_ratios": 16.233613237303857, + "min": 16.100316487541356, + "max": 17.883824026892007 } }, "noisy": false, "cpu_over_wall": { "manifoldbt": null, - "vectorbt": 1.0026415539388214 + "vectorbt": 0.9981555718025863 } }, { @@ -1852,76 +1852,76 @@ "timings": { "manifoldbt": { "samples_s": [ - 0.005162129999916942, - 0.007363703999999416, - 0.007375988000148936 + 0.005641574000037508, + 0.0071865719999095745, + 0.007451504999835379 ], - "min_s": 0.005162129999916942, - "median_s": 0.007363703999999416, - "max_s": 0.007375988000148936, - "iqr_s": 0.002213858000231994, - "iqr_over_median": 0.3006446212710573 + "min_s": 0.005641574000037508, + "median_s": 0.0071865719999095745, + "max_s": 0.007451504999835379, + "iqr_s": 0.0018099309997978708, + "iqr_over_median": 0.2518490039229614 }, "vectorbt": { "samples_s": [ - 0.19116203500016127, - 0.19213546900004985, - 0.6316490350000095 + 0.1897345329998643, + 0.18873992700014242, + 0.6183023129999583 ], - "min_s": 0.19116203500016127, - "median_s": 0.19213546900004985, - "max_s": 0.6316490350000095, - "iqr_s": 0.4404869999998482, - "iqr_over_median": 2.292585550665473 + "min_s": 0.18873992700014242, + "median_s": 0.1897345329998643, + "max_s": 0.6183023129999583, + "iqr_s": 0.4295623859998159, + "iqr_over_median": 2.2640179371043807 }, "raptorbt": { "samples_s": [ - 0.0106546030001482, - 0.009868416000017532, - 0.009324687000116683 + 0.010192384999982096, + 0.009460979000095904, + 0.008880056000180048 ], - "min_s": 0.009324687000116683, - "median_s": 0.009868416000017532, - "max_s": 0.0106546030001482, - "iqr_s": 0.0013299160000315169, - "iqr_over_median": 0.13476489033591146 + "min_s": 0.008880056000180048, + "median_s": 0.009460979000095904, + "max_s": 0.010192384999982096, + "iqr_s": 0.0013123289998020482, + "iqr_over_median": 0.138709640914407 }, "nautilus_trader": { "samples_s": [ - 14.181575714000019, - 13.762473349999937, - 13.770359562000067 + 13.59460449900007, + 13.116332037999882, + 13.155508698999938 ], - "min_s": 13.762473349999937, - "median_s": 13.770359562000067, - "max_s": 14.181575714000019, - "iqr_s": 0.41910236400008216, - "iqr_over_median": 0.030435106804081877 + "min_s": 13.116332037999882, + "median_s": 13.155508698999938, + "max_s": 13.59460449900007, + "iqr_s": 0.47827246100018783, + "iqr_over_median": 0.036355299665192374 } }, "speedup": { "vectorbt": { - "median_of_ratios": 37.03161970024719, - "min": 26.09223143679663, - "max": 85.6358544763434 + "median_of_ratios": 33.63148883602393, + "min": 26.262858982351705, + "max": 82.97683662744882 }, "raptorbt": { - "median_of_ratios": 1.340142949800578, - "min": 1.2641949797001293, - "max": 2.0639935453620173 + "median_of_ratios": 1.3164800965209764, + "min": 1.1917130835148375, + "max": 1.8066562629355445 }, "nautilus_trader": { - "median_of_ratios": 1868.9606955957258, - "min": 1866.9172945674552, - "max": 2747.233354105417 + "median_of_ratios": 1825.1166255851774, + "min": 1765.483442511355, + "max": 2409.7183691837927 } }, "noisy": true, "cpu_over_wall": { "manifoldbt": null, - "vectorbt": 1.0148317772624562, + "vectorbt": 1.003233649786882, "raptorbt": null, - "nautilus_trader": 0.9996545887506363 + "nautilus_trader": 1.000089166816345 } }, { @@ -2013,57 +2013,57 @@ "timings": { "manifoldbt": { "samples_s": [ - 0.04811898699995254, - 0.057673803999932716, - 0.056148783000026015 + 0.04881251000006159, + 0.060395591000087734, + 0.058551942000121926 ], - "min_s": 0.04811898699995254, - "median_s": 0.056148783000026015, - "max_s": 0.057673803999932716, - "iqr_s": 0.009554816999980176, - "iqr_over_median": 0.17016961881392423 + "min_s": 0.04881251000006159, + "median_s": 0.058551942000121926, + "max_s": 0.060395591000087734, + "iqr_s": 0.01158308100002614, + "iqr_over_median": 0.19782573565197925 }, "vectorbt": { "samples_s": [ - 2.3862398260000646, - 2.797548099000096, - 2.3533503629998904 + 2.3462140869999075, + 2.764542100000199, + 2.3486249700001736 ], - "min_s": 2.3533503629998904, - "median_s": 2.3862398260000646, - "max_s": 2.797548099000096, - "iqr_s": 0.4441977360002056, - "iqr_over_median": 0.1861496615555161 + "min_s": 2.3462140869999075, + "median_s": 2.3486249700001736, + "max_s": 2.764542100000199, + "iqr_s": 0.4183280130002913, + "iqr_over_median": 0.17811613958965122 }, "raptorbt": { "samples_s": [ - 0.07617342499997903, - 0.0760776510001051, - 0.07673301199997695 + 0.08322824499987291, + 0.07590858599996864, + 0.07588985400002457 ], - "min_s": 0.0760776510001051, - "median_s": 0.07617342499997903, - "max_s": 0.07673301199997695, - "iqr_s": 0.0006553609998718457, - "iqr_over_median": 0.008603538568365885 + "min_s": 0.07588985400002457, + "median_s": 0.07590858599996864, + "max_s": 0.08322824499987291, + "iqr_s": 0.007338390999848343, + "iqr_over_median": 0.09667405739650288 } }, "speedup": { "vectorbt": { - "median_of_ratios": 48.506391203246444, - "min": 41.91275816251975, - "max": 49.59040027177667 + "median_of_ratios": 45.773905913035655, + "min": 40.11182020222801, + "max": 48.065835725246394 }, "raptorbt": { - "median_of_ratios": 1.366601516544738, - "min": 1.3191023605828716, - "max": 1.5830222070147522 + "median_of_ratios": 1.2961116473278809, + "min": 1.2568564152283628, + "max": 1.705059727511818 } }, "noisy": true, "cpu_over_wall": { "manifoldbt": null, - "vectorbt": 0.9990529180005605, + "vectorbt": 1.0014235554901971, "raptorbt": null } }, @@ -2156,58 +2156,58 @@ "timings": { "manifoldbt": { "samples_s": [ - 0.47996589700005643, - 0.4935150449998673, - 0.5010534959999404 + 0.496952932999875, + 0.5001499920001606, + 0.5015655299998798 ], - "min_s": 0.47996589700005643, - "median_s": 0.4935150449998673, - "max_s": 0.5010534959999404, - "iqr_s": 0.021087598999883994, - "iqr_over_median": 0.04272939439949529 + "min_s": 0.496952932999875, + "median_s": 0.5001499920001606, + "max_s": 0.5015655299998798, + "iqr_s": 0.0046125970000048255, + "iqr_over_median": 0.009222427419339724 }, "vectorbt": { "samples_s": [ - 28.079414629999974, - 29.442635924999877, - 28.817998062000015 + 27.119459415999927, + 28.613447091999888, + 28.091276683999922 ], - "min_s": 28.079414629999974, - "median_s": 28.817998062000015, - "max_s": 29.442635924999877, - "iqr_s": 1.363221294999903, - "iqr_over_median": 0.04730451060712207 + "min_s": 27.119459415999927, + "median_s": 28.091276683999922, + "max_s": 28.613447091999888, + "iqr_s": 1.4939876759999606, + "iqr_over_median": 0.05318333135250126 }, "raptorbt": { "samples_s": [ - 0.8850994019999234, - 0.8840201860000434, - 0.8835336050001388 + 0.8867240140000376, + 0.8867306510001072, + 0.8878773579999688 ], - "min_s": 0.8835336050001388, - "median_s": 0.8840201860000434, - "max_s": 0.8850994019999234, - "iqr_s": 0.0015657969997846521, - "iqr_over_median": 0.0017712231288173042 + "min_s": 0.8867240140000376, + "median_s": 0.8867306510001072, + "max_s": 0.8878773579999688, + "iqr_s": 0.0011533439999311668, + "iqr_over_median": 0.0013006700497274536 } }, "speedup": { "vectorbt": { - "median_of_ratios": 58.502936990951824, - "min": 57.51481287340113, - "max": 59.65904428507908 + "median_of_ratios": 56.00719149102343, + "min": 54.57148477279789, + "max": 57.20973217968321 }, "raptorbt": { - "median_of_ratios": 1.7912730218797708, - "min": 1.763351841776679, - "max": 1.8440881061177132 + "median_of_ratios": 1.7729294515310567, + "min": 1.7702120757783766, + "max": 1.7843219249100613 } }, "noisy": false, "cpu_over_wall": { - "manifoldbt": 1.0443974452632474, - "vectorbt": 0.9999994369125252, - "raptorbt": 0.9989997965030677 + "manifoldbt": 1.0609417944945054, + "vectorbt": 0.9997115010122509, + "raptorbt": 1.0032570069894606 } } ], @@ -2222,48 +2222,48 @@ ], "samples_s": { "manifoldbt": [ - 0.46410306999996465, - 0.4327693489999547, - 0.43966461400009393 + 0.5388784960000521, + 0.4227910360000351, + 0.42054043699999966 ], "vectorbt": [ - 7.363154013999974, - 7.427940599000067, - 7.372740119999889 + 7.521853098000065, + 7.306252720999964, + 7.069486713999822 ], "raptorbt": [ - 0.4255423210001936, - 0.4212101299999631, - 0.41333107100012967 + 0.403700408000077, + 0.3942928629999187, + 0.39335887599986563 ], "nautilus_trader": [ - 2.292968202000111, - 2.2869743370001743, - 2.24788376399988 + 2.2924310679998143, + 2.1871651120000024, + 2.1908141390001674 ], "baseline": [ - 0.37101216099995327, - 0.36468700399996123, - 0.36670702199990046 + 0.35163879800006725, + 0.3558051269999396, + 0.3564805729999989 ] }, "median_s": { - "manifoldbt": 0.43966461400009393, - "vectorbt": 7.372740119999889, - "raptorbt": 0.4212101299999631, - "nautilus_trader": 2.2869743370001743, - "baseline": 0.36670702199990046 + "manifoldbt": 0.4227910360000351, + "vectorbt": 7.306252720999964, + "raptorbt": 0.3942928629999187, + "nautilus_trader": 2.1908141390001674, + "baseline": 0.3558051269999396 }, "engine_share_s": { - "manifoldbt": 0.07295759200019347, - "vectorbt": 7.006033097999989, - "raptorbt": 0.05450310800006264, - "nautilus_trader": 1.9202673150002738 + "manifoldbt": 0.06698590900009549, + "vectorbt": 6.950447594000025, + "raptorbt": 0.03848773599997912, + "nautilus_trader": 1.8350090120002278 }, "ratio": { - "vectorbt": 16.769009570550324, - "raptorbt": 0.9580259966062975, - "nautilus_trader": 5.201633845837968 + "vectorbt": 17.28100195813839, + "raptorbt": 0.9325951343014898, + "nautilus_trader": 5.18178947152509 } }, "memory": { @@ -2276,44 +2276,44 @@ "nautilus_trader" ], "manifoldbt": { - "before_mb": 482.832384, - "peak_mb": 482.852864, - "added_mb": 0.020480000000020482, - "added_mb_per_million_bars": 0.010240000000010241, - "seconds": 0.04804365800009691, + "before_mb": 483.106816, + "peak_mb": 483.119104, + "added_mb": 0.012288000000012289, + "added_mb_per_million_bars": 0.0061440000000061445, + "seconds": 0.046736910999925385, "mode": "memory", "engine": "mbt", "workload": "sma_cross", "bars": 2000000 }, "vectorbt": { - "before_mb": 602.157056, - "peak_mb": 866.01728, - "added_mb": 263.860224, - "added_mb_per_million_bars": 131.930112, - "seconds": 4.341360242000064, + "before_mb": 601.92768, + "peak_mb": 848.478208, + "added_mb": 246.55052799999999, + "added_mb_per_million_bars": 123.27526399999999, + "seconds": 4.308204518999901, "mode": "memory", "engine": "vbt", "workload": "sma_cross", "bars": 2000000 }, "raptorbt": { - "before_mb": 334.04928, - "peak_mb": 374.607872, - "added_mb": 40.558591999999976, - "added_mb_per_million_bars": 20.279295999999988, - "seconds": 0.16475942300007773, + "before_mb": 334.168064, + "peak_mb": 375.226368, + "added_mb": 41.058303999999964, + "added_mb_per_million_bars": 20.529151999999982, + "seconds": 0.15956745499988756, "mode": "memory", "engine": "rbt", "workload": "sma_cross", "bars": 2000000 }, "nautilus_trader": { - "before_mb": 461.02528, - "peak_mb": 461.70112, - "added_mb": 0.6758399999999938, - "added_mb_per_million_bars": 6.758399999999938, - "seconds": 8.432393408000053, + "before_mb": 460.06272, + "peak_mb": 460.812288, + "added_mb": 0.7495680000000107, + "added_mb_per_million_bars": 7.495680000000107, + "seconds": 7.607467899000085, "mode": "memory", "engine": "nt", "workload": "sma_cross", @@ -2325,17 +2325,17 @@ }, "sweeps": { "schema_version": 2, - "generated_at": "2026-10-23T14:55:54.849871+00:00", + "generated_at": "2026-10-25T16:57:15.239517+00:00", "environment": { "os": "Linux", "os_release": "6.17.0-1022-azure", "arch": "x86_64", - "cpu": "AMD EPYC 9V74 80-Core Processor", + "cpu": "AMD EPYC 9V45 96-Core Processor", "logical_cores": 4, "ram_gb": 16.8, "python": "3.12.15", "versions": { - "manifoldbt": "0.28.1", + "manifoldbt": "0.29.0", "vectorbt": "0.28.4", "raptorbt": "0.9.0", "nautilus_trader": "1.231.0", @@ -2343,10 +2343,10 @@ "numba": "0.64.0", "pandas": "2.3.3" }, - "runner": "GitHub Actions 1000000965", + "runner": "GitHub Actions 1000001180", "ci": true, - "run_url": "https://github.com/manifoldbt/manifoldbt/actions/runs/39971035390", - "commit": "665023e7bc70cad74c15f71b9b4bf259ebf754c0", + "run_url": "https://github.com/manifoldbt/manifoldbt/actions/runs/40212418887", + "commit": "5f2ca4d964c983a2c8ddf79e00ae05dccdae2060", "pinned_cores": null, "engines": [ "manifoldbt", @@ -2468,60 +2468,60 @@ "timings": { "manifoldbt": { "samples_s": [ - 0.004292743999997128 + 0.0036721339999985503 ], - "min_s": 0.004292743999997128, - "median_s": 0.004292743999997128, - "max_s": 0.004292743999997128, + "min_s": 0.0036721339999985503, + "median_s": 0.0036721339999985503, + "max_s": 0.0036721339999985503, "iqr_s": 0.0, "iqr_over_median": 0.0 }, "vectorbt": { "samples_s": [ - 0.3324189490000009 + 0.3489638119999654 ], - "min_s": 0.3324189490000009, - "median_s": 0.3324189490000009, - "max_s": 0.3324189490000009, + "min_s": 0.3489638119999654, + "median_s": 0.3489638119999654, + "max_s": 0.3489638119999654, "iqr_s": 0.0, "iqr_over_median": 0.0 }, "raptorbt": { "samples_s": [ - 0.008756845999997154 + 0.006308952000040335 ], - "min_s": 0.008756845999997154, - "median_s": 0.008756845999997154, - "max_s": 0.008756845999997154, + "min_s": 0.006308952000040335, + "median_s": 0.006308952000040335, + "max_s": 0.006308952000040335, "iqr_s": 0.0, "iqr_over_median": 0.0 }, "nautilus_trader": { "samples_s": [ - 4.135295411000001 + 3.022083299999963 ], - "min_s": 4.135295411000001, - "median_s": 4.135295411000001, - "max_s": 4.135295411000001, + "min_s": 3.022083299999963, + "median_s": 3.022083299999963, + "max_s": 3.022083299999963, "iqr_s": 0.0, "iqr_over_median": 0.0 } }, "speedup": { "vectorbt": { - "median_of_ratios": 77.43740344176668, - "min": 77.43740344176668, - "max": 77.43740344176668 + "median_of_ratios": 95.03024998545891, + "min": 95.03024998545891, + "max": 95.03024998545891 }, "raptorbt": { - "median_of_ratios": 2.039918057075617, - "min": 2.039918057075617, - "max": 2.039918057075617 + "median_of_ratios": 1.7180614868746147, + "min": 1.7180614868746147, + "max": 1.7180614868746147 }, "nautilus_trader": { - "median_of_ratios": 963.3221573433607, - "min": 963.3221573433607, - "max": 963.3221573433607 + "median_of_ratios": 822.9774022410827, + "min": 822.9774022410827, + "max": 822.9774022410827 } }, "noisy": false, @@ -2529,7 +2529,7 @@ "manifoldbt": null, "vectorbt": null, "raptorbt": null, - "nautilus_trader": 0.9987194600448819 + "nautilus_trader": 0.9993106411064303 } } ], @@ -2557,9 +2557,9 @@ "out_of_scope": { "nautilus_trader": { "status": "out of scope", - "reason": "NautilusTrader has no parameter-grid API, so a grid is a Python loop of full backtests, each one replaying every bar through the simulated exchange. Measured: 0.97 s per backtest at 20,000 bars (mean over 16 cells spread across this grid), which puts this grid of 5,000 combinations at about 81 minutes per call. Looped grids are held to 64 combinations, so that a point stays inside the time budget of the job. It is not run.", + "reason": "NautilusTrader has no parameter-grid API, so a grid is a Python loop of full backtests, each one replaying every bar through the simulated exchange. Measured: 0.69 s per backtest at 20,000 bars (mean over 16 cells spread across this grid), which puts this grid of 5,000 combinations at about 57 minutes per call. Looped grids are held to 64 combinations, so that a point stays inside the time budget of the job. It is not run.", "parity_scope": "anchor grid", - "anchor_seconds": 15.458 + "anchor_seconds": 11.027 } }, "parity": { @@ -2599,25 +2599,25 @@ "status": "exact", "timings": { "seconds": { - "manifoldbt": 0.22803461299997707, - "vectorbt": 4.167468323999998, - "raptorbt": 5.547840041000001, + "manifoldbt": 0.16136777199994867, + "vectorbt": 5.3253020869999546, + "raptorbt": 3.591264787, "nautilus_trader": null }, "ratio": { - "vectorbt": 18.275595398319716, - "raptorbt": 24.328938348497815 + "vectorbt": 33.001026295397125, + "raptorbt": 22.255155056619003 }, "reps": 3, - "per_combo_us": 45.606922599995414 + "per_combo_us": 32.273554399989735 }, "memory": { - "manifoldbt": 36.8, - "vectorbt": 2531.7, - "raptorbt": 36.5, + "manifoldbt": 37.5, + "vectorbt": 2533.0, + "raptorbt": 38.3, "nautilus_trader": null }, - "memory_baseline_mb": 2380.4, + "memory_baseline_mb": 818.3, "tier_after": { "pro": true } @@ -2644,13 +2644,13 @@ "status": "out of scope", "reason": "vectorbt materialises the simulation per combination (measured: 1.57 MB per combination at 20k bars), so this grid would need tens of gigabytes. Running it would measure the swap file.", "parity_scope": "anchor grid", - "anchor_seconds": 3.496 + "anchor_seconds": 3.034 }, "nautilus_trader": { "status": "out of scope", - "reason": "NautilusTrader has no parameter-grid API, so a grid is a Python loop of full backtests, each one replaying every bar through the simulated exchange. Measured: 1.13 s per backtest at 20,000 bars (mean over 16 cells spread across this grid), which puts this grid of 20,000 combinations at about 6.3 hours per call. Looped grids are held to 64 combinations, so that a point stays inside the time budget of the job. It is not run.", + "reason": "NautilusTrader has no parameter-grid API, so a grid is a Python loop of full backtests, each one replaying every bar through the simulated exchange. Measured: 0.77 s per backtest at 20,000 bars (mean over 16 cells spread across this grid), which puts this grid of 20,000 combinations at about 4.3 hours per call. Looped grids are held to 64 combinations, so that a point stays inside the time budget of the job. It is not run.", "parity_scope": "anchor grid", - "anchor_seconds": 18.037 + "anchor_seconds": 12.369 } }, "parity": { @@ -2692,24 +2692,24 @@ "status": "exact", "timings": { "seconds": { - "manifoldbt": 0.9024305400000117, - "raptorbt": 21.921847259999964, + "manifoldbt": 0.5721375220000482, + "raptorbt": 13.400631734000058, "vectorbt": null, "nautilus_trader": null }, "ratio": { - "raptorbt": 24.29200507775333 + "raptorbt": 23.422046656116585 }, "reps": 3, - "per_combo_us": 45.12152700000058 + "per_combo_us": 28.60687610000241 }, "memory": { - "manifoldbt": 74.7, + "manifoldbt": 76.2, "vectorbt": null, - "raptorbt": 58.8, + "raptorbt": 61.8, "nautilus_trader": null }, - "memory_baseline_mb": 747.8, + "memory_baseline_mb": 747.4, "tier_after": { "pro": true } @@ -2736,13 +2736,13 @@ "status": "out of scope", "reason": "vectorbt materialises the simulation per combination (measured: 1.57 MB per combination at 20k bars), so this grid would need tens of gigabytes. Running it would measure the swap file.", "parity_scope": "anchor grid", - "anchor_seconds": 6.47 + "anchor_seconds": 6.217 }, "nautilus_trader": { "status": "out of scope", - "reason": "NautilusTrader has no parameter-grid API, so a grid is a Python loop of full backtests, each one replaying every bar through the simulated exchange. Measured: 10.20 s per backtest at 200,000 bars (mean over 16 cells spread across this grid), which puts this grid of 10,000 combinations at about 28.3 hours per call. Looped grids are held to 64 combinations, so that a point stays inside the time budget of the job. It is not run.", + "reason": "NautilusTrader has no parameter-grid API, so a grid is a Python loop of full backtests, each one replaying every bar through the simulated exchange. Measured: 7.25 s per backtest at 200,000 bars (mean over 16 cells spread across this grid), which puts this grid of 10,000 combinations at about 20.1 hours per call. Looped grids are held to 64 combinations, so that a point stays inside the time budget of the job. It is not run.", "parity_scope": "anchor grid", - "anchor_seconds": 163.255 + "anchor_seconds": 115.976 } }, "parity": { @@ -2784,24 +2784,121 @@ "status": "exact", "timings": { "seconds": { - "manifoldbt": 3.534871575000011, - "raptorbt": 134.56995109699994, + "manifoldbt": 2.492138518000047, + "raptorbt": 92.09019538500002, "vectorbt": null, "nautilus_trader": null }, "ratio": { - "raptorbt": 38.06926170917525 + "raptorbt": 36.95227802140903 }, "reps": 3, - "per_combo_us": 353.4871575000011 + "per_combo_us": 249.2138518000047 }, "memory": { - "manifoldbt": 342.8, + "manifoldbt": 342.1, "vectorbt": null, - "raptorbt": 368.6, + "raptorbt": 367.1, "nautilus_trader": null }, - "memory_baseline_mb": 1092.3, + "memory_baseline_mb": 1083.0, + "tier_after": { + "pro": true + } + }, + { + "bars": 200000, + "combos": 150000, + "requested_combos": 150000, + "grid": { + "fast": 375, + "slow": 400 + }, + "data_digest": "116ce87b2230b7dd", + "engines": [ + "manifoldbt" + ], + "metrics": false, + "tier_before": { + "pro": true + }, + "out_of_scope": { + "vectorbt": { + "status": "out of scope", + "reason": "vectorbt materialises the simulation per combination (measured: 1.57 MB per combination at 20k bars), so this grid would need tens of gigabytes. Running it would measure the swap file.", + "parity_scope": "anchor grid", + "anchor_seconds": 6.329 + }, + "raptorbt": { + "status": "out of scope", + "reason": "raptorbt has no fan-out API for a parameter grid on one instrument, so a grid is a Python loop of full backtests. Measured: 8.3 ms per backtest at 200,000 bars (mean over 16 cells spread across this grid), which puts this grid of 150,000 combinations at about 21 minutes per call. That is past the time budget of the job. It is not run.", + "parity_scope": "anchor grid", + "anchor_seconds": 0.132 + }, + "nautilus_trader": { + "status": "out of scope", + "reason": "NautilusTrader has no parameter-grid API, so a grid is a Python loop of full backtests, each one replaying every bar through the simulated exchange. Measured: 13.32 s per backtest at 200,000 bars (mean over 16 cells spread across this grid), which puts this grid of 150,000 combinations at about 554.8 hours per call. Looped grids are held to 64 combinations, so that a point stays inside the time budget of the job. It is not run.", + "parity_scope": "anchor grid", + "anchor_seconds": 213.057 + } + }, + "parity": { + "vectorbt": { + "status": "exact", + "combos_compared": 250, + "worst_abs_return_delta": 1.214306433183765e-14, + "worst_component": "return", + "worst_pair": [ + 7, + 63 + ], + "checked_at_combos": 250, + "scope": "anchor grid, not this grid" + }, + "raptorbt": { + "status": "exact", + "combos_compared": 16, + "worst_abs_return_delta": 1.0408340855860843e-16, + "worst_component": "return", + "worst_pair": [ + 503, + 763 + ], + "checked_at_combos": 16, + "scope": "anchor grid, not this grid" + }, + "nautilus_trader": { + "status": "exact", + "combos_compared": 16, + "worst_abs_return_delta": 1.5715451162634508e-10, + "worst_component": "return", + "worst_pair": [ + 753, + 763 + ], + "checked_at_combos": 16, + "scope": "anchor grid, not this grid" + } + }, + "status": "exact", + "timings": { + "seconds": { + "manifoldbt": 48.9727380679999, + "vectorbt": null, + "raptorbt": null, + "nautilus_trader": null + }, + "ratio": {}, + "reps": 3, + "per_combo_us": 326.4849204533327 + }, + "memory": { + "manifoldbt": 826.0, + "vectorbt": null, + "raptorbt": null, + "nautilus_trader": null + }, + "memory_baseline_mb": 900.1, "tier_after": { "pro": true }