diff --git a/benchmarks/vs_vectorbt/results/latest.json b/benchmarks/vs_vectorbt/results/latest.json index a70de52..2dab298 100644 --- a/benchmarks/vs_vectorbt/results/latest.json +++ b/benchmarks/vs_vectorbt/results/latest.json @@ -1,19 +1,19 @@ { "repo": "manifoldbt/manifoldbt", - "run_id": "34834573701", - "run_url": "https://github.com/manifoldbt/manifoldbt/actions/runs/34834573701", - "commit": "44b55e86544dfd0dfe571d8eae507090afb6f221", + "run_id": "35590549822", + "run_url": "https://github.com/manifoldbt/manifoldbt/actions/runs/35590549822", + "commit": "f87d71d17400e28e8452161ce8d02a1b3d4afff6", "run_started_at": "", "conclusion": "success", - "synced_at": "2026-09-14T11:12:57.630531+00:00", + "synced_at": "2026-09-21T11:12:14.685946+00:00", "backtests": { "schema_version": 2, - "generated_at": "2026-09-14T11:12:48.432382+00:00", + "generated_at": "2026-09-21T11:12:02.294800+00:00", "environment": { "os": "Linux", "os_release": "6.17.0-1022-azure", "arch": "x86_64", - "cpu": "AMD EPYC 7763 64-Core Processor", + "cpu": "INTEL(R) XEON(R) PLATINUM 8573C", "logical_cores": 4, "ram_gb": 16.8, "python": "3.12.14", @@ -25,10 +25,10 @@ "numba": "0.64.0", "pandas": "2.3.3" }, - "runner": "GitHub Actions 1000000540", + "runner": "GitHub Actions 1000000545", "ci": true, - "run_url": "https://github.com/manifoldbt/manifoldbt/actions/runs/34834573701", - "commit": "44b55e86544dfd0dfe571d8eae507090afb6f221", + "run_url": "https://github.com/manifoldbt/manifoldbt/actions/runs/35590549822", + "commit": "f87d71d17400e28e8452161ce8d02a1b3d4afff6", "pinned_cores": null, "engines": [ "manifoldbt", @@ -48,7 +48,7 @@ "workload": "sma_cross", "title": "SMA 30/150 crossover, long-only, no cost", "bars": 100000, - "data_digest": "b7c2ad8cea687ce0", + "data_digest": "81a87f47b436bdf3", "engines": [ "manifoldbt", "vectorbt", @@ -60,21 +60,21 @@ "expected": "exact", "publishable": true, "diffs": { - "final_equity_vs_capital": 1.8917489796876906e-15, + "final_equity_vs_capital": 2.037268131971359e-15, "round_trips_delta": 0, "total_fees_vs_capital": 0.0 }, "metrics": { "manifoldbt": { - "total_return": 0.06675521397166517, - "final_equity": 106675.52139716652, + "total_return": 0.0667552139716674, + "final_equity": 106675.52139716674, "round_trips": 450, "fills": 900, "total_fees": 0.0 }, "vectorbt": { - "total_return": 0.06675521397166725, - "final_equity": 106675.52139716671, + "total_return": 0.06675521397166537, + "final_equity": 106675.52139716654, "round_trips": 450, "fills": null, "total_fees": 0.0 @@ -93,15 +93,15 @@ }, "metrics": { "manifoldbt": { - "total_return": 0.06675521397166517, - "final_equity": 106675.52139716652, + "total_return": 0.0667552139716674, + "final_equity": 106675.52139716674, "round_trips": 450, "fills": 900, "total_fees": 0.0 }, "raptorbt": { - "total_return": 0.06675521397166521, - "final_equity": 106675.52139716652, + "total_return": 0.0667552139716674, + "final_equity": 106675.52139716674, "round_trips": 450, "fills": null, "total_fees": 0.0 @@ -117,69 +117,69 @@ "timings": { "manifoldbt": { "samples_s": [ - 0.0051543659999993, - 0.004962121999994906, - 0.0033416349999981776, - 0.0033719129999951747, - 0.005014709999997535, - 0.005973724000000402, - 0.004979223999995952 + 0.005053669999995236, + 0.0034152459999887697, + 0.0046252409999993915, + 0.0033474629999972194, + 0.0045618300000001, + 0.003393371000001366, + 0.004620738999989271 ], - "min_s": 0.0033416349999981776, - "median_s": 0.004979223999995952, - "max_s": 0.005973724000000402, - "iqr_s": 0.001782453000004125, - "iqr_over_median": 0.35797807047957153 + "min_s": 0.0033474629999972194, + "median_s": 0.0045618300000001, + "max_s": 0.005053669999995236, + "iqr_s": 0.0012318699999980254, + "iqr_over_median": 0.2700385590865943 }, "vectorbt": { "samples_s": [ - 0.1804469139999867, - 0.18235381200000234, - 0.33508882699999276, - 0.18205126899999868, - 0.18423503200000368, - 0.18062605800000142, - 0.18622204899999417 + 0.14127721900000267, + 0.15213777399999628, + 0.23422896399999615, + 0.14445026500000324, + 0.14223840399999688, + 0.14596691200000578, + 0.14399481200000253 ], - "min_s": 0.1804469139999867, - "median_s": 0.18235381200000234, - "max_s": 0.33508882699999276, - "iqr_s": 0.00559599099999275, - "iqr_over_median": 0.030687546032723893 + "min_s": 0.14127721900000267, + "median_s": 0.14445026500000324, + "max_s": 0.23422896399999615, + "iqr_s": 0.009899369999999408, + "iqr_over_median": 0.06853133845063687 }, "raptorbt": { "samples_s": [ - 0.01015598700000453, - 0.009200978999999165, - 0.007747954999999251, - 0.008070766000003005, - 0.008355855999994333, - 0.007761940999998274, - 0.007747665000010784 + 0.007398292999994283, + 0.006943006000000196, + 0.006283263000000261, + 0.006145250000002989, + 0.006393403999993552, + 0.005974969999996915, + 0.006558111000003919 ], - "min_s": 0.007747665000010784, - "median_s": 0.008070766000003005, - "max_s": 0.01015598700000453, - "iqr_s": 0.001453023999999914, - "iqr_over_median": 0.1800354514056501 + "min_s": 0.005974969999996915, + "median_s": 0.006393403999993552, + "max_s": 0.007398292999994283, + "iqr_s": 0.0007977559999972073, + "iqr_over_median": 0.12477797429945171 } }, "speedup": { "vectorbt": { - "median_of_ratios": 36.749159331469386, - "min": 30.236759850302636, - "max": 100.27690845953418 + "median_of_ratios": 43.01531191253388, + "min": 27.955370849330457, + "max": 50.6414614935799 }, "raptorbt": { - "median_of_ratios": 1.854242801770817, - "min": 1.2993471074321061, - "max": 2.3935273537646298 + "median_of_ratios": 1.463944618465641, + "min": 1.358472563916364, + "max": 2.0329446253719428 } }, "noisy": true, "cpu_over_wall": { "manifoldbt": null, - "vectorbt": 1.0062724589137901, + "vectorbt": 0.9689445572188252, "raptorbt": null } }, @@ -187,7 +187,7 @@ "workload": "sma_cross_metrics", "title": "SMA 30/150 crossover, with a performance summary", "bars": 100000, - "data_digest": "b7c2ad8cea687ce0", + "data_digest": "81a87f47b436bdf3", "engines": [ "manifoldbt", "vectorbt", @@ -199,38 +199,38 @@ "expected": "exact", "publishable": true, "diffs": { - "final_equity_vs_capital": 1.8917489796876906e-15, + "final_equity_vs_capital": 2.037268131971359e-15, "round_trips_delta": 0, "total_fees_vs_capital": 0.0, - "max_drawdown_rel": 2.806945912450058e-15, + "max_drawdown_rel": 9.824310693574996e-15, "advisory_ratio_rel": { - "sharpe": 0.0191599205412123, - "sortino": 0.026757853601622573, - "volatility": 0.006633443246116591 + "sharpe": 0.019159920541154903, + "sortino": 0.026757853601561177, + "volatility": 0.006633443246113983 } }, "metrics": { "manifoldbt": { - "total_return": 0.06675521397166517, - "final_equity": 106675.52139716652, + "total_return": 0.0667552139716674, + "final_equity": 106675.52139716674, "round_trips": 450, "fills": 900, "total_fees": 0.0, - "max_drawdown": -0.07910540917093023, - "sharpe": 2.0737338994486025, - "sortino": 3.9123948298469102, - "volatility": 0.16947108402059763 + "max_drawdown": -0.0791054091709309, + "sharpe": 2.0737338994486847, + "sortino": 3.9123948298471207, + "volatility": 0.1694710840205982 }, "vectorbt": { - "total_return": 0.06675521397166725, - "final_equity": 106675.52139716671, + "total_return": 0.06675521397166537, + "final_equity": 106675.52139716654, "round_trips": 450, "fills": null, "total_fees": 0.0, - "max_drawdown": -0.07910540917093001, - "sharpe": 2.1142426200536755, - "sortino": 4.019960340111955, - "volatility": 0.17060276779841885 + "max_drawdown": -0.07910540917093167, + "sharpe": 2.1142426200536355, + "sortino": 4.0199603401119175, + "volatility": 0.17060276779841899 } }, "note": "" @@ -243,30 +243,30 @@ "final_equity_vs_capital": 0.0, "round_trips_delta": 0, "total_fees_vs_capital": 0.0, - "max_drawdown_rel": 5.263023585843841e-16, + "max_drawdown_rel": 7.017364781125071e-16, "ratio_basis": "native" }, "metrics": { "manifoldbt": { - "total_return": 0.06675521397166517, - "final_equity": 106675.52139716652, + "total_return": 0.0667552139716674, + "final_equity": 106675.52139716674, "round_trips": 450, "fills": 900, "total_fees": 0.0, - "max_drawdown": -0.07910540917093023, - "sharpe": 2.0737338994486025, - "sortino": 3.9123948298469102, - "volatility": 0.16947108402059763 + "max_drawdown": -0.0791054091709309, + "sharpe": 2.0737338994486847, + "sortino": 3.9123948298471207, + "volatility": 0.1694710840205982 }, "raptorbt": { - "total_return": 0.06675521397166521, - "final_equity": 106675.52139716652, + "total_return": 0.0667552139716674, + "final_equity": 106675.52139716674, "round_trips": 450, "fills": null, "total_fees": 0.0, - "max_drawdown": -0.07910540917093027, - "sharpe": 0.9692748979846307, - "sortino": 1.3742016523326603, + "max_drawdown": -0.07910540917093084, + "sharpe": 0.9692748979846553, + "sortino": 1.3742016523326892, "volatility": null } }, @@ -280,69 +280,69 @@ "timings": { "manifoldbt": { "samples_s": [ - 0.003378259000001549, - 0.003387963999998078, - 0.004960409000005939, - 0.003377112999999099, - 0.003331006999999886, - 0.0033840359999999237, - 0.003343501000003357 + 0.003389882999996985, + 0.0034161779999948294, + 0.0033085970000001907, + 0.0032174290000028805, + 0.003303963999996995, + 0.0032776159999912124, + 0.0037912849999912623 ], - "min_s": 0.003331006999999886, - "median_s": 0.003378259000001549, - "max_s": 0.004960409000005939, - "iqr_s": 4.446299999472103e-05, - "iqr_over_median": 0.013161513073657361 + "min_s": 0.0032174290000028805, + "median_s": 0.0033085970000001907, + "max_s": 0.0037912849999912623, + "iqr_s": 0.00013856200000361696, + "iqr_over_median": 0.04187938271225204 }, "vectorbt": { "samples_s": [ - 0.8470635050000084, - 0.686764715999999, - 0.6940553299999976, - 0.8363148369999891, - 0.8521609889999979, - 0.8450149929999924, - 0.6888963119999971 + 0.6347757380000019, + 0.5315204759999972, + 0.5372511489999994, + 0.639734954000005, + 0.6419390769999893, + 0.6423402650000014, + 0.5459869999999967 ], - "min_s": 0.686764715999999, - "median_s": 0.8363148369999891, - "max_s": 0.8521609889999979, - "iqr_s": 0.15816719300001125, - "iqr_over_median": 0.18912398298155902 + "min_s": 0.5315204759999972, + "median_s": 0.6347757380000019, + "max_s": 0.6423402650000014, + "iqr_s": 0.10468792799998994, + "iqr_over_median": 0.16492112368666118 }, "raptorbt": { "samples_s": [ - 0.008229190999998082, - 0.01067537100000493, - 0.008292619000002333, - 0.007684738000008906, - 0.008101953999997136, - 0.007820700999999985, - 0.011145284999997784 + 0.006537716999986287, + 0.00833732000000964, + 0.006587505000013039, + 0.0062322440000031065, + 0.00631356800001015, + 0.006186408999994342, + 0.00936762999999985 ], - "min_s": 0.007684738000008906, - "median_s": 0.008229190999998082, - "max_s": 0.011145284999997784, - "iqr_s": 0.002854670000004944, - "iqr_over_median": 0.3468955818385561 + "min_s": 0.006186408999994342, + "median_s": 0.006537716999986287, + "max_s": 0.00936762999999985, + "iqr_s": 0.002105076000006534, + "iqr_over_median": 0.3219894651314747 } }, "speedup": { "vectorbt": { - "median_of_ratios": 247.64194653842267, - "min": 139.9189724071476, - "max": 255.8268382504231 + "median_of_ratios": 187.25594305188895, + "min": 144.0110674880034, + "max": 198.83421017198276 }, "raptorbt": { - "median_of_ratios": 2.4322836907870244, - "min": 1.6717611390497042, - "max": 3.3334175763627987 + "median_of_ratios": 1.9370261161932485, + "min": 1.8874721749011867, + "max": 2.4708324486345496 } }, "noisy": true, "cpu_over_wall": { "manifoldbt": null, - "vectorbt": 0.9962807935270224, + "vectorbt": 1.0063378537453895, "raptorbt": null } }, @@ -350,7 +350,7 @@ "workload": "sma_cross", "title": "SMA 30/150 crossover, long-only, no cost", "bars": 1000000, - "data_digest": "0ef03e7a3c4d011c", + "data_digest": "3d9cc9bf5d0fca1b", "engines": [ "manifoldbt", "vectorbt", @@ -362,21 +362,21 @@ "expected": "exact", "publishable": true, "diffs": { - "final_equity_vs_capital": 4.220055416226387e-15, + "final_equity_vs_capital": 5.529727786779404e-15, "round_trips_delta": 0, "total_fees_vs_capital": 0.0 }, "metrics": { "manifoldbt": { - "total_return": 0.20294254717538118, - "final_equity": 120294.25471753812, + "total_return": 0.20294254717537874, + "final_equity": 120294.25471753787, "round_trips": 4534, "fills": 9069, "total_fees": 0.0 }, "vectorbt": { - "total_return": 0.20294254717537696, - "final_equity": 120294.2547175377, + "total_return": 0.2029425471753732, + "final_equity": 120294.25471753732, "round_trips": 4534, "fills": null, "total_fees": 0.0 @@ -395,15 +395,15 @@ }, "metrics": { "manifoldbt": { - "total_return": 0.20294254717538118, - "final_equity": 120294.25471753812, + "total_return": 0.20294254717537874, + "final_equity": 120294.25471753787, "round_trips": 4534, "fills": 9069, "total_fees": 0.0 }, "raptorbt": { - "total_return": 0.20294254717538115, - "final_equity": 120294.25471753812, + "total_return": 0.2029425471753787, + "final_equity": 120294.25471753787, "round_trips": 4534, "fills": null, "total_fees": 0.0 @@ -419,77 +419,77 @@ "timings": { "manifoldbt": { "samples_s": [ - 0.03882929499999932, - 0.03818231200000355, - 0.03651943500000243, - 0.038054918999989695, - 0.03838425299997539, - 0.036748358000011194, - 0.038424254999995355 + 0.03916600099999812, + 0.03727817800000821, + 0.03721995500001185, + 0.0367240939999931, + 0.03569120699999928, + 0.035471043000001146, + 0.035254019999996444 ], - "min_s": 0.03651943500000243, - "median_s": 0.03818231200000355, - "max_s": 0.03882929499999932, - "iqr_s": 0.001675896999984161, - "iqr_over_median": 0.043891972806256604 + "min_s": 0.035254019999996444, + "median_s": 0.0367240939999931, + "max_s": 0.03916600099999812, + "iqr_s": 0.0018071350000070652, + "iqr_over_median": 0.04920842975751572 }, "vectorbt": { "samples_s": [ - 2.0833970940000057, - 2.2244814040000023, - 2.073334765999988, - 2.2233980959999826, - 2.070566533999994, - 2.0419299069999965, - 2.3043860010000117 + 1.6695071369999965, + 1.7540776779999874, + 1.6676097149999975, + 1.6922064460000001, + 1.6738048590000005, + 1.6384705080000117, + 1.8306165669999928 ], - "min_s": 2.0419299069999965, - "median_s": 2.0833970940000057, - "max_s": 2.3043860010000117, - "iqr_s": 0.15391487000000836, - "iqr_over_median": 0.07387687658933056 + "min_s": 1.6384705080000117, + "median_s": 1.6738048590000005, + "max_s": 1.8306165669999928, + "iqr_s": 0.08646796299998982, + "iqr_over_median": 0.05165952442726766 }, "raptorbt": { "samples_s": [ - 0.08337062100000026, - 0.08475304899999969, - 0.08488393199999678, - 0.08460322899998118, - 0.08574970399999415, - 0.08060702199998104, - 0.08513147900001172 + 0.06682055900000705, + 0.06879986199999166, + 0.06578834600000505, + 0.06737495400000171, + 0.06797034600000984, + 0.07040923300002078, + 0.06702352700000347 ], - "min_s": 0.08060702199998104, - "median_s": 0.08475304899999969, - "max_s": 0.08574970399999415, - "iqr_s": 0.001760858000011467, - "iqr_over_median": 0.02077633808798399 + "min_s": 0.06578834600000505, + "median_s": 0.06737495400000171, + "max_s": 0.07040923300002078, + "iqr_s": 0.0019793029999846112, + "iqr_over_median": 0.02937743007564148 } }, "speedup": { "vectorbt": { - "median_of_ratios": 56.77346229479864, - "min": 53.655290264735484, - "max": 59.97217124965182 + "median_of_ratios": 46.19177699398235, + "min": 42.62643860423935, + "max": 51.92646305301289 }, "raptorbt": { - "median_of_ratios": 2.2196940038620974, - "min": 2.147106224823338, - "max": 2.324349541552084 + "median_of_ratios": 1.8455800602694827, + "min": 1.7060858217312067, + "max": 1.9849778028804652 } }, "noisy": false, "cpu_over_wall": { "manifoldbt": null, - "vectorbt": 1.0005662684492045, - "raptorbt": 1.001529393098568 + "vectorbt": 0.9986338663553755, + "raptorbt": null } }, { "workload": "sma_cross_metrics", "title": "SMA 30/150 crossover, with a performance summary", "bars": 1000000, - "data_digest": "0ef03e7a3c4d011c", + "data_digest": "3d9cc9bf5d0fca1b", "engines": [ "manifoldbt", "vectorbt", @@ -501,38 +501,340 @@ "expected": "exact", "publishable": true, "diffs": { - "final_equity_vs_capital": 4.220055416226387e-15, + "final_equity_vs_capital": 5.529727786779404e-15, "round_trips_delta": 0, "total_fees_vs_capital": 0.0, - "max_drawdown_rel": 1.464735645642113e-15, + "max_drawdown_rel": 2.1971034684631794e-14, "advisory_ratio_rel": { - "sharpe": 0.004351997254330881, - "sortino": 0.00576256739777853, - "volatility": 0.0003655041635125006 + "sharpe": 0.004351997254356724, + "sortino": 0.005762567397806017, + "volatility": 0.0003655041635125007 } }, "metrics": { "manifoldbt": { - "total_return": 0.20294254717538118, - "final_equity": 120294.25471753812, + "total_return": 0.20294254717537874, + "final_equity": 120294.25471753787, "round_trips": 4534, "fills": 9069, "total_fees": 0.0, - "max_drawdown": -0.15159363779099633, - "sharpe": 0.682796489575399, - "sortino": 1.3440329806486555, - "volatility": 0.1611746170233167 + "max_drawdown": -0.15159363779099877, + "sharpe": 0.6827964895753905, + "sortino": 1.3440329806486435, + "volatility": 0.16117461702331665 }, "vectorbt": { - "total_return": 0.20294254717537696, - "final_equity": 120294.2547175377, + "total_return": 0.2029425471753732, + "final_equity": 120294.25471753732, "round_trips": 4534, "fills": null, "total_fees": 0.0, - "max_drawdown": -0.1515936377909961, - "sharpe": 0.6857810066333395, - "sortino": 1.351822951516634, - "volatility": 0.16123354855661204 + "max_drawdown": -0.15159363779099544, + "sharpe": 0.6857810066333488, + "sortino": 1.3518229515166593, + "volatility": 0.16123354855661198 + } + }, + "note": "" + }, + "raptorbt": { + "status": "exact", + "expected": "exact", + "publishable": true, + "diffs": { + "final_equity_vs_capital": 0.0, + "round_trips_delta": 0, + "total_fees_vs_capital": 0.0, + "max_drawdown_rel": 3.6618391141052195e-16, + "ratio_basis": "native" + }, + "metrics": { + "manifoldbt": { + "total_return": 0.20294254717537874, + "final_equity": 120294.25471753787, + "round_trips": 4534, + "fills": 9069, + "total_fees": 0.0, + "max_drawdown": -0.15159363779099877, + "sharpe": 0.6827964895753905, + "sortino": 1.3440329806486435, + "volatility": 0.16117461702331665 + }, + "raptorbt": { + "total_return": 0.2029425471753787, + "final_equity": 120294.25471753787, + "round_trips": 4534, + "fills": null, + "total_fees": 0.0, + "max_drawdown": -0.15159363779099871, + "sharpe": 0.3005175738027797, + "sortino": 0.4254354879123199, + "volatility": null + } + }, + "note": "" + } + }, + "status": "exact", + "paired_with": [ + "sma_cross" + ], + "timings": { + "manifoldbt": { + "samples_s": [ + 0.04035824599999671, + 0.040671241000012515, + 0.03804098799999167, + 0.03519652800000017, + 0.03538972299999443, + 0.03855782499999805, + 0.035458591000008255 + ], + "min_s": 0.03519652800000017, + "median_s": 0.03804098799999167, + "max_s": 0.040671241000012515, + "iqr_s": 0.004968523000002278, + "iqr_over_median": 0.1306097254888166 + }, + "vectorbt": { + "samples_s": [ + 6.531625524000006, + 6.536260677000001, + 6.510747471000002, + 6.516980752000009, + 6.776771816999997, + 6.749556577000021, + 6.6626904329999945 + ], + "min_s": 6.510747471000002, + "median_s": 6.536260677000001, + "max_s": 6.776771816999997, + "iqr_s": 0.23257582500001206, + "iqr_over_median": 0.03558239741239317 + }, + "raptorbt": { + "samples_s": [ + 0.07204957300000103, + 0.071924034999995, + 0.07116192200000171, + 0.07234200699998894, + 0.07106445300001951, + 0.07294213399998739, + 0.07305187599999385 + ], + "min_s": 0.07106445300001951, + "median_s": 0.07204957300000103, + "max_s": 0.07305187599999385, + "iqr_s": 0.0017802119999856814, + "iqr_over_median": 0.024708154758747228 + } + }, + "speedup": { + "vectorbt": { + "median_of_ratios": 175.05024147498887, + "min": 160.7096443651176, + "max": 191.48982367002597 + }, + "raptorbt": { + "median_of_ratios": 1.891759558532959, + "min": 1.76842489266489, + "max": 2.060202448539956 + } + }, + "noisy": false, + "cpu_over_wall": { + "manifoldbt": null, + "vectorbt": 0.999683842131347, + "raptorbt": 1.0306499437106746 + } + }, + { + "workload": "sma_cross", + "title": "SMA 30/150 crossover, long-only, no cost", + "bars": 10000000, + "data_digest": "3c0c54badb16a42c", + "engines": [ + "manifoldbt", + "vectorbt", + "raptorbt" + ], + "parity": { + "vectorbt": { + "status": "exact", + "expected": "exact", + "publishable": true, + "diffs": { + "final_equity_vs_capital": 1.3096723705530167e-15, + "round_trips_delta": 0, + "total_fees_vs_capital": 0.0 + }, + "metrics": { + "manifoldbt": { + "total_return": 0.30013524943746295, + "final_equity": 130013.52494374629, + "round_trips": 46127, + "fills": 92254, + "total_fees": 0.0 + }, + "vectorbt": { + "total_return": 0.3001352494374642, + "final_equity": 130013.52494374642, + "round_trips": 46127, + "fills": null, + "total_fees": 0.0 + } + }, + "note": "" + }, + "raptorbt": { + "status": "exact", + "expected": "exact", + "publishable": true, + "diffs": { + "final_equity_vs_capital": 0.0, + "round_trips_delta": 0, + "total_fees_vs_capital": 0.0 + }, + "metrics": { + "manifoldbt": { + "total_return": 0.30013524943746295, + "final_equity": 130013.52494374629, + "round_trips": 46127, + "fills": 92254, + "total_fees": 0.0 + }, + "raptorbt": { + "total_return": 0.3001352494374629, + "final_equity": 130013.52494374629, + "round_trips": 46127, + "fills": null, + "total_fees": 0.0 + } + }, + "note": "" + } + }, + "status": "exact", + "paired_with": [ + "sma_cross_metrics" + ], + "timings": { + "manifoldbt": { + "samples_s": [ + 0.3418304279999802, + 0.3405220520000398, + 0.3378247190000252, + 0.33817213400004675, + 0.3405687129999251, + 0.345960300999991, + 0.33462523899993357 + ], + "min_s": 0.33462523899993357, + "median_s": 0.3405220520000398, + "max_s": 0.345960300999991, + "iqr_s": 0.004005708999955004, + "iqr_over_median": 0.01176343492712929 + }, + "vectorbt": { + "samples_s": [ + 22.01912727299998, + 22.18782434299999, + 21.797792611999967, + 22.231184263000046, + 23.011996479000004, + 21.387440805999972, + 21.34418535000009 + ], + "min_s": 21.34418535000009, + "median_s": 22.01912727299998, + "max_s": 23.011996479000004, + "iqr_s": 0.8437434570000732, + "iqr_over_median": 0.03831866025111167 + }, + "raptorbt": { + "samples_s": [ + 0.7586552789999814, + 0.7664155139999593, + 0.7577684819999604, + 0.7659840510000322, + 0.7656085360000588, + 0.7486242530000027, + 0.7375657259999571 + ], + "min_s": 0.7375657259999571, + "median_s": 0.7586552789999814, + "max_s": 0.7664155139999593, + "iqr_s": 0.017359798000029514, + "iqr_over_median": 0.022882326770219362 + } + }, + "speedup": { + "vectorbt": { + "median_of_ratios": 64.5239717108988, + "min": 61.82050583312601, + "max": 67.56932037678125 + }, + "raptorbt": { + "median_of_ratios": 2.2430818095342038, + "min": 2.1639021900377586, + "max": 2.2650714650543216 + } + }, + "noisy": false, + "cpu_over_wall": { + "manifoldbt": 1.0842597654316033, + "vectorbt": 1.0000029151533216, + "raptorbt": 1.0036558274824032 + } + }, + { + "workload": "sma_cross_metrics", + "title": "SMA 30/150 crossover, with a performance summary", + "bars": 10000000, + "data_digest": "3c0c54badb16a42c", + "engines": [ + "manifoldbt", + "vectorbt", + "raptorbt" + ], + "parity": { + "vectorbt": { + "status": "exact", + "expected": "exact", + "publishable": true, + "diffs": { + "final_equity_vs_capital": 1.3096723705530167e-15, + "round_trips_delta": 0, + "total_fees_vs_capital": 0.0, + "max_drawdown_rel": 3.562524715042434e-15, + "advisory_ratio_rel": { + "sharpe": 0.0014181902447094516, + "sortino": 0.0015630368843309562, + "volatility": 0.0002712600423099975 + } + }, + "metrics": { + "manifoldbt": { + "total_return": 0.30013524943746295, + "final_equity": 130013.52494374629, + "round_trips": 46127, + "fills": 92254, + "total_fees": 0.0, + "max_drawdown": -0.6232787775126699, + "sharpe": 0.16628266067297076, + "sortino": 0.32363046285415176, + "volatility": 0.15595531092911702 + }, + "vectorbt": { + "total_return": 0.3001352494374642, + "final_equity": 130013.52494374642, + "round_trips": 46127, + "fills": null, + "total_fees": 0.0, + "max_drawdown": -0.6232787775126677, + "sharpe": 0.16651881603342994, + "sortino": 0.3241371010987492, + "volatility": 0.15591301795726925 } }, "note": "" @@ -550,25 +852,25 @@ }, "metrics": { "manifoldbt": { - "total_return": 0.20294254717538118, - "final_equity": 120294.25471753812, - "round_trips": 4534, - "fills": 9069, + "total_return": 0.30013524943746295, + "final_equity": 130013.52494374629, + "round_trips": 46127, + "fills": 92254, "total_fees": 0.0, - "max_drawdown": -0.15159363779099633, - "sharpe": 0.682796489575399, - "sortino": 1.3440329806486555, - "volatility": 0.1611746170233167 + "max_drawdown": -0.6232787775126699, + "sharpe": 0.16628266067297076, + "sortino": 0.32363046285415176, + "volatility": 0.15595531092911702 }, "raptorbt": { - "total_return": 0.20294254717538115, - "final_equity": 120294.25471753812, - "round_trips": 4534, + "total_return": 0.3001352494374629, + "final_equity": 130013.52494374629, + "round_trips": 46127, "fills": null, "total_fees": 0.0, - "max_drawdown": -0.15159363779099633, - "sharpe": 0.3005175738027932, - "sortino": 0.42543548791233987, + "max_drawdown": -0.6232787775126699, + "sharpe": 0.07064081213792228, + "sortino": 0.09993197026249025, "volatility": null } }, @@ -582,379 +884,77 @@ "timings": { "manifoldbt": { "samples_s": [ - 0.03703686999999434, - 0.03814112300000261, - 0.03805680300001768, - 0.03818550200000459, - 0.038316245999993725, - 0.03826616300000296, - 0.03821416100001329 + 0.3459932530000174, + 0.34749230800002806, + 0.3346646940000255, + 0.33734381500005384, + 0.3367350629999919, + 0.34082302699994216, + 0.33503739799994037 ], - "min_s": 0.03703686999999434, - "median_s": 0.03818550200000459, - "max_s": 0.038316245999993725, - "iqr_s": 0.00020935999998528132, - "iqr_over_median": 0.0054827091178546285 + "min_s": 0.3346646940000255, + "median_s": 0.33734381500005384, + "max_s": 0.34749230800002806, + "iqr_s": 0.010955855000077008, + "iqr_over_median": 0.03247682190371642 }, "vectorbt": { "samples_s": [ - 8.41073449599999, - 8.389312784000026, - 8.362570886999976, - 8.336339731999999, - 8.652451684999988, - 8.469292188000026, - 8.434823006999977 + 86.35103415100002, + 85.853776713, + 86.21596367000006, + 85.33181503399999, + 85.59102564299997, + 83.53801503199998, + 83.17931679600008 ], - "min_s": 8.336339731999999, - "median_s": 8.41073449599999, - "max_s": 8.652451684999988, - "iqr_s": 0.10672130100005006, - "iqr_over_median": 0.012688701688396538 + "min_s": 83.17931679600008, + "median_s": 85.59102564299997, + "max_s": 86.35103415100002, + "iqr_s": 2.677948638000089, + "iqr_over_median": 0.03128772693027197 }, "raptorbt": { "samples_s": [ - 0.08959803800000543, - 0.08937361300002067, - 0.0886013719999994, - 0.08880217699999093, - 0.08924103399999694, - 0.08922896499998956, - 0.0871718630000089 + 0.751387096999963, + 0.7457227779999585, + 0.7401548940000566, + 0.7547077950000585, + 0.7407020250000187, + 0.7270717149999655, + 0.7430661529999725 ], - "min_s": 0.0871718630000089, - "median_s": 0.08922896499998956, - "max_s": 0.08959803800000543, - "iqr_s": 0.0007722410000212676, - "iqr_over_median": 0.008654599994759078 + "min_s": 0.7270717149999655, + "median_s": 0.7430661529999725, + "max_s": 0.7547077950000585, + "iqr_s": 0.011232202999906349, + "iqr_over_median": 0.01511602022856068 } }, "speedup": { "vectorbt": { - "median_of_ratios": 220.72506071759742, - "min": 218.31164435127752, - "max": 227.09085557179307 + "median_of_ratios": 249.57432956357587, + "min": 245.10672229906038, + "max": 257.6189398395084 }, "raptorbt": { - "median_of_ratios": 2.3290651699023845, - "min": 2.281140308169492, - "max": 2.4191579364028097 + "median_of_ratios": 2.1996581478657498, + "min": 2.133282253255995, + "max": 2.2372065573514015 } }, "noisy": false, "cpu_over_wall": { - "manifoldbt": null, - "vectorbt": 0.9999064477198247, - "raptorbt": 0.964603765161654 - } - }, - { - "workload": "sma_cross", - "title": "SMA 30/150 crossover, long-only, no cost", - "bars": 10000000, - "data_digest": "f4e6a3a8823f3768", - "engines": [ - "manifoldbt", - "vectorbt", - "raptorbt" - ], - "parity": { - "vectorbt": { - "status": "exact", - "expected": "exact", - "publishable": true, - "diffs": { - "final_equity_vs_capital": 1.2369127944111823e-14, - "round_trips_delta": 0, - "total_fees_vs_capital": 0.0 - }, - "metrics": { - "manifoldbt": { - "total_return": 0.3001352494374474, - "final_equity": 130013.52494374473, - "round_trips": 46127, - "fills": 92254, - "total_fees": 0.0 - }, - "vectorbt": { - "total_return": 0.30013524943743497, - "final_equity": 130013.5249437435, - "round_trips": 46127, - "fills": null, - "total_fees": 0.0 - } - }, - "note": "" - }, - "raptorbt": { - "status": "exact", - "expected": "exact", - "publishable": true, - "diffs": { - "final_equity_vs_capital": 1.4551915228366853e-16, - "round_trips_delta": 0, - "total_fees_vs_capital": 0.0 - }, - "metrics": { - "manifoldbt": { - "total_return": 0.3001352494374474, - "final_equity": 130013.52494374473, - "round_trips": 46127, - "fills": 92254, - "total_fees": 0.0 - }, - "raptorbt": { - "total_return": 0.3001352494374475, - "final_equity": 130013.52494374475, - "round_trips": 46127, - "fills": null, - "total_fees": 0.0 - } - }, - "note": "" - } - }, - "status": "exact", - "paired_with": [ - "sma_cross_metrics" - ], - "timings": { - "manifoldbt": { - "samples_s": [ - 0.32545723099997304, - 0.3237401740000223, - 0.3224151219999385, - 0.3216612900000655, - 0.3223221179999882, - 0.32157722400006605, - 0.3213308209999468 - ], - "min_s": 0.3213308209999468, - "median_s": 0.3223221179999882, - "max_s": 0.32545723099997304, - "iqr_s": 0.002162949999956254, - "iqr_over_median": 0.006710523042530805 - }, - "vectorbt": { - "samples_s": [ - 25.333116597000014, - 25.306567075000032, - 25.212887194000018, - 25.211577172000034, - 26.09276171800002, - 24.84410114700006, - 25.24812933499993 - ], - "min_s": 24.84410114700006, - "median_s": 25.24812933499993, - "max_s": 26.09276171800002, - "iqr_s": 0.12153942499998038, - "iqr_over_median": 0.004813799208145601 - }, - "raptorbt": { - "samples_s": [ - 0.8948219810000069, - 0.8958764289999976, - 0.8953898949999939, - 0.8987440859999651, - 0.8968665019999662, - 0.9047890230000348, - 0.8966774890000124 - ], - "min_s": 0.8948219810000069, - "median_s": 0.8966774890000124, - "max_s": 0.9047890230000348, - "iqr_s": 0.0033541909999712516, - "iqr_over_median": 0.0037406883089168364 - } - }, - "speedup": { - "vectorbt": { - "median_of_ratios": 78.20007646541103, - "min": 77.25702970492387, - "max": 80.95243937929501 - }, - "raptorbt": { - "median_of_ratios": 2.7825161598125234, - "min": 2.749430326837879, - "max": 2.8135979648852527 - } - }, - "noisy": false, - "cpu_over_wall": { - "manifoldbt": 1.0892165884072933, - "vectorbt": 0.9999484328218017, - "raptorbt": 1.0010877630238284 - } - }, - { - "workload": "sma_cross_metrics", - "title": "SMA 30/150 crossover, with a performance summary", - "bars": 10000000, - "data_digest": "f4e6a3a8823f3768", - "engines": [ - "manifoldbt", - "vectorbt", - "raptorbt" - ], - "parity": { - "vectorbt": { - "status": "exact", - "expected": "exact", - "publishable": true, - "diffs": { - "final_equity_vs_capital": 1.2369127944111823e-14, - "round_trips_delta": 0, - "total_fees_vs_capital": 0.0, - "max_drawdown_rel": 1.1043826616631323e-14, - "advisory_ratio_rel": { - "sharpe": 0.001418190244680208, - "sortino": 0.0015630368843009169, - "volatility": 0.00027126004230981933 - } - }, - "metrics": { - "manifoldbt": { - "total_return": 0.3001352494374474, - "final_equity": 130013.52494374473, - "round_trips": 46127, - "fills": 92254, - "total_fees": 0.0, - "max_drawdown": -0.6232787775126734, - "sharpe": 0.16628266067296482, - "sortino": 0.3236304628541403, - "volatility": 0.15595531092911707 - }, - "vectorbt": { - "total_return": 0.30013524943743497, - "final_equity": 130013.5249437435, - "round_trips": 46127, - "fills": null, - "total_fees": 0.0, - "max_drawdown": -0.6232787775126802, - "sharpe": 0.16651881603341911, - "sortino": 0.324137101098728, - "volatility": 0.15591301795726933 - } - }, - "note": "" - }, - "raptorbt": { - "status": "exact", - "expected": "exact", - "publishable": true, - "diffs": { - "final_equity_vs_capital": 1.4551915228366853e-16, - "round_trips_delta": 0, - "total_fees_vs_capital": 0.0, - "max_drawdown_rel": 0.0, - "ratio_basis": "native" - }, - "metrics": { - "manifoldbt": { - "total_return": 0.3001352494374474, - "final_equity": 130013.52494374473, - "round_trips": 46127, - "fills": 92254, - "total_fees": 0.0, - "max_drawdown": -0.6232787775126734, - "sharpe": 0.16628266067296482, - "sortino": 0.3236304628541403, - "volatility": 0.15595531092911707 - }, - "raptorbt": { - "total_return": 0.3001352494374475, - "final_equity": 130013.52494374475, - "round_trips": 46127, - "fills": null, - "total_fees": 0.0, - "max_drawdown": -0.6232787775126734, - "sharpe": 0.07064081213793068, - "sortino": 0.09993197026250207, - "volatility": null - } - }, - "note": "" - } - }, - "status": "exact", - "paired_with": [ - "sma_cross" - ], - "timings": { - "manifoldbt": { - "samples_s": [ - 0.3223763170000211, - 0.3233296589999668, - 0.32329734299992197, - 0.32170477500005745, - 0.3225021380000044, - 0.32075278199999957, - 0.3218912380000347 - ], - "min_s": 0.32075278199999957, - "median_s": 0.3223763170000211, - "max_s": 0.3233296589999668, - "iqr_s": 0.0015925679998645137, - "iqr_over_median": 0.0049400899380099604 - }, - "vectorbt": { - "samples_s": [ - 99.46870047800002, - 99.24040640000004, - 99.34283400700008, - 98.964591036, - 99.0204344839999, - 99.04240441200011, - 99.16919510399998 - ], - "min_s": 98.964591036, - "median_s": 99.16919510399998, - "max_s": 99.46870047800002, - "iqr_s": 0.32239952300017194, - "iqr_over_median": 0.003251004736521936 - }, - "raptorbt": { - "samples_s": [ - 0.8953474260000007, - 0.8919072360000655, - 0.8912397760000204, - 0.8971148329999323, - 0.8933881560000145, - 0.8945274360000894, - 0.8892270890000873 - ], - "min_s": 0.8892270890000873, - "median_s": 0.8933881560000145, - "max_s": 0.8971148329999323, - "iqr_s": 0.004107649999980367, - "iqr_over_median": 0.004597833508753501 - } - }, - "speedup": { - "vectorbt": { - "median_of_ratios": 307.6254961897358, - "min": 306.9325799153187, - "max": 308.7811235632564 - }, - "raptorbt": { - "median_of_ratios": 2.7701774677847326, - "min": 2.7567185295433605, - "max": 2.7888376537918558 - } - }, - "noisy": false, - "cpu_over_wall": { - "manifoldbt": 1.077197251482717, - "vectorbt": 0.999901237216228, - "raptorbt": 1.0027584730902683 + "manifoldbt": 1.0849044735597497, + "vectorbt": 0.9999313039392977, + "raptorbt": 1.0033035100038517 } }, { "workload": "ema_rsi_fees", "title": "EMA 12/26 crossover + RSI(14) filter, 5 bps taker fee", "bars": 100000, - "data_digest": "b7c2ad8cea687ce0", + "data_digest": "81a87f47b436bdf3", "engines": [ "manifoldbt", "vectorbt" @@ -965,24 +965,24 @@ "expected": "exact", "publishable": true, "diffs": { - "final_equity_vs_capital": 1.3096723705530167e-15, + "final_equity_vs_capital": 1.4551915228366853e-15, "round_trips_delta": 0, - "total_fees_vs_capital": 4.7748471843078734e-17 + "total_fees_vs_capital": 5.0022208597511055e-17 }, "metrics": { "manifoldbt": { - "total_return": -0.01570110342278974, - "final_equity": 98429.88965772103, + "total_return": -0.015701103422790075, + "final_equity": 98429.889657721, "round_trips": 3176, "fills": 6352, "total_fees": 1542.3890014306103 }, "vectorbt": { - "total_return": -0.01570110342278846, - "final_equity": 98429.88965772116, + "total_return": -0.015701103422788482, + "final_equity": 98429.88965772114, "round_trips": 3176, "fills": null, - "total_fees": 1542.3890014306055 + "total_fees": 1542.3890014306053 } }, "note": "" @@ -995,55 +995,55 @@ "timings": { "manifoldbt": { "samples_s": [ - 0.005106006999994861, - 0.005025657000032879, - 0.004906274999939342, - 0.005097691999935705, - 0.017236284000091473, - 0.005796323000140546, - 0.00508492800008753 + 0.004454968999880293, + 0.004868517999966571, + 0.00482482000006712, + 0.004147710000097504, + 0.004174709999915649, + 0.004094270999985383, + 0.012716224000087095 ], - "min_s": 0.004906274999939342, - "median_s": 0.005097691999935705, - "max_s": 0.017236284000091473, - "iqr_s": 0.0007706660001076671, - "iqr_over_median": 0.1511793965028462 + "min_s": 0.004094270999985383, + "median_s": 0.004454968999880293, + "max_s": 0.012716224000087095, + "iqr_s": 0.0007208079998690664, + "iqr_over_median": 0.16179865671084015 }, "vectorbt": { "samples_s": [ - 0.1903297169999405, - 0.1950009750000845, - 0.19114280100006908, - 0.1864058210001076, - 0.18950881799992203, - 0.19205824499999835, - 0.19078610600013235 + 0.15273279000007278, + 0.15578906800010373, + 0.1531284389998291, + 0.14517317600007118, + 0.14751188900004308, + 0.1586384629999884, + 0.14923040200005744 ], - "min_s": 0.1864058210001076, - "median_s": 0.19078610600013235, - "max_s": 0.1950009750000845, - "iqr_s": 0.002549427000076321, - "iqr_over_median": 0.013362749801469046 + "min_s": 0.14517317600007118, + "median_s": 0.15273279000007278, + "max_s": 0.1586384629999884, + "iqr_s": 0.008277179000060642, + "iqr_over_median": 0.05419385712823486 } }, "speedup": { "vectorbt": { - "median_of_ratios": 37.27564748738732, - "min": 10.994760703578352, - "max": 38.95884372613281 + "median_of_ratios": 34.28369310856636, + "min": 11.735433568882975, + "max": 38.74644912380122 } }, "noisy": true, "cpu_over_wall": { "manifoldbt": null, - "vectorbt": 1.0185492169455168 + "vectorbt": 1.0073392411756703 } }, { "workload": "ema_rsi_fees", "title": "EMA 12/26 crossover + RSI(14) filter, 5 bps taker fee", "bars": 1000000, - "data_digest": "0ef03e7a3c4d011c", + "data_digest": "3d9cc9bf5d0fca1b", "engines": [ "manifoldbt", "vectorbt" @@ -1054,21 +1054,21 @@ "expected": "exact", "publishable": true, "diffs": { - "final_equity_vs_capital": 8.294591680169105e-15, + "final_equity_vs_capital": 7.275957614183426e-15, "round_trips_delta": 0, "total_fees_vs_capital": 2.1100277081131935e-15 }, "metrics": { "manifoldbt": { - "total_return": -0.1532708157041739, - "final_equity": 84672.91842958261, + "total_return": -0.15327081570417533, + "final_equity": 84672.91842958247, "round_trips": 31389, "fills": 62779, "total_fees": 15206.83039822937 }, "vectorbt": { - "total_return": -0.15327081570418216, - "final_equity": 84672.91842958178, + "total_return": -0.15327081570418272, + "final_equity": 84672.91842958174, "round_trips": 31389, "fills": null, "total_fees": 15206.830398229158 @@ -1084,55 +1084,55 @@ "timings": { "manifoldbt": { "samples_s": [ - 0.05755965000003016, - 0.053935927000111406, - 0.05485804199997801, - 0.05579167700011567, - 0.055905397000060475, - 0.05555508799989184, - 0.056571315999917715 + 0.05209021599989683, + 0.05043981199992231, + 0.05140486899995267, + 0.05167013499999484, + 0.05250463100014713, + 0.05470712300007108, + 0.05205941899998834 ], - "min_s": 0.053935927000111406, - "median_s": 0.05579167700011567, - "max_s": 0.05755965000003016, - "iqr_s": 0.0017132739999397018, - "iqr_over_median": 0.030708415521120646 + "min_s": 0.05043981199992231, + "median_s": 0.05205941899998834, + "max_s": 0.05470712300007108, + "iqr_s": 0.0010997620001944597, + "iqr_over_median": 0.02112513011708229 }, "vectorbt": { "samples_s": [ - 2.1166798480001034, - 2.253798665999966, - 2.11859812900002, - 2.256627365999975, - 2.1305272409999816, - 2.250639726999907, - 2.109791053000208 + 1.6343571110000994, + 1.7306511780000164, + 1.6442000430001826, + 1.7128162379999594, + 1.6197267600000487, + 1.7213706389998151, + 1.61613817500006 ], - "min_s": 2.109791053000208, - "median_s": 2.1305272409999816, - "max_s": 2.256627365999975, - "iqr_s": 0.13711881799986259, - "iqr_over_median": 0.06435910105308237 + "min_s": 1.61613817500006, + "median_s": 1.6442000430001826, + "max_s": 1.7306511780000164, + "iqr_s": 0.10164387899976646, + "iqr_over_median": 0.0618196547509488 } }, "speedup": { "vectorbt": { - "median_of_ratios": 38.61964539311974, - "min": 36.773674753043046, - "max": 41.78659367429266 + "median_of_ratios": 31.465201323008316, + "min": 30.849217090879275, + "max": 34.31121388800343 } }, "noisy": false, "cpu_over_wall": { "manifoldbt": null, - "vectorbt": 1.0008753866150684 + "vectorbt": 1.0009195664680344 } }, { "workload": "sma_cross_costs", "title": "SMA 30/150 with a 5 bps fee and 2 bps of slippage", "bars": 100000, - "data_digest": "b7c2ad8cea687ce0", + "data_digest": "81a87f47b436bdf3", "engines": [ "manifoldbt", "vectorbt" @@ -1156,7 +1156,7 @@ "total_fees": 218.42799507745576 }, "vectorbt": { - "total_return": -0.0027450426551607985, + "total_return": -0.0027450426551607963, "final_equity": 99725.49573448392, "round_trips": 450, "fills": null, @@ -1173,55 +1173,55 @@ "timings": { "manifoldbt": { "samples_s": [ - 0.004098707999901308, - 0.0034165679999205167, - 0.0035318029999871214, - 0.0034637559999737277, - 0.00639853799998491, - 0.0036755609999090666, - 0.003410337000104846 + 0.0038538870001048053, + 0.002967212999919866, + 0.003300678999949014, + 0.002847756999926787, + 0.0029107029999977385, + 0.00519200799999453, + 0.0032092980000015814 ], - "min_s": 0.003410337000104846, - "median_s": 0.0035318029999871214, - "max_s": 0.00639853799998491, - "iqr_s": 0.0006821399999807909, - "iqr_over_median": 0.19314214297436133 + "min_s": 0.002847756999926787, + "median_s": 0.0032092980000015814, + "max_s": 0.00519200799999453, + "iqr_s": 0.0009431840001070668, + "iqr_over_median": 0.29389106281392446 }, "vectorbt": { "samples_s": [ - 0.18279670199990505, - 0.18569928400006575, - 0.18304413300006672, - 0.17962101200009783, - 0.18289798099999643, - 0.34828257699996357, - 0.1777648570000565 + 0.1407949470001313, + 0.1533677570000691, + 0.14177678999999443, + 0.13856001899989678, + 0.14212285300004623, + 0.23733181000011427, + 0.14085252400013815 ], - "min_s": 0.1777648570000565, - "median_s": 0.18289798099999643, - "max_s": 0.34828257699996357, - "iqr_s": 0.00607827199996791, - "iqr_over_median": 0.03323312792593391 + "min_s": 0.13856001899989678, + "median_s": 0.14177678999999443, + "max_s": 0.23733181000011427, + "iqr_s": 0.012572809999937817, + "iqr_over_median": 0.08868031220017261 } }, "speedup": { "vectorbt": { - "median_of_ratios": 51.85729364350729, - "min": 28.58433926631799, - "max": 94.75630441409626 + "median_of_ratios": 45.71098696311029, + "min": 36.53323177257206, + "max": 51.68747811640453 } }, "noisy": true, "cpu_over_wall": { "manifoldbt": null, - "vectorbt": 1.0138138765184688 + "vectorbt": 1.0230116421461481 } }, { "workload": "sma_cross_costs", "title": "SMA 30/150 with a 5 bps fee and 2 bps of slippage", "bars": 1000000, - "data_digest": "0ef03e7a3c4d011c", + "data_digest": "3d9cc9bf5d0fca1b", "engines": [ "manifoldbt", "vectorbt" @@ -1245,7 +1245,7 @@ "total_fees": 2195.9426086254202 }, "vectorbt": { - "total_return": -0.02986364258908383, + "total_return": -0.02986364258908382, "final_equity": 97013.63574109162, "round_trips": 4534, "fills": null, @@ -1262,55 +1262,55 @@ "timings": { "manifoldbt": { "samples_s": [ - 0.04072016400004941, - 0.03854089800006477, - 0.03956145200004357, - 0.0371568620000744, - 0.03901210200001515, - 0.039546966999978395, - 0.037148168000157966 + 0.035491746999923635, + 0.03514518399992994, + 0.035449241999913284, + 0.036298627000178385, + 0.03808956800003216, + 0.034850497999968866, + 0.03556225500005894 ], - "min_s": 0.037148168000157966, - "median_s": 0.03901210200001515, - "max_s": 0.04072016400004941, - "iqr_s": 0.0024045899999691756, - "iqr_over_median": 0.061637027401605836 + "min_s": 0.034850497999968866, + "median_s": 0.035491746999923635, + "max_s": 0.03808956800003216, + "iqr_s": 0.0011534430002484442, + "iqr_over_median": 0.03249890742912503 }, "vectorbt": { "samples_s": [ - 2.2709298459999445, - 2.022741918000065, - 2.2754094599999917, - 2.0085902680000345, - 2.2630035289998887, - 2.008110588999898, - 2.247821292000026 + 1.7415105289999246, + 1.5746316749998641, + 1.7517789269998048, + 1.5595826589999433, + 1.7239511660000062, + 1.5735151029998633, + 1.7207330440000987 ], - "min_s": 2.008110588999898, - "median_s": 2.247821292000026, - "max_s": 2.2754094599999917, - "iqr_s": 0.26233957799991003, - "iqr_over_median": 0.1167083784345197 + "min_s": 1.5595826589999433, + "median_s": 1.7207330440000987, + "max_s": 1.7517789269998048, + "iqr_s": 0.16799542600006134, + "iqr_over_median": 0.09763015046746072 } }, "speedup": { "vectorbt": { - "median_of_ratios": 55.76917239324451, - "min": 50.77786594863255, - "max": 60.50961360976045 + "median_of_ratios": 45.26045467353556, + "min": 42.965334721676356, + "max": 49.416541177497955 } }, "noisy": false, "cpu_over_wall": { "manifoldbt": null, - "vectorbt": 1.0008871594847102 + "vectorbt": 1.0003689684480397 } }, { "workload": "sma_cross_costs", "title": "SMA 30/150 with a 5 bps fee and 2 bps of slippage", "bars": 10000000, - "data_digest": "f4e6a3a8823f3768", + "data_digest": "3c0c54badb16a42c", "engines": [ "manifoldbt", "vectorbt" @@ -1321,21 +1321,21 @@ "expected": "exact", "publishable": true, "diffs": { - "final_equity_vs_capital": 8.149072527885436e-15, + "final_equity_vs_capital": 7.8580342233181e-15, "round_trips_delta": 0, "total_fees_vs_capital": 3.1650415621697903e-15 }, "metrics": { "manifoldbt": { - "total_return": -0.30242917768507427, - "final_equity": 69757.08223149258, + "total_return": -0.3024291776850745, + "final_equity": 69757.08223149255, "round_trips": 46127, "fills": 92254, "total_fees": 21749.94829446186 }, "vectorbt": { - "total_return": -0.30242917768506616, - "final_equity": 69757.08223149339, + "total_return": -0.3024291776850666, + "final_equity": 69757.08223149333, "round_trips": 46127, "fills": null, "total_fees": 21749.948294462178 @@ -1351,55 +1351,55 @@ "timings": { "manifoldbt": { "samples_s": [ - 0.32522452200009866, - 0.3215006140001151, - 0.323187039000004, - 0.32167735700022604, - 0.3228225329999077, - 0.32362668199994005, - 0.32261100499999884 + 0.33795670700010305, + 0.33499596499996187, + 0.3349249160000909, + 0.33553543100015304, + 0.3376625039998089, + 0.3347863359999792, + 0.3336536799999976 ], - "min_s": 0.3215006140001151, - "median_s": 0.3228225329999077, - "max_s": 0.32522452200009866, - "iqr_s": 0.0019493249997140083, - "iqr_over_median": 0.006038379606279112 + "min_s": 0.3336536799999976, + "median_s": 0.33499596499996187, + "max_s": 0.33795670700010305, + "iqr_s": 0.002876167999829704, + "iqr_over_median": 0.008585679531483406 }, "vectorbt": { "samples_s": [ - 25.229542674999948, - 25.17098910300001, - 25.032400385000074, - 25.226788552000016, - 25.885920837999947, - 25.06405708599982, - 25.59198367299996 + 21.45598317500003, + 21.3475697209999, + 21.147578244999977, + 21.42789562100006, + 22.22522451099985, + 21.33992838500012, + 21.85998238000002 ], - "min_s": 25.032400385000074, - "median_s": 25.226788552000016, - "max_s": 25.885920837999947, - "iqr_s": 0.5279265870001382, - "iqr_over_median": 0.020927221311262918 + "min_s": 21.147578244999977, + "median_s": 21.42789562100006, + "max_s": 22.22522451099985, + "iqr_s": 0.5200539949998984, + "iqr_over_median": 0.024269951851465427 } }, "speedup": { "vectorbt": { - "median_of_ratios": 78.29219605468934, - "min": 77.44743706269702, - "max": 80.18622677125003 + "median_of_ratios": 63.74193355669524, + "min": 63.14125117223061, + "max": 65.82082478133974 } }, "noisy": false, "cpu_over_wall": { - "manifoldbt": 1.0837592147266444, - "vectorbt": 0.9998776404844648 + "manifoldbt": 1.098098717447905, + "vectorbt": 0.9998397787058828 } }, { "workload": "multi_asset", "title": "Five assets in one book, SMA 30/150, 5 bps fee", "bars": 100000, - "data_digest": "b7c2ad8cea687ce0", + "data_digest": "81a87f47b436bdf3", "engines": [ "manifoldbt", "vectorbt" @@ -1440,55 +1440,55 @@ "timings": { "manifoldbt": { "samples_s": [ - 0.02307696399998349, - 0.014387203000069348, - 0.013749055000062071, - 0.013840606000030675, - 0.013741991999950187, - 0.01924053500010814, - 0.013964217000193457 + 0.019926506000047084, + 0.013348905999919225, + 0.012219612999842866, + 0.011852975000010701, + 0.012095613999917987, + 0.015470979000156149, + 0.011496840000063457 ], - "min_s": 0.013741991999950187, - "median_s": 0.013964217000193457, - "max_s": 0.02307696399998349, - "iqr_s": 0.005491480000046067, - "iqr_over_median": 0.3932536997935501 + "min_s": 0.011496840000063457, + "median_s": 0.012219612999842866, + "max_s": 0.019926506000047084, + "iqr_s": 0.003618004000145447, + "iqr_over_median": 0.2960817171699277 }, "vectorbt": { "samples_s": [ - 0.227882683000189, - 0.22631173000013405, - 0.22797691899995698, - 0.23002383799985182, - 0.22572897599980024, - 0.22265787000014825, - 0.2255165809999653 + 0.19317844699980924, + 0.1906031119999625, + 0.18934447000015098, + 0.1869183400001475, + 0.18555547899995872, + 0.17903814400006013, + 0.1828590449999865 ], - "min_s": 0.22265787000014825, - "median_s": 0.22631173000013405, - "max_s": 0.23002383799985182, - "iqr_s": 0.0024603379999916797, - "iqr_over_median": 0.01087145593376986 + "min_s": 0.17903814400006013, + "median_s": 0.1869183400001475, + "max_s": 0.19317844699980924, + "iqr_s": 0.007744066999975985, + "iqr_over_median": 0.041430214926849195 } }, "speedup": { "vectorbt": { - "median_of_ratios": 16.149604449489797, - "min": 9.874898751861467, - "max": 16.619491805441324 + "median_of_ratios": 15.340724249402871, + "min": 9.694546901466458, + "max": 15.905156982177468 } }, "noisy": true, "cpu_over_wall": { "manifoldbt": null, - "vectorbt": 1.0024597480936597 + "vectorbt": 0.9942661154953363 } }, { "workload": "multi_asset", "title": "Five assets in one book, SMA 30/150, 5 bps fee", "bars": 1000000, - "data_digest": "0ef03e7a3c4d011c", + "data_digest": "3d9cc9bf5d0fca1b", "engines": [ "manifoldbt", "vectorbt" @@ -1499,14 +1499,14 @@ "expected": "exact", "publishable": true, "diffs": { - "final_equity_vs_capital": 1.0186340659856795e-15, + "final_equity_vs_capital": 1.3096723705530167e-15, "round_trips_delta": 0, "total_fees_vs_capital": 2.7284841053187848e-17 }, "metrics": { "manifoldbt": { - "total_return": -0.0447197098443024, - "final_equity": 95528.02901556976, + "total_return": -0.044719709844302735, + "final_equity": 95528.02901556973, "round_trips": 22902, "fills": 45806, "total_fees": 4561.765315438204 @@ -1529,55 +1529,55 @@ "timings": { "manifoldbt": { "samples_s": [ - 0.14278661599996667, - 0.14261611100005211, - 0.1445582049998393, - 0.1432749260000037, - 0.14347433900002216, - 0.14746299299986276, - 0.142542695000202 + 0.16110789000003933, + 0.16026609499999722, + 0.16102433200012456, + 0.16354888399996526, + 0.16558453700008613, + 0.16012236899996424, + 0.16664327900002718 ], - "min_s": 0.142542695000202, - "median_s": 0.1432749260000037, - "max_s": 0.14746299299986276, - "iqr_s": 0.0019420939997871756, - "iqr_over_median": 0.013555016596463819 + "min_s": 0.16012236899996424, + "median_s": 0.16110789000003933, + "max_s": 0.16664327900002718, + "iqr_s": 0.005318442000088908, + "iqr_over_median": 0.03301167931680819 }, "vectorbt": { "samples_s": [ - 2.577628071000163, - 2.396830384000168, - 2.5470267929999864, - 2.3911123979999047, - 2.5337276579998615, - 2.3811197279999305, - 2.5322809269998743 + 2.0621487739999793, + 1.9852154149998569, + 2.0548128950001683, + 1.9918203129998346, + 2.0898364929998934, + 1.9884212959998422, + 2.055756618000032 ], - "min_s": 2.3811197279999305, - "median_s": 2.5322809269998743, - "max_s": 2.577628071000163, - "iqr_s": 0.15591439500008164, - "iqr_over_median": 0.06157073385408371 + "min_s": 1.9852154149998569, + "median_s": 2.0548128950001683, + "max_s": 2.0898364929998934, + "iqr_s": 0.07372747800013713, + "iqr_over_median": 0.03588038510928806 } }, "speedup": { "vectorbt": { - "median_of_ratios": 17.619385859161838, - "min": 16.147235855996403, - "max": 18.052308705185396 + "median_of_ratios": 12.418135632256892, + "min": 12.178745976647923, + "max": 12.799800022205467 } }, "noisy": false, "cpu_over_wall": { - "manifoldbt": 1.2515944357032323, - "vectorbt": 1.0000157860210845 + "manifoldbt": 1.2386921180185988, + "vectorbt": 1.0015454159234438 } }, { "workload": "bracket_sl_tp", "title": "SMA 10/50 entry with a 15 bps stop / 30 bps target bracket", "bars": 100000, - "data_digest": "b7c2ad8cea687ce0", + "data_digest": "81a87f47b436bdf3", "engines": [ "manifoldbt", "vectorbt", @@ -1589,21 +1589,21 @@ "expected": "documented", "publishable": false, "diffs": { - "final_equity_vs_capital": 0.01145740341532248, + "final_equity_vs_capital": 0.01145740341531491, "round_trips_delta": 94, "total_fees_vs_capital": 0.0 }, "metrics": { "manifoldbt": { - "total_return": -0.05756525685928504, - "final_equity": 94243.4743140715, + "total_return": -0.05756525685929326, + "final_equity": 94243.47431407067, "round_trips": 2309, "fills": 4618, "total_fees": 0.0 }, "vectorbt": { - "total_return": -0.06902266027460748, - "final_equity": 93097.73397253925, + "total_return": -0.06902266027460821, + "final_equity": 93097.73397253918, "round_trips": 2215, "fills": null, "total_fees": 0.0 @@ -1616,21 +1616,21 @@ "expected": "documented", "publishable": false, "diffs": { - "final_equity_vs_capital": 0.009248235144781793, + "final_equity_vs_capital": 0.009248235144775827, "round_trips_delta": 925, "total_fees_vs_capital": 0.0 }, "metrics": { "manifoldbt": { - "total_return": -0.05756525685928504, - "final_equity": 94243.4743140715, + "total_return": -0.05756525685929326, + "final_equity": 94243.47431407067, "round_trips": 2309, "fills": 4618, "total_fees": 0.0 }, "raptorbt": { - "total_return": -0.06681349200406679, - "final_equity": 93318.65079959332, + "total_return": -0.06681349200406912, + "final_equity": 93318.65079959309, "round_trips": 1384, "fills": null, "total_fees": 0.0 @@ -1643,7 +1643,7 @@ "divergence_scale": { "raptorbt": { "round_trips": 1384, - "final_equity": 93318.65079959332 + "final_equity": 93318.65079959309 }, "manifoldbt": { "reentries_on_exit_bar": 925, @@ -1656,69 +1656,69 @@ "timings": { "manifoldbt": { "samples_s": [ - 0.0122524160001376, - 0.012308680999922217, - 0.012255080000159069, - 0.015544473000090875, - 0.012049738000087018, - 0.012423373000046922, - 0.012109989999999016 + 0.006417026999997688, + 0.005972167999971134, + 0.005751087999897209, + 0.006330633000061425, + 0.008170594999910463, + 0.005749135000087335, + 0.0059520449999581615 ], - "min_s": 0.012049738000087018, - "median_s": 0.012255080000159069, - "max_s": 0.015544473000090875, - "iqr_s": 0.00031338300004790653, - "iqr_over_median": 0.025571681298191352 + "min_s": 0.005749135000087335, + "median_s": 0.005972167999971134, + "max_s": 0.008170594999910463, + "iqr_s": 0.0006659390001004795, + "iqr_over_median": 0.1115070775141788 }, "vectorbt": { "samples_s": [ - 0.18106031899992558, - 0.17903853699999672, - 0.3587593449999531, - 0.18628223800010346, - 0.17494328299994777, - 0.17867631200010692, - 0.1824337860000469 + 0.14239295900006255, + 0.13622720499984098, + 0.24924728499991033, + 0.1442627479998464, + 0.13544878700008667, + 0.13847168799998144, + 0.14035351799998352 ], - "min_s": 0.17494328299994777, - "median_s": 0.18106031899992558, - "max_s": 0.3587593449999531, - "iqr_s": 0.007605925999996543, - "iqr_over_median": 0.042007691370518734 + "min_s": 0.13544878700008667, + "median_s": 0.14035351799998352, + "max_s": 0.24924728499991033, + "iqr_s": 0.008035543000005418, + "iqr_over_median": 0.05725216663259101 }, "raptorbt": { "samples_s": [ - 0.007816189000095619, - 0.007809456000131831, - 0.007849550999935673, - 0.007781834000070376, - 0.007837206999965929, - 0.00865157399994132, - 0.010408633999986705 + 0.005969301000050109, + 0.00591759799999636, + 0.006453772999975627, + 0.005973884000013641, + 0.0059945570001218584, + 0.00601182700006575, + 0.006009480000102485 ], - "min_s": 0.007781834000070376, - "median_s": 0.007837206999965929, - "max_s": 0.010408633999986705, - "iqr_s": 0.0008421179998094885, - "iqr_over_median": 0.10745128970220508 + "min_s": 0.00591759799999636, + "median_s": 0.0059945570001218584, + "max_s": 0.006453772999975627, + "iqr_s": 4.252600001564133e-05, + "iqr_over_median": 0.007094102202177217 } }, "speedup": { "vectorbt": { - "median_of_ratios": 14.545712656061859, - "min": 11.983824604347438, - "max": 29.274337254044564 + "median_of_ratios": 22.81034374794872, + "min": 16.577591595418813, + "max": 43.33915339225643 }, "raptorbt": { - "median_of_ratios": 0.6405140561982285, - "min": 0.5006174220267797, - "max": 0.8595080590477409 + "median_of_ratios": 0.9908626147196399, + "min": 0.7336744753824598, + "max": 1.1221829678299093 } }, "noisy": false, "cpu_over_wall": { "manifoldbt": null, - "vectorbt": 0.9852942611148727, + "vectorbt": 1.012514504385728, "raptorbt": null } }, @@ -1726,7 +1726,7 @@ "workload": "bracket_sl_tp", "title": "SMA 10/50 entry with a 15 bps stop / 30 bps target bracket", "bars": 1000000, - "data_digest": "0ef03e7a3c4d011c", + "data_digest": "3d9cc9bf5d0fca1b", "engines": [ "manifoldbt", "vectorbt", @@ -1738,21 +1738,21 @@ "expected": "documented", "publishable": false, "diffs": { - "final_equity_vs_capital": 0.010543837599986582, + "final_equity_vs_capital": 0.010543837599989565, "round_trips_delta": 1092, "total_fees_vs_capital": 0.0 }, "metrics": { "manifoldbt": { - "total_return": -0.45070441471402267, - "final_equity": 54929.558528597736, + "total_return": -0.4507044147140229, + "final_equity": 54929.558528597714, "round_trips": 23075, "fills": 46151, "total_fees": 0.0 }, "vectorbt": { - "total_return": -0.46124825231400923, - "final_equity": 53875.17476859908, + "total_return": -0.46124825231401245, + "final_equity": 53875.17476859876, "round_trips": 21983, "fills": null, "total_fees": 0.0 @@ -1765,21 +1765,21 @@ "expected": "documented", "publishable": false, "diffs": { - "final_equity_vs_capital": 0.10072796246195154, + "final_equity_vs_capital": 0.10072796246195649, "round_trips_delta": 9330, "total_fees_vs_capital": 0.0 }, "metrics": { "manifoldbt": { - "total_return": -0.45070441471402267, - "final_equity": 54929.558528597736, + "total_return": -0.4507044147140229, + "final_equity": 54929.558528597714, "round_trips": 23075, "fills": 46151, "total_fees": 0.0 }, "raptorbt": { - "total_return": -0.3499764522520711, - "final_equity": 65002.35477479289, + "total_return": -0.3499764522520664, + "final_equity": 65002.35477479336, "round_trips": 13745, "fills": null, "total_fees": 0.0 @@ -1792,7 +1792,7 @@ "divergence_scale": { "raptorbt": { "round_trips": 13745, - "final_equity": 65002.35477479289 + "final_equity": 65002.35477479336 }, "manifoldbt": { "reentries_on_exit_bar": 9330, @@ -1805,77 +1805,77 @@ "timings": { "manifoldbt": { "samples_s": [ - 0.11566456800005653, - 0.12368478300004426, - 0.1227780960000473, - 0.12334508200001437, - 0.12192994099996213, - 0.12237460899996222, - 0.12389772300002733 + 0.058244031999947765, + 0.07314594900003613, + 0.06829113300000245, + 0.06851590600012969, + 0.06925924999995914, + 0.0695056790000308, + 0.06853234300001532 ], - "min_s": 0.11566456800005653, - "median_s": 0.1227780960000473, - "max_s": 0.12389772300002733, - "iqr_s": 0.0017548420000821352, - "iqr_over_median": 0.014292793725042448 + "min_s": 0.058244031999947765, + "median_s": 0.06853234300001532, + "max_s": 0.07314594900003613, + "iqr_s": 0.0012145460000283492, + "iqr_over_median": 0.017722230801711796 }, "vectorbt": { "samples_s": [ - 2.0260590759999104, - 2.291390629999796, - 2.0189714559999175, - 2.278124797000146, - 2.1216722849999314, - 2.2840852050001104, - 2.1166823669998394 + 1.5590526570001657, + 1.7112131520000275, + 1.5607128480000938, + 1.7040713240000969, + 1.6211463699999058, + 1.702051621999999, + 1.631106927000019 ], - "min_s": 2.0189714559999175, - "median_s": 2.1216722849999314, - "max_s": 2.291390629999796, - "iqr_s": 0.25802612900019994, - "iqr_over_median": 0.12161450702091264 + "min_s": 1.5590526570001657, + "median_s": 1.631106927000019, + "max_s": 1.7112131520000275, + "iqr_s": 0.14335847600000307, + "iqr_over_median": 0.08789029929734422 }, "raptorbt": { "samples_s": [ - 0.08678390000000036, - 0.077280361000021, - 0.08687376700004279, - 0.07775755500006198, - 0.08779191200005698, - 0.07722580600011497, - 0.08743725199997243 + 0.06928740099988318, + 0.06430734000014127, + 0.07068334899986439, + 0.06451603599998634, + 0.06897606400002587, + 0.06430054599991308, + 0.06953625899996041 ], - "min_s": 0.07722580600011497, - "median_s": 0.08678390000000036, - "max_s": 0.08779191200005698, - "iqr_s": 0.010156890999951429, - "iqr_over_median": 0.11703658166954224 + "min_s": 0.06430054599991308, + "median_s": 0.06897606400002587, + "max_s": 0.07068334899986439, + "iqr_s": 0.005228918999819143, + "iqr_over_median": 0.07580773237245288 } }, "speedup": { "vectorbt": { - "median_of_ratios": 17.51667871183265, - "min": 16.444068785682582, - "max": 18.664698695795757 + "median_of_ratios": 23.800542278259105, + "min": 22.853813949755935, + "max": 26.767594952931212 }, "raptorbt": { - "median_of_ratios": 0.7057212181369398, - "min": 0.6248170480275924, - "max": 0.75030669720703 + "median_of_ratios": 0.9959112176361506, + "min": 0.8791647504649848, + "max": 1.1896051598890907 } }, "noisy": false, "cpu_over_wall": { - "manifoldbt": 0.9956953139633876, - "vectorbt": 0.9995384935888669, - "raptorbt": 1.0496419505246322 + "manifoldbt": null, + "vectorbt": 1.000056147625808, + "raptorbt": null } }, { "workload": "bracket_sl_tp", "title": "SMA 10/50 entry with a 15 bps stop / 30 bps target bracket", "bars": 10000000, - "data_digest": "f4e6a3a8823f3768", + "data_digest": "3c0c54badb16a42c", "engines": [ "manifoldbt", "vectorbt", @@ -1887,21 +1887,21 @@ "expected": "documented", "publishable": false, "diffs": { - "final_equity_vs_capital": 0.0008838890600401106, + "final_equity_vs_capital": 0.0008838890600599837, "round_trips_delta": 10171, "total_fees_vs_capital": 0.0 }, "metrics": { "manifoldbt": { - "total_return": -0.9948342253853452, - "final_equity": 516.5774614654839, + "total_return": -0.9948342253853453, + "final_equity": 516.5774614654728, "round_trips": 231082, "fills": 462164, "total_fees": 0.0 }, "vectorbt": { - "total_return": -0.9957181144453853, - "final_equity": 428.18855546147284, + "total_return": -0.9957181144454053, + "final_equity": 428.1885554594744, "round_trips": 220911, "fills": null, "total_fees": 0.0 @@ -1914,21 +1914,21 @@ "expected": "documented", "publishable": false, "diffs": { - "final_equity_vs_capital": 0.022352514553554532, + "final_equity_vs_capital": 0.022352514553554276, "round_trips_delta": 93295, "total_fees_vs_capital": 0.0 }, "metrics": { "manifoldbt": { - "total_return": -0.9948342253853452, - "final_equity": 516.5774614654839, + "total_return": -0.9948342253853453, + "final_equity": 516.5774614654728, "round_trips": 231082, "fills": 462164, "total_fees": 0.0 }, "raptorbt": { - "total_return": -0.9724817108317907, - "final_equity": 2751.828916820937, + "total_return": -0.972481710831791, + "final_equity": 2751.8289168209003, "round_trips": 137787, "fills": null, "total_fees": 0.0 @@ -1941,7 +1941,7 @@ "divergence_scale": { "raptorbt": { "round_trips": 137787, - "final_equity": 2751.828916820937 + "final_equity": 2751.8289168209003 }, "manifoldbt": { "reentries_on_exit_bar": 93295, @@ -1954,70 +1954,70 @@ "timings": { "manifoldbt": { "samples_s": [ - 1.1848777790000895, - 1.1969755019999866, - 1.1995855459999802, - 1.1965303150000182, - 1.196363990000009, - 1.1934463579998464, - 1.1981282320000446 + 0.6494090600001527, + 0.6685640739999599, + 0.6549084020000464, + 0.6582057959999474, + 0.6573895379999612, + 0.6663824019999538, + 0.6642997929998273 ], - "min_s": 1.1848777790000895, - "median_s": 1.1965303150000182, - "max_s": 1.1995855459999802, - "iqr_s": 0.00468187400019815, - "iqr_over_median": 0.00391287537098304 + "min_s": 0.6494090600001527, + "median_s": 0.6582057959999474, + "max_s": 0.6685640739999599, + "iqr_s": 0.011473999999907392, + "iqr_over_median": 0.017432237864870317 }, "vectorbt": { "samples_s": [ - 26.245262837000155, - 25.017762391999895, - 26.011530813999798, - 25.77158538499998, - 25.238260858999865, - 26.006031699000005, - 25.826123474000042 + 22.043078896999987, + 20.863654708000013, + 21.86108615299986, + 21.641297046999853, + 21.114935397999943, + 21.750162930999977, + 21.722141698000087 ], - "min_s": 25.017762391999895, - "median_s": 25.826123474000042, - "max_s": 26.245262837000155, - "iqr_s": 0.7732699549999325, - "iqr_over_median": 0.029941386897588688 + "min_s": 20.863654708000013, + "median_s": 21.722141698000087, + "max_s": 22.043078896999987, + "iqr_s": 0.7461507549999169, + "iqr_over_median": 0.03434977845985663 }, "raptorbt": { "samples_s": [ - 0.8989086730000508, - 0.8894685510001636, - 0.8896071870001379, - 0.8921997699999338, - 0.8867820099999335, - 0.887272805000066, - 0.8849891170000319 + 0.7670860390001053, + 0.7602830050000193, + 0.7651048249999803, + 0.755361129999983, + 0.7626263709998966, + 0.7534882909999396, + 0.7559999599998264 ], - "min_s": 0.8849891170000319, - "median_s": 0.8894685510001636, - "max_s": 0.8989086730000508, - "iqr_s": 0.005417760000000271, - "iqr_over_median": 0.006091007932667509 + "min_s": 0.7534882909999396, + "median_s": 0.7602830050000193, + "max_s": 0.7670860390001053, + "iqr_s": 0.009743694999997388, + "iqr_over_median": 0.012815879002842027 } }, "speedup": { "vectorbt": { - "median_of_ratios": 21.55539180550674, - "min": 20.90081405191547, - "max": 22.15018570029084 + "median_of_ratios": 32.69930523372259, + "min": 31.20666443109126, + "max": 33.94328822113261 }, "raptorbt": { - "median_of_ratios": 0.7430967045808208, - "min": 0.7386430712201087, - "max": 0.7586509671559829 + "median_of_ratios": 1.147606317948685, + "min": 1.130714569800407, + "max": 1.1812062477230065 } }, "noisy": false, "cpu_over_wall": { - "manifoldbt": 1.024395712310217, - "vectorbt": 0.999963593241555, - "raptorbt": 0.9985185784124266 + "manifoldbt": 1.0478097705433227, + "vectorbt": 1.0000241275225226, + "raptorbt": 0.9981297527779238 } } ], @@ -2031,40 +2031,40 @@ ], "samples_s": { "manifoldbt": [ - 0.5499173650000557, - 0.44061843500003306, - 0.44134347899989734 + 0.38728589800007285, + 0.37386503099992296, + 0.35496781799997734 ], "vectorbt": [ - 7.821058826000126, - 7.4170951249998325, - 7.4154706869999245 + 5.947141594000186, + 5.193604303000029, + 5.075157936999858 ], "raptorbt": [ - 0.4053221899998789, - 0.40625635100013824, - 0.410977204999881 + 0.3148407329999827, + 0.3105440090000684, + 0.3067471290000867 ], "baseline": [ - 0.35796505300004355, - 0.37481424500015237, - 0.3601670139998987 + 0.2868975540000065, + 0.2811006079998606, + 0.27476421400001527 ] }, "median_s": { - "manifoldbt": 0.44134347899989734, - "vectorbt": 7.4170951249998325, - "raptorbt": 0.40625635100013824, - "baseline": 0.3601670139998987 + "manifoldbt": 0.37386503099992296, + "vectorbt": 5.193604303000029, + "raptorbt": 0.3105440090000684, + "baseline": 0.2811006079998606 }, "engine_share_s": { - "manifoldbt": 0.08117646499999864, - "vectorbt": 7.056928110999934, - "raptorbt": 0.04608933700023954 + "manifoldbt": 0.09276442300006238, + "vectorbt": 4.912503695000169, + "raptorbt": 0.029443401000207814 }, "ratio": { - "vectorbt": 16.80572043753151, - "raptorbt": 0.920499271725351 + "vectorbt": 13.891655737658704, + "raptorbt": 0.8306313328355451 } }, "memory": { @@ -2076,33 +2076,33 @@ "raptorbt" ], "manifoldbt": { - "before_mb": 733.10208, - "peak_mb": 733.118464, + "before_mb": 729.182208, + "peak_mb": 729.198592, "added_mb": 0.016384000000016385, "added_mb_per_million_bars": 0.008192000000008193, - "seconds": 0.05842692300007002, + "seconds": 0.06254247700007909, "mode": "memory", "engine": "mbt", "workload": "sma_cross", "bars": 2000000 }, "vectorbt": { - "before_mb": 604.995584, - "peak_mb": 852.43904, - "added_mb": 247.44345599999997, - "added_mb_per_million_bars": 123.72172799999998, - "seconds": 4.4552580269999, + "before_mb": 603.410432, + "peak_mb": 851.111936, + "added_mb": 247.701504, + "added_mb_per_million_bars": 123.850752, + "seconds": 3.542394757000011, "mode": "memory", "engine": "vbt", "workload": "sma_cross", "bars": 2000000 }, "raptorbt": { - "before_mb": 354.906112, - "peak_mb": 374.554624, - "added_mb": 19.648511999999982, - "added_mb_per_million_bars": 9.824255999999991, - "seconds": 0.16079458900003374, + "before_mb": 328.56064, + "peak_mb": 344.285184, + "added_mb": 15.724544000000037, + "added_mb_per_million_bars": 7.862272000000019, + "seconds": 0.13715001299988216, "mode": "memory", "engine": "rbt", "workload": "sma_cross", @@ -2114,7 +2114,7 @@ }, "sweeps": { "schema_version": 2, - "generated_at": "2026-09-14T10:55:55.391696+00:00", + "generated_at": "2026-09-21T10:58:44.802851+00:00", "environment": { "os": "Linux", "os_release": "6.17.0-1022-azure", @@ -2131,10 +2131,10 @@ "numba": "0.64.0", "pandas": "2.3.3" }, - "runner": "GitHub Actions 1000000539", + "runner": "GitHub Actions 1000000544", "ci": true, - "run_url": "https://github.com/manifoldbt/manifoldbt/actions/runs/34834573701", - "commit": "44b55e86544dfd0dfe571d8eae507090afb6f221", + "run_url": "https://github.com/manifoldbt/manifoldbt/actions/runs/35590549822", + "commit": "f87d71d17400e28e8452161ce8d02a1b3d4afff6", "pinned_cores": null, "engines": [ "manifoldbt", @@ -2220,45 +2220,45 @@ "timings": { "manifoldbt": { "samples_s": [ - 0.005476701000006301 + 0.005395553999989033 ], - "min_s": 0.005476701000006301, - "median_s": 0.005476701000006301, - "max_s": 0.005476701000006301, + "min_s": 0.005395553999989033, + "median_s": 0.005395553999989033, + "max_s": 0.005395553999989033, "iqr_s": 0.0, "iqr_over_median": 0.0 }, "vectorbt": { "samples_s": [ - 0.3531780219999945 + 0.36175994199999195 ], - "min_s": 0.3531780219999945, - "median_s": 0.3531780219999945, - "max_s": 0.3531780219999945, + "min_s": 0.36175994199999195, + "median_s": 0.36175994199999195, + "max_s": 0.36175994199999195, "iqr_s": 0.0, "iqr_over_median": 0.0 }, "raptorbt": { "samples_s": [ - 0.00982754799998986 + 0.010196589000003087 ], - "min_s": 0.00982754799998986, - "median_s": 0.00982754799998986, - "max_s": 0.00982754799998986, + "min_s": 0.010196589000003087, + "median_s": 0.010196589000003087, + "max_s": 0.010196589000003087, "iqr_s": 0.0, "iqr_over_median": 0.0 } }, "speedup": { "vectorbt": { - "median_of_ratios": 64.48736602556689, - "min": 64.48736602556689, - "max": 64.48736602556689 + "median_of_ratios": 67.0477845279145, + "min": 67.0477845279145, + "max": 67.0477845279145 }, "raptorbt": { - "median_of_ratios": 1.7944284341939707, - "min": 1.7944284341939707, - "max": 1.7944284341939707 + "median_of_ratios": 1.8898131684019495, + "min": 1.8898131684019495, + "max": 1.8898131684019495 } }, "noisy": false, @@ -2317,23 +2317,23 @@ "status": "exact", "timings": { "seconds": { - "manifoldbt": 0.4621484070000008, - "vectorbt": 5.181938536999979, - "raptorbt": 6.7637706440000045 + "manifoldbt": 0.4678222299999959, + "vectorbt": 5.234257431999993, + "raptorbt": 6.649972485000006 }, "ratio": { - "vectorbt": 11.21271534968197, - "raptorbt": 14.635494879029178 + "vectorbt": 11.188560731712212, + "raptorbt": 14.214742392639325 }, "reps": 2, - "per_combo_us": 92.42968140000016 + "per_combo_us": 93.56444599999918 }, "memory": { - "manifoldbt": 27.4, - "vectorbt": 2529.7, - "raptorbt": 34.6 + "manifoldbt": 23.2, + "vectorbt": 2529.9, + "raptorbt": 36.0 }, - "memory_baseline_mb": 2168.8, + "memory_baseline_mb": 2167.0, "tier_after": { "pro": true, "budget_used": 0, @@ -2393,22 +2393,22 @@ "status": "exact", "timings": { "seconds": { - "manifoldbt": 1.8461348740000005, - "raptorbt": 26.770515404000008, + "manifoldbt": 1.8425402459999987, + "raptorbt": 26.766322265000042, "vectorbt": null }, "ratio": { - "raptorbt": 14.500844862973972 + "raptorbt": 14.5268589509008 }, "reps": 2, - "per_combo_us": 92.30674370000003 + "per_combo_us": 92.12701229999993 }, "memory": { - "manifoldbt": 66.0, + "manifoldbt": 64.7, "vectorbt": null, "raptorbt": null }, - "memory_baseline_mb": 603.3, + "memory_baseline_mb": 601.7, "tier_after": { "pro": true, "budget_used": 0, @@ -2468,22 +2468,22 @@ "status": "exact", "timings": { "seconds": { - "manifoldbt": 9.395462388999931, - "raptorbt": 161.71880261900003, + "manifoldbt": 9.31180331600001, + "raptorbt": 146.38983664900002, "vectorbt": null }, "ratio": { - "raptorbt": 17.212436804423593 + "raptorbt": 15.720890109165603 }, "reps": 2, - "per_combo_us": 939.5462388999931 + "per_combo_us": 931.180331600001 }, "memory": { - "manifoldbt": 107.0, + "manifoldbt": 103.7, "vectorbt": null, "raptorbt": null }, - "memory_baseline_mb": 1721.8, + "memory_baseline_mb": 1716.7, "tier_after": { "pro": true, "budget_used": 0,