From da1ca57489d60960414abfba93388032eac6a838 Mon Sep 17 00:00:00 2001 From: Stefan Jansen Date: Tue, 8 Sep 2026 16:09:28 -0400 Subject: [PATCH 1/7] Remove LinearImpact.permanent_fraction, which calculate() never read The field was stored on the dataclass, documented as "Fraction of impact that is permanent (0-1). Remainder is temporary and reverts", and read nowhere: LinearImpact(coefficient=0.1, permanent_fraction=0.0) and the same model at 1.0 both return 1.0000000000000002 for a 10% participation order at $100. A reader who set 0.8 because they wanted a mostly permanent model got a model with no persistence at all and no warning. It cannot be honoured where it sat. `calculate` sees one order and has no reference to the ones before it, and `fill_executor` applies the returned impact to that order's fill price only - nothing is carried into the price for later orders. That is true of all four models here, so the parameter is removed rather than given state or a split return: LinearImpact is a single-order concession model and the docstring now says so, with persistence named as the caller's business. Two tests replace the one that asserted the default value: ten identical slices are charged the same concession by every model, and passing permanent_fraction now raises TypeError instead of being silently ignored. --- src/ml4t/backtest/execution/impact.py | 10 ++++++--- tests/execution/test_impact.py | 32 ++++++++++++++++++++++++++- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/src/ml4t/backtest/execution/impact.py b/src/ml4t/backtest/execution/impact.py index d17db16b..46fad19f 100644 --- a/src/ml4t/backtest/execution/impact.py +++ b/src/ml4t/backtest/execution/impact.py @@ -64,11 +64,16 @@ class LinearImpact(MarketImpactModel): Simple model where impact scales linearly with participation rate. Appropriate for liquid markets with moderate order sizes. + Like every model here it is a single-order concession model: `calculate` sees one + order, and the impact it returns is charged to that order's fill price only. Nothing + is carried into the price for later orders, so a parent order worked in slices is + charged the same concession on every slice. A caller who needs permanent impact - + the part of the move that does not revert and is paid again by every later slice - + accumulates it outside the model. + Args: coefficient: Impact scaling factor (default 0.1) Higher values = more impact per unit participation - permanent_fraction: Fraction of impact that is permanent (0-1) - Remainder is temporary and reverts Example: model = LinearImpact(coefficient=0.1) @@ -76,7 +81,6 @@ class LinearImpact(MarketImpactModel): """ coefficient: float = 0.1 - permanent_fraction: float = 0.5 def calculate( self, diff --git a/tests/execution/test_impact.py b/tests/execution/test_impact.py index ba408649..36071448 100644 --- a/tests/execution/test_impact.py +++ b/tests/execution/test_impact.py @@ -2,6 +2,8 @@ import math +import pytest + from ml4t.backtest.execution.impact import ( LinearImpact, NoImpact, @@ -39,7 +41,6 @@ def test_default_values(self): """Test default configuration.""" model = LinearImpact() assert model.coefficient == 0.1 - assert model.permanent_fraction == 0.5 def test_buy_positive_impact(self): """Test that buy orders have positive impact (price goes up).""" @@ -245,3 +246,32 @@ def test_concave_exponent(self): # With exponent=0.25, 16x quantity = 2x impact (16^0.25 = 2) assert abs(impact_16000 / impact_1000 - 2.0) < 0.1 + + +class TestImpactModelsAreSingleOrderConcessions: + """No model here carries impact into the price for the orders that follow it.""" + + MODELS = ( + NoImpact(), + LinearImpact(coefficient=0.1), + SquareRootImpact(coefficient=0.5, volatility=0.02), + PowerLawImpact(coefficient=0.1, exponent=0.5), + ) + + def test_repeated_slices_are_charged_the_same_concession(self): + """A parent order worked in ten equal slices pays the first slice's price ten times. + + This is the property that a permanent-impact parameter would have to break. It + holds for every model, which is why `LinearImpact` no longer advertises one. + """ + for model in self.MODELS: + charges = [ + model.calculate(quantity=1000.0, price=100.0, volume=100_000.0, is_buy=True) + for _ in range(10) + ] + assert len(set(charges)) == 1, f"{type(model).__name__} is not stateless" + + def test_linear_impact_rejects_a_persistence_parameter(self): + """The parameter was settable and never read; setting it must now fail loudly.""" + with pytest.raises(TypeError): + LinearImpact(coefficient=0.1, permanent_fraction=0.8) # type: ignore[call-arg] From d3861d4b0dfffb5a7258e5780bc326f35d39c034 Mon Sep 17 00:00:00 2001 From: Stefan Jansen Date: Tue, 8 Sep 2026 16:09:45 -0400 Subject: [PATCH 2/7] Regenerate the v0.1 surface snapshot for the removed field The reviewed public-surface snapshot pins every exported signature, so removing LinearImpact.permanent_fraction moves one line in it. --- tests/compatibility/snapshots/v0.1.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/compatibility/snapshots/v0.1.json b/tests/compatibility/snapshots/v0.1.json index 229746ce..94f01c4f 100644 --- a/tests/compatibility/snapshots/v0.1.json +++ b/tests/compatibility/snapshots/v0.1.json @@ -2696,7 +2696,7 @@ }, "module": "ml4t.backtest.execution.impact", "qualname": "LinearImpact", - "signature": "(coefficient: float = 0.1, permanent_fraction: float = 0.5) -> None" + "signature": "(coefficient: float = 0.1) -> None" }, "ml4t.backtest.execution:NoImpact": { "kind": "class", From eaf5f66da0bac3c7366314b1259e15a95a83ad4a Mon Sep 17 00:00:00 2001 From: Stefan Jansen Date: Tue, 8 Sep 2026 16:49:51 -0400 Subject: [PATCH 3/7] Rebuild the real-strategy evidence against this branch's engine The retained evidence pins `engine: _tree_digest(SOURCE_DIR)`, a SHA over every tracked .py under src/ml4t/backtest, so removing an unread dataclass field marks it stale even though nothing it measures can move. Rebuilt from the retained 2026-09-03 comparison outputs and the frozen input bundles. 17 of 17 required pairs pass and every record is byte-identical to the shipped file: the whole diff is four lines - `generated_at`, the ML4T commit, the engine digest, and the interpreter that built the report. An inert change producing an identical record set is the evidence that it is inert. The corpus builder was deliberately not run. `real_strategy_corpus.py` re-selects the workloads from the current registries rather than re-measuring the retained ones, so running it would silently rescope the audit. It also cannot run today: us_equities_panel has 31 training runs, 166 prediction sets and zero backtest rows, and selection is by validation backtest Sharpe, so it has no rank-1 candidate. --- validation/REAL_STRATEGY_RESULTS.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/validation/REAL_STRATEGY_RESULTS.json b/validation/REAL_STRATEGY_RESULTS.json index 3574b617..5e461c30 100644 --- a/validation/REAL_STRATEGY_RESULTS.json +++ b/validation/REAL_STRATEGY_RESULTS.json @@ -20,7 +20,7 @@ "us_equities_panel": "session date" } }, - "generated_at": "2026-09-03T08:49:07.253544+00:00", + "generated_at": "2026-09-08T20:39:08.460346+00:00", "provenance": { "adapters": { "backtrader": "a456cc3bf9ed6708d239f21ed2c2495a3c19a9a8306634fee24619c2c0484459", @@ -131,12 +131,12 @@ }, "machine": "x86_64", "ml4t": { - "commit": "7034236519cc0a99df6ef34a21d07ec2a81fc87c", + "commit": "85c0291447214730bd3328b14b73eb2f64cf9f2c", "dirty": false, - "engine_source_sha256": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58" + "engine_source_sha256": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836" }, "platform": "Linux-6.8.0-138-generic-x86_64-with-glibc2.39", - "python": "3.12.11" + "python": "3.14.3" }, "records": [ { From ec6f9d72dccd7d765084cc77a933dbc0485cf51b Mon Sep 17 00:00:00 2001 From: Stefan Jansen Date: Tue, 8 Sep 2026 16:58:14 -0400 Subject: [PATCH 4/7] Re-run the synthetic correctness matrix against this branch's engine 66 required pairs pass and 2 stay unsupported, exactly as before, across the four scenario-matrix frameworks in environments built inside this worktree so the matrix exercises this branch's engine and not the sibling checkout's - verified by importing ml4t.backtest in each of the four and checking the path. Ignoring the fields a re-run necessarily moves (timings, digests, runtime identity), every record is equal to the accepted evidence and `release_gate_passed` stays true. --- validation/CORRECTNESS_RESULTS.json | 402 ++++++++++++++-------------- 1 file changed, 201 insertions(+), 201 deletions(-) diff --git a/validation/CORRECTNESS_RESULTS.json b/validation/CORRECTNESS_RESULTS.json index 9296dabe..dabd11bc 100644 --- a/validation/CORRECTNESS_RESULTS.json +++ b/validation/CORRECTNESS_RESULTS.json @@ -63,7 +63,7 @@ "version": "3.1.1" } }, - "generated_at": "2026-09-03T07:11:20.595248+00:00", + "generated_at": "2026-09-08T20:57:27.549815+00:00", "input_policy": { "float_quantum": "0.00000001", "rounding": "ROUND_HALF_EVEN", @@ -704,7 +704,7 @@ "scenario_id": "01" }, "detail": null, - "duration_seconds": 2.427215111005353, + "duration_seconds": 6.153010525973514, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -1361,7 +1361,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -1374,7 +1374,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -2034,7 +2034,7 @@ "scenario_id": "02" }, "detail": null, - "duration_seconds": 2.3356575799989514, + "duration_seconds": 5.373651853995398, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -2691,7 +2691,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "8901a4a7a750c26fb43ceb5d89b4c6ccf9279503da8659b8398cce30d90c8d9c", @@ -2704,7 +2704,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -2861,7 +2861,7 @@ "scenario_id": "03" }, "detail": null, - "duration_seconds": 2.3383967260015197, + "duration_seconds": 5.566838720114902, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -3009,7 +3009,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "3b0720d05e9e5869aa6f01432d17918e2db8c0d80810310e6c39c8bf82d1aee0", @@ -3022,7 +3022,7 @@ }, "input_digest": "02743db0d03a02ec414e579929e5e4729b5f99124ab2a41bb234adf93626f62a", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -3179,7 +3179,7 @@ "scenario_id": "04" }, "detail": null, - "duration_seconds": 2.342229423986282, + "duration_seconds": 4.9017198799410835, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -3327,7 +3327,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "3b0720d05e9e5869aa6f01432d17918e2db8c0d80810310e6c39c8bf82d1aee0", @@ -3340,7 +3340,7 @@ }, "input_digest": "c013a16b8902a5599e53c27dae34849fcf327b4e89ec69d00c951903578f948a", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -4010,7 +4010,7 @@ "scenario_id": "05" }, "detail": null, - "duration_seconds": 2.32796579200658, + "duration_seconds": 5.017531638033688, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -4671,7 +4671,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -4684,7 +4684,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -5354,7 +5354,7 @@ "scenario_id": "06" }, "detail": null, - "duration_seconds": 2.326144679012941, + "duration_seconds": 5.335330817033537, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -6015,7 +6015,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -6028,7 +6028,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -6688,7 +6688,7 @@ "scenario_id": "07" }, "detail": null, - "duration_seconds": 2.3995378440013155, + "duration_seconds": 5.360161849996075, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -7345,7 +7345,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -7358,7 +7358,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -8018,7 +8018,7 @@ "scenario_id": "08" }, "detail": null, - "duration_seconds": 2.3293550700182095, + "duration_seconds": 5.2678728309692815, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -8675,7 +8675,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -8688,7 +8688,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -8892,7 +8892,7 @@ "scenario_id": "09" }, "detail": null, - "duration_seconds": 2.354666574014118, + "duration_seconds": 5.747950149001554, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -9093,7 +9093,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "647d9a4a1a219599288faf756e995322ffee249ad29d3fbb88d3b1859249421a", @@ -9106,7 +9106,7 @@ }, "input_digest": "0857d4181ff37765143cd13fb7b67ead75a163a9ece87f9d258bb436175f2568", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -9367,7 +9367,7 @@ "scenario_id": "10" }, "detail": null, - "duration_seconds": 2.3559224590135273, + "duration_seconds": 5.844140074914321, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -9625,7 +9625,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "27979784dbb2f9dd6cf72c0d89ea956d49003ed83a57ed254cb6a2cbd234b6a5", @@ -9638,7 +9638,7 @@ }, "input_digest": "23496f457ab5fcdf8c02626db8af05c791278cc307dff08599f673c376e9116c", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -10298,7 +10298,7 @@ "scenario_id": "11" }, "detail": null, - "duration_seconds": 2.319062655995367, + "duration_seconds": 5.136880462989211, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -10955,7 +10955,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "8901a4a7a750c26fb43ceb5d89b4c6ccf9279503da8659b8398cce30d90c8d9c", @@ -10968,7 +10968,7 @@ }, "input_digest": "24a69cd2961c5f77332e19aa92432884a792bd64d1e045dac33f1922902e3ba3", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -11172,7 +11172,7 @@ "scenario_id": "12" }, "detail": null, - "duration_seconds": 2.3402914280013647, + "duration_seconds": 5.451229452970438, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -11373,7 +11373,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "15f4500f48791f0c67d7c57f2554d0689a35a6dd71e07a8117de510acf106770", @@ -11386,7 +11386,7 @@ }, "input_digest": "06b9362c086c33e65085233ecbe78d43de5c0f00950eb8b19d6df6e89ba76d3b", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -11533,7 +11533,7 @@ "scenario_id": "13" }, "detail": null, - "duration_seconds": 2.3355851389933378, + "duration_seconds": 5.752892315969802, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -11677,7 +11677,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "647d9a4a1a219599288faf756e995322ffee249ad29d3fbb88d3b1859249421a", @@ -11690,7 +11690,7 @@ }, "input_digest": "8948480a577fa0d6a769f0af879559553b872df5c12ebbdc621237db201f1d99", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -11837,7 +11837,7 @@ "scenario_id": "14" }, "detail": null, - "duration_seconds": 2.3397380849928595, + "duration_seconds": 6.646601879037917, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -11981,7 +11981,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "647d9a4a1a219599288faf756e995322ffee249ad29d3fbb88d3b1859249421a", @@ -11994,7 +11994,7 @@ }, "input_digest": "ea9583aa3a0de9f4e92d22968932fd83ac3e7d6e8d8a3e4f689e59868390c7d2", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -12141,7 +12141,7 @@ "scenario_id": "15" }, "detail": null, - "duration_seconds": 2.3427687360090204, + "duration_seconds": 6.012227750965394, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -12285,7 +12285,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "647d9a4a1a219599288faf756e995322ffee249ad29d3fbb88d3b1859249421a", @@ -12298,7 +12298,7 @@ }, "input_digest": "a11960a1bd3f521902fe84af312597b4c7928f97c2dd5b0b37b898d5a00ce3e6", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -12901,7 +12901,7 @@ "scenario_id": "16" }, "detail": null, - "duration_seconds": 2.40005863897386, + "duration_seconds": 5.857927127974108, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -13501,7 +13501,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "647d9a4a1a219599288faf756e995322ffee249ad29d3fbb88d3b1859249421a", @@ -13514,7 +13514,7 @@ }, "input_digest": "ffd7241a6fbac9130b1d3b499285d0df2610825316987918d110592cbf847c7d", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -47804,7 +47804,7 @@ "scenario_id": "17" }, "detail": null, - "duration_seconds": 2.496446750999894, + "duration_seconds": 6.409847637987696, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -82091,7 +82091,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -82104,7 +82104,7 @@ }, "input_digest": "4fb3be3cba6d7c832eeb1fd8c72523b5260ea67fa5ecf3bceeb8e21256e0f998", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -82764,7 +82764,7 @@ "scenario_id": "01" }, "detail": null, - "duration_seconds": 3.2796498029783834, + "duration_seconds": 8.108664872008376, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -83421,7 +83421,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -83434,7 +83434,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -84094,7 +84094,7 @@ "scenario_id": "02" }, "detail": null, - "duration_seconds": 3.2718792619998567, + "duration_seconds": 8.561968788970262, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -84751,7 +84751,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "8901a4a7a750c26fb43ceb5d89b4c6ccf9279503da8659b8398cce30d90c8d9c", @@ -84764,7 +84764,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -84921,7 +84921,7 @@ "scenario_id": "03" }, "detail": null, - "duration_seconds": 3.283823539997684, + "duration_seconds": 8.515415634959936, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -85069,7 +85069,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "3b0720d05e9e5869aa6f01432d17918e2db8c0d80810310e6c39c8bf82d1aee0", @@ -85082,7 +85082,7 @@ }, "input_digest": "02743db0d03a02ec414e579929e5e4729b5f99124ab2a41bb234adf93626f62a", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -85239,7 +85239,7 @@ "scenario_id": "04" }, "detail": null, - "duration_seconds": 3.2739576989843044, + "duration_seconds": 10.565478472039104, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -85387,7 +85387,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "3b0720d05e9e5869aa6f01432d17918e2db8c0d80810310e6c39c8bf82d1aee0", @@ -85400,7 +85400,7 @@ }, "input_digest": "c013a16b8902a5599e53c27dae34849fcf327b4e89ec69d00c951903578f948a", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -86070,7 +86070,7 @@ "scenario_id": "05" }, "detail": null, - "duration_seconds": 3.301938585995231, + "duration_seconds": 9.401829604059458, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -86731,7 +86731,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -86744,7 +86744,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -86774,7 +86774,7 @@ { "comparison": null, "detail": "Scenario explicitly excludes this framework", - "duration_seconds": 4.305999027565122e-06, + "duration_seconds": 1.3252021744847298e-05, "framework": "vectorbt_oss", "framework_result": null, "ml4t_result": null, @@ -87418,7 +87418,7 @@ "scenario_id": "07" }, "detail": null, - "duration_seconds": 3.489302369998768, + "duration_seconds": 9.609306346974336, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -88075,7 +88075,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -88088,7 +88088,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -88748,7 +88748,7 @@ "scenario_id": "08" }, "detail": null, - "duration_seconds": 3.2756387109984644, + "duration_seconds": 7.823328124010004, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -89405,7 +89405,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -89418,7 +89418,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -89622,7 +89622,7 @@ "scenario_id": "09" }, "detail": null, - "duration_seconds": 3.2700116610212717, + "duration_seconds": 8.161563238012604, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -89823,7 +89823,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "b5511731b0b2768bf962b3ac1d81c21a82f96d04896692f85bef5e5030ce2b1c", @@ -89836,7 +89836,7 @@ }, "input_digest": "0857d4181ff37765143cd13fb7b67ead75a163a9ece87f9d258bb436175f2568", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -90097,7 +90097,7 @@ "scenario_id": "10" }, "detail": null, - "duration_seconds": 3.28076166997198, + "duration_seconds": 6.900826202007011, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -90355,7 +90355,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "27979784dbb2f9dd6cf72c0d89ea956d49003ed83a57ed254cb6a2cbd234b6a5", @@ -90368,7 +90368,7 @@ }, "input_digest": "23496f457ab5fcdf8c02626db8af05c791278cc307dff08599f673c376e9116c", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -91028,7 +91028,7 @@ "scenario_id": "11" }, "detail": null, - "duration_seconds": 3.2806944320036564, + "duration_seconds": 8.65236167004332, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -91685,7 +91685,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "8901a4a7a750c26fb43ceb5d89b4c6ccf9279503da8659b8398cce30d90c8d9c", @@ -91698,7 +91698,7 @@ }, "input_digest": "24a69cd2961c5f77332e19aa92432884a792bd64d1e045dac33f1922902e3ba3", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -91902,7 +91902,7 @@ "scenario_id": "12" }, "detail": null, - "duration_seconds": 3.276426674972754, + "duration_seconds": 8.984811055939645, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -92103,7 +92103,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "85ef0c7c62fc2cf1f841196fce585253cbfa5fe4d3beb0e6c204003994d7f28f", @@ -92116,7 +92116,7 @@ }, "input_digest": "06b9362c086c33e65085233ecbe78d43de5c0f00950eb8b19d6df6e89ba76d3b", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -92263,7 +92263,7 @@ "scenario_id": "13" }, "detail": null, - "duration_seconds": 3.265575686004013, + "duration_seconds": 9.084929016069509, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -92407,7 +92407,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "b5511731b0b2768bf962b3ac1d81c21a82f96d04896692f85bef5e5030ce2b1c", @@ -92420,7 +92420,7 @@ }, "input_digest": "8948480a577fa0d6a769f0af879559553b872df5c12ebbdc621237db201f1d99", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -92567,7 +92567,7 @@ "scenario_id": "14" }, "detail": null, - "duration_seconds": 3.2902293500083033, + "duration_seconds": 8.524136180058122, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -92711,7 +92711,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "b5511731b0b2768bf962b3ac1d81c21a82f96d04896692f85bef5e5030ce2b1c", @@ -92724,7 +92724,7 @@ }, "input_digest": "ea9583aa3a0de9f4e92d22968932fd83ac3e7d6e8d8a3e4f689e59868390c7d2", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -92871,7 +92871,7 @@ "scenario_id": "15" }, "detail": null, - "duration_seconds": 3.2879699780023657, + "duration_seconds": 8.507728499011137, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -93015,7 +93015,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "b5511731b0b2768bf962b3ac1d81c21a82f96d04896692f85bef5e5030ce2b1c", @@ -93028,7 +93028,7 @@ }, "input_digest": "a11960a1bd3f521902fe84af312597b4c7928f97c2dd5b0b37b898d5a00ce3e6", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -93631,7 +93631,7 @@ "scenario_id": "16" }, "detail": null, - "duration_seconds": 3.3276889869885053, + "duration_seconds": 8.698428057949059, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -94231,7 +94231,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "b5511731b0b2768bf962b3ac1d81c21a82f96d04896692f85bef5e5030ce2b1c", @@ -94244,7 +94244,7 @@ }, "input_digest": "ffd7241a6fbac9130b1d3b499285d0df2610825316987918d110592cbf847c7d", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -128534,7 +128534,7 @@ "scenario_id": "17" }, "detail": null, - "duration_seconds": 3.446819780016085, + "duration_seconds": 11.67768614704255, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -162821,7 +162821,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -162834,7 +162834,7 @@ }, "input_digest": "4fb3be3cba6d7c832eeb1fd8c72523b5260ea67fa5ecf3bceeb8e21256e0f998", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -163514,7 +163514,7 @@ "scenario_id": "01" }, "detail": null, - "duration_seconds": 0.196002281998517, + "duration_seconds": 0.7377126889768988, "framework": "backtrader", "framework_result": { "capabilities": { @@ -164193,7 +164193,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -164206,7 +164206,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -164886,7 +164886,7 @@ "scenario_id": "02" }, "detail": null, - "duration_seconds": 0.20314851799048483, + "duration_seconds": 0.591123944032006, "framework": "backtrader", "framework_result": { "capabilities": { @@ -165565,7 +165565,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "8901a4a7a750c26fb43ceb5d89b4c6ccf9279503da8659b8398cce30d90c8d9c", @@ -165578,7 +165578,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -165736,7 +165736,7 @@ "scenario_id": "03" }, "detail": null, - "duration_seconds": 0.18192387197632343, + "duration_seconds": 0.5285431910306215, "framework": "backtrader", "framework_result": { "capabilities": { @@ -165885,7 +165885,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "6a425065c946d387fafc9cb9978bb86d7754e617273669247cf1149fbd23cc03", @@ -165898,7 +165898,7 @@ }, "input_digest": "02743db0d03a02ec414e579929e5e4729b5f99124ab2a41bb234adf93626f62a", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -166056,7 +166056,7 @@ "scenario_id": "04" }, "detail": null, - "duration_seconds": 0.18015228302101605, + "duration_seconds": 0.4309854300227016, "framework": "backtrader", "framework_result": { "capabilities": { @@ -166205,7 +166205,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "6a425065c946d387fafc9cb9978bb86d7754e617273669247cf1149fbd23cc03", @@ -166218,7 +166218,7 @@ }, "input_digest": "c013a16b8902a5599e53c27dae34849fcf327b4e89ec69d00c951903578f948a", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -166908,7 +166908,7 @@ "scenario_id": "05" }, "detail": null, - "duration_seconds": 0.19604376997449435, + "duration_seconds": 0.4313498859992251, "framework": "backtrader", "framework_result": { "capabilities": { @@ -167589,7 +167589,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -167602,7 +167602,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -168292,7 +168292,7 @@ "scenario_id": "06" }, "detail": null, - "duration_seconds": 0.19825449099880643, + "duration_seconds": 0.476837644004263, "framework": "backtrader", "framework_result": { "capabilities": { @@ -168973,7 +168973,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -168986,7 +168986,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -169666,7 +169666,7 @@ "scenario_id": "07" }, "detail": null, - "duration_seconds": 0.19902472800458781, + "duration_seconds": 0.6506100280676037, "framework": "backtrader", "framework_result": { "capabilities": { @@ -170345,7 +170345,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -170358,7 +170358,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -171038,7 +171038,7 @@ "scenario_id": "08" }, "detail": null, - "duration_seconds": 0.1994794640049804, + "duration_seconds": 0.7047724470030516, "framework": "backtrader", "framework_result": { "capabilities": { @@ -171717,7 +171717,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -171730,7 +171730,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -171936,7 +171936,7 @@ "scenario_id": "09" }, "detail": null, - "duration_seconds": 0.20280813300632872, + "duration_seconds": 0.6423015589825809, "framework": "backtrader", "framework_result": { "capabilities": { @@ -172139,7 +172139,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "6a425065c946d387fafc9cb9978bb86d7754e617273669247cf1149fbd23cc03", @@ -172152,7 +172152,7 @@ }, "input_digest": "0857d4181ff37765143cd13fb7b67ead75a163a9ece87f9d258bb436175f2568", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -172416,7 +172416,7 @@ "scenario_id": "10" }, "detail": null, - "duration_seconds": 0.1947569830226712, + "duration_seconds": 0.4728376549901441, "framework": "backtrader", "framework_result": { "capabilities": { @@ -172677,7 +172677,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "6a425065c946d387fafc9cb9978bb86d7754e617273669247cf1149fbd23cc03", @@ -172690,7 +172690,7 @@ }, "input_digest": "23496f457ab5fcdf8c02626db8af05c791278cc307dff08599f673c376e9116c", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -173360,7 +173360,7 @@ "scenario_id": "11" }, "detail": null, - "duration_seconds": 0.20344708301126957, + "duration_seconds": 0.6280102890450507, "framework": "backtrader", "framework_result": { "capabilities": { @@ -174027,7 +174027,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "8901a4a7a750c26fb43ceb5d89b4c6ccf9279503da8659b8398cce30d90c8d9c", @@ -174040,7 +174040,7 @@ }, "input_digest": "24a69cd2961c5f77332e19aa92432884a792bd64d1e045dac33f1922902e3ba3", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -174246,7 +174246,7 @@ "scenario_id": "12" }, "detail": null, - "duration_seconds": 0.19478780799545348, + "duration_seconds": 0.6832183171063662, "framework": "backtrader", "framework_result": { "capabilities": { @@ -174449,7 +174449,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "573f73f81275679129b0b0cda5fdf37aa7c8dadf009a5f5aca55fb7be9f9985e", @@ -174462,7 +174462,7 @@ }, "input_digest": "06b9362c086c33e65085233ecbe78d43de5c0f00950eb8b19d6df6e89ba76d3b", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -174610,7 +174610,7 @@ "scenario_id": "13" }, "detail": null, - "duration_seconds": 0.18443024798762053, + "duration_seconds": 0.46930358500685543, "framework": "backtrader", "framework_result": { "capabilities": { @@ -174755,7 +174755,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "6a425065c946d387fafc9cb9978bb86d7754e617273669247cf1149fbd23cc03", @@ -174768,7 +174768,7 @@ }, "input_digest": "8948480a577fa0d6a769f0af879559553b872df5c12ebbdc621237db201f1d99", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -174916,7 +174916,7 @@ "scenario_id": "14" }, "detail": null, - "duration_seconds": 0.1862446700106375, + "duration_seconds": 0.6980205000145361, "framework": "backtrader", "framework_result": { "capabilities": { @@ -175061,7 +175061,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "6a425065c946d387fafc9cb9978bb86d7754e617273669247cf1149fbd23cc03", @@ -175074,7 +175074,7 @@ }, "input_digest": "ea9583aa3a0de9f4e92d22968932fd83ac3e7d6e8d8a3e4f689e59868390c7d2", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -175222,7 +175222,7 @@ "scenario_id": "15" }, "detail": null, - "duration_seconds": 0.18509420097689144, + "duration_seconds": 0.6522174848942086, "framework": "backtrader", "framework_result": { "capabilities": { @@ -175367,7 +175367,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "6a425065c946d387fafc9cb9978bb86d7754e617273669247cf1149fbd23cc03", @@ -175380,7 +175380,7 @@ }, "input_digest": "a11960a1bd3f521902fe84af312597b4c7928f97c2dd5b0b37b898d5a00ce3e6", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -175992,7 +175992,7 @@ "scenario_id": "16" }, "detail": null, - "duration_seconds": 0.3257330180204008, + "duration_seconds": 0.7310566540108994, "framework": "backtrader", "framework_result": { "capabilities": { @@ -176601,7 +176601,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "6a425065c946d387fafc9cb9978bb86d7754e617273669247cf1149fbd23cc03", @@ -176614,7 +176614,7 @@ }, "input_digest": "ffd7241a6fbac9130b1d3b499285d0df2610825316987918d110592cbf847c7d", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -212104,7 +212104,7 @@ "scenario_id": "17" }, "detail": null, - "duration_seconds": 0.5314568080066238, + "duration_seconds": 1.4868141730548814, "framework": "backtrader", "framework_result": { "capabilities": { @@ -247593,7 +247593,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -247606,7 +247606,7 @@ }, "input_digest": "4fb3be3cba6d7c832eeb1fd8c72523b5260ea67fa5ecf3bceeb8e21256e0f998", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -247981,7 +247981,7 @@ "scenario_id": "01" }, "detail": null, - "duration_seconds": 2.1863154790189583, + "duration_seconds": 4.911450320039876, "framework": "zipline", "framework_result": { "capabilities": { @@ -248357,7 +248357,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -248370,7 +248370,7 @@ }, "input_digest": "1e10efa2535c6df89cf6723633fd6f36e07a7f3449632f4aebaa518c1afade05", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -248745,7 +248745,7 @@ "scenario_id": "02" }, "detail": null, - "duration_seconds": 2.1630376590183005, + "duration_seconds": 5.118009143974632, "framework": "zipline", "framework_result": { "capabilities": { @@ -249121,7 +249121,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "8901a4a7a750c26fb43ceb5d89b4c6ccf9279503da8659b8398cce30d90c8d9c", @@ -249134,7 +249134,7 @@ }, "input_digest": "1e10efa2535c6df89cf6723633fd6f36e07a7f3449632f4aebaa518c1afade05", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -249291,7 +249291,7 @@ "scenario_id": "03" }, "detail": null, - "duration_seconds": 2.1116317419800907, + "duration_seconds": 4.998558622086421, "framework": "zipline", "framework_result": { "capabilities": { @@ -249443,7 +249443,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "16de00f1f72fcdd0199f55a77aaf5fe9c2e99450ae25a5350bd854eebf3896f5", @@ -249456,7 +249456,7 @@ }, "input_digest": "2ade3aa0a65bc5315f2297bc8bbc19b45dfdb8db50e52d56fc85ecb4a82facdd", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -249613,7 +249613,7 @@ "scenario_id": "04" }, "detail": null, - "duration_seconds": 2.1556844250008, + "duration_seconds": 5.3552550280001014, "framework": "zipline", "framework_result": { "capabilities": { @@ -249765,7 +249765,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "16de00f1f72fcdd0199f55a77aaf5fe9c2e99450ae25a5350bd854eebf3896f5", @@ -249778,7 +249778,7 @@ }, "input_digest": "f576ca0b7380cdcf6eb6c99d5b8467e796d9811d6fb1cd66191df1688a948b62", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -250163,7 +250163,7 @@ "scenario_id": "05" }, "detail": null, - "duration_seconds": 2.18179848100408, + "duration_seconds": 4.832481227000244, "framework": "zipline", "framework_result": { "capabilities": { @@ -250543,7 +250543,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -250556,7 +250556,7 @@ }, "input_digest": "1e10efa2535c6df89cf6723633fd6f36e07a7f3449632f4aebaa518c1afade05", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -250941,7 +250941,7 @@ "scenario_id": "06" }, "detail": null, - "duration_seconds": 2.163142125005834, + "duration_seconds": 5.120813203975558, "framework": "zipline", "framework_result": { "capabilities": { @@ -251321,7 +251321,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -251334,7 +251334,7 @@ }, "input_digest": "1e10efa2535c6df89cf6723633fd6f36e07a7f3449632f4aebaa518c1afade05", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -251709,7 +251709,7 @@ "scenario_id": "07" }, "detail": null, - "duration_seconds": 2.1588481070066337, + "duration_seconds": 5.371371270972304, "framework": "zipline", "framework_result": { "capabilities": { @@ -252085,7 +252085,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -252098,7 +252098,7 @@ }, "input_digest": "1e10efa2535c6df89cf6723633fd6f36e07a7f3449632f4aebaa518c1afade05", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -252473,7 +252473,7 @@ "scenario_id": "08" }, "detail": null, - "duration_seconds": 2.138550472998759, + "duration_seconds": 5.22201343101915, "framework": "zipline", "framework_result": { "capabilities": { @@ -252849,7 +252849,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -252862,7 +252862,7 @@ }, "input_digest": "1e10efa2535c6df89cf6723633fd6f36e07a7f3449632f4aebaa518c1afade05", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -253066,7 +253066,7 @@ "scenario_id": "09" }, "detail": null, - "duration_seconds": 2.145863901008852, + "duration_seconds": 6.015038721030578, "framework": "zipline", "framework_result": { "capabilities": { @@ -253271,7 +253271,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "94534fbfeca18ae041b780a18fbfe6884c21c0ce8c84d15d1d8e2096ba59cce7", @@ -253284,7 +253284,7 @@ }, "input_digest": "52803556b6f294e3ad1223585e297f6dab81add8ca8cf22db7ed227dc14fe627", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -253314,7 +253314,7 @@ { "comparison": null, "detail": "Scenario explicitly excludes this framework", - "duration_seconds": 3.250985173508525e-06, + "duration_seconds": 1.0857009328901768e-05, "framework": "zipline", "framework_result": null, "ml4t_result": null, @@ -253673,7 +253673,7 @@ "scenario_id": "11" }, "detail": null, - "duration_seconds": 2.1631252949882764, + "duration_seconds": 5.913450311985798, "framework": "zipline", "framework_result": { "capabilities": { @@ -254049,7 +254049,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "8901a4a7a750c26fb43ceb5d89b4c6ccf9279503da8659b8398cce30d90c8d9c", @@ -254062,7 +254062,7 @@ }, "input_digest": "8a8791a9d96df21d21b4fa14ebf111ea1417ec8424fd87ac9b4b79515ca6c952", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -254266,7 +254266,7 @@ "scenario_id": "12" }, "detail": null, - "duration_seconds": 2.145378993009217, + "duration_seconds": 5.7730012009851635, "framework": "zipline", "framework_result": { "capabilities": { @@ -254471,7 +254471,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "1d86423ea9c4ce2c32fc3b60b01566b4a0fe7f5629ee4cf2bf6899fd4d728f69", @@ -254484,7 +254484,7 @@ }, "input_digest": "ad5a0b9abf3e7e3ae35e06811443d816a29ac95b66e0bc7ce6b49a175f1e5fce", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -254631,7 +254631,7 @@ "scenario_id": "13" }, "detail": null, - "duration_seconds": 2.119013065996114, + "duration_seconds": 5.667329263989814, "framework": "zipline", "framework_result": { "capabilities": { @@ -254779,7 +254779,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "94534fbfeca18ae041b780a18fbfe6884c21c0ce8c84d15d1d8e2096ba59cce7", @@ -254792,7 +254792,7 @@ }, "input_digest": "bc94952cbe0b0c493e4a5599ddcd00a92412a9c8c838ea8e5c02d84d217baf0c", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -254939,7 +254939,7 @@ "scenario_id": "14" }, "detail": null, - "duration_seconds": 2.119811135024065, + "duration_seconds": 5.856720374082215, "framework": "zipline", "framework_result": { "capabilities": { @@ -255087,7 +255087,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "94534fbfeca18ae041b780a18fbfe6884c21c0ce8c84d15d1d8e2096ba59cce7", @@ -255100,7 +255100,7 @@ }, "input_digest": "a0bd681ff924f45192415219403b02e639df271a2aa5987bb9b1e263b2d8c88a", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -255247,7 +255247,7 @@ "scenario_id": "15" }, "detail": null, - "duration_seconds": 2.1282190759957302, + "duration_seconds": 5.197788162040524, "framework": "zipline", "framework_result": { "capabilities": { @@ -255395,7 +255395,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "94534fbfeca18ae041b780a18fbfe6884c21c0ce8c84d15d1d8e2096ba59cce7", @@ -255408,7 +255408,7 @@ }, "input_digest": "ce9cac417809758597595322703b30800145707fa0db44bd7f2cd0775790c114", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -255783,7 +255783,7 @@ "scenario_id": "16" }, "detail": null, - "duration_seconds": 2.5927487679873593, + "duration_seconds": 6.822331433999352, "framework": "zipline", "framework_result": { "capabilities": { @@ -256159,7 +256159,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "94534fbfeca18ae041b780a18fbfe6884c21c0ce8c84d15d1d8e2096ba59cce7", @@ -256172,7 +256172,7 @@ }, "input_digest": "88cfc732983d3fa783e181fd4c97f8d95f7833e20dd03de0c201aaa85e83ca8b", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { @@ -275471,7 +275471,7 @@ "scenario_id": "17" }, "detail": null, - "duration_seconds": 2.9013121819880325, + "duration_seconds": 7.328603642992675, "framework": "zipline", "framework_result": { "capabilities": { @@ -294771,7 +294771,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -294784,7 +294784,7 @@ }, "input_digest": "6fdd33a401576a2adde590f2f8d5986f5893e4663336033ba6c0f8f221d5d526", "ml4t": { - "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", + "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", "dirty": false }, "python": { From d88c85c88843f783d8b874fc4f3d824f375506b3 Mon Sep 17 00:00:00 2001 From: Stefan Jansen Date: Wed, 9 Sep 2026 07:35:17 -0400 Subject: [PATCH 5/7] Re-measure the real-strategy timing evidence for this branch's engine The retained evidence pins the engine tree digest, so removing an unread field marks the timing file stale along with the rest. This re-measures all 17 pairs and regenerates the published tables from the result. The measurement is honest but less precise than the file it replaces, and the reason is the machine rather than the engine. The shipped evidence holds every one of its 34 timed engines under an 8.3% relative 95% CI; this run has five above 8%, worst 54%. Two earlier runs were rejected outright at 76% and 54% worst-case. All three were started on a quiet box and overrun: during this one the load median was 5.0, p90 12.2, with a peak of 108.5. One row is not merely wider. fx_pairs/lean reports an ML4T median of 0.485s (0.423-0.684) where the shipped file says 0.153s (0.152-0.157), moving that published ratio from 5.952x to 1.493x. Nine of its ten samples sit between 0.36 and 0.91 while the same engine measured 0.160s under the vectorbt_pro profile in the same run, and a run on the previous dependency set measured it at ~0.15s. It is contention, not a change in the engine, and it should be re-measured on an idle machine before anyone quotes that number. Removing the field changed no engine output. Every retained ML4T parquet was re-derived and checked against the shipped evidence: of 51 hashes across the 17 pairs, 26 are identical and the other 25 reproduce the shipped value byte for byte when the same frame is written by polars 1.36.1, the version this repository pinned before 0.1.6. Zero unexplained. The hashes moved because 0.1.6 bumped polars to 1.44.1, which encodes string- and null-heavy frames differently; equity.parquet on the smaller workloads encodes identically under both, which is why only some rows moved. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01WfX5GbAHc5EVwdUnRSoUPT --- README.md | 38 +- docs/index.md | 38 +- docs/user-guide/profiles.md | 38 +- validation/METHODOLOGY.md | 38 +- validation/README.md | 38 +- validation/REAL_STRATEGY_PERFORMANCE.json | 1126 ++++++++++----------- 6 files changed, 658 insertions(+), 658 deletions(-) diff --git a/README.md b/README.md index 6fbed871..765ea1a6 100644 --- a/README.md +++ b/README.md @@ -336,25 +336,25 @@ The table reports engine-call wall time for all 17 correctness-passing pairs. Th | Real strategy | Pinned framework | Framework median (95% CI), s | ML4T median (95% CI), s | Framework / ML4T median | |---|---|---:|---:|---:| -| ETF allocation | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.287 (0.286-0.289) | 0.415 (0.414-0.419) | 0.692x | -| ETF allocation | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.171 (0.171-0.174) | 0.415 (0.413-0.417) | 0.412x | -| ETF allocation | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 9.355 (9.303-9.424) | 0.430 (0.426-0.432) | 21.762x | -| ETF allocation | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 3.872 (3.867-3.910) | 0.632 (0.628-0.638) | 6.127x | -| ETF allocation | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.564 (2.487-2.599) | 0.750 (0.749-0.757) | 3.418x | -| CME futures | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.286 (0.284-0.289) | 0.432 (0.429-0.435) | 0.663x | -| CME futures | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 2.495 (2.488-2.526) | 0.429 (0.427-0.433) | 5.812x | -| Crypto perpetual funding | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.801 (2.709-2.891) | 0.657 (0.655-0.661) | 4.266x | -| FX allocation (USD-quoted pairs) | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.283 (0.281-0.286) | 0.146 (0.145-0.147) | 1.939x | -| FX allocation (USD-quoted pairs) | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.139 (0.138-0.141) | 0.146 (0.145-0.147) | 0.952x | -| FX allocation (USD-quoted pairs) | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 0.425 (0.420-0.432) | 0.146 (0.145-0.147) | 2.920x | -| FX allocation (USD-quoted pairs) | [LEAN 18001](https://github.com/QuantConnect/Lean) | 0.913 (0.877-0.953) | 0.153 (0.152-0.157) | 5.952x | -| US equity panel | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.795 (0.787-0.838) | 20.555 (20.486-20.600) | 0.039x | -| US equity panel | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 16.995 (16.960-17.024) | 20.495 (20.453-20.534) | 0.829x | -| US equity panel | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 495.553 (494.227-510.273) | 21.470 (21.386-21.543) | 23.082x | -| US equity panel | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 107.609 (106.834-109.150) | 22.132 (22.082-22.234) | 4.862x | -| US equity panel | [LEAN 18001](https://github.com/QuantConnect/Lean) | 47.683 (47.333-48.015) | 26.368 (26.222-26.473) | 1.808x | - -Measured 2026-09-03 on `Linux-6.8.0-138-generic-x86_64-with-glibc2.39` with 24 logical CPUs. Each side used one isolated warm-up process and ten isolated measured processes. The timer includes only the engine call; it excludes input loading, model inference, target construction, adapter preparation, result extraction, serialization, reporting. These measurements apply only to the named strategy, framework version, frozen input bundle, and machine. Raw samples and bootstrap intervals are retained in [real-strategy performance evidence](https://github.com/ml4t/backtest/blob/main/validation/REAL_STRATEGY_PERFORMANCE.json). +| ETF allocation | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.296 (0.290-0.303) | 0.425 (0.423-0.427) | 0.696x | +| ETF allocation | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.179 (0.178-0.184) | 0.423 (0.421-0.426) | 0.423x | +| ETF allocation | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 9.466 (9.403-9.652) | 0.436 (0.434-0.442) | 21.694x | +| ETF allocation | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 3.929 (3.901-3.979) | 0.623 (0.618-0.631) | 6.302x | +| ETF allocation | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.124 (2.038-2.145) | 0.722 (0.717-0.731) | 2.942x | +| CME futures | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.298 (0.295-0.302) | 0.399 (0.397-0.408) | 0.748x | +| CME futures | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 2.531 (2.504-2.568) | 0.400 (0.398-0.403) | 6.322x | +| Crypto perpetual funding | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.843 (2.725-2.951) | 0.580 (0.574-0.585) | 4.905x | +| FX allocation (USD-quoted pairs) | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.292 (0.291-0.298) | 0.147 (0.145-0.149) | 1.993x | +| FX allocation (USD-quoted pairs) | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.145 (0.143-0.149) | 0.146 (0.146-0.147) | 0.992x | +| FX allocation (USD-quoted pairs) | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 0.429 (0.427-0.432) | 0.147 (0.145-0.148) | 2.926x | +| FX allocation (USD-quoted pairs) | [LEAN 18001](https://github.com/QuantConnect/Lean) | 0.724 (0.702-0.749) | 0.485 (0.423-0.684) | 1.493x | +| US equity panel | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.914 (0.868-1.048) | 15.705 (15.512-16.282) | 0.058x | +| US equity panel | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 19.663 (18.596-26.957) | 18.061 (17.251-19.345) | 1.089x | +| US equity panel | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 549.128 (528.973-570.002) | 16.157 (16.053-16.278) | 33.987x | +| US equity panel | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 110.222 (109.392-111.608) | 16.521 (16.470-16.906) | 6.671x | +| US equity panel | [LEAN 18001](https://github.com/QuantConnect/Lean) | 45.957 (43.851-53.819) | 24.948 (23.623-25.419) | 1.842x | + +Measured 2026-09-09 on `Linux-6.8.0-138-generic-x86_64-with-glibc2.39` with 24 logical CPUs. Each side used one isolated warm-up process and ten isolated measured processes. The timer includes only the engine call; it excludes input loading, model inference, target construction, adapter preparation, result extraction, serialization, reporting. These measurements apply only to the named strategy, framework version, frozen input bundle, and machine. Raw samples and bootstrap intervals are retained in [real-strategy performance evidence](https://github.com/ml4t/backtest/blob/main/validation/REAL_STRATEGY_PERFORMANCE.json). ### Synthetic diagnostic scenarios diff --git a/docs/index.md b/docs/index.md index 17cd3441..409d7ac6 100644 --- a/docs/index.md +++ b/docs/index.md @@ -136,25 +136,25 @@ The table reports engine-call wall time for all 17 correctness-passing pairs. Th | Real strategy | Pinned framework | Framework median (95% CI), s | ML4T median (95% CI), s | Framework / ML4T median | |---|---|---:|---:|---:| -| ETF allocation | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.287 (0.286-0.289) | 0.415 (0.414-0.419) | 0.692x | -| ETF allocation | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.171 (0.171-0.174) | 0.415 (0.413-0.417) | 0.412x | -| ETF allocation | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 9.355 (9.303-9.424) | 0.430 (0.426-0.432) | 21.762x | -| ETF allocation | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 3.872 (3.867-3.910) | 0.632 (0.628-0.638) | 6.127x | -| ETF allocation | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.564 (2.487-2.599) | 0.750 (0.749-0.757) | 3.418x | -| CME futures | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.286 (0.284-0.289) | 0.432 (0.429-0.435) | 0.663x | -| CME futures | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 2.495 (2.488-2.526) | 0.429 (0.427-0.433) | 5.812x | -| Crypto perpetual funding | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.801 (2.709-2.891) | 0.657 (0.655-0.661) | 4.266x | -| FX allocation (USD-quoted pairs) | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.283 (0.281-0.286) | 0.146 (0.145-0.147) | 1.939x | -| FX allocation (USD-quoted pairs) | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.139 (0.138-0.141) | 0.146 (0.145-0.147) | 0.952x | -| FX allocation (USD-quoted pairs) | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 0.425 (0.420-0.432) | 0.146 (0.145-0.147) | 2.920x | -| FX allocation (USD-quoted pairs) | [LEAN 18001](https://github.com/QuantConnect/Lean) | 0.913 (0.877-0.953) | 0.153 (0.152-0.157) | 5.952x | -| US equity panel | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.795 (0.787-0.838) | 20.555 (20.486-20.600) | 0.039x | -| US equity panel | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 16.995 (16.960-17.024) | 20.495 (20.453-20.534) | 0.829x | -| US equity panel | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 495.553 (494.227-510.273) | 21.470 (21.386-21.543) | 23.082x | -| US equity panel | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 107.609 (106.834-109.150) | 22.132 (22.082-22.234) | 4.862x | -| US equity panel | [LEAN 18001](https://github.com/QuantConnect/Lean) | 47.683 (47.333-48.015) | 26.368 (26.222-26.473) | 1.808x | - -Measured 2026-09-03 on `Linux-6.8.0-138-generic-x86_64-with-glibc2.39` with 24 logical CPUs. Each side used one isolated warm-up process and ten isolated measured processes. The timer includes only the engine call; it excludes input loading, model inference, target construction, adapter preparation, result extraction, serialization, reporting. These measurements apply only to the named strategy, framework version, frozen input bundle, and machine. Raw samples and bootstrap intervals are retained in [real-strategy performance evidence](https://github.com/ml4t/backtest/blob/main/validation/REAL_STRATEGY_PERFORMANCE.json). +| ETF allocation | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.296 (0.290-0.303) | 0.425 (0.423-0.427) | 0.696x | +| ETF allocation | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.179 (0.178-0.184) | 0.423 (0.421-0.426) | 0.423x | +| ETF allocation | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 9.466 (9.403-9.652) | 0.436 (0.434-0.442) | 21.694x | +| ETF allocation | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 3.929 (3.901-3.979) | 0.623 (0.618-0.631) | 6.302x | +| ETF allocation | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.124 (2.038-2.145) | 0.722 (0.717-0.731) | 2.942x | +| CME futures | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.298 (0.295-0.302) | 0.399 (0.397-0.408) | 0.748x | +| CME futures | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 2.531 (2.504-2.568) | 0.400 (0.398-0.403) | 6.322x | +| Crypto perpetual funding | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.843 (2.725-2.951) | 0.580 (0.574-0.585) | 4.905x | +| FX allocation (USD-quoted pairs) | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.292 (0.291-0.298) | 0.147 (0.145-0.149) | 1.993x | +| FX allocation (USD-quoted pairs) | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.145 (0.143-0.149) | 0.146 (0.146-0.147) | 0.992x | +| FX allocation (USD-quoted pairs) | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 0.429 (0.427-0.432) | 0.147 (0.145-0.148) | 2.926x | +| FX allocation (USD-quoted pairs) | [LEAN 18001](https://github.com/QuantConnect/Lean) | 0.724 (0.702-0.749) | 0.485 (0.423-0.684) | 1.493x | +| US equity panel | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.914 (0.868-1.048) | 15.705 (15.512-16.282) | 0.058x | +| US equity panel | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 19.663 (18.596-26.957) | 18.061 (17.251-19.345) | 1.089x | +| US equity panel | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 549.128 (528.973-570.002) | 16.157 (16.053-16.278) | 33.987x | +| US equity panel | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 110.222 (109.392-111.608) | 16.521 (16.470-16.906) | 6.671x | +| US equity panel | [LEAN 18001](https://github.com/QuantConnect/Lean) | 45.957 (43.851-53.819) | 24.948 (23.623-25.419) | 1.842x | + +Measured 2026-09-09 on `Linux-6.8.0-138-generic-x86_64-with-glibc2.39` with 24 logical CPUs. Each side used one isolated warm-up process and ten isolated measured processes. The timer includes only the engine call; it excludes input loading, model inference, target construction, adapter preparation, result extraction, serialization, reporting. These measurements apply only to the named strategy, framework version, frozen input bundle, and machine. Raw samples and bootstrap intervals are retained in [real-strategy performance evidence](https://github.com/ml4t/backtest/blob/main/validation/REAL_STRATEGY_PERFORMANCE.json). ### Synthetic diagnostic scenarios diff --git a/docs/user-guide/profiles.md b/docs/user-guide/profiles.md index cea5a254..3dc432fa 100644 --- a/docs/user-guide/profiles.md +++ b/docs/user-guide/profiles.md @@ -194,25 +194,25 @@ The table reports engine-call wall time for all 17 correctness-passing pairs. Th | Real strategy | Pinned framework | Framework median (95% CI), s | ML4T median (95% CI), s | Framework / ML4T median | |---|---|---:|---:|---:| -| ETF allocation | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.287 (0.286-0.289) | 0.415 (0.414-0.419) | 0.692x | -| ETF allocation | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.171 (0.171-0.174) | 0.415 (0.413-0.417) | 0.412x | -| ETF allocation | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 9.355 (9.303-9.424) | 0.430 (0.426-0.432) | 21.762x | -| ETF allocation | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 3.872 (3.867-3.910) | 0.632 (0.628-0.638) | 6.127x | -| ETF allocation | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.564 (2.487-2.599) | 0.750 (0.749-0.757) | 3.418x | -| CME futures | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.286 (0.284-0.289) | 0.432 (0.429-0.435) | 0.663x | -| CME futures | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 2.495 (2.488-2.526) | 0.429 (0.427-0.433) | 5.812x | -| Crypto perpetual funding | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.801 (2.709-2.891) | 0.657 (0.655-0.661) | 4.266x | -| FX allocation (USD-quoted pairs) | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.283 (0.281-0.286) | 0.146 (0.145-0.147) | 1.939x | -| FX allocation (USD-quoted pairs) | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.139 (0.138-0.141) | 0.146 (0.145-0.147) | 0.952x | -| FX allocation (USD-quoted pairs) | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 0.425 (0.420-0.432) | 0.146 (0.145-0.147) | 2.920x | -| FX allocation (USD-quoted pairs) | [LEAN 18001](https://github.com/QuantConnect/Lean) | 0.913 (0.877-0.953) | 0.153 (0.152-0.157) | 5.952x | -| US equity panel | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.795 (0.787-0.838) | 20.555 (20.486-20.600) | 0.039x | -| US equity panel | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 16.995 (16.960-17.024) | 20.495 (20.453-20.534) | 0.829x | -| US equity panel | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 495.553 (494.227-510.273) | 21.470 (21.386-21.543) | 23.082x | -| US equity panel | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 107.609 (106.834-109.150) | 22.132 (22.082-22.234) | 4.862x | -| US equity panel | [LEAN 18001](https://github.com/QuantConnect/Lean) | 47.683 (47.333-48.015) | 26.368 (26.222-26.473) | 1.808x | - -Measured 2026-09-03 on `Linux-6.8.0-138-generic-x86_64-with-glibc2.39` with 24 logical CPUs. Each side used one isolated warm-up process and ten isolated measured processes. The timer includes only the engine call; it excludes input loading, model inference, target construction, adapter preparation, result extraction, serialization, reporting. These measurements apply only to the named strategy, framework version, frozen input bundle, and machine. Raw samples and bootstrap intervals are retained in [real-strategy performance evidence](https://github.com/ml4t/backtest/blob/main/validation/REAL_STRATEGY_PERFORMANCE.json). +| ETF allocation | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.296 (0.290-0.303) | 0.425 (0.423-0.427) | 0.696x | +| ETF allocation | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.179 (0.178-0.184) | 0.423 (0.421-0.426) | 0.423x | +| ETF allocation | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 9.466 (9.403-9.652) | 0.436 (0.434-0.442) | 21.694x | +| ETF allocation | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 3.929 (3.901-3.979) | 0.623 (0.618-0.631) | 6.302x | +| ETF allocation | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.124 (2.038-2.145) | 0.722 (0.717-0.731) | 2.942x | +| CME futures | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.298 (0.295-0.302) | 0.399 (0.397-0.408) | 0.748x | +| CME futures | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 2.531 (2.504-2.568) | 0.400 (0.398-0.403) | 6.322x | +| Crypto perpetual funding | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.843 (2.725-2.951) | 0.580 (0.574-0.585) | 4.905x | +| FX allocation (USD-quoted pairs) | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.292 (0.291-0.298) | 0.147 (0.145-0.149) | 1.993x | +| FX allocation (USD-quoted pairs) | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.145 (0.143-0.149) | 0.146 (0.146-0.147) | 0.992x | +| FX allocation (USD-quoted pairs) | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 0.429 (0.427-0.432) | 0.147 (0.145-0.148) | 2.926x | +| FX allocation (USD-quoted pairs) | [LEAN 18001](https://github.com/QuantConnect/Lean) | 0.724 (0.702-0.749) | 0.485 (0.423-0.684) | 1.493x | +| US equity panel | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.914 (0.868-1.048) | 15.705 (15.512-16.282) | 0.058x | +| US equity panel | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 19.663 (18.596-26.957) | 18.061 (17.251-19.345) | 1.089x | +| US equity panel | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 549.128 (528.973-570.002) | 16.157 (16.053-16.278) | 33.987x | +| US equity panel | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 110.222 (109.392-111.608) | 16.521 (16.470-16.906) | 6.671x | +| US equity panel | [LEAN 18001](https://github.com/QuantConnect/Lean) | 45.957 (43.851-53.819) | 24.948 (23.623-25.419) | 1.842x | + +Measured 2026-09-09 on `Linux-6.8.0-138-generic-x86_64-with-glibc2.39` with 24 logical CPUs. Each side used one isolated warm-up process and ten isolated measured processes. The timer includes only the engine call; it excludes input loading, model inference, target construction, adapter preparation, result extraction, serialization, reporting. These measurements apply only to the named strategy, framework version, frozen input bundle, and machine. Raw samples and bootstrap intervals are retained in [real-strategy performance evidence](https://github.com/ml4t/backtest/blob/main/validation/REAL_STRATEGY_PERFORMANCE.json). ### Synthetic diagnostic scenarios diff --git a/validation/METHODOLOGY.md b/validation/METHODOLOGY.md index ec928c5c..83e08e12 100644 --- a/validation/METHODOLOGY.md +++ b/validation/METHODOLOGY.md @@ -380,25 +380,25 @@ The table reports engine-call wall time for all 17 correctness-passing pairs. Th | Real strategy | Pinned framework | Framework median (95% CI), s | ML4T median (95% CI), s | Framework / ML4T median | |---|---|---:|---:|---:| -| ETF allocation | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.287 (0.286-0.289) | 0.415 (0.414-0.419) | 0.692x | -| ETF allocation | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.171 (0.171-0.174) | 0.415 (0.413-0.417) | 0.412x | -| ETF allocation | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 9.355 (9.303-9.424) | 0.430 (0.426-0.432) | 21.762x | -| ETF allocation | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 3.872 (3.867-3.910) | 0.632 (0.628-0.638) | 6.127x | -| ETF allocation | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.564 (2.487-2.599) | 0.750 (0.749-0.757) | 3.418x | -| CME futures | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.286 (0.284-0.289) | 0.432 (0.429-0.435) | 0.663x | -| CME futures | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 2.495 (2.488-2.526) | 0.429 (0.427-0.433) | 5.812x | -| Crypto perpetual funding | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.801 (2.709-2.891) | 0.657 (0.655-0.661) | 4.266x | -| FX allocation (USD-quoted pairs) | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.283 (0.281-0.286) | 0.146 (0.145-0.147) | 1.939x | -| FX allocation (USD-quoted pairs) | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.139 (0.138-0.141) | 0.146 (0.145-0.147) | 0.952x | -| FX allocation (USD-quoted pairs) | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 0.425 (0.420-0.432) | 0.146 (0.145-0.147) | 2.920x | -| FX allocation (USD-quoted pairs) | [LEAN 18001](https://github.com/QuantConnect/Lean) | 0.913 (0.877-0.953) | 0.153 (0.152-0.157) | 5.952x | -| US equity panel | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.795 (0.787-0.838) | 20.555 (20.486-20.600) | 0.039x | -| US equity panel | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 16.995 (16.960-17.024) | 20.495 (20.453-20.534) | 0.829x | -| US equity panel | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 495.553 (494.227-510.273) | 21.470 (21.386-21.543) | 23.082x | -| US equity panel | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 107.609 (106.834-109.150) | 22.132 (22.082-22.234) | 4.862x | -| US equity panel | [LEAN 18001](https://github.com/QuantConnect/Lean) | 47.683 (47.333-48.015) | 26.368 (26.222-26.473) | 1.808x | - -Measured 2026-09-03 on `Linux-6.8.0-138-generic-x86_64-with-glibc2.39` with 24 logical CPUs. Each side used one isolated warm-up process and ten isolated measured processes. The timer includes only the engine call; it excludes input loading, model inference, target construction, adapter preparation, result extraction, serialization, reporting. These measurements apply only to the named strategy, framework version, frozen input bundle, and machine. Raw samples and bootstrap intervals are retained in [real-strategy performance evidence](https://github.com/ml4t/backtest/blob/main/validation/REAL_STRATEGY_PERFORMANCE.json). +| ETF allocation | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.296 (0.290-0.303) | 0.425 (0.423-0.427) | 0.696x | +| ETF allocation | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.179 (0.178-0.184) | 0.423 (0.421-0.426) | 0.423x | +| ETF allocation | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 9.466 (9.403-9.652) | 0.436 (0.434-0.442) | 21.694x | +| ETF allocation | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 3.929 (3.901-3.979) | 0.623 (0.618-0.631) | 6.302x | +| ETF allocation | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.124 (2.038-2.145) | 0.722 (0.717-0.731) | 2.942x | +| CME futures | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.298 (0.295-0.302) | 0.399 (0.397-0.408) | 0.748x | +| CME futures | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 2.531 (2.504-2.568) | 0.400 (0.398-0.403) | 6.322x | +| Crypto perpetual funding | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.843 (2.725-2.951) | 0.580 (0.574-0.585) | 4.905x | +| FX allocation (USD-quoted pairs) | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.292 (0.291-0.298) | 0.147 (0.145-0.149) | 1.993x | +| FX allocation (USD-quoted pairs) | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.145 (0.143-0.149) | 0.146 (0.146-0.147) | 0.992x | +| FX allocation (USD-quoted pairs) | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 0.429 (0.427-0.432) | 0.147 (0.145-0.148) | 2.926x | +| FX allocation (USD-quoted pairs) | [LEAN 18001](https://github.com/QuantConnect/Lean) | 0.724 (0.702-0.749) | 0.485 (0.423-0.684) | 1.493x | +| US equity panel | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.914 (0.868-1.048) | 15.705 (15.512-16.282) | 0.058x | +| US equity panel | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 19.663 (18.596-26.957) | 18.061 (17.251-19.345) | 1.089x | +| US equity panel | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 549.128 (528.973-570.002) | 16.157 (16.053-16.278) | 33.987x | +| US equity panel | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 110.222 (109.392-111.608) | 16.521 (16.470-16.906) | 6.671x | +| US equity panel | [LEAN 18001](https://github.com/QuantConnect/Lean) | 45.957 (43.851-53.819) | 24.948 (23.623-25.419) | 1.842x | + +Measured 2026-09-09 on `Linux-6.8.0-138-generic-x86_64-with-glibc2.39` with 24 logical CPUs. Each side used one isolated warm-up process and ten isolated measured processes. The timer includes only the engine call; it excludes input loading, model inference, target construction, adapter preparation, result extraction, serialization, reporting. These measurements apply only to the named strategy, framework version, frozen input bundle, and machine. Raw samples and bootstrap intervals are retained in [real-strategy performance evidence](https://github.com/ml4t/backtest/blob/main/validation/REAL_STRATEGY_PERFORMANCE.json). ### Synthetic diagnostic scenarios diff --git a/validation/README.md b/validation/README.md index 6eac8d82..808cc6d3 100644 --- a/validation/README.md +++ b/validation/README.md @@ -56,25 +56,25 @@ The table reports engine-call wall time for all 17 correctness-passing pairs. Th | Real strategy | Pinned framework | Framework median (95% CI), s | ML4T median (95% CI), s | Framework / ML4T median | |---|---|---:|---:|---:| -| ETF allocation | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.287 (0.286-0.289) | 0.415 (0.414-0.419) | 0.692x | -| ETF allocation | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.171 (0.171-0.174) | 0.415 (0.413-0.417) | 0.412x | -| ETF allocation | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 9.355 (9.303-9.424) | 0.430 (0.426-0.432) | 21.762x | -| ETF allocation | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 3.872 (3.867-3.910) | 0.632 (0.628-0.638) | 6.127x | -| ETF allocation | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.564 (2.487-2.599) | 0.750 (0.749-0.757) | 3.418x | -| CME futures | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.286 (0.284-0.289) | 0.432 (0.429-0.435) | 0.663x | -| CME futures | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 2.495 (2.488-2.526) | 0.429 (0.427-0.433) | 5.812x | -| Crypto perpetual funding | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.801 (2.709-2.891) | 0.657 (0.655-0.661) | 4.266x | -| FX allocation (USD-quoted pairs) | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.283 (0.281-0.286) | 0.146 (0.145-0.147) | 1.939x | -| FX allocation (USD-quoted pairs) | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.139 (0.138-0.141) | 0.146 (0.145-0.147) | 0.952x | -| FX allocation (USD-quoted pairs) | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 0.425 (0.420-0.432) | 0.146 (0.145-0.147) | 2.920x | -| FX allocation (USD-quoted pairs) | [LEAN 18001](https://github.com/QuantConnect/Lean) | 0.913 (0.877-0.953) | 0.153 (0.152-0.157) | 5.952x | -| US equity panel | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.795 (0.787-0.838) | 20.555 (20.486-20.600) | 0.039x | -| US equity panel | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 16.995 (16.960-17.024) | 20.495 (20.453-20.534) | 0.829x | -| US equity panel | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 495.553 (494.227-510.273) | 21.470 (21.386-21.543) | 23.082x | -| US equity panel | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 107.609 (106.834-109.150) | 22.132 (22.082-22.234) | 4.862x | -| US equity panel | [LEAN 18001](https://github.com/QuantConnect/Lean) | 47.683 (47.333-48.015) | 26.368 (26.222-26.473) | 1.808x | - -Measured 2026-09-03 on `Linux-6.8.0-138-generic-x86_64-with-glibc2.39` with 24 logical CPUs. Each side used one isolated warm-up process and ten isolated measured processes. The timer includes only the engine call; it excludes input loading, model inference, target construction, adapter preparation, result extraction, serialization, reporting. These measurements apply only to the named strategy, framework version, frozen input bundle, and machine. Raw samples and bootstrap intervals are retained in [real-strategy performance evidence](https://github.com/ml4t/backtest/blob/main/validation/REAL_STRATEGY_PERFORMANCE.json). +| ETF allocation | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.296 (0.290-0.303) | 0.425 (0.423-0.427) | 0.696x | +| ETF allocation | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.179 (0.178-0.184) | 0.423 (0.421-0.426) | 0.423x | +| ETF allocation | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 9.466 (9.403-9.652) | 0.436 (0.434-0.442) | 21.694x | +| ETF allocation | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 3.929 (3.901-3.979) | 0.623 (0.618-0.631) | 6.302x | +| ETF allocation | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.124 (2.038-2.145) | 0.722 (0.717-0.731) | 2.942x | +| CME futures | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.298 (0.295-0.302) | 0.399 (0.397-0.408) | 0.748x | +| CME futures | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 2.531 (2.504-2.568) | 0.400 (0.398-0.403) | 6.322x | +| Crypto perpetual funding | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.843 (2.725-2.951) | 0.580 (0.574-0.585) | 4.905x | +| FX allocation (USD-quoted pairs) | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.292 (0.291-0.298) | 0.147 (0.145-0.149) | 1.993x | +| FX allocation (USD-quoted pairs) | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.145 (0.143-0.149) | 0.146 (0.146-0.147) | 0.992x | +| FX allocation (USD-quoted pairs) | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 0.429 (0.427-0.432) | 0.147 (0.145-0.148) | 2.926x | +| FX allocation (USD-quoted pairs) | [LEAN 18001](https://github.com/QuantConnect/Lean) | 0.724 (0.702-0.749) | 0.485 (0.423-0.684) | 1.493x | +| US equity panel | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.914 (0.868-1.048) | 15.705 (15.512-16.282) | 0.058x | +| US equity panel | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 19.663 (18.596-26.957) | 18.061 (17.251-19.345) | 1.089x | +| US equity panel | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 549.128 (528.973-570.002) | 16.157 (16.053-16.278) | 33.987x | +| US equity panel | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 110.222 (109.392-111.608) | 16.521 (16.470-16.906) | 6.671x | +| US equity panel | [LEAN 18001](https://github.com/QuantConnect/Lean) | 45.957 (43.851-53.819) | 24.948 (23.623-25.419) | 1.842x | + +Measured 2026-09-09 on `Linux-6.8.0-138-generic-x86_64-with-glibc2.39` with 24 logical CPUs. Each side used one isolated warm-up process and ten isolated measured processes. The timer includes only the engine call; it excludes input loading, model inference, target construction, adapter preparation, result extraction, serialization, reporting. These measurements apply only to the named strategy, framework version, frozen input bundle, and machine. Raw samples and bootstrap intervals are retained in [real-strategy performance evidence](https://github.com/ml4t/backtest/blob/main/validation/REAL_STRATEGY_PERFORMANCE.json). ### Synthetic diagnostic scenarios diff --git a/validation/REAL_STRATEGY_PERFORMANCE.json b/validation/REAL_STRATEGY_PERFORMANCE.json index 751238b6..dcc9df58 100644 --- a/validation/REAL_STRATEGY_PERFORMANCE.json +++ b/validation/REAL_STRATEGY_PERFORMANCE.json @@ -1,5 +1,5 @@ { - "correctness_evidence_generated_at": "2026-09-03T08:49:07.253544+00:00", + "correctness_evidence_generated_at": "2026-09-08T20:39:08.460346+00:00", "environment": { "cpu_count": 24, "frameworks": { @@ -99,9 +99,9 @@ "platform": "Linux-6.8.0-138-generic-x86_64-with-glibc2.39", "processor": "x86_64" }, - "generated_at": "2026-09-03T11:44:14.344493+00:00", + "generated_at": "2026-09-09T07:52:45.726726+00:00", "provenance": { - "ml4t_engine_source_sha256": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", + "ml4t_engine_source_sha256": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", "sources": { "backtrader": "a456cc3bf9ed6708d239f21ed2c2495a3c19a9a8306634fee24619c2c0484459", "benchmark": "99164392057a3ed3810c4dbe23a9c6084eb30f1553c92eb3a54f5d61e8d9b344", @@ -122,55 +122,55 @@ "framework": "vectorbt_pro", "framework_engine": { "ci_95_seconds": [ - 0.28554552848800085, - 0.2885417409997899 + 0.2898634900338948, + 0.3031502824742347 ], - "maximum_seconds": 0.29064874499454163, - "median_seconds": 0.2872375610168092, - "minimum_seconds": 0.2836474619980436, + "maximum_seconds": 0.30958262097556144, + "median_seconds": 0.29565684648696333, + "minimum_seconds": 0.2839555769460276, "output_identity": { "equity.parquet": "9bef5099c36b4a61b32670d19340ebb9f4adba07c63359a5c31a345ad51d1cd6", "fills.parquet": "698baf228da467fcce287f6f7da4903b3421d2649b181e3905a3681905251ffd" }, "samples_seconds": [ - 0.2878881780197844, - 0.2846226939873304, - 0.2836474619980436, - 0.2882649439852685, - 0.286586944013834, - 0.2885417409997899, - 0.29064874499454163, - 0.28637371701188385, - 0.28858046399545856, - 0.2864683629886713 + 0.2839555769460276, + 0.29754665098153055, + 0.30875391396693885, + 0.2898634900338948, + 0.29427445004694164, + 0.30958262097556144, + 0.28754499496426433, + 0.297039242926985, + 0.29956078401301056, + 0.29280188400298357 ] }, - "framework_to_ml4t_median_ratio": 0.6924827859284183, + "framework_to_ml4t_median_ratio": 0.6964254353452846, "input_bundle_sha256": "01f38079ce47821a5379d3769e86f4a2170b88033108153bfc0f928698e946db", "ml4t_engine": { "ci_95_seconds": [ - 0.4141692244884325, - 0.41945260000647977 + 0.4228568209800869, + 0.4267608530353755 ], - "maximum_seconds": 0.4208305799984373, - "median_seconds": 0.4147937925008591, - "minimum_seconds": 0.41231122802128084, + "maximum_seconds": 0.4280163530493155, + "median_seconds": 0.4245348194963299, + "minimum_seconds": 0.4179053269326687, "output_identity": { "equity.parquet": "30c2d39d1165342a599754cfd6ae76019d212f753ab49c837895c9f6ce942339", - "fills.parquet": "2219d69d7d36fc654a61cf3044e7db0dc641bfa4923a847b39afdc41671171f4", + "fills.parquet": "904a72fd66278fbb84c164e799c8dfc3d826bb1efdb0c3a4132f72203039368f", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 0.42046853801002726, - 0.4144462959957309, - 0.41231122802128084, - 0.41445882100379094, - 0.41389215298113413, - 0.41595029999734834, - 0.41429151402553543, - 0.41945260000647977, - 0.4208305799984373, - 0.4151287639979273 + 0.42326817102730274, + 0.4280163530493155, + 0.4238164779962972, + 0.4179053269326687, + 0.42702835402451456, + 0.4267608530353755, + 0.42525316099636257, + 0.42380960297305137, + 0.4219040389871225, + 0.4260525139980018 ] } }, @@ -180,55 +180,55 @@ "framework": "vectorbt_oss", "framework_engine": { "ci_95_seconds": [ - 0.17068579950137064, - 0.17357376401196234 + 0.1775521255331114, + 0.1837882164400071 ], - "maximum_seconds": 0.18489615400903858, - "median_seconds": 0.17132284450053703, - "minimum_seconds": 0.16843955099466257, + "maximum_seconds": 0.19256116298492998, + "median_seconds": 0.17892681644298136, + "minimum_seconds": 0.17572793900035322, "output_identity": { "equity.parquet": "9bef5099c36b4a61b32670d19340ebb9f4adba07c63359a5c31a345ad51d1cd6", "fills.parquet": "a563dc47e59cc8d1ecf49a490f1e83842e5c4ca67a6a56adb411a58eb0842646" }, "samples_seconds": [ - 0.18489615400903858, - 0.17261791799683124, - 0.17124448300455697, - 0.17079768699477427, - 0.17080065800109878, - 0.16843955099466257, - 0.1705709410016425, - 0.1714012059965171, - 0.1738385669887066, - 0.17357376401196234 + 0.17865553696174175, + 0.1823599310591817, + 0.19256116298492998, + 0.18627417890820652, + 0.17919809592422098, + 0.17660772404633462, + 0.17849652701988816, + 0.18130225397180766, + 0.1775777789298445, + 0.17572793900035322 ] }, - "framework_to_ml4t_median_ratio": 0.4124410450618539, + "framework_to_ml4t_median_ratio": 0.4226539101217617, "input_bundle_sha256": "01f38079ce47821a5379d3769e86f4a2170b88033108153bfc0f928698e946db", "ml4t_engine": { "ci_95_seconds": [ - 0.41297478799242526, - 0.41699278698069975 + 0.4205878140637651, + 0.4261049178894609 ], - "maximum_seconds": 0.4207736090174876, - "median_seconds": 0.4153874754993012, - "minimum_seconds": 0.40992282700608484, + "maximum_seconds": 0.46772890200372785, + "median_seconds": 0.4233412069734186, + "minimum_seconds": 0.41968671698123217, "output_identity": { "equity.parquet": "30c2d39d1165342a599754cfd6ae76019d212f753ab49c837895c9f6ce942339", - "fills.parquet": "2219d69d7d36fc654a61cf3044e7db0dc641bfa4923a847b39afdc41671171f4", + "fills.parquet": "904a72fd66278fbb84c164e799c8dfc3d826bb1efdb0c3a4132f72203039368f", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 0.4166069460043218, - 0.4207736090174876, - 0.4155321999860462, - 0.41386474401224405, - 0.41524275101255625, - 0.4170354550005868, - 0.40992282700608484, - 0.4125243329908699, - 0.41699278698069975, - 0.41297478799242526 + 0.4261049178894609, + 0.4232753689866513, + 0.42807674198411405, + 0.42236656905151904, + 0.4234070449601859, + 0.41968671698123217, + 0.46772890200372785, + 0.4239907630253583, + 0.4205878140637651, + 0.41986053506843746 ] } }, @@ -238,56 +238,56 @@ "framework": "backtrader", "framework_engine": { "ci_95_seconds": [ - 9.30285160850326, - 9.423639220010955 + 9.40296464401763, + 9.652323030517437 ], - "maximum_seconds": 9.45949614199344, - "median_seconds": 9.355300096503925, - "minimum_seconds": 9.132323172001634, + "maximum_seconds": 9.915694114053622, + "median_seconds": 9.466379411518574, + "minimum_seconds": 9.381777568953112, "output_identity": { "equity.parquet": "194818b08af3ceac17f2ff8b143d76184b63f95a92ab2db1ee4a13b903843d92", "fills.parquet": "8fbc351395431fcaf3d986c1d72011520394fa202db5b25ea2a79f49f4c013ab", "rejected_orders.parquet": "29756624602e47c7f667e995e892fd158828381420d570a8a8a65d23d84d617b" }, "samples_seconds": [ - 9.425851352018071, - 9.262009288999252, - 9.352195490006125, - 9.342917869973462, - 9.34369392800727, - 9.132323172001634, - 9.389201070007402, - 9.358404703001725, - 9.45949614199344, - 9.423639220010955 + 9.381777568953112, + 9.521463896031491, + 9.451141929952428, + 9.544299868983217, + 9.783182165003382, + 9.446272782981396, + 9.40296464401763, + 9.915694114053622, + 9.388862106017768, + 9.48161689308472 ] }, - "framework_to_ml4t_median_ratio": 21.7615755934312, + "framework_to_ml4t_median_ratio": 21.69442659019447, "input_bundle_sha256": "01f38079ce47821a5379d3769e86f4a2170b88033108153bfc0f928698e946db", "ml4t_engine": { "ci_95_seconds": [ - 0.42605314050160814, - 0.431600633499329 + 0.4337827219860628, + 0.44239338394254446 ], - "maximum_seconds": 0.4326717059884686, - "median_seconds": 0.4298999425082002, - "minimum_seconds": 0.42367077799281105, + "maximum_seconds": 0.48105644597671926, + "median_seconds": 0.4363507545203902, + "minimum_seconds": 0.4325518360128626, "output_identity": { "equity.parquet": "c0d9b87df7d1d490134679c571414ee3f5d5dc96cba2fd81e18c24c920ee9b60", - "fills.parquet": "11fee07c68fa9550b8c9bfa8590940e33a0247db7640c280043b6eddcaf7fa12", - "rejected_orders.parquet": "12abf1f224c27116ad669c98592fc527880414b152e921de2fb362eb8c3815d3" + "fills.parquet": "7dac5c83214c8d03368049095db934a284d7f89b46e240ccb9896cce90bcfd1b", + "rejected_orders.parquet": "cc78f48b47cfd5253b16288011b7811dc5e702ada6927580bdfa2353a0d05ea8" }, "samples_seconds": [ - 0.43116882801405154, - 0.42472128602094017, - 0.42367077799281105, - 0.4305817059939727, - 0.4320324389846064, - 0.4311954760050867, - 0.4273849949822761, - 0.42921817902242765, - 0.42622934401151724, - 0.4326717059884686 + 0.4325518360128626, + 0.4347515449626371, + 0.4328138990094885, + 0.4454394350759685, + 0.44239338394254446, + 0.48105644597671926, + 0.4352340119658038, + 0.4381953509291634, + 0.43746749707497656, + 0.4346389549318701 ] } }, @@ -297,55 +297,55 @@ "framework": "zipline", "framework_engine": { "ci_95_seconds": [ - 3.8670725979900453, - 3.9098115700180642 + 3.900748510961421, + 3.978974065510556 ], - "maximum_seconds": 3.952663065982051, - "median_seconds": 3.8715068249875912, - "minimum_seconds": 3.851871683000354, + "maximum_seconds": 4.040062285028398, + "median_seconds": 3.9290318089770153, + "minimum_seconds": 3.8906444440362975, "output_identity": { "equity.parquet": "e67ccdf71043cd216a9d8ea6f96f6cc0eba564907919ef1b867bce4726e36b31", "fills.parquet": "611b2ca3adc8a24484dcee08d5fba4c9219c0c0c6f4b27d701db51ea98390572" }, "samples_seconds": [ - 3.871085986989783, - 3.952663065982051, - 3.9098115700180642, - 3.8673573849955574, - 3.851871683000354, - 3.8719276629853994, - 3.8767027010035235, - 3.870405462977942, - 3.912462295993464, - 3.8637397330021486 + 3.9297679970040917, + 3.8906444440362975, + 3.958755716914311, + 3.928295620949939, + 3.9091620430117473, + 4.001497296965681, + 3.956450834055431, + 3.900748510961421, + 4.040062285028398, + 3.8994944429723546 ] }, - "framework_to_ml4t_median_ratio": 6.126579592244658, + "framework_to_ml4t_median_ratio": 6.302161740050979, "input_bundle_sha256": "01f38079ce47821a5379d3769e86f4a2170b88033108153bfc0f928698e946db", "ml4t_engine": { "ci_95_seconds": [ - 0.6284003740001936, - 0.6377887904964155 + 0.6176329150330275, + 0.6314187130774371 ], - "maximum_seconds": 0.6476017300155945, - "median_seconds": 0.6319197794946376, - "minimum_seconds": 0.6249592270178255, + "maximum_seconds": 0.6397651789011434, + "median_seconds": 0.6234419189859182, + "minimum_seconds": 0.6130480390274897, "output_identity": { "equity.parquet": "578498185c7abd3b869578c8492937a09ce6cf8904ea64650375587fd397952a", - "fills.parquet": "b068c42a1d63409086e4cc638aec586818f9025f661897e7bdd34e5e4d8f9c6f", + "fills.parquet": "d3daa2754b23c49802344748cd082d98920a97014694b1af1e40055ea4a4a76b", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 0.6333068659878336, - 0.6297633819922339, - 0.6313362790097017, - 0.6249592270178255, - 0.6297856899909675, - 0.6422707150049973, - 0.6325032799795736, - 0.6476017300155945, - 0.6270150580094196, - 0.6363518029975239 + 0.6130480390274897, + 0.6229738619877025, + 0.6201595860766247, + 0.6176329150330275, + 0.6239099759841338, + 0.6154187310021371, + 0.6294018810149282, + 0.6397651789011434, + 0.6262302270624787, + 0.6366071990923956 ] } }, @@ -355,56 +355,56 @@ "framework": "lean", "framework_engine": { "ci_95_seconds": [ - 2.4874195760057773, - 2.599079799008905 + 2.0379864280112088, + 2.1450753634562716 ], - "maximum_seconds": 2.7125714069989044, - "median_seconds": 2.564114402513951, - "minimum_seconds": 2.47689789001015, + "maximum_seconds": 2.1784407789818943, + "median_seconds": 2.124103998474311, + "minimum_seconds": 1.9973060969496146, "output_identity": { - "equity.parquet": "906fd1b8d49ebc67b790dee610327360d55e4cacb77b34c5732b8a3c124fe398", - "fills.parquet": "e0891a195392d6b92fa5956a58c4a57a84b62b8ae11e48dca6a617f2fa126a18", + "equity.parquet": "0a644fee4073605011407b32f7cc1443360ce939e00602c2ab357d2d2f797baa", + "fills.parquet": "a24ebc61f9cb814d9e786d3256f64634d90122d475ed5d1c2dbf75668adcf536", "rejected_orders.parquet": "9e7aedba072cbcd23432976f03fb6edef656da961cd2e73dbd75188842b29c36" }, "samples_seconds": [ - 2.56353892700281, - 2.564689878025092, - 2.5824199889902957, - 2.5214746879937593, - 2.47689789001015, - 2.482074404018931, - 2.6281440810125787, - 2.5700155170052312, - 2.4874195760057773, - 2.7125714069989044 + 2.1399313759757206, + 2.1502193509368226, + 2.1784407789818943, + 2.122473064926453, + 1.9973060969496146, + 2.1257349320221692, + 2.1412360890535638, + 2.023386694956571, + 2.1169478789670393, + 2.0379864280112088 ] }, - "framework_to_ml4t_median_ratio": 3.418485618498456, + "framework_to_ml4t_median_ratio": 2.941765083662065, "input_bundle_sha256": "01f38079ce47821a5379d3769e86f4a2170b88033108153bfc0f928698e946db", "ml4t_engine": { "ci_95_seconds": [ - 0.7486901020165533, - 0.7566314754949417 + 0.7172836170066148, + 0.731231466983445 ], - "maximum_seconds": 0.7671177280135453, - "median_seconds": 0.750073186980444, - "minimum_seconds": 0.7482178049976937, + "maximum_seconds": 0.8213526360923424, + "median_seconds": 0.7220508565660566, + "minimum_seconds": 0.7120782670099288, "output_identity": { "equity.parquet": "9d2ae671c05691680de1a947edc07b5805d3d17c4fffdb0d9cb002908d5d9189", - "fills.parquet": "6dabab0285fe7d1d41c6008f9db1910fd0eb5117ce132cda2eac13fa47581b18", + "fills.parquet": "e8903f6676292f1021bd420c2d530322639bdb2f9534e5130f4ae8b41a04ddd0", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 0.75504609500058, - 0.7502520319831092, - 0.749083264003275, - 0.7518141379987355, - 0.7614488129911479, - 0.7498943419777788, - 0.7482178049976937, - 0.7483703329926357, - 0.7671177280135453, - 0.7486901020165533 + 0.7172836170066148, + 0.7216209170874208, + 0.7165142330341041, + 0.720603023073636, + 0.7320678359828889, + 0.7120782670099288, + 0.7224807960446924, + 0.8213526360923424, + 0.731231466983445, + 0.7233765489654616 ] } }, @@ -414,55 +414,55 @@ "framework": "vectorbt_pro", "framework_engine": { "ci_95_seconds": [ - 0.28389174649782944, - 0.2887275889952434 + 0.29537657205946743, + 0.3015630249865353 ], - "maximum_seconds": 0.29045845798100345, - "median_seconds": 0.28636373148765415, - "minimum_seconds": 0.28267808200325817, + "maximum_seconds": 0.32689427491277456, + "median_seconds": 0.2982153939665295, + "minimum_seconds": 0.28120043396484107, "output_identity": { "equity.parquet": "40991bd7b1641af22425d7bac85980f54f37d25e460f56710a7994eeaf5669c0", "fills.parquet": "6348edba773d059a5417470a3fca1378a6853909266e833b99dc6ec0160b3b78" }, "samples_seconds": [ - 0.28724599999259226, - 0.2858317520003766, - 0.2839527069882024, - 0.28267808200325817, - 0.2902091779978946, - 0.2844167379953433, - 0.2877347480098251, - 0.2833667550003156, - 0.2868957109749317, - 0.29045845798100345 + 0.2943801870569587, + 0.2991350869415328, + 0.300370148033835, + 0.3015630249865353, + 0.28120043396484107, + 0.30228271801024675, + 0.29537657205946743, + 0.32689427491277456, + 0.2972102720523253, + 0.29729570099152625 ] }, - "framework_to_ml4t_median_ratio": 0.6631588833815962, + "framework_to_ml4t_median_ratio": 0.7483014571382702, "input_bundle_sha256": "c7191027f550ef1be0c9528dac08e7c2bf6a76c86d935f593efeb1ad8b628c39", "ml4t_engine": { "ci_95_seconds": [ - 0.428688713509473, - 0.43454156002553646 + 0.39727354305796325, + 0.40751517401076853 ], - "maximum_seconds": 0.4363564869854599, - "median_seconds": 0.43181768149952404, - "minimum_seconds": 0.42630503099644557, + "maximum_seconds": 0.4130425000330433, + "median_seconds": 0.39852306997636333, + "minimum_seconds": 0.3969760109903291, "output_identity": { "equity.parquet": "b61097a9c1c8635ccc9278db28aa955a69c16bac261515fa6ccff06211ca45f6", - "fills.parquet": "fc54ddad09f939944a9070e8a4215089d0dcded8adcc3f6872e78ecec7c9102c", - "rejected_orders.parquet": "f63d7bb35fa856811f134b23dcda951357aa799d3ff565c8416a0a0794b731e0" + "fills.parquet": "0cea5189115b3c7ec680d7f73895278b83ff097e863324bd944c9272d794edbb", + "rejected_orders.parquet": "2b4e500b98a08814aa8b42e0693c7bca7076cf9006444f5b26600bb9669647a7" }, "samples_seconds": [ - 0.4363564869854599, - 0.4286542210029438, - 0.43411476400797255, - 0.43559188302606344, - 0.42630503099644557, - 0.43349123702500947, - 0.4287232060160022, - 0.43276859901379794, - 0.4286969269742258, - 0.43086676398525015 + 0.39840562804602087, + 0.3969760109903291, + 0.4130425000330433, + 0.41184384003281593, + 0.39726358104962856, + 0.39727354305796325, + 0.3986405119067058, + 0.4056334370980039, + 0.40318650798872113, + 0.39740371506195515 ] } }, @@ -472,56 +472,56 @@ "framework": "backtrader", "framework_engine": { "ci_95_seconds": [ - 2.487967457011109, - 2.526018163494882 + 2.5037397670093924, + 2.5677278629736975 ], - "maximum_seconds": 2.569449374015676, - "median_seconds": 2.494809443000122, - "minimum_seconds": 2.481621830986114, + "maximum_seconds": 2.5709340639878064, + "median_seconds": 2.5305959385004826, + "minimum_seconds": 2.4771206950535998, "output_identity": { "equity.parquet": "8f7ec2015c441a7d7723116aadcc7b30bdabb8f30fa4ea108fa96cfff6dcf075", "fills.parquet": "e9888baac855ce576654e66159958eceb70833876507b7228737c7d49a9f8d0b", "rejected_orders.parquet": "28769b824e4cce25769e28dd6764b6ae4e66b1fad0b70e695eba96fa27eb3cef" }, "samples_seconds": [ - 2.569449374015676, - 2.4946508139837533, - 2.487967457011109, - 2.483746792015154, - 2.5549371949746273, - 2.497099132015137, - 2.4949680720164906, - 2.5185832470015157, - 2.4939123849908356, - 2.481621830986114 + 2.4822507250355557, + 2.5709340639878064, + 2.535963068017736, + 2.558035208028741, + 2.5707766979467124, + 2.5677278629736975, + 2.4771206950535998, + 2.525228808983229, + 2.5243962380336598, + 2.5069715139688924 ] }, - "framework_to_ml4t_median_ratio": 5.811638815571466, + "framework_to_ml4t_median_ratio": 6.321791119536858, "input_bundle_sha256": "c7191027f550ef1be0c9528dac08e7c2bf6a76c86d935f593efeb1ad8b628c39", "ml4t_engine": { "ci_95_seconds": [ - 0.4273611745011294, - 0.4325851899920963 + 0.39844792702933773, + 0.40330312796868384 ], - "maximum_seconds": 0.43512895799358375, - "median_seconds": 0.4292781300027855, - "minimum_seconds": 0.4252439269912429, + "maximum_seconds": 0.4117315619951114, + "median_seconds": 0.4002973035094328, + "minimum_seconds": 0.39581716002430767, "output_identity": { "equity.parquet": "2478697a24a7b812e5e84dda67fa5fdbb3dc27455f9bb1b28491f082e96ff501", - "fills.parquet": "0ad9d59fde347bc5cf76ab5387b479668bbc64228e1ca2091df56122e693aae3", + "fills.parquet": "4cc366af96c4484a6e84db18f6367b89fabb4d98784b883ef1cde7bcc766eb78", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 0.4277158589975443, - 0.4333903399819974, - 0.4297198849963024, - 0.43135667699971236, - 0.4325851899920963, - 0.42789013299625367, - 0.43512895799358375, - 0.4288363750092685, - 0.4268322160060052, - 0.4252439269912429 + 0.4001411640783772, + 0.3998129490064457, + 0.4034680559998378, + 0.39581716002430767, + 0.39708290505222976, + 0.40045344294048846, + 0.40080470603425056, + 0.40330312796868384, + 0.39886940200813115, + 0.4117315619951114 ] } }, @@ -531,56 +531,56 @@ "framework": "lean", "framework_engine": { "ci_95_seconds": [ - 2.7094629269995494, - 2.8912153329874855 + 2.7245894219959155, + 2.950796814984642 ], - "maximum_seconds": 2.9968422400124837, - "median_seconds": 2.801038935489487, - "minimum_seconds": 2.68302350200247, + "maximum_seconds": 3.229695840040222, + "median_seconds": 2.842760041996371, + "minimum_seconds": 2.703325308044441, "output_identity": { - "equity.parquet": "9fb5d72364e039e75a28a1dcb77c06082418d698cac2467de8dc0c84371d2762", - "fills.parquet": "93ca6c8936e944e5f077e5b9b272a5467bac5ae828650029fc198dacd33ef46b", + "equity.parquet": "7175e01ac24e001ebcc1ae56855f198cd5e4f07d92a376e0361a314ffd766cb8", + "fills.parquet": "c095672f9b5d9bcafdce2f003cb93952c118e5b1eede9db853b1a39b282fcad8", "rejected_orders.parquet": "9e7aedba072cbcd23432976f03fb6edef656da961cd2e73dbd75188842b29c36" }, "samples_seconds": [ - 2.8912153329874855, - 2.9968422400124837, - 2.6896367039880715, - 2.68302350200247, - 2.911805715993978, - 2.7292891500110272, - 2.873639104014728, - 2.839817078987835, - 2.762260791991139, - 2.7145858370058704 + 2.836501998011954, + 2.7245894219959155, + 2.927007616031915, + 2.849018085980788, + 2.708629651926458, + 2.81544593104627, + 3.0387790360255167, + 2.703325308044441, + 2.8628145939437672, + 3.229695840040222 ] }, - "framework_to_ml4t_median_ratio": 4.266156698399411, + "framework_to_ml4t_median_ratio": 4.904815190790282, "input_bundle_sha256": "2acee3c8542043266e6f9c0dfc9434c95b4469ef6fcaf0556efc569fc9721cdd", "ml4t_engine": { "ci_95_seconds": [ - 0.6548837659938727, - 0.6614908079791348 + 0.5742685570148751, + 0.5846358869457617 ], - "maximum_seconds": 0.6643680910055991, - "median_seconds": 0.6565719764912501, - "minimum_seconds": 0.6494209709926508, + "maximum_seconds": 0.5878496560035273, + "median_seconds": 0.5795855565229431, + "minimum_seconds": 0.5710250299889594, "output_identity": { "equity.parquet": "0b98b8b65e7cc6885a27f9ffff6268d6d15a82b613ab06e4e57bbf96805ef1c9", - "fills.parquet": "b19ec75bb792f9109356b3127ea8580935932b00a9fb9dae92a970f643d74705", + "fills.parquet": "57998fb15bb342363f4046982dc9a4a267778875314687991cbdcca1750060d5", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 0.6614908079791348, - 0.6643680910055991, - 0.6551232409838121, - 0.656845068995608, - 0.6584545439982321, - 0.6643094899773132, - 0.6494209709926508, - 0.6562988839868922, - 0.6561191559885629, - 0.6536483759991825 + 0.5823395039187744, + 0.5781347859883681, + 0.5742685570148751, + 0.5878496560035273, + 0.5710250299889594, + 0.586932269972749, + 0.5741957860300317, + 0.5832866409327835, + 0.5800491119734943, + 0.5791220010723919 ] } }, @@ -590,55 +590,55 @@ "framework": "vectorbt_pro", "framework_engine": { "ci_95_seconds": [ - 0.2809414380026283, - 0.28584351851895917 + 0.29131866194074973, + 0.29836336406879127 ], - "maximum_seconds": 0.2883088879752904, - "median_seconds": 0.28271306499664206, - "minimum_seconds": 0.2783307459903881, + "maximum_seconds": 0.2995811679866165, + "median_seconds": 0.2923883109469898, + "minimum_seconds": 0.28654769202694297, "output_identity": { "equity.parquet": "c667f7404ce6368f5fa73e165414980287d8943b3ac2abc2d434d6db14786f6f", "fills.parquet": "9c7d40cd1f2cb24ce6288084615f64696192c391547568f60116807dfbc0758f" }, "samples_seconds": [ - 0.28796336802770384, - 0.2824393089977093, - 0.2829868209955748, - 0.2802182379818987, - 0.28161942298174836, - 0.2883088879752904, - 0.2838454349839594, - 0.2837236690102145, - 0.28166463802335784, - 0.2783307459903881 + 0.29372634703759104, + 0.2906005069380626, + 0.2994727100012824, + 0.29216110694687814, + 0.2995811679866165, + 0.29836336406879127, + 0.29203681694343686, + 0.28654769202694297, + 0.29151771403849125, + 0.2926155149471015 ] }, - "framework_to_ml4t_median_ratio": 1.9393634353319569, + "framework_to_ml4t_median_ratio": 1.9929977750544168, "input_bundle_sha256": "48922296cea03bfc9867a9c4e1a1d352a0bd54c0b48671e3ca8d1fdddb95d762", "ml4t_engine": { "ci_95_seconds": [ - 0.14505504499538802, - 0.14667728898348287 + 0.14515049802139401, + 0.14949007402174175 ], - "maximum_seconds": 0.1509846999833826, - "median_seconds": 0.1457762170030037, - "minimum_seconds": 0.1421222960052546, + "maximum_seconds": 0.1572854929836467, + "median_seconds": 0.14670779596781358, + "minimum_seconds": 0.14445729297585785, "output_identity": { "equity.parquet": "d2ab479f54be94a77da5d6b5edcc4e019c985b2edf134c2082df9b90e8bbddf9", - "fills.parquet": "7fa36302b8f71391ffa0470deaea103d02f2c1278f70177815e3e48d3c11810e", + "fills.parquet": "a2cea17b1aa5c792685c78c97d3700d19e3a12abf03f1ef53224d41403a2ff1d", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 0.14598925798782147, - 0.14513368799816817, - 0.1457257329893764, - 0.14582670101663098, - 0.14505504499538802, - 0.14503437900566496, - 0.1509846999833826, - 0.1421222960052546, - 0.1475023700040765, - 0.14667728898348287 + 0.1572854929836467, + 0.1485288980184123, + 0.14949007402174175, + 0.14477453206200153, + 0.1495220789220184, + 0.14649349998217076, + 0.14682617702055722, + 0.14445729297585785, + 0.14658941491506994, + 0.14515049802139401 ] } }, @@ -648,55 +648,55 @@ "framework": "vectorbt_oss", "framework_engine": { "ci_95_seconds": [ - 0.13754021801287308, - 0.1413268009928288 + 0.14266996848164126, + 0.1487769139930606 ], - "maximum_seconds": 0.14422649898915552, - "median_seconds": 0.1387957935075974, - "minimum_seconds": 0.135567949997494, + "maximum_seconds": 0.15749915002379566, + "median_seconds": 0.14506802847608924, + "minimum_seconds": 0.14058335695881397, "output_identity": { "equity.parquet": "116edf23b5f28d364e865907b69c84cadcd46cc7094764b77b38c3be4a0643da", "fills.parquet": "43cc7f5cde82d078b5620d532fd35a704d4372a28dad196eaa1b0cbe7a4f697f" }, "samples_seconds": [ - 0.13840279701980762, - 0.139568018988939, - 0.14308558299671859, - 0.14422649898915552, - 0.13754021801287308, - 0.135567949997494, - 0.14002962899394333, - 0.1391887899953872, - 0.13838270198903047, - 0.13701783001306467 + 0.1454549189656973, + 0.15207163500599563, + 0.1440028470242396, + 0.1446811379864812, + 0.14133708993904293, + 0.15749915002379566, + 0.1468806309858337, + 0.14548219298012555, + 0.14364409004338086, + 0.14058335695881397 ] }, - "framework_to_ml4t_median_ratio": 0.9517668155264412, + "framework_to_ml4t_median_ratio": 0.991908834557975, "input_bundle_sha256": "48922296cea03bfc9867a9c4e1a1d352a0bd54c0b48671e3ca8d1fdddb95d762", "ml4t_engine": { "ci_95_seconds": [ - 0.1447887455142336, - 0.14715092899859883 + 0.14572928700363263, + 0.14740288199391216 ], - "maximum_seconds": 0.14833555501536466, - "median_seconds": 0.14582962049462367, - "minimum_seconds": 0.1442177559947595, + "maximum_seconds": 0.15113295998889953, + "median_seconds": 0.1462513725273311, + "minimum_seconds": 0.14430116501171142, "output_identity": { "equity.parquet": "91fc93f96be91701932992950807a28c8d0e70bf96b36419171ddfd3f7e3e4ff", - "fills.parquet": "a3059de769d2114484cd120ec9e56b70404c50a187b7056c8bb37db8478a0134", + "fills.parquet": "d526ec929f9291d9fc1d1842d7337fe24b0b5216a9f479a4107c70834c4ff3ee", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 0.1457435579795856, - 0.14518950000638142, - 0.14591568300966173, - 0.1461662469955627, - 0.14833555501536466, - 0.14602854999247938, - 0.14438799102208577, - 0.14827330800471827, - 0.145086723001441, - 0.1442177559947595 + 0.1465634040068835, + 0.15113295998889953, + 0.1463286679936573, + 0.14529098197817802, + 0.14430116501171142, + 0.1475988090969622, + 0.14740288199391216, + 0.14616759202908725, + 0.14617407706100494, + 0.1459647179581225 ] } }, @@ -706,56 +706,56 @@ "framework": "backtrader", "framework_engine": { "ci_95_seconds": [ - 0.4199030729942024, - 0.43193558798520826 + 0.42688500799704343, + 0.43185874505434185 ], - "maximum_seconds": 0.44734891699044965, - "median_seconds": 0.42490502599684987, - "minimum_seconds": 0.4180895620083902, + "maximum_seconds": 0.43671419203747064, + "median_seconds": 0.42911646398715675, + "minimum_seconds": 0.424340242985636, "output_identity": { "equity.parquet": "8356c90186bb5ee467d3c3c1ee473acecbb89bdb0b36c9dec8ba35bf68b315ef", "fills.parquet": "4d1f97749b28f76c2736ba9df05fdc5aee46409054cd3e43cede9144a03ab83c", "rejected_orders.parquet": "28769b824e4cce25769e28dd6764b6ae4e66b1fad0b70e695eba96fa27eb3cef" }, "samples_seconds": [ - 0.43223666402627714, - 0.4180895620083902, - 0.42251148002105765, - 0.4269157150120009, - 0.4292930939991493, - 0.42289433698169887, - 0.41964370498317294, - 0.4199030729942024, - 0.43193558798520826, - 0.44734891699044965 + 0.43195584998466074, + 0.42853852291591465, + 0.42924601095728576, + 0.424340242985636, + 0.42525947699323297, + 0.43671419203747064, + 0.42688500799704343, + 0.42898691701702774, + 0.43185874505434185, + 0.4304329639999196 ] }, - "framework_to_ml4t_median_ratio": 2.919662876838548, + "framework_to_ml4t_median_ratio": 2.926069991683106, "input_bundle_sha256": "48922296cea03bfc9867a9c4e1a1d352a0bd54c0b48671e3ca8d1fdddb95d762", "ml4t_engine": { "ci_95_seconds": [ - 0.14518085900635924, - 0.14739416650263593 + 0.14473605947569013, + 0.14847667794674635 ], - "maximum_seconds": 0.1548990169831086, - "median_seconds": 0.1455322220135713, - "minimum_seconds": 0.14440724899759516, + "maximum_seconds": 0.15094391000457108, + "median_seconds": 0.14665283646900207, + "minimum_seconds": 0.14166140498127788, "output_identity": { "equity.parquet": "8303060ba6c52232569452705febab5a6eb308b7f98bc82985bd06bfc56c28fb", - "fills.parquet": "25df0967710f939d4b2b3cd3f3637f7448a1aa8a8d526a5b61b5c83571e84844", + "fills.parquet": "82f617a7584707dc1075534e0a981e689481e7e2ebb78bcff043154d5b6189c6", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 0.14497113300603814, - 0.14818612701492384, - 0.14440724899759516, - 0.14708193400292657, - 0.1548990169831086, - 0.14545863002422266, - 0.14539058500668034, - 0.1453318799904082, - 0.14560581400291994, - 0.146602205990348 + 0.15094391000457108, + 0.1433839739765972, + 0.14166140498127788, + 0.14665489294566214, + 0.14695709093939513, + 0.14608814497478306, + 0.14847667794674635, + 0.14583439810667187, + 0.146650779992342, + 0.14965950103942305 ] } }, @@ -765,56 +765,56 @@ "framework": "lean", "framework_engine": { "ci_95_seconds": [ - 0.8773026489943732, - 0.9533085440052673 + 0.701544511015527, + 0.7492961169918999 ], - "maximum_seconds": 0.9673503069789149, - "median_seconds": 0.9130055215064203, - "minimum_seconds": 0.8551066289946903, + "maximum_seconds": 1.564707361976616, + "median_seconds": 0.7243583634844981, + "minimum_seconds": 0.6867168369935825, "output_identity": { - "equity.parquet": "cb6aa497553239db6c7414156ab932186c47974c5891ada4bea96e7a83bd2061", - "fills.parquet": "98a2d8e111408518d4b3d4b40573415f67c09c7f55767057a50e4689637b664b", + "equity.parquet": "0d2751a207b9fee6360548c61c7d4f8c5975384a639575adcdc632ac562bffe7", + "fills.parquet": "b57996e6b2cc4b261de38866c0c64878c1e5220b750de80b04564767080a52d9", "rejected_orders.parquet": "9e7aedba072cbcd23432976f03fb6edef656da961cd2e73dbd75188842b29c36" }, "samples_seconds": [ - 0.906807599007152, - 0.9192034440056887, - 0.9479660390061326, - 0.9010869449994061, - 0.9673503069789149, - 0.8773026489943732, - 0.9605227510037366, - 0.8676749280130025, - 0.8551066289946903, - 0.9533085440052673 + 0.757213662029244, + 0.7092427669558674, + 0.7306411049794406, + 0.7492961169918999, + 0.7189480880042538, + 0.6952812260715291, + 1.564707361976616, + 0.6867168369935825, + 0.7297686389647424, + 0.701544511015527 ] }, - "framework_to_ml4t_median_ratio": 5.951507252400165, + "framework_to_ml4t_median_ratio": 1.4931222714917318, "input_bundle_sha256": "48922296cea03bfc9867a9c4e1a1d352a0bd54c0b48671e3ca8d1fdddb95d762", "ml4t_engine": { "ci_95_seconds": [ - 0.1521106895088451, - 0.15719534500385635 + 0.42328740895027295, + 0.6840006644488312 ], - "maximum_seconds": 0.15817101701395586, - "median_seconds": 0.1534074450028129, - "minimum_seconds": 0.15100426398566924, + "maximum_seconds": 0.9133699170779437, + "median_seconds": 0.4851299704751, + "minimum_seconds": 0.1788689080858603, "output_identity": { "equity.parquet": "20c7470a3770a852d56bb4790ba22e21010d061f2aa077b328ffbbdca1651cc2", - "fills.parquet": "fd2e8f60f73c28d5f252bdc1ae72eacc2165c793f5d32e43612741e6d783dd30", + "fills.parquet": "630cd7753bf97bcdde690e05b1065e960f520d22a5622fd0ca4f7f26835a054f", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 0.1515475710039027, - 0.15719534500385635, - 0.15100426398566924, - 0.15350587500142865, - 0.15817101701395586, - 0.1526738080137875, - 0.15500060000340454, - 0.15330901500419714, - 0.15251966202049516, - 0.15789884398691356 + 0.9133699170779437, + 0.3653755859704688, + 0.43247588991653174, + 0.4890607090201229, + 0.6654060049913824, + 0.4751350450096652, + 0.1788689080858603, + 0.6074143589939922, + 0.4811992319300771, + 0.7605869699036703 ] } }, @@ -824,55 +824,55 @@ "framework": "vectorbt_pro", "framework_engine": { "ci_95_seconds": [ - 0.7874248115113005, - 0.8377640749968123 + 0.8683688449673355, + 1.0478205374674872 ], - "maximum_seconds": 0.9157754240150098, - "median_seconds": 0.7949095129879424, - "minimum_seconds": 0.7838948410062585, + "maximum_seconds": 3.69801092101261, + "median_seconds": 0.9140142824617215, + "minimum_seconds": 0.8518763720057905, "output_identity": { "equity.parquet": "533030a43e7dcfd5961b898ad78139632b57cdc36952680fac5dbf651e664885", "fills.parquet": "12fe4de7986d8803f6de85dab2089777823ade9300fda127d62aec08b68d1f72" }, "samples_seconds": [ - 0.8102761670015752, - 0.7883659350045491, - 0.7855645200179424, - 0.7892851030046586, - 0.7982651509810239, - 0.8129221879935358, - 0.7838948410062585, - 0.9157754240150098, - 0.791553874994861, - 0.8652519829920493 + 1.036827608011663, + 0.9456142620183527, + 3.69801092101261, + 0.8683688449673355, + 0.8518763720057905, + 0.8800299750873819, + 1.0207581669092178, + 0.8659621649421751, + 0.8824143029050902, + 1.0748829080257565 ] }, - "framework_to_ml4t_median_ratio": 0.03867173809347579, + "framework_to_ml4t_median_ratio": 0.05820060065762738, "input_bundle_sha256": "02926d8a7f1c1f5b4855b2393d1763885288ef64950d5cf521ca96c61f454d88", "ml4t_engine": { "ci_95_seconds": [ - 20.48596853449999, - 20.599761563003995 + 15.51166491303593, + 16.282336122530978 ], - "maximum_seconds": 20.648501724994276, - "median_seconds": 20.555308661496383, - "minimum_seconds": 20.425600546004716, + "maximum_seconds": 16.826184634002857, + "median_seconds": 15.704550677037332, + "minimum_seconds": 15.441914070979692, "output_identity": { "equity.parquet": "974f900cf826b55a2cda697c7f8b11abb3c526fa472c5a406cdb7b8c7d0613c0", - "fills.parquet": "cc1907552c0ebe1b8b74aa8f72ed39c27903eed9e34e0f70f2ca14ee3fe7a3d7", - "rejected_orders.parquet": "64ef01bac600740a590295d52b543d6deadf6b3c64dcda1af141873ae097d4fb" + "fills.parquet": "923752318482ad571f2d677a6ae1440448200b6cd87616264deb95a9a31b7d9c", + "rejected_orders.parquet": "4222d93b23310ba3c189de88d51ef83d28b54fb7f4a09b95e46ea94f8ad58e56" }, "samples_seconds": [ - 20.569528984982753, - 20.622427879017778, - 20.449230501020793, - 20.648501724994276, - 20.522706567979185, - 20.541088338010013, - 20.586456601013197, - 20.57709524699021, - 20.507462484994903, - 20.425600546004716 + 15.624226039974019, + 15.51166491303593, + 15.591948464047164, + 15.461720133083872, + 15.928092801012099, + 15.784875314100645, + 16.636579444049858, + 16.826184634002857, + 16.26835355896037, + 15.441914070979692 ] } }, @@ -882,55 +882,55 @@ "framework": "vectorbt_oss", "framework_engine": { "ci_95_seconds": [ - 16.959977449994767, - 17.023569879005663 + 18.59645750594791, + 26.957320575020276 ], - "maximum_seconds": 17.07916622198536, - "median_seconds": 16.9949149099848, - "minimum_seconds": 16.94968985399464, + "maximum_seconds": 31.171922648092732, + "median_seconds": 19.663315193960443, + "minimum_seconds": 17.92101247503888, "output_identity": { "equity.parquet": "3af99a56f5f6366c769907b955bd752be34ba56d59ae475667ee12482c6ed23e", "fills.parquet": "374d0949b1a63984f6fee5c20699a67c8337d13bc89f25a81d9e7529e206d2c4" }, "samples_seconds": [ - 17.042154588008998, - 16.993152696988545, - 17.00498517000233, - 17.01882042098441, - 17.07916622198536, - 16.950593157991534, - 16.959977449994767, - 16.991588705976028, - 16.94968985399464, - 16.996677122981055 + 27.598887030035257, + 18.59645750594791, + 19.16582464403473, + 18.41297702305019, + 17.92101247503888, + 19.394220146001317, + 19.93241024191957, + 31.171922648092732, + 26.957320575020276, + 24.028911806992255 ] }, - "framework_to_ml4t_median_ratio": 0.8292416699730313, + "framework_to_ml4t_median_ratio": 1.088702419710214, "input_bundle_sha256": "02926d8a7f1c1f5b4855b2393d1763885288ef64950d5cf521ca96c61f454d88", "ml4t_engine": { "ci_95_seconds": [ - 20.453040241001872, - 20.533734439013642 + 17.25126317399554, + 19.34457851044135 ], - "maximum_seconds": 20.610721355013084, - "median_seconds": 20.49452593299793, - "minimum_seconds": 20.434713395981817, + "maximum_seconds": 20.485390056972392, + "median_seconds": 18.061239543487318, + "minimum_seconds": 17.061426870059222, "output_identity": { - "equity.parquet": "26fbf3b10249580d4c8b6eefbd8591d20fa54140217b3ad65301c6779816260a", - "fills.parquet": "87c09726609b8a908b71b68c2a294e0d6b3cbe4f2a0f5a9b0b4840538a78571b", - "rejected_orders.parquet": "b8fd2976a15d14c33fcb387284a6292dcd8c349f0c292cbfb2c0fd74169e652c" + "equity.parquet": "9a820fbc8f125ccce82789572667ed58120140a531b18d5b3e162ec9b241fed8", + "fills.parquet": "a61d4d9a4a7781bc7d0d8d800aae715becae0a3901fc13566385e4fdf70f7379", + "rejected_orders.parquet": "c9ea02a0d5fdc7867b5c507fa2dafb5984c2d734678b22abc0098a433f4b56b1" }, "samples_seconds": [ - 20.434713395981817, - 20.453107789013302, - 20.489535972010344, - 20.554611566010863, - 20.512857312016422, - 20.532295659999363, - 20.610721355013084, - 20.4572258219996, - 20.448854660004145, - 20.499515893985517 + 19.0856910609873, + 17.865553354029544, + 17.09299683792051, + 18.056999841006473, + 19.004881568951532, + 20.485390056972392, + 19.68427545193117, + 17.25126317399554, + 17.061426870059222, + 18.065479245968163 ] } }, @@ -940,56 +940,56 @@ "framework": "backtrader", "framework_engine": { "ci_95_seconds": [ - 494.2269169654901, - 510.27303914300865 + 528.9725945310201, + 570.0017928635352 ], - "maximum_seconds": 531.350485374016, - "median_seconds": 495.55252874150756, - "minimum_seconds": 492.39570217599976, + "maximum_seconds": 590.6841153809801, + "median_seconds": 549.1275352675002, + "minimum_seconds": 521.1836836599978, "output_identity": { "equity.parquet": "d4500a220d756773171dc588722b82c57cc1c7948670c2f0e41fde3862778b58", "fills.parquet": "7f3d118ca01063450d37d9e70ed6aa4ce5b6a0d975aa1b279723f516484f77b0", "rejected_orders.parquet": "28769b824e4cce25769e28dd6764b6ae4e66b1fad0b70e695eba96fa27eb3cef" }, "samples_seconds": [ - 494.49598994798725, - 514.874948451994, - 494.6423118210223, - 510.27303914300865, - 493.9578439829929, - 501.6122114500031, - 494.3053281689936, - 531.350485374016, - 496.4627456619928, - 492.39570217599976 + 550.0999343920266, + 590.6841153809801, + 588.4049604580505, + 553.6098145579454, + 548.1551361429738, + 551.59862526902, + 542.9992017649347, + 528.9725945310201, + 521.1836836599978, + 527.8734635281144 ] }, - "framework_to_ml4t_median_ratio": 23.08159898786381, + "framework_to_ml4t_median_ratio": 33.98695175413825, "input_bundle_sha256": "02926d8a7f1c1f5b4855b2393d1763885288ef64950d5cf521ca96c61f454d88", "ml4t_engine": { "ci_95_seconds": [ - 21.38583242200548, - 21.54328417198849 + 16.052770198031794, + 16.277987660025246 ], - "maximum_seconds": 21.643897917994764, - "median_seconds": 21.46959268298815, - "minimum_seconds": 21.35507860200596, + "maximum_seconds": 16.432149116997607, + "median_seconds": 16.15701046801405, + "minimum_seconds": 15.759885281091556, "output_identity": { - "equity.parquet": "59159ec6ab718fc43048968a5d232c82dfb322c5f45899c212e14481c3e99773", - "fills.parquet": "bfae63fd1eacd4d7dee69d27809fb0b79c84c576d5dce15364aaf05a2ac2f936", + "equity.parquet": "69d7e17ff26305c728572cc82e019c28e29c950de01ce51940e205965de245f4", + "fills.parquet": "e5a8c855ed69fdb9a024dd8408bea72892d617f147c8e465bc9e5a1b2fab0265", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 21.419378380989656, - 21.365852688002633, - 21.39332401601132, - 21.643897917994764, - 21.35507860200596, - 21.539257733995328, - 21.54731060998165, - 21.405812156008324, - 21.53930448999745, - 21.519806984986644 + 16.25268028001301, + 16.101810730993748, + 16.212210205034353, + 16.09773081704043, + 16.00780957902316, + 16.432149116997607, + 16.305805339012295, + 16.250169981038198, + 16.081822153995745, + 15.759885281091556 ] } }, @@ -999,55 +999,55 @@ "framework": "zipline", "framework_engine": { "ci_95_seconds": [ - 106.83352753649524, - 109.14979357349512 + 109.39243838749826, + 111.60780068405438 ], - "maximum_seconds": 117.95733895900776, - "median_seconds": 107.60890489349549, - "minimum_seconds": 106.01340769199305, + "maximum_seconds": 121.45296368305571, + "median_seconds": 110.22181360953255, + "minimum_seconds": 109.1861914889887, "output_identity": { "equity.parquet": "916f29fa7170cf1d1318154aff2bdb61db9838da5a780513ba06c42ccf98d3a0", "fills.parquet": "916a68a6f44ea70b6905cca094028d16f8746e3f19c3029637ecb50c5462306a" }, "samples_seconds": [ - 107.50128808099544, - 106.01340769199305, - 107.25137960899156, - 107.87613571700058, - 106.41567546399892, - 117.95733895900776, - 110.46573096700013, - 107.83385617999011, - 107.71652170599555, - 106.84217402699869 + 111.60780068405438, + 110.01300074101891, + 110.81128632801119, + 110.43062647804618, + 112.05522017797921, + 109.1861914889887, + 109.29345865501091, + 109.45064685109537, + 109.49141811998561, + 121.45296368305571 ] }, - "framework_to_ml4t_median_ratio": 4.862239476470224, + "framework_to_ml4t_median_ratio": 6.671435767111864, "input_bundle_sha256": "02926d8a7f1c1f5b4855b2393d1763885288ef64950d5cf521ca96c61f454d88", "ml4t_engine": { "ci_95_seconds": [ - 22.08169161299884, - 22.23382121999748 + 16.470107797998935, + 16.906124540022574 ], - "maximum_seconds": 22.393758883001283, - "median_seconds": 22.131551811515237, - "minimum_seconds": 22.03865885498817, + "maximum_seconds": 18.334555651061237, + "median_seconds": 16.52145317097893, + "minimum_seconds": 16.385647121001966, "output_identity": { - "equity.parquet": "362d9598366bf548deed068d1eface38e74b874cf352682f79cdb908381cb585", - "fills.parquet": "7af38401bed6a5453090bb124ca645df0f91cf417e0440b72e7693c7d22508a5", + "equity.parquet": "6f1c371e4fcce3c1c3829f71c398807c721e95fa7d03a5c4796119a398453a66", + "fills.parquet": "2db9ccefd91648644c1abefca68701deb4795a8e6da509935beaffa5793e8501", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 22.262472025991883, - 22.12110824297997, - 22.131656308018137, - 22.23382121999748, - 22.197976440977072, - 22.085626848973334, - 22.393758883001283, - 22.03865885498817, - 22.042274983017705, - 22.131447315012338 + 16.385647121001966, + 16.47907410201151, + 18.334555651061237, + 16.493410420021974, + 16.54533114901278, + 16.497575192945078, + 16.442640403052792, + 17.25487956602592, + 16.55736951401923, + 16.5869839360239 ] } }, @@ -1057,56 +1057,56 @@ "framework": "lean", "framework_engine": { "ci_95_seconds": [ - 47.33300897400477, - 48.01486862101592 + 43.8512298935093, + 53.81890031695366 ], - "maximum_seconds": 48.93350173300132, - "median_seconds": 47.68267791901599, - "minimum_seconds": 46.93845382897416, + "maximum_seconds": 71.90948282403406, + "median_seconds": 45.95678944251267, + "minimum_seconds": 42.33710101793986, "output_identity": { - "equity.parquet": "0b28b2c49304bf054f81d906ce0673298989a3f3ef044cec0cb2e3570fc3cd2f", - "fills.parquet": "d56df1f4cb022403ddc3165d064f93b57b8bb210712775a9af3bda1fbf9eb6a6", + "equity.parquet": "a943d6831889ddc227f4f12f103797c854ae6facecac3fbe399d3a84be2579e1", + "fills.parquet": "fd13eeca0e70144131f5a231a2a2e2ec8581437035f887c3af604c9ffec5cc75", "rejected_orders.parquet": "9e7aedba072cbcd23432976f03fb6edef656da961cd2e73dbd75188842b29c36" }, "samples_seconds": [ - 48.93350173300132, - 47.391672911006026, - 47.39366507701925, - 47.275934634002624, - 47.971690761012724, - 47.977595238015056, - 47.33300897400477, - 48.01486862101592, - 48.02573545300402, - 46.93845382897416 + 44.69809547706973, + 43.00436430994887, + 44.59996887203306, + 45.62681075499859, + 42.33710101793986, + 58.3913600849919, + 47.5572030559415, + 71.90948282403406, + 53.81890031695366, + 46.28676813002676 ] }, - "framework_to_ml4t_median_ratio": 1.8083761067475683, + "framework_to_ml4t_median_ratio": 1.8421150516139404, "input_bundle_sha256": "02926d8a7f1c1f5b4855b2393d1763885288ef64950d5cf521ca96c61f454d88", "ml4t_engine": { "ci_95_seconds": [ - 26.22179457700986, - 26.472655913996277 + 23.622859365015756, + 25.41915735101793 ], - "maximum_seconds": 26.64365133800311, - "median_seconds": 26.36767746548867, - "minimum_seconds": 26.150949718023185, + "maximum_seconds": 25.64795203099493, + "median_seconds": 24.94783884548815, + "minimum_seconds": 21.586407659109682, "output_identity": { - "equity.parquet": "b175134ca1075055bfc2ded472e325749b34a359f6d957ffdd897b0521fae957", - "fills.parquet": "b42bfe84ffe2954289ba5138fed5bc4f487d356c7192f3f67521c6d6e50c5059", + "equity.parquet": "b5907100a1469d4c9ff63af5bbeb328cddf7d72e6d98db6d9d796488c95545f2", + "fills.parquet": "7eb685423c6c5f32168e7ea8cc19976cb0404aef075514e657cee9e3f458d0d2", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 26.37750849899021, - 26.23593746300321, - 26.49751085101161, - 26.23863661501673, - 26.150949718023185, - 26.472655913996277, - 26.443023221974727, - 26.357846431987127, - 26.64365133800311, - 26.20495253900299 + 24.886456022039056, + 25.5052249180153, + 25.64795203099493, + 25.333089784020558, + 25.009221668937244, + 23.946776060038246, + 21.586407659109682, + 22.462323918007314, + 24.7833948120242, + 25.370491398032755 ] } } From e747ad8d572099d78694b866494710e782f21a48 Mon Sep 17 00:00:00 2001 From: Stefan Jansen Date: Fri, 11 Sep 2026 15:43:18 -0400 Subject: [PATCH 6/7] Deprecate LinearImpact.permanent_fraction rather than removing it outright The field is inert: `calculate()` has never read it, so `permanent_fraction=0.0` and `permanent_fraction=1.0` charge the same price. It cannot be honoured as the signature stands - `calculate` sees one order and holds no reference to the ones before it - so the model is a single-order concession model and persistence belongs to the caller. This branch removed the field. Removing it in a patch release raises `TypeError` on code that constructs `LinearImpact(permanent_fraction=...)` today and gets nothing for it, so the removal moves to 0.2.0 and this release warns instead. A reader who set the parameter currently gets silence; a `DeprecationWarning` naming the removal is strictly better, and it costs nobody a broken import. The warning lives in `__setattr__` rather than `__post_init__` because the field is settable after construction as well as through it, and a non-frozen dataclass routes `__init__` through `__setattr__`, so one guard covers both paths and fires once per assignment. The default is the one value that cannot warn: a dataclass cannot tell a caller who passed 0.5 from one who passed nothing, and leaving it alone is the case that loses nothing when the field goes. Tests pin three things, and the third is what makes the first two mean something: setting it warns and does not change the charge; assigning it after construction warns; and the untouched default raises no warning at all. Without the negative case a warning on every construction would pass. The retained `v0.1.json` compatibility snapshot goes back to main's line, because the signature is unchanged. --- src/ml4t/backtest/execution/impact.py | 35 ++++++++++++++++++++++ tests/compatibility/snapshots/v0.1.json | 2 +- tests/execution/test_impact.py | 40 +++++++++++++++++++++---- 3 files changed, 71 insertions(+), 6 deletions(-) diff --git a/src/ml4t/backtest/execution/impact.py b/src/ml4t/backtest/execution/impact.py index 46fad19f..42b500dc 100644 --- a/src/ml4t/backtest/execution/impact.py +++ b/src/ml4t/backtest/execution/impact.py @@ -1,8 +1,12 @@ """Market impact models for realistic execution costs.""" import math +import warnings from abc import ABC, abstractmethod from dataclasses import dataclass +from typing import Any + +PERMANENT_FRACTION_DEFAULT = 0.5 class MarketImpactModel(ABC): @@ -74,6 +78,9 @@ class LinearImpact(MarketImpactModel): Args: coefficient: Impact scaling factor (default 0.1) Higher values = more impact per unit participation + permanent_fraction: Deprecated and inert; scheduled for removal in 0.2.0. + `calculate` has never read it, so every value charges the same + price. Setting it to anything but its default warns. Example: model = LinearImpact(coefficient=0.1) @@ -81,6 +88,34 @@ class LinearImpact(MarketImpactModel): """ coefficient: float = 0.1 + permanent_fraction: float = PERMANENT_FRACTION_DEFAULT + + def __setattr__(self, name: str, value: Any) -> None: + """Warn once per assignment that sets the inert persistence parameter. + + The warning goes here rather than in `__post_init__` because the field is + settable after construction as well as through it, and a model assembled and + then adjusted is the case that most looks like it is configuring something. + A non-frozen dataclass routes `__init__` through `__setattr__` too, so one + guard covers both and fires once each time a value is actually set. + + The default is the one value that does not warn, because a dataclass cannot + tell a caller who passed 0.5 from one who passed nothing. Leaving it alone is + also the case that loses nothing when the field goes: the model charges the + same price either way. + """ + if name == "permanent_fraction" and value != PERMANENT_FRACTION_DEFAULT: + warnings.warn( + "LinearImpact.permanent_fraction is inert and will be removed in " + "ml4t-backtest 0.2.0. calculate() has never read it, so this model " + "charges the same impact at every value; the engine applies an impact " + "model to one order at a time and has no state in which a permanent " + "component could persist into later fills. Accumulate permanent impact " + "in the caller instead.", + DeprecationWarning, + stacklevel=2, + ) + super().__setattr__(name, value) def calculate( self, diff --git a/tests/compatibility/snapshots/v0.1.json b/tests/compatibility/snapshots/v0.1.json index 94f01c4f..229746ce 100644 --- a/tests/compatibility/snapshots/v0.1.json +++ b/tests/compatibility/snapshots/v0.1.json @@ -2696,7 +2696,7 @@ }, "module": "ml4t.backtest.execution.impact", "qualname": "LinearImpact", - "signature": "(coefficient: float = 0.1) -> None" + "signature": "(coefficient: float = 0.1, permanent_fraction: float = 0.5) -> None" }, "ml4t.backtest.execution:NoImpact": { "kind": "class", diff --git a/tests/execution/test_impact.py b/tests/execution/test_impact.py index 36071448..ff4e0c8c 100644 --- a/tests/execution/test_impact.py +++ b/tests/execution/test_impact.py @@ -1,6 +1,7 @@ """Tests for market impact models.""" import math +import warnings import pytest @@ -41,6 +42,7 @@ def test_default_values(self): """Test default configuration.""" model = LinearImpact() assert model.coefficient == 0.1 + assert model.permanent_fraction == 0.5 def test_buy_positive_impact(self): """Test that buy orders have positive impact (price goes up).""" @@ -262,7 +264,8 @@ def test_repeated_slices_are_charged_the_same_concession(self): """A parent order worked in ten equal slices pays the first slice's price ten times. This is the property that a permanent-impact parameter would have to break. It - holds for every model, which is why `LinearImpact` no longer advertises one. + holds for every model, which is why `LinearImpact.permanent_fraction` is + deprecated rather than implemented. """ for model in self.MODELS: charges = [ @@ -271,7 +274,34 @@ def test_repeated_slices_are_charged_the_same_concession(self): ] assert len(set(charges)) == 1, f"{type(model).__name__} is not stateless" - def test_linear_impact_rejects_a_persistence_parameter(self): - """The parameter was settable and never read; setting it must now fail loudly.""" - with pytest.raises(TypeError): - LinearImpact(coefficient=0.1, permanent_fraction=0.8) # type: ignore[call-arg] + def test_setting_permanent_fraction_warns_and_changes_nothing(self): + """The parameter was settable, silent and never read; it must now say so. + + Both halves are asserted because either alone would pass a broken + implementation: a warning that also changed the charge would be a behaviour + change nobody asked for, and an unchanged charge with no warning is the defect. + """ + with pytest.warns(DeprecationWarning, match="removed in ml4t-backtest 0.2.0"): + loud = LinearImpact(coefficient=0.1, permanent_fraction=0.8) + quiet = LinearImpact(coefficient=0.1) + args = {"quantity": 100_000.0, "price": 100.0, "volume": 1_000_000.0, "is_buy": True} + assert loud.calculate(**args) == quiet.calculate(**args) + + def test_assigning_permanent_fraction_after_construction_warns(self): + """A dataclass field is settable after `__init__`, and that path warned too.""" + model = LinearImpact(coefficient=0.1) + with pytest.warns(DeprecationWarning, match="removed in ml4t-backtest 0.2.0"): + model.permanent_fraction = 0.8 + + def test_leaving_permanent_fraction_at_its_default_is_silent(self): + """A caller who never touches the field is not warned about it. + + `LinearImpact()` and an explicit `permanent_fraction=0.5` are indistinguishable + to a dataclass, so the default is the one value that cannot warn. Pinned as the + negative case: without it the warning could fire on every construction and the + two tests above would still pass. + """ + with warnings.catch_warnings(): + warnings.simplefilter("error", DeprecationWarning) + LinearImpact() + LinearImpact(coefficient=0.2, permanent_fraction=0.5) From b6371b32c578ef500880b3424afdc8d3c9628db3 Mon Sep 17 00:00:00 2001 From: Stefan Jansen Date: Fri, 11 Sep 2026 15:43:26 -0400 Subject: [PATCH 7/7] Keep the shipped timing table: the re-measurement ran on a contended box Any edit under `src/ml4t/backtest` moves `_tree_digest(SOURCE_DIR)`, and all three retained evidence files record it. `test_parity_claim_generation.py` and `test_real_strategy_runner.py` compare that recorded digest against the working tree, so a source change of any size - this one is a docstring, a default and a `__setattr__` - invalidates the correctness evidence, the real-strategy evidence and the timing evidence together. Regenerating all three is the price of the fix, and the timing third of it needs a quiet machine. This branch regenerated them on 2026-09-09 and the timing third came out worse than the file it replaced. Measured over the 34 timed engines in both, as relative width of the 95% CI about the median: shipped (2026-09-03): worst 8.3% (fx_pairs/lean framework), 1 engine above 8% regenerated (2026-09-09): worst 53.7% (fx_pairs/lean ML4T), 5 engines above 8% Eight of the seventeen published ratios move by more than 10%, the largest being fx_pairs/lean 5.952x -> 1.493x and us_equities_panel/backtrader 23.082x -> 33.987x. The fx_pairs row is the one the re-measurement flagged itself: the same ML4T engine timed 0.160s under the vectorbt_pro profile in the same run, so 0.485s (0.423-0.684) is contention rather than the engine. Those numbers are published in README.md, docs/index.md and docs/user-guide/profiles.md, where a reader quotes them. So the shipped 2026-09-03 table stands here and the three documents keep it. The branch is red until all three files are regenerated together against this tree, which is a ~3 hour exclusive measurement (17 pairs, one warm-up and ten samples a side, us_equities_panel/ backtrader alone at 549s a sample) and is not something to run beside two production case study chains. --- README.md | 38 +- docs/index.md | 38 +- docs/user-guide/profiles.md | 38 +- validation/CORRECTNESS_RESULTS.json | 402 ++++---- validation/METHODOLOGY.md | 38 +- validation/README.md | 38 +- validation/REAL_STRATEGY_PERFORMANCE.json | 1126 ++++++++++----------- validation/REAL_STRATEGY_RESULTS.json | 8 +- 8 files changed, 863 insertions(+), 863 deletions(-) diff --git a/README.md b/README.md index 765ea1a6..6fbed871 100644 --- a/README.md +++ b/README.md @@ -336,25 +336,25 @@ The table reports engine-call wall time for all 17 correctness-passing pairs. Th | Real strategy | Pinned framework | Framework median (95% CI), s | ML4T median (95% CI), s | Framework / ML4T median | |---|---|---:|---:|---:| -| ETF allocation | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.296 (0.290-0.303) | 0.425 (0.423-0.427) | 0.696x | -| ETF allocation | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.179 (0.178-0.184) | 0.423 (0.421-0.426) | 0.423x | -| ETF allocation | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 9.466 (9.403-9.652) | 0.436 (0.434-0.442) | 21.694x | -| ETF allocation | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 3.929 (3.901-3.979) | 0.623 (0.618-0.631) | 6.302x | -| ETF allocation | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.124 (2.038-2.145) | 0.722 (0.717-0.731) | 2.942x | -| CME futures | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.298 (0.295-0.302) | 0.399 (0.397-0.408) | 0.748x | -| CME futures | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 2.531 (2.504-2.568) | 0.400 (0.398-0.403) | 6.322x | -| Crypto perpetual funding | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.843 (2.725-2.951) | 0.580 (0.574-0.585) | 4.905x | -| FX allocation (USD-quoted pairs) | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.292 (0.291-0.298) | 0.147 (0.145-0.149) | 1.993x | -| FX allocation (USD-quoted pairs) | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.145 (0.143-0.149) | 0.146 (0.146-0.147) | 0.992x | -| FX allocation (USD-quoted pairs) | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 0.429 (0.427-0.432) | 0.147 (0.145-0.148) | 2.926x | -| FX allocation (USD-quoted pairs) | [LEAN 18001](https://github.com/QuantConnect/Lean) | 0.724 (0.702-0.749) | 0.485 (0.423-0.684) | 1.493x | -| US equity panel | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.914 (0.868-1.048) | 15.705 (15.512-16.282) | 0.058x | -| US equity panel | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 19.663 (18.596-26.957) | 18.061 (17.251-19.345) | 1.089x | -| US equity panel | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 549.128 (528.973-570.002) | 16.157 (16.053-16.278) | 33.987x | -| US equity panel | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 110.222 (109.392-111.608) | 16.521 (16.470-16.906) | 6.671x | -| US equity panel | [LEAN 18001](https://github.com/QuantConnect/Lean) | 45.957 (43.851-53.819) | 24.948 (23.623-25.419) | 1.842x | - -Measured 2026-09-09 on `Linux-6.8.0-138-generic-x86_64-with-glibc2.39` with 24 logical CPUs. Each side used one isolated warm-up process and ten isolated measured processes. The timer includes only the engine call; it excludes input loading, model inference, target construction, adapter preparation, result extraction, serialization, reporting. These measurements apply only to the named strategy, framework version, frozen input bundle, and machine. Raw samples and bootstrap intervals are retained in [real-strategy performance evidence](https://github.com/ml4t/backtest/blob/main/validation/REAL_STRATEGY_PERFORMANCE.json). +| ETF allocation | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.287 (0.286-0.289) | 0.415 (0.414-0.419) | 0.692x | +| ETF allocation | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.171 (0.171-0.174) | 0.415 (0.413-0.417) | 0.412x | +| ETF allocation | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 9.355 (9.303-9.424) | 0.430 (0.426-0.432) | 21.762x | +| ETF allocation | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 3.872 (3.867-3.910) | 0.632 (0.628-0.638) | 6.127x | +| ETF allocation | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.564 (2.487-2.599) | 0.750 (0.749-0.757) | 3.418x | +| CME futures | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.286 (0.284-0.289) | 0.432 (0.429-0.435) | 0.663x | +| CME futures | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 2.495 (2.488-2.526) | 0.429 (0.427-0.433) | 5.812x | +| Crypto perpetual funding | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.801 (2.709-2.891) | 0.657 (0.655-0.661) | 4.266x | +| FX allocation (USD-quoted pairs) | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.283 (0.281-0.286) | 0.146 (0.145-0.147) | 1.939x | +| FX allocation (USD-quoted pairs) | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.139 (0.138-0.141) | 0.146 (0.145-0.147) | 0.952x | +| FX allocation (USD-quoted pairs) | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 0.425 (0.420-0.432) | 0.146 (0.145-0.147) | 2.920x | +| FX allocation (USD-quoted pairs) | [LEAN 18001](https://github.com/QuantConnect/Lean) | 0.913 (0.877-0.953) | 0.153 (0.152-0.157) | 5.952x | +| US equity panel | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.795 (0.787-0.838) | 20.555 (20.486-20.600) | 0.039x | +| US equity panel | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 16.995 (16.960-17.024) | 20.495 (20.453-20.534) | 0.829x | +| US equity panel | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 495.553 (494.227-510.273) | 21.470 (21.386-21.543) | 23.082x | +| US equity panel | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 107.609 (106.834-109.150) | 22.132 (22.082-22.234) | 4.862x | +| US equity panel | [LEAN 18001](https://github.com/QuantConnect/Lean) | 47.683 (47.333-48.015) | 26.368 (26.222-26.473) | 1.808x | + +Measured 2026-09-03 on `Linux-6.8.0-138-generic-x86_64-with-glibc2.39` with 24 logical CPUs. Each side used one isolated warm-up process and ten isolated measured processes. The timer includes only the engine call; it excludes input loading, model inference, target construction, adapter preparation, result extraction, serialization, reporting. These measurements apply only to the named strategy, framework version, frozen input bundle, and machine. Raw samples and bootstrap intervals are retained in [real-strategy performance evidence](https://github.com/ml4t/backtest/blob/main/validation/REAL_STRATEGY_PERFORMANCE.json). ### Synthetic diagnostic scenarios diff --git a/docs/index.md b/docs/index.md index 409d7ac6..17cd3441 100644 --- a/docs/index.md +++ b/docs/index.md @@ -136,25 +136,25 @@ The table reports engine-call wall time for all 17 correctness-passing pairs. Th | Real strategy | Pinned framework | Framework median (95% CI), s | ML4T median (95% CI), s | Framework / ML4T median | |---|---|---:|---:|---:| -| ETF allocation | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.296 (0.290-0.303) | 0.425 (0.423-0.427) | 0.696x | -| ETF allocation | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.179 (0.178-0.184) | 0.423 (0.421-0.426) | 0.423x | -| ETF allocation | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 9.466 (9.403-9.652) | 0.436 (0.434-0.442) | 21.694x | -| ETF allocation | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 3.929 (3.901-3.979) | 0.623 (0.618-0.631) | 6.302x | -| ETF allocation | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.124 (2.038-2.145) | 0.722 (0.717-0.731) | 2.942x | -| CME futures | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.298 (0.295-0.302) | 0.399 (0.397-0.408) | 0.748x | -| CME futures | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 2.531 (2.504-2.568) | 0.400 (0.398-0.403) | 6.322x | -| Crypto perpetual funding | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.843 (2.725-2.951) | 0.580 (0.574-0.585) | 4.905x | -| FX allocation (USD-quoted pairs) | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.292 (0.291-0.298) | 0.147 (0.145-0.149) | 1.993x | -| FX allocation (USD-quoted pairs) | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.145 (0.143-0.149) | 0.146 (0.146-0.147) | 0.992x | -| FX allocation (USD-quoted pairs) | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 0.429 (0.427-0.432) | 0.147 (0.145-0.148) | 2.926x | -| FX allocation (USD-quoted pairs) | [LEAN 18001](https://github.com/QuantConnect/Lean) | 0.724 (0.702-0.749) | 0.485 (0.423-0.684) | 1.493x | -| US equity panel | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.914 (0.868-1.048) | 15.705 (15.512-16.282) | 0.058x | -| US equity panel | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 19.663 (18.596-26.957) | 18.061 (17.251-19.345) | 1.089x | -| US equity panel | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 549.128 (528.973-570.002) | 16.157 (16.053-16.278) | 33.987x | -| US equity panel | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 110.222 (109.392-111.608) | 16.521 (16.470-16.906) | 6.671x | -| US equity panel | [LEAN 18001](https://github.com/QuantConnect/Lean) | 45.957 (43.851-53.819) | 24.948 (23.623-25.419) | 1.842x | - -Measured 2026-09-09 on `Linux-6.8.0-138-generic-x86_64-with-glibc2.39` with 24 logical CPUs. Each side used one isolated warm-up process and ten isolated measured processes. The timer includes only the engine call; it excludes input loading, model inference, target construction, adapter preparation, result extraction, serialization, reporting. These measurements apply only to the named strategy, framework version, frozen input bundle, and machine. Raw samples and bootstrap intervals are retained in [real-strategy performance evidence](https://github.com/ml4t/backtest/blob/main/validation/REAL_STRATEGY_PERFORMANCE.json). +| ETF allocation | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.287 (0.286-0.289) | 0.415 (0.414-0.419) | 0.692x | +| ETF allocation | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.171 (0.171-0.174) | 0.415 (0.413-0.417) | 0.412x | +| ETF allocation | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 9.355 (9.303-9.424) | 0.430 (0.426-0.432) | 21.762x | +| ETF allocation | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 3.872 (3.867-3.910) | 0.632 (0.628-0.638) | 6.127x | +| ETF allocation | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.564 (2.487-2.599) | 0.750 (0.749-0.757) | 3.418x | +| CME futures | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.286 (0.284-0.289) | 0.432 (0.429-0.435) | 0.663x | +| CME futures | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 2.495 (2.488-2.526) | 0.429 (0.427-0.433) | 5.812x | +| Crypto perpetual funding | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.801 (2.709-2.891) | 0.657 (0.655-0.661) | 4.266x | +| FX allocation (USD-quoted pairs) | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.283 (0.281-0.286) | 0.146 (0.145-0.147) | 1.939x | +| FX allocation (USD-quoted pairs) | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.139 (0.138-0.141) | 0.146 (0.145-0.147) | 0.952x | +| FX allocation (USD-quoted pairs) | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 0.425 (0.420-0.432) | 0.146 (0.145-0.147) | 2.920x | +| FX allocation (USD-quoted pairs) | [LEAN 18001](https://github.com/QuantConnect/Lean) | 0.913 (0.877-0.953) | 0.153 (0.152-0.157) | 5.952x | +| US equity panel | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.795 (0.787-0.838) | 20.555 (20.486-20.600) | 0.039x | +| US equity panel | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 16.995 (16.960-17.024) | 20.495 (20.453-20.534) | 0.829x | +| US equity panel | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 495.553 (494.227-510.273) | 21.470 (21.386-21.543) | 23.082x | +| US equity panel | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 107.609 (106.834-109.150) | 22.132 (22.082-22.234) | 4.862x | +| US equity panel | [LEAN 18001](https://github.com/QuantConnect/Lean) | 47.683 (47.333-48.015) | 26.368 (26.222-26.473) | 1.808x | + +Measured 2026-09-03 on `Linux-6.8.0-138-generic-x86_64-with-glibc2.39` with 24 logical CPUs. Each side used one isolated warm-up process and ten isolated measured processes. The timer includes only the engine call; it excludes input loading, model inference, target construction, adapter preparation, result extraction, serialization, reporting. These measurements apply only to the named strategy, framework version, frozen input bundle, and machine. Raw samples and bootstrap intervals are retained in [real-strategy performance evidence](https://github.com/ml4t/backtest/blob/main/validation/REAL_STRATEGY_PERFORMANCE.json). ### Synthetic diagnostic scenarios diff --git a/docs/user-guide/profiles.md b/docs/user-guide/profiles.md index 3dc432fa..cea5a254 100644 --- a/docs/user-guide/profiles.md +++ b/docs/user-guide/profiles.md @@ -194,25 +194,25 @@ The table reports engine-call wall time for all 17 correctness-passing pairs. Th | Real strategy | Pinned framework | Framework median (95% CI), s | ML4T median (95% CI), s | Framework / ML4T median | |---|---|---:|---:|---:| -| ETF allocation | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.296 (0.290-0.303) | 0.425 (0.423-0.427) | 0.696x | -| ETF allocation | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.179 (0.178-0.184) | 0.423 (0.421-0.426) | 0.423x | -| ETF allocation | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 9.466 (9.403-9.652) | 0.436 (0.434-0.442) | 21.694x | -| ETF allocation | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 3.929 (3.901-3.979) | 0.623 (0.618-0.631) | 6.302x | -| ETF allocation | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.124 (2.038-2.145) | 0.722 (0.717-0.731) | 2.942x | -| CME futures | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.298 (0.295-0.302) | 0.399 (0.397-0.408) | 0.748x | -| CME futures | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 2.531 (2.504-2.568) | 0.400 (0.398-0.403) | 6.322x | -| Crypto perpetual funding | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.843 (2.725-2.951) | 0.580 (0.574-0.585) | 4.905x | -| FX allocation (USD-quoted pairs) | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.292 (0.291-0.298) | 0.147 (0.145-0.149) | 1.993x | -| FX allocation (USD-quoted pairs) | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.145 (0.143-0.149) | 0.146 (0.146-0.147) | 0.992x | -| FX allocation (USD-quoted pairs) | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 0.429 (0.427-0.432) | 0.147 (0.145-0.148) | 2.926x | -| FX allocation (USD-quoted pairs) | [LEAN 18001](https://github.com/QuantConnect/Lean) | 0.724 (0.702-0.749) | 0.485 (0.423-0.684) | 1.493x | -| US equity panel | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.914 (0.868-1.048) | 15.705 (15.512-16.282) | 0.058x | -| US equity panel | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 19.663 (18.596-26.957) | 18.061 (17.251-19.345) | 1.089x | -| US equity panel | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 549.128 (528.973-570.002) | 16.157 (16.053-16.278) | 33.987x | -| US equity panel | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 110.222 (109.392-111.608) | 16.521 (16.470-16.906) | 6.671x | -| US equity panel | [LEAN 18001](https://github.com/QuantConnect/Lean) | 45.957 (43.851-53.819) | 24.948 (23.623-25.419) | 1.842x | - -Measured 2026-09-09 on `Linux-6.8.0-138-generic-x86_64-with-glibc2.39` with 24 logical CPUs. Each side used one isolated warm-up process and ten isolated measured processes. The timer includes only the engine call; it excludes input loading, model inference, target construction, adapter preparation, result extraction, serialization, reporting. These measurements apply only to the named strategy, framework version, frozen input bundle, and machine. Raw samples and bootstrap intervals are retained in [real-strategy performance evidence](https://github.com/ml4t/backtest/blob/main/validation/REAL_STRATEGY_PERFORMANCE.json). +| ETF allocation | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.287 (0.286-0.289) | 0.415 (0.414-0.419) | 0.692x | +| ETF allocation | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.171 (0.171-0.174) | 0.415 (0.413-0.417) | 0.412x | +| ETF allocation | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 9.355 (9.303-9.424) | 0.430 (0.426-0.432) | 21.762x | +| ETF allocation | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 3.872 (3.867-3.910) | 0.632 (0.628-0.638) | 6.127x | +| ETF allocation | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.564 (2.487-2.599) | 0.750 (0.749-0.757) | 3.418x | +| CME futures | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.286 (0.284-0.289) | 0.432 (0.429-0.435) | 0.663x | +| CME futures | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 2.495 (2.488-2.526) | 0.429 (0.427-0.433) | 5.812x | +| Crypto perpetual funding | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.801 (2.709-2.891) | 0.657 (0.655-0.661) | 4.266x | +| FX allocation (USD-quoted pairs) | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.283 (0.281-0.286) | 0.146 (0.145-0.147) | 1.939x | +| FX allocation (USD-quoted pairs) | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.139 (0.138-0.141) | 0.146 (0.145-0.147) | 0.952x | +| FX allocation (USD-quoted pairs) | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 0.425 (0.420-0.432) | 0.146 (0.145-0.147) | 2.920x | +| FX allocation (USD-quoted pairs) | [LEAN 18001](https://github.com/QuantConnect/Lean) | 0.913 (0.877-0.953) | 0.153 (0.152-0.157) | 5.952x | +| US equity panel | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.795 (0.787-0.838) | 20.555 (20.486-20.600) | 0.039x | +| US equity panel | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 16.995 (16.960-17.024) | 20.495 (20.453-20.534) | 0.829x | +| US equity panel | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 495.553 (494.227-510.273) | 21.470 (21.386-21.543) | 23.082x | +| US equity panel | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 107.609 (106.834-109.150) | 22.132 (22.082-22.234) | 4.862x | +| US equity panel | [LEAN 18001](https://github.com/QuantConnect/Lean) | 47.683 (47.333-48.015) | 26.368 (26.222-26.473) | 1.808x | + +Measured 2026-09-03 on `Linux-6.8.0-138-generic-x86_64-with-glibc2.39` with 24 logical CPUs. Each side used one isolated warm-up process and ten isolated measured processes. The timer includes only the engine call; it excludes input loading, model inference, target construction, adapter preparation, result extraction, serialization, reporting. These measurements apply only to the named strategy, framework version, frozen input bundle, and machine. Raw samples and bootstrap intervals are retained in [real-strategy performance evidence](https://github.com/ml4t/backtest/blob/main/validation/REAL_STRATEGY_PERFORMANCE.json). ### Synthetic diagnostic scenarios diff --git a/validation/CORRECTNESS_RESULTS.json b/validation/CORRECTNESS_RESULTS.json index dabd11bc..9296dabe 100644 --- a/validation/CORRECTNESS_RESULTS.json +++ b/validation/CORRECTNESS_RESULTS.json @@ -63,7 +63,7 @@ "version": "3.1.1" } }, - "generated_at": "2026-09-08T20:57:27.549815+00:00", + "generated_at": "2026-09-03T07:11:20.595248+00:00", "input_policy": { "float_quantum": "0.00000001", "rounding": "ROUND_HALF_EVEN", @@ -704,7 +704,7 @@ "scenario_id": "01" }, "detail": null, - "duration_seconds": 6.153010525973514, + "duration_seconds": 2.427215111005353, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -1361,7 +1361,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -1374,7 +1374,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -2034,7 +2034,7 @@ "scenario_id": "02" }, "detail": null, - "duration_seconds": 5.373651853995398, + "duration_seconds": 2.3356575799989514, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -2691,7 +2691,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "8901a4a7a750c26fb43ceb5d89b4c6ccf9279503da8659b8398cce30d90c8d9c", @@ -2704,7 +2704,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -2861,7 +2861,7 @@ "scenario_id": "03" }, "detail": null, - "duration_seconds": 5.566838720114902, + "duration_seconds": 2.3383967260015197, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -3009,7 +3009,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "3b0720d05e9e5869aa6f01432d17918e2db8c0d80810310e6c39c8bf82d1aee0", @@ -3022,7 +3022,7 @@ }, "input_digest": "02743db0d03a02ec414e579929e5e4729b5f99124ab2a41bb234adf93626f62a", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -3179,7 +3179,7 @@ "scenario_id": "04" }, "detail": null, - "duration_seconds": 4.9017198799410835, + "duration_seconds": 2.342229423986282, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -3327,7 +3327,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "3b0720d05e9e5869aa6f01432d17918e2db8c0d80810310e6c39c8bf82d1aee0", @@ -3340,7 +3340,7 @@ }, "input_digest": "c013a16b8902a5599e53c27dae34849fcf327b4e89ec69d00c951903578f948a", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -4010,7 +4010,7 @@ "scenario_id": "05" }, "detail": null, - "duration_seconds": 5.017531638033688, + "duration_seconds": 2.32796579200658, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -4671,7 +4671,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -4684,7 +4684,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -5354,7 +5354,7 @@ "scenario_id": "06" }, "detail": null, - "duration_seconds": 5.335330817033537, + "duration_seconds": 2.326144679012941, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -6015,7 +6015,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -6028,7 +6028,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -6688,7 +6688,7 @@ "scenario_id": "07" }, "detail": null, - "duration_seconds": 5.360161849996075, + "duration_seconds": 2.3995378440013155, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -7345,7 +7345,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -7358,7 +7358,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -8018,7 +8018,7 @@ "scenario_id": "08" }, "detail": null, - "duration_seconds": 5.2678728309692815, + "duration_seconds": 2.3293550700182095, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -8675,7 +8675,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -8688,7 +8688,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -8892,7 +8892,7 @@ "scenario_id": "09" }, "detail": null, - "duration_seconds": 5.747950149001554, + "duration_seconds": 2.354666574014118, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -9093,7 +9093,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "647d9a4a1a219599288faf756e995322ffee249ad29d3fbb88d3b1859249421a", @@ -9106,7 +9106,7 @@ }, "input_digest": "0857d4181ff37765143cd13fb7b67ead75a163a9ece87f9d258bb436175f2568", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -9367,7 +9367,7 @@ "scenario_id": "10" }, "detail": null, - "duration_seconds": 5.844140074914321, + "duration_seconds": 2.3559224590135273, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -9625,7 +9625,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "27979784dbb2f9dd6cf72c0d89ea956d49003ed83a57ed254cb6a2cbd234b6a5", @@ -9638,7 +9638,7 @@ }, "input_digest": "23496f457ab5fcdf8c02626db8af05c791278cc307dff08599f673c376e9116c", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -10298,7 +10298,7 @@ "scenario_id": "11" }, "detail": null, - "duration_seconds": 5.136880462989211, + "duration_seconds": 2.319062655995367, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -10955,7 +10955,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "8901a4a7a750c26fb43ceb5d89b4c6ccf9279503da8659b8398cce30d90c8d9c", @@ -10968,7 +10968,7 @@ }, "input_digest": "24a69cd2961c5f77332e19aa92432884a792bd64d1e045dac33f1922902e3ba3", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -11172,7 +11172,7 @@ "scenario_id": "12" }, "detail": null, - "duration_seconds": 5.451229452970438, + "duration_seconds": 2.3402914280013647, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -11373,7 +11373,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "15f4500f48791f0c67d7c57f2554d0689a35a6dd71e07a8117de510acf106770", @@ -11386,7 +11386,7 @@ }, "input_digest": "06b9362c086c33e65085233ecbe78d43de5c0f00950eb8b19d6df6e89ba76d3b", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -11533,7 +11533,7 @@ "scenario_id": "13" }, "detail": null, - "duration_seconds": 5.752892315969802, + "duration_seconds": 2.3355851389933378, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -11677,7 +11677,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "647d9a4a1a219599288faf756e995322ffee249ad29d3fbb88d3b1859249421a", @@ -11690,7 +11690,7 @@ }, "input_digest": "8948480a577fa0d6a769f0af879559553b872df5c12ebbdc621237db201f1d99", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -11837,7 +11837,7 @@ "scenario_id": "14" }, "detail": null, - "duration_seconds": 6.646601879037917, + "duration_seconds": 2.3397380849928595, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -11981,7 +11981,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "647d9a4a1a219599288faf756e995322ffee249ad29d3fbb88d3b1859249421a", @@ -11994,7 +11994,7 @@ }, "input_digest": "ea9583aa3a0de9f4e92d22968932fd83ac3e7d6e8d8a3e4f689e59868390c7d2", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -12141,7 +12141,7 @@ "scenario_id": "15" }, "detail": null, - "duration_seconds": 6.012227750965394, + "duration_seconds": 2.3427687360090204, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -12285,7 +12285,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "647d9a4a1a219599288faf756e995322ffee249ad29d3fbb88d3b1859249421a", @@ -12298,7 +12298,7 @@ }, "input_digest": "a11960a1bd3f521902fe84af312597b4c7928f97c2dd5b0b37b898d5a00ce3e6", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -12901,7 +12901,7 @@ "scenario_id": "16" }, "detail": null, - "duration_seconds": 5.857927127974108, + "duration_seconds": 2.40005863897386, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -13501,7 +13501,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "647d9a4a1a219599288faf756e995322ffee249ad29d3fbb88d3b1859249421a", @@ -13514,7 +13514,7 @@ }, "input_digest": "ffd7241a6fbac9130b1d3b499285d0df2610825316987918d110592cbf847c7d", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -47804,7 +47804,7 @@ "scenario_id": "17" }, "detail": null, - "duration_seconds": 6.409847637987696, + "duration_seconds": 2.496446750999894, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -82091,7 +82091,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -82104,7 +82104,7 @@ }, "input_digest": "4fb3be3cba6d7c832eeb1fd8c72523b5260ea67fa5ecf3bceeb8e21256e0f998", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -82764,7 +82764,7 @@ "scenario_id": "01" }, "detail": null, - "duration_seconds": 8.108664872008376, + "duration_seconds": 3.2796498029783834, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -83421,7 +83421,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -83434,7 +83434,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -84094,7 +84094,7 @@ "scenario_id": "02" }, "detail": null, - "duration_seconds": 8.561968788970262, + "duration_seconds": 3.2718792619998567, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -84751,7 +84751,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "8901a4a7a750c26fb43ceb5d89b4c6ccf9279503da8659b8398cce30d90c8d9c", @@ -84764,7 +84764,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -84921,7 +84921,7 @@ "scenario_id": "03" }, "detail": null, - "duration_seconds": 8.515415634959936, + "duration_seconds": 3.283823539997684, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -85069,7 +85069,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "3b0720d05e9e5869aa6f01432d17918e2db8c0d80810310e6c39c8bf82d1aee0", @@ -85082,7 +85082,7 @@ }, "input_digest": "02743db0d03a02ec414e579929e5e4729b5f99124ab2a41bb234adf93626f62a", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -85239,7 +85239,7 @@ "scenario_id": "04" }, "detail": null, - "duration_seconds": 10.565478472039104, + "duration_seconds": 3.2739576989843044, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -85387,7 +85387,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "3b0720d05e9e5869aa6f01432d17918e2db8c0d80810310e6c39c8bf82d1aee0", @@ -85400,7 +85400,7 @@ }, "input_digest": "c013a16b8902a5599e53c27dae34849fcf327b4e89ec69d00c951903578f948a", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -86070,7 +86070,7 @@ "scenario_id": "05" }, "detail": null, - "duration_seconds": 9.401829604059458, + "duration_seconds": 3.301938585995231, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -86731,7 +86731,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -86744,7 +86744,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -86774,7 +86774,7 @@ { "comparison": null, "detail": "Scenario explicitly excludes this framework", - "duration_seconds": 1.3252021744847298e-05, + "duration_seconds": 4.305999027565122e-06, "framework": "vectorbt_oss", "framework_result": null, "ml4t_result": null, @@ -87418,7 +87418,7 @@ "scenario_id": "07" }, "detail": null, - "duration_seconds": 9.609306346974336, + "duration_seconds": 3.489302369998768, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -88075,7 +88075,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -88088,7 +88088,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -88748,7 +88748,7 @@ "scenario_id": "08" }, "detail": null, - "duration_seconds": 7.823328124010004, + "duration_seconds": 3.2756387109984644, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -89405,7 +89405,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -89418,7 +89418,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -89622,7 +89622,7 @@ "scenario_id": "09" }, "detail": null, - "duration_seconds": 8.161563238012604, + "duration_seconds": 3.2700116610212717, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -89823,7 +89823,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "b5511731b0b2768bf962b3ac1d81c21a82f96d04896692f85bef5e5030ce2b1c", @@ -89836,7 +89836,7 @@ }, "input_digest": "0857d4181ff37765143cd13fb7b67ead75a163a9ece87f9d258bb436175f2568", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -90097,7 +90097,7 @@ "scenario_id": "10" }, "detail": null, - "duration_seconds": 6.900826202007011, + "duration_seconds": 3.28076166997198, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -90355,7 +90355,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "27979784dbb2f9dd6cf72c0d89ea956d49003ed83a57ed254cb6a2cbd234b6a5", @@ -90368,7 +90368,7 @@ }, "input_digest": "23496f457ab5fcdf8c02626db8af05c791278cc307dff08599f673c376e9116c", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -91028,7 +91028,7 @@ "scenario_id": "11" }, "detail": null, - "duration_seconds": 8.65236167004332, + "duration_seconds": 3.2806944320036564, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -91685,7 +91685,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "8901a4a7a750c26fb43ceb5d89b4c6ccf9279503da8659b8398cce30d90c8d9c", @@ -91698,7 +91698,7 @@ }, "input_digest": "24a69cd2961c5f77332e19aa92432884a792bd64d1e045dac33f1922902e3ba3", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -91902,7 +91902,7 @@ "scenario_id": "12" }, "detail": null, - "duration_seconds": 8.984811055939645, + "duration_seconds": 3.276426674972754, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -92103,7 +92103,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "85ef0c7c62fc2cf1f841196fce585253cbfa5fe4d3beb0e6c204003994d7f28f", @@ -92116,7 +92116,7 @@ }, "input_digest": "06b9362c086c33e65085233ecbe78d43de5c0f00950eb8b19d6df6e89ba76d3b", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -92263,7 +92263,7 @@ "scenario_id": "13" }, "detail": null, - "duration_seconds": 9.084929016069509, + "duration_seconds": 3.265575686004013, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -92407,7 +92407,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "b5511731b0b2768bf962b3ac1d81c21a82f96d04896692f85bef5e5030ce2b1c", @@ -92420,7 +92420,7 @@ }, "input_digest": "8948480a577fa0d6a769f0af879559553b872df5c12ebbdc621237db201f1d99", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -92567,7 +92567,7 @@ "scenario_id": "14" }, "detail": null, - "duration_seconds": 8.524136180058122, + "duration_seconds": 3.2902293500083033, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -92711,7 +92711,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "b5511731b0b2768bf962b3ac1d81c21a82f96d04896692f85bef5e5030ce2b1c", @@ -92724,7 +92724,7 @@ }, "input_digest": "ea9583aa3a0de9f4e92d22968932fd83ac3e7d6e8d8a3e4f689e59868390c7d2", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -92871,7 +92871,7 @@ "scenario_id": "15" }, "detail": null, - "duration_seconds": 8.507728499011137, + "duration_seconds": 3.2879699780023657, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -93015,7 +93015,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "b5511731b0b2768bf962b3ac1d81c21a82f96d04896692f85bef5e5030ce2b1c", @@ -93028,7 +93028,7 @@ }, "input_digest": "a11960a1bd3f521902fe84af312597b4c7928f97c2dd5b0b37b898d5a00ce3e6", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -93631,7 +93631,7 @@ "scenario_id": "16" }, "detail": null, - "duration_seconds": 8.698428057949059, + "duration_seconds": 3.3276889869885053, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -94231,7 +94231,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "b5511731b0b2768bf962b3ac1d81c21a82f96d04896692f85bef5e5030ce2b1c", @@ -94244,7 +94244,7 @@ }, "input_digest": "ffd7241a6fbac9130b1d3b499285d0df2610825316987918d110592cbf847c7d", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -128534,7 +128534,7 @@ "scenario_id": "17" }, "detail": null, - "duration_seconds": 11.67768614704255, + "duration_seconds": 3.446819780016085, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -162821,7 +162821,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -162834,7 +162834,7 @@ }, "input_digest": "4fb3be3cba6d7c832eeb1fd8c72523b5260ea67fa5ecf3bceeb8e21256e0f998", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -163514,7 +163514,7 @@ "scenario_id": "01" }, "detail": null, - "duration_seconds": 0.7377126889768988, + "duration_seconds": 0.196002281998517, "framework": "backtrader", "framework_result": { "capabilities": { @@ -164193,7 +164193,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -164206,7 +164206,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -164886,7 +164886,7 @@ "scenario_id": "02" }, "detail": null, - "duration_seconds": 0.591123944032006, + "duration_seconds": 0.20314851799048483, "framework": "backtrader", "framework_result": { "capabilities": { @@ -165565,7 +165565,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "8901a4a7a750c26fb43ceb5d89b4c6ccf9279503da8659b8398cce30d90c8d9c", @@ -165578,7 +165578,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -165736,7 +165736,7 @@ "scenario_id": "03" }, "detail": null, - "duration_seconds": 0.5285431910306215, + "duration_seconds": 0.18192387197632343, "framework": "backtrader", "framework_result": { "capabilities": { @@ -165885,7 +165885,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "6a425065c946d387fafc9cb9978bb86d7754e617273669247cf1149fbd23cc03", @@ -165898,7 +165898,7 @@ }, "input_digest": "02743db0d03a02ec414e579929e5e4729b5f99124ab2a41bb234adf93626f62a", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -166056,7 +166056,7 @@ "scenario_id": "04" }, "detail": null, - "duration_seconds": 0.4309854300227016, + "duration_seconds": 0.18015228302101605, "framework": "backtrader", "framework_result": { "capabilities": { @@ -166205,7 +166205,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "6a425065c946d387fafc9cb9978bb86d7754e617273669247cf1149fbd23cc03", @@ -166218,7 +166218,7 @@ }, "input_digest": "c013a16b8902a5599e53c27dae34849fcf327b4e89ec69d00c951903578f948a", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -166908,7 +166908,7 @@ "scenario_id": "05" }, "detail": null, - "duration_seconds": 0.4313498859992251, + "duration_seconds": 0.19604376997449435, "framework": "backtrader", "framework_result": { "capabilities": { @@ -167589,7 +167589,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -167602,7 +167602,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -168292,7 +168292,7 @@ "scenario_id": "06" }, "detail": null, - "duration_seconds": 0.476837644004263, + "duration_seconds": 0.19825449099880643, "framework": "backtrader", "framework_result": { "capabilities": { @@ -168973,7 +168973,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -168986,7 +168986,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -169666,7 +169666,7 @@ "scenario_id": "07" }, "detail": null, - "duration_seconds": 0.6506100280676037, + "duration_seconds": 0.19902472800458781, "framework": "backtrader", "framework_result": { "capabilities": { @@ -170345,7 +170345,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -170358,7 +170358,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -171038,7 +171038,7 @@ "scenario_id": "08" }, "detail": null, - "duration_seconds": 0.7047724470030516, + "duration_seconds": 0.1994794640049804, "framework": "backtrader", "framework_result": { "capabilities": { @@ -171717,7 +171717,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -171730,7 +171730,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -171936,7 +171936,7 @@ "scenario_id": "09" }, "detail": null, - "duration_seconds": 0.6423015589825809, + "duration_seconds": 0.20280813300632872, "framework": "backtrader", "framework_result": { "capabilities": { @@ -172139,7 +172139,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "6a425065c946d387fafc9cb9978bb86d7754e617273669247cf1149fbd23cc03", @@ -172152,7 +172152,7 @@ }, "input_digest": "0857d4181ff37765143cd13fb7b67ead75a163a9ece87f9d258bb436175f2568", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -172416,7 +172416,7 @@ "scenario_id": "10" }, "detail": null, - "duration_seconds": 0.4728376549901441, + "duration_seconds": 0.1947569830226712, "framework": "backtrader", "framework_result": { "capabilities": { @@ -172677,7 +172677,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "6a425065c946d387fafc9cb9978bb86d7754e617273669247cf1149fbd23cc03", @@ -172690,7 +172690,7 @@ }, "input_digest": "23496f457ab5fcdf8c02626db8af05c791278cc307dff08599f673c376e9116c", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -173360,7 +173360,7 @@ "scenario_id": "11" }, "detail": null, - "duration_seconds": 0.6280102890450507, + "duration_seconds": 0.20344708301126957, "framework": "backtrader", "framework_result": { "capabilities": { @@ -174027,7 +174027,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "8901a4a7a750c26fb43ceb5d89b4c6ccf9279503da8659b8398cce30d90c8d9c", @@ -174040,7 +174040,7 @@ }, "input_digest": "24a69cd2961c5f77332e19aa92432884a792bd64d1e045dac33f1922902e3ba3", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -174246,7 +174246,7 @@ "scenario_id": "12" }, "detail": null, - "duration_seconds": 0.6832183171063662, + "duration_seconds": 0.19478780799545348, "framework": "backtrader", "framework_result": { "capabilities": { @@ -174449,7 +174449,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "573f73f81275679129b0b0cda5fdf37aa7c8dadf009a5f5aca55fb7be9f9985e", @@ -174462,7 +174462,7 @@ }, "input_digest": "06b9362c086c33e65085233ecbe78d43de5c0f00950eb8b19d6df6e89ba76d3b", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -174610,7 +174610,7 @@ "scenario_id": "13" }, "detail": null, - "duration_seconds": 0.46930358500685543, + "duration_seconds": 0.18443024798762053, "framework": "backtrader", "framework_result": { "capabilities": { @@ -174755,7 +174755,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "6a425065c946d387fafc9cb9978bb86d7754e617273669247cf1149fbd23cc03", @@ -174768,7 +174768,7 @@ }, "input_digest": "8948480a577fa0d6a769f0af879559553b872df5c12ebbdc621237db201f1d99", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -174916,7 +174916,7 @@ "scenario_id": "14" }, "detail": null, - "duration_seconds": 0.6980205000145361, + "duration_seconds": 0.1862446700106375, "framework": "backtrader", "framework_result": { "capabilities": { @@ -175061,7 +175061,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "6a425065c946d387fafc9cb9978bb86d7754e617273669247cf1149fbd23cc03", @@ -175074,7 +175074,7 @@ }, "input_digest": "ea9583aa3a0de9f4e92d22968932fd83ac3e7d6e8d8a3e4f689e59868390c7d2", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -175222,7 +175222,7 @@ "scenario_id": "15" }, "detail": null, - "duration_seconds": 0.6522174848942086, + "duration_seconds": 0.18509420097689144, "framework": "backtrader", "framework_result": { "capabilities": { @@ -175367,7 +175367,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "6a425065c946d387fafc9cb9978bb86d7754e617273669247cf1149fbd23cc03", @@ -175380,7 +175380,7 @@ }, "input_digest": "a11960a1bd3f521902fe84af312597b4c7928f97c2dd5b0b37b898d5a00ce3e6", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -175992,7 +175992,7 @@ "scenario_id": "16" }, "detail": null, - "duration_seconds": 0.7310566540108994, + "duration_seconds": 0.3257330180204008, "framework": "backtrader", "framework_result": { "capabilities": { @@ -176601,7 +176601,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "6a425065c946d387fafc9cb9978bb86d7754e617273669247cf1149fbd23cc03", @@ -176614,7 +176614,7 @@ }, "input_digest": "ffd7241a6fbac9130b1d3b499285d0df2610825316987918d110592cbf847c7d", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -212104,7 +212104,7 @@ "scenario_id": "17" }, "detail": null, - "duration_seconds": 1.4868141730548814, + "duration_seconds": 0.5314568080066238, "framework": "backtrader", "framework_result": { "capabilities": { @@ -247593,7 +247593,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -247606,7 +247606,7 @@ }, "input_digest": "4fb3be3cba6d7c832eeb1fd8c72523b5260ea67fa5ecf3bceeb8e21256e0f998", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -247981,7 +247981,7 @@ "scenario_id": "01" }, "detail": null, - "duration_seconds": 4.911450320039876, + "duration_seconds": 2.1863154790189583, "framework": "zipline", "framework_result": { "capabilities": { @@ -248357,7 +248357,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -248370,7 +248370,7 @@ }, "input_digest": "1e10efa2535c6df89cf6723633fd6f36e07a7f3449632f4aebaa518c1afade05", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -248745,7 +248745,7 @@ "scenario_id": "02" }, "detail": null, - "duration_seconds": 5.118009143974632, + "duration_seconds": 2.1630376590183005, "framework": "zipline", "framework_result": { "capabilities": { @@ -249121,7 +249121,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "8901a4a7a750c26fb43ceb5d89b4c6ccf9279503da8659b8398cce30d90c8d9c", @@ -249134,7 +249134,7 @@ }, "input_digest": "1e10efa2535c6df89cf6723633fd6f36e07a7f3449632f4aebaa518c1afade05", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -249291,7 +249291,7 @@ "scenario_id": "03" }, "detail": null, - "duration_seconds": 4.998558622086421, + "duration_seconds": 2.1116317419800907, "framework": "zipline", "framework_result": { "capabilities": { @@ -249443,7 +249443,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "16de00f1f72fcdd0199f55a77aaf5fe9c2e99450ae25a5350bd854eebf3896f5", @@ -249456,7 +249456,7 @@ }, "input_digest": "2ade3aa0a65bc5315f2297bc8bbc19b45dfdb8db50e52d56fc85ecb4a82facdd", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -249613,7 +249613,7 @@ "scenario_id": "04" }, "detail": null, - "duration_seconds": 5.3552550280001014, + "duration_seconds": 2.1556844250008, "framework": "zipline", "framework_result": { "capabilities": { @@ -249765,7 +249765,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "16de00f1f72fcdd0199f55a77aaf5fe9c2e99450ae25a5350bd854eebf3896f5", @@ -249778,7 +249778,7 @@ }, "input_digest": "f576ca0b7380cdcf6eb6c99d5b8467e796d9811d6fb1cd66191df1688a948b62", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -250163,7 +250163,7 @@ "scenario_id": "05" }, "detail": null, - "duration_seconds": 4.832481227000244, + "duration_seconds": 2.18179848100408, "framework": "zipline", "framework_result": { "capabilities": { @@ -250543,7 +250543,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -250556,7 +250556,7 @@ }, "input_digest": "1e10efa2535c6df89cf6723633fd6f36e07a7f3449632f4aebaa518c1afade05", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -250941,7 +250941,7 @@ "scenario_id": "06" }, "detail": null, - "duration_seconds": 5.120813203975558, + "duration_seconds": 2.163142125005834, "framework": "zipline", "framework_result": { "capabilities": { @@ -251321,7 +251321,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -251334,7 +251334,7 @@ }, "input_digest": "1e10efa2535c6df89cf6723633fd6f36e07a7f3449632f4aebaa518c1afade05", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -251709,7 +251709,7 @@ "scenario_id": "07" }, "detail": null, - "duration_seconds": 5.371371270972304, + "duration_seconds": 2.1588481070066337, "framework": "zipline", "framework_result": { "capabilities": { @@ -252085,7 +252085,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -252098,7 +252098,7 @@ }, "input_digest": "1e10efa2535c6df89cf6723633fd6f36e07a7f3449632f4aebaa518c1afade05", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -252473,7 +252473,7 @@ "scenario_id": "08" }, "detail": null, - "duration_seconds": 5.22201343101915, + "duration_seconds": 2.138550472998759, "framework": "zipline", "framework_result": { "capabilities": { @@ -252849,7 +252849,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -252862,7 +252862,7 @@ }, "input_digest": "1e10efa2535c6df89cf6723633fd6f36e07a7f3449632f4aebaa518c1afade05", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -253066,7 +253066,7 @@ "scenario_id": "09" }, "detail": null, - "duration_seconds": 6.015038721030578, + "duration_seconds": 2.145863901008852, "framework": "zipline", "framework_result": { "capabilities": { @@ -253271,7 +253271,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "94534fbfeca18ae041b780a18fbfe6884c21c0ce8c84d15d1d8e2096ba59cce7", @@ -253284,7 +253284,7 @@ }, "input_digest": "52803556b6f294e3ad1223585e297f6dab81add8ca8cf22db7ed227dc14fe627", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -253314,7 +253314,7 @@ { "comparison": null, "detail": "Scenario explicitly excludes this framework", - "duration_seconds": 1.0857009328901768e-05, + "duration_seconds": 3.250985173508525e-06, "framework": "zipline", "framework_result": null, "ml4t_result": null, @@ -253673,7 +253673,7 @@ "scenario_id": "11" }, "detail": null, - "duration_seconds": 5.913450311985798, + "duration_seconds": 2.1631252949882764, "framework": "zipline", "framework_result": { "capabilities": { @@ -254049,7 +254049,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "8901a4a7a750c26fb43ceb5d89b4c6ccf9279503da8659b8398cce30d90c8d9c", @@ -254062,7 +254062,7 @@ }, "input_digest": "8a8791a9d96df21d21b4fa14ebf111ea1417ec8424fd87ac9b4b79515ca6c952", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -254266,7 +254266,7 @@ "scenario_id": "12" }, "detail": null, - "duration_seconds": 5.7730012009851635, + "duration_seconds": 2.145378993009217, "framework": "zipline", "framework_result": { "capabilities": { @@ -254471,7 +254471,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "1d86423ea9c4ce2c32fc3b60b01566b4a0fe7f5629ee4cf2bf6899fd4d728f69", @@ -254484,7 +254484,7 @@ }, "input_digest": "ad5a0b9abf3e7e3ae35e06811443d816a29ac95b66e0bc7ce6b49a175f1e5fce", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -254631,7 +254631,7 @@ "scenario_id": "13" }, "detail": null, - "duration_seconds": 5.667329263989814, + "duration_seconds": 2.119013065996114, "framework": "zipline", "framework_result": { "capabilities": { @@ -254779,7 +254779,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "94534fbfeca18ae041b780a18fbfe6884c21c0ce8c84d15d1d8e2096ba59cce7", @@ -254792,7 +254792,7 @@ }, "input_digest": "bc94952cbe0b0c493e4a5599ddcd00a92412a9c8c838ea8e5c02d84d217baf0c", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -254939,7 +254939,7 @@ "scenario_id": "14" }, "detail": null, - "duration_seconds": 5.856720374082215, + "duration_seconds": 2.119811135024065, "framework": "zipline", "framework_result": { "capabilities": { @@ -255087,7 +255087,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "94534fbfeca18ae041b780a18fbfe6884c21c0ce8c84d15d1d8e2096ba59cce7", @@ -255100,7 +255100,7 @@ }, "input_digest": "a0bd681ff924f45192415219403b02e639df271a2aa5987bb9b1e263b2d8c88a", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -255247,7 +255247,7 @@ "scenario_id": "15" }, "detail": null, - "duration_seconds": 5.197788162040524, + "duration_seconds": 2.1282190759957302, "framework": "zipline", "framework_result": { "capabilities": { @@ -255395,7 +255395,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "94534fbfeca18ae041b780a18fbfe6884c21c0ce8c84d15d1d8e2096ba59cce7", @@ -255408,7 +255408,7 @@ }, "input_digest": "ce9cac417809758597595322703b30800145707fa0db44bd7f2cd0775790c114", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -255783,7 +255783,7 @@ "scenario_id": "16" }, "detail": null, - "duration_seconds": 6.822331433999352, + "duration_seconds": 2.5927487679873593, "framework": "zipline", "framework_result": { "capabilities": { @@ -256159,7 +256159,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "94534fbfeca18ae041b780a18fbfe6884c21c0ce8c84d15d1d8e2096ba59cce7", @@ -256172,7 +256172,7 @@ }, "input_digest": "88cfc732983d3fa783e181fd4c97f8d95f7833e20dd03de0c201aaa85e83ca8b", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { @@ -275471,7 +275471,7 @@ "scenario_id": "17" }, "detail": null, - "duration_seconds": 7.328603642992675, + "duration_seconds": 2.9013121819880325, "framework": "zipline", "framework_result": { "capabilities": { @@ -294771,7 +294771,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "engine": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -294784,7 +294784,7 @@ }, "input_digest": "6fdd33a401576a2adde590f2f8d5986f5893e4663336033ba6c0f8f221d5d526", "ml4t": { - "commit": "b8b430b5332d823b422941b5090c2100e6de8c4d", + "commit": "da6a17f81729c7f3c38483b7e9aeaf8e7f4e10ad", "dirty": false }, "python": { diff --git a/validation/METHODOLOGY.md b/validation/METHODOLOGY.md index 83e08e12..ec928c5c 100644 --- a/validation/METHODOLOGY.md +++ b/validation/METHODOLOGY.md @@ -380,25 +380,25 @@ The table reports engine-call wall time for all 17 correctness-passing pairs. Th | Real strategy | Pinned framework | Framework median (95% CI), s | ML4T median (95% CI), s | Framework / ML4T median | |---|---|---:|---:|---:| -| ETF allocation | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.296 (0.290-0.303) | 0.425 (0.423-0.427) | 0.696x | -| ETF allocation | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.179 (0.178-0.184) | 0.423 (0.421-0.426) | 0.423x | -| ETF allocation | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 9.466 (9.403-9.652) | 0.436 (0.434-0.442) | 21.694x | -| ETF allocation | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 3.929 (3.901-3.979) | 0.623 (0.618-0.631) | 6.302x | -| ETF allocation | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.124 (2.038-2.145) | 0.722 (0.717-0.731) | 2.942x | -| CME futures | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.298 (0.295-0.302) | 0.399 (0.397-0.408) | 0.748x | -| CME futures | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 2.531 (2.504-2.568) | 0.400 (0.398-0.403) | 6.322x | -| Crypto perpetual funding | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.843 (2.725-2.951) | 0.580 (0.574-0.585) | 4.905x | -| FX allocation (USD-quoted pairs) | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.292 (0.291-0.298) | 0.147 (0.145-0.149) | 1.993x | -| FX allocation (USD-quoted pairs) | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.145 (0.143-0.149) | 0.146 (0.146-0.147) | 0.992x | -| FX allocation (USD-quoted pairs) | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 0.429 (0.427-0.432) | 0.147 (0.145-0.148) | 2.926x | -| FX allocation (USD-quoted pairs) | [LEAN 18001](https://github.com/QuantConnect/Lean) | 0.724 (0.702-0.749) | 0.485 (0.423-0.684) | 1.493x | -| US equity panel | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.914 (0.868-1.048) | 15.705 (15.512-16.282) | 0.058x | -| US equity panel | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 19.663 (18.596-26.957) | 18.061 (17.251-19.345) | 1.089x | -| US equity panel | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 549.128 (528.973-570.002) | 16.157 (16.053-16.278) | 33.987x | -| US equity panel | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 110.222 (109.392-111.608) | 16.521 (16.470-16.906) | 6.671x | -| US equity panel | [LEAN 18001](https://github.com/QuantConnect/Lean) | 45.957 (43.851-53.819) | 24.948 (23.623-25.419) | 1.842x | - -Measured 2026-09-09 on `Linux-6.8.0-138-generic-x86_64-with-glibc2.39` with 24 logical CPUs. Each side used one isolated warm-up process and ten isolated measured processes. The timer includes only the engine call; it excludes input loading, model inference, target construction, adapter preparation, result extraction, serialization, reporting. These measurements apply only to the named strategy, framework version, frozen input bundle, and machine. Raw samples and bootstrap intervals are retained in [real-strategy performance evidence](https://github.com/ml4t/backtest/blob/main/validation/REAL_STRATEGY_PERFORMANCE.json). +| ETF allocation | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.287 (0.286-0.289) | 0.415 (0.414-0.419) | 0.692x | +| ETF allocation | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.171 (0.171-0.174) | 0.415 (0.413-0.417) | 0.412x | +| ETF allocation | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 9.355 (9.303-9.424) | 0.430 (0.426-0.432) | 21.762x | +| ETF allocation | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 3.872 (3.867-3.910) | 0.632 (0.628-0.638) | 6.127x | +| ETF allocation | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.564 (2.487-2.599) | 0.750 (0.749-0.757) | 3.418x | +| CME futures | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.286 (0.284-0.289) | 0.432 (0.429-0.435) | 0.663x | +| CME futures | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 2.495 (2.488-2.526) | 0.429 (0.427-0.433) | 5.812x | +| Crypto perpetual funding | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.801 (2.709-2.891) | 0.657 (0.655-0.661) | 4.266x | +| FX allocation (USD-quoted pairs) | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.283 (0.281-0.286) | 0.146 (0.145-0.147) | 1.939x | +| FX allocation (USD-quoted pairs) | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.139 (0.138-0.141) | 0.146 (0.145-0.147) | 0.952x | +| FX allocation (USD-quoted pairs) | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 0.425 (0.420-0.432) | 0.146 (0.145-0.147) | 2.920x | +| FX allocation (USD-quoted pairs) | [LEAN 18001](https://github.com/QuantConnect/Lean) | 0.913 (0.877-0.953) | 0.153 (0.152-0.157) | 5.952x | +| US equity panel | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.795 (0.787-0.838) | 20.555 (20.486-20.600) | 0.039x | +| US equity panel | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 16.995 (16.960-17.024) | 20.495 (20.453-20.534) | 0.829x | +| US equity panel | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 495.553 (494.227-510.273) | 21.470 (21.386-21.543) | 23.082x | +| US equity panel | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 107.609 (106.834-109.150) | 22.132 (22.082-22.234) | 4.862x | +| US equity panel | [LEAN 18001](https://github.com/QuantConnect/Lean) | 47.683 (47.333-48.015) | 26.368 (26.222-26.473) | 1.808x | + +Measured 2026-09-03 on `Linux-6.8.0-138-generic-x86_64-with-glibc2.39` with 24 logical CPUs. Each side used one isolated warm-up process and ten isolated measured processes. The timer includes only the engine call; it excludes input loading, model inference, target construction, adapter preparation, result extraction, serialization, reporting. These measurements apply only to the named strategy, framework version, frozen input bundle, and machine. Raw samples and bootstrap intervals are retained in [real-strategy performance evidence](https://github.com/ml4t/backtest/blob/main/validation/REAL_STRATEGY_PERFORMANCE.json). ### Synthetic diagnostic scenarios diff --git a/validation/README.md b/validation/README.md index 808cc6d3..6eac8d82 100644 --- a/validation/README.md +++ b/validation/README.md @@ -56,25 +56,25 @@ The table reports engine-call wall time for all 17 correctness-passing pairs. Th | Real strategy | Pinned framework | Framework median (95% CI), s | ML4T median (95% CI), s | Framework / ML4T median | |---|---|---:|---:|---:| -| ETF allocation | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.296 (0.290-0.303) | 0.425 (0.423-0.427) | 0.696x | -| ETF allocation | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.179 (0.178-0.184) | 0.423 (0.421-0.426) | 0.423x | -| ETF allocation | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 9.466 (9.403-9.652) | 0.436 (0.434-0.442) | 21.694x | -| ETF allocation | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 3.929 (3.901-3.979) | 0.623 (0.618-0.631) | 6.302x | -| ETF allocation | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.124 (2.038-2.145) | 0.722 (0.717-0.731) | 2.942x | -| CME futures | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.298 (0.295-0.302) | 0.399 (0.397-0.408) | 0.748x | -| CME futures | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 2.531 (2.504-2.568) | 0.400 (0.398-0.403) | 6.322x | -| Crypto perpetual funding | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.843 (2.725-2.951) | 0.580 (0.574-0.585) | 4.905x | -| FX allocation (USD-quoted pairs) | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.292 (0.291-0.298) | 0.147 (0.145-0.149) | 1.993x | -| FX allocation (USD-quoted pairs) | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.145 (0.143-0.149) | 0.146 (0.146-0.147) | 0.992x | -| FX allocation (USD-quoted pairs) | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 0.429 (0.427-0.432) | 0.147 (0.145-0.148) | 2.926x | -| FX allocation (USD-quoted pairs) | [LEAN 18001](https://github.com/QuantConnect/Lean) | 0.724 (0.702-0.749) | 0.485 (0.423-0.684) | 1.493x | -| US equity panel | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.914 (0.868-1.048) | 15.705 (15.512-16.282) | 0.058x | -| US equity panel | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 19.663 (18.596-26.957) | 18.061 (17.251-19.345) | 1.089x | -| US equity panel | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 549.128 (528.973-570.002) | 16.157 (16.053-16.278) | 33.987x | -| US equity panel | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 110.222 (109.392-111.608) | 16.521 (16.470-16.906) | 6.671x | -| US equity panel | [LEAN 18001](https://github.com/QuantConnect/Lean) | 45.957 (43.851-53.819) | 24.948 (23.623-25.419) | 1.842x | - -Measured 2026-09-09 on `Linux-6.8.0-138-generic-x86_64-with-glibc2.39` with 24 logical CPUs. Each side used one isolated warm-up process and ten isolated measured processes. The timer includes only the engine call; it excludes input loading, model inference, target construction, adapter preparation, result extraction, serialization, reporting. These measurements apply only to the named strategy, framework version, frozen input bundle, and machine. Raw samples and bootstrap intervals are retained in [real-strategy performance evidence](https://github.com/ml4t/backtest/blob/main/validation/REAL_STRATEGY_PERFORMANCE.json). +| ETF allocation | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.287 (0.286-0.289) | 0.415 (0.414-0.419) | 0.692x | +| ETF allocation | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.171 (0.171-0.174) | 0.415 (0.413-0.417) | 0.412x | +| ETF allocation | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 9.355 (9.303-9.424) | 0.430 (0.426-0.432) | 21.762x | +| ETF allocation | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 3.872 (3.867-3.910) | 0.632 (0.628-0.638) | 6.127x | +| ETF allocation | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.564 (2.487-2.599) | 0.750 (0.749-0.757) | 3.418x | +| CME futures | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.286 (0.284-0.289) | 0.432 (0.429-0.435) | 0.663x | +| CME futures | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 2.495 (2.488-2.526) | 0.429 (0.427-0.433) | 5.812x | +| Crypto perpetual funding | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.801 (2.709-2.891) | 0.657 (0.655-0.661) | 4.266x | +| FX allocation (USD-quoted pairs) | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.283 (0.281-0.286) | 0.146 (0.145-0.147) | 1.939x | +| FX allocation (USD-quoted pairs) | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.139 (0.138-0.141) | 0.146 (0.145-0.147) | 0.952x | +| FX allocation (USD-quoted pairs) | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 0.425 (0.420-0.432) | 0.146 (0.145-0.147) | 2.920x | +| FX allocation (USD-quoted pairs) | [LEAN 18001](https://github.com/QuantConnect/Lean) | 0.913 (0.877-0.953) | 0.153 (0.152-0.157) | 5.952x | +| US equity panel | [VectorBT Pro 2026.6.27](https://github.com/polakowo/vectorbt.pro) | 0.795 (0.787-0.838) | 20.555 (20.486-20.600) | 0.039x | +| US equity panel | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 16.995 (16.960-17.024) | 20.495 (20.453-20.534) | 0.829x | +| US equity panel | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 495.553 (494.227-510.273) | 21.470 (21.386-21.543) | 23.082x | +| US equity panel | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 107.609 (106.834-109.150) | 22.132 (22.082-22.234) | 4.862x | +| US equity panel | [LEAN 18001](https://github.com/QuantConnect/Lean) | 47.683 (47.333-48.015) | 26.368 (26.222-26.473) | 1.808x | + +Measured 2026-09-03 on `Linux-6.8.0-138-generic-x86_64-with-glibc2.39` with 24 logical CPUs. Each side used one isolated warm-up process and ten isolated measured processes. The timer includes only the engine call; it excludes input loading, model inference, target construction, adapter preparation, result extraction, serialization, reporting. These measurements apply only to the named strategy, framework version, frozen input bundle, and machine. Raw samples and bootstrap intervals are retained in [real-strategy performance evidence](https://github.com/ml4t/backtest/blob/main/validation/REAL_STRATEGY_PERFORMANCE.json). ### Synthetic diagnostic scenarios diff --git a/validation/REAL_STRATEGY_PERFORMANCE.json b/validation/REAL_STRATEGY_PERFORMANCE.json index dcc9df58..751238b6 100644 --- a/validation/REAL_STRATEGY_PERFORMANCE.json +++ b/validation/REAL_STRATEGY_PERFORMANCE.json @@ -1,5 +1,5 @@ { - "correctness_evidence_generated_at": "2026-09-08T20:39:08.460346+00:00", + "correctness_evidence_generated_at": "2026-09-03T08:49:07.253544+00:00", "environment": { "cpu_count": 24, "frameworks": { @@ -99,9 +99,9 @@ "platform": "Linux-6.8.0-138-generic-x86_64-with-glibc2.39", "processor": "x86_64" }, - "generated_at": "2026-09-09T07:52:45.726726+00:00", + "generated_at": "2026-09-03T11:44:14.344493+00:00", "provenance": { - "ml4t_engine_source_sha256": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836", + "ml4t_engine_source_sha256": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58", "sources": { "backtrader": "a456cc3bf9ed6708d239f21ed2c2495a3c19a9a8306634fee24619c2c0484459", "benchmark": "99164392057a3ed3810c4dbe23a9c6084eb30f1553c92eb3a54f5d61e8d9b344", @@ -122,55 +122,55 @@ "framework": "vectorbt_pro", "framework_engine": { "ci_95_seconds": [ - 0.2898634900338948, - 0.3031502824742347 + 0.28554552848800085, + 0.2885417409997899 ], - "maximum_seconds": 0.30958262097556144, - "median_seconds": 0.29565684648696333, - "minimum_seconds": 0.2839555769460276, + "maximum_seconds": 0.29064874499454163, + "median_seconds": 0.2872375610168092, + "minimum_seconds": 0.2836474619980436, "output_identity": { "equity.parquet": "9bef5099c36b4a61b32670d19340ebb9f4adba07c63359a5c31a345ad51d1cd6", "fills.parquet": "698baf228da467fcce287f6f7da4903b3421d2649b181e3905a3681905251ffd" }, "samples_seconds": [ - 0.2839555769460276, - 0.29754665098153055, - 0.30875391396693885, - 0.2898634900338948, - 0.29427445004694164, - 0.30958262097556144, - 0.28754499496426433, - 0.297039242926985, - 0.29956078401301056, - 0.29280188400298357 + 0.2878881780197844, + 0.2846226939873304, + 0.2836474619980436, + 0.2882649439852685, + 0.286586944013834, + 0.2885417409997899, + 0.29064874499454163, + 0.28637371701188385, + 0.28858046399545856, + 0.2864683629886713 ] }, - "framework_to_ml4t_median_ratio": 0.6964254353452846, + "framework_to_ml4t_median_ratio": 0.6924827859284183, "input_bundle_sha256": "01f38079ce47821a5379d3769e86f4a2170b88033108153bfc0f928698e946db", "ml4t_engine": { "ci_95_seconds": [ - 0.4228568209800869, - 0.4267608530353755 + 0.4141692244884325, + 0.41945260000647977 ], - "maximum_seconds": 0.4280163530493155, - "median_seconds": 0.4245348194963299, - "minimum_seconds": 0.4179053269326687, + "maximum_seconds": 0.4208305799984373, + "median_seconds": 0.4147937925008591, + "minimum_seconds": 0.41231122802128084, "output_identity": { "equity.parquet": "30c2d39d1165342a599754cfd6ae76019d212f753ab49c837895c9f6ce942339", - "fills.parquet": "904a72fd66278fbb84c164e799c8dfc3d826bb1efdb0c3a4132f72203039368f", + "fills.parquet": "2219d69d7d36fc654a61cf3044e7db0dc641bfa4923a847b39afdc41671171f4", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 0.42326817102730274, - 0.4280163530493155, - 0.4238164779962972, - 0.4179053269326687, - 0.42702835402451456, - 0.4267608530353755, - 0.42525316099636257, - 0.42380960297305137, - 0.4219040389871225, - 0.4260525139980018 + 0.42046853801002726, + 0.4144462959957309, + 0.41231122802128084, + 0.41445882100379094, + 0.41389215298113413, + 0.41595029999734834, + 0.41429151402553543, + 0.41945260000647977, + 0.4208305799984373, + 0.4151287639979273 ] } }, @@ -180,55 +180,55 @@ "framework": "vectorbt_oss", "framework_engine": { "ci_95_seconds": [ - 0.1775521255331114, - 0.1837882164400071 + 0.17068579950137064, + 0.17357376401196234 ], - "maximum_seconds": 0.19256116298492998, - "median_seconds": 0.17892681644298136, - "minimum_seconds": 0.17572793900035322, + "maximum_seconds": 0.18489615400903858, + "median_seconds": 0.17132284450053703, + "minimum_seconds": 0.16843955099466257, "output_identity": { "equity.parquet": "9bef5099c36b4a61b32670d19340ebb9f4adba07c63359a5c31a345ad51d1cd6", "fills.parquet": "a563dc47e59cc8d1ecf49a490f1e83842e5c4ca67a6a56adb411a58eb0842646" }, "samples_seconds": [ - 0.17865553696174175, - 0.1823599310591817, - 0.19256116298492998, - 0.18627417890820652, - 0.17919809592422098, - 0.17660772404633462, - 0.17849652701988816, - 0.18130225397180766, - 0.1775777789298445, - 0.17572793900035322 + 0.18489615400903858, + 0.17261791799683124, + 0.17124448300455697, + 0.17079768699477427, + 0.17080065800109878, + 0.16843955099466257, + 0.1705709410016425, + 0.1714012059965171, + 0.1738385669887066, + 0.17357376401196234 ] }, - "framework_to_ml4t_median_ratio": 0.4226539101217617, + "framework_to_ml4t_median_ratio": 0.4124410450618539, "input_bundle_sha256": "01f38079ce47821a5379d3769e86f4a2170b88033108153bfc0f928698e946db", "ml4t_engine": { "ci_95_seconds": [ - 0.4205878140637651, - 0.4261049178894609 + 0.41297478799242526, + 0.41699278698069975 ], - "maximum_seconds": 0.46772890200372785, - "median_seconds": 0.4233412069734186, - "minimum_seconds": 0.41968671698123217, + "maximum_seconds": 0.4207736090174876, + "median_seconds": 0.4153874754993012, + "minimum_seconds": 0.40992282700608484, "output_identity": { "equity.parquet": "30c2d39d1165342a599754cfd6ae76019d212f753ab49c837895c9f6ce942339", - "fills.parquet": "904a72fd66278fbb84c164e799c8dfc3d826bb1efdb0c3a4132f72203039368f", + "fills.parquet": "2219d69d7d36fc654a61cf3044e7db0dc641bfa4923a847b39afdc41671171f4", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 0.4261049178894609, - 0.4232753689866513, - 0.42807674198411405, - 0.42236656905151904, - 0.4234070449601859, - 0.41968671698123217, - 0.46772890200372785, - 0.4239907630253583, - 0.4205878140637651, - 0.41986053506843746 + 0.4166069460043218, + 0.4207736090174876, + 0.4155321999860462, + 0.41386474401224405, + 0.41524275101255625, + 0.4170354550005868, + 0.40992282700608484, + 0.4125243329908699, + 0.41699278698069975, + 0.41297478799242526 ] } }, @@ -238,56 +238,56 @@ "framework": "backtrader", "framework_engine": { "ci_95_seconds": [ - 9.40296464401763, - 9.652323030517437 + 9.30285160850326, + 9.423639220010955 ], - "maximum_seconds": 9.915694114053622, - "median_seconds": 9.466379411518574, - "minimum_seconds": 9.381777568953112, + "maximum_seconds": 9.45949614199344, + "median_seconds": 9.355300096503925, + "minimum_seconds": 9.132323172001634, "output_identity": { "equity.parquet": "194818b08af3ceac17f2ff8b143d76184b63f95a92ab2db1ee4a13b903843d92", "fills.parquet": "8fbc351395431fcaf3d986c1d72011520394fa202db5b25ea2a79f49f4c013ab", "rejected_orders.parquet": "29756624602e47c7f667e995e892fd158828381420d570a8a8a65d23d84d617b" }, "samples_seconds": [ - 9.381777568953112, - 9.521463896031491, - 9.451141929952428, - 9.544299868983217, - 9.783182165003382, - 9.446272782981396, - 9.40296464401763, - 9.915694114053622, - 9.388862106017768, - 9.48161689308472 + 9.425851352018071, + 9.262009288999252, + 9.352195490006125, + 9.342917869973462, + 9.34369392800727, + 9.132323172001634, + 9.389201070007402, + 9.358404703001725, + 9.45949614199344, + 9.423639220010955 ] }, - "framework_to_ml4t_median_ratio": 21.69442659019447, + "framework_to_ml4t_median_ratio": 21.7615755934312, "input_bundle_sha256": "01f38079ce47821a5379d3769e86f4a2170b88033108153bfc0f928698e946db", "ml4t_engine": { "ci_95_seconds": [ - 0.4337827219860628, - 0.44239338394254446 + 0.42605314050160814, + 0.431600633499329 ], - "maximum_seconds": 0.48105644597671926, - "median_seconds": 0.4363507545203902, - "minimum_seconds": 0.4325518360128626, + "maximum_seconds": 0.4326717059884686, + "median_seconds": 0.4298999425082002, + "minimum_seconds": 0.42367077799281105, "output_identity": { "equity.parquet": "c0d9b87df7d1d490134679c571414ee3f5d5dc96cba2fd81e18c24c920ee9b60", - "fills.parquet": "7dac5c83214c8d03368049095db934a284d7f89b46e240ccb9896cce90bcfd1b", - "rejected_orders.parquet": "cc78f48b47cfd5253b16288011b7811dc5e702ada6927580bdfa2353a0d05ea8" + "fills.parquet": "11fee07c68fa9550b8c9bfa8590940e33a0247db7640c280043b6eddcaf7fa12", + "rejected_orders.parquet": "12abf1f224c27116ad669c98592fc527880414b152e921de2fb362eb8c3815d3" }, "samples_seconds": [ - 0.4325518360128626, - 0.4347515449626371, - 0.4328138990094885, - 0.4454394350759685, - 0.44239338394254446, - 0.48105644597671926, - 0.4352340119658038, - 0.4381953509291634, - 0.43746749707497656, - 0.4346389549318701 + 0.43116882801405154, + 0.42472128602094017, + 0.42367077799281105, + 0.4305817059939727, + 0.4320324389846064, + 0.4311954760050867, + 0.4273849949822761, + 0.42921817902242765, + 0.42622934401151724, + 0.4326717059884686 ] } }, @@ -297,55 +297,55 @@ "framework": "zipline", "framework_engine": { "ci_95_seconds": [ - 3.900748510961421, - 3.978974065510556 + 3.8670725979900453, + 3.9098115700180642 ], - "maximum_seconds": 4.040062285028398, - "median_seconds": 3.9290318089770153, - "minimum_seconds": 3.8906444440362975, + "maximum_seconds": 3.952663065982051, + "median_seconds": 3.8715068249875912, + "minimum_seconds": 3.851871683000354, "output_identity": { "equity.parquet": "e67ccdf71043cd216a9d8ea6f96f6cc0eba564907919ef1b867bce4726e36b31", "fills.parquet": "611b2ca3adc8a24484dcee08d5fba4c9219c0c0c6f4b27d701db51ea98390572" }, "samples_seconds": [ - 3.9297679970040917, - 3.8906444440362975, - 3.958755716914311, - 3.928295620949939, - 3.9091620430117473, - 4.001497296965681, - 3.956450834055431, - 3.900748510961421, - 4.040062285028398, - 3.8994944429723546 + 3.871085986989783, + 3.952663065982051, + 3.9098115700180642, + 3.8673573849955574, + 3.851871683000354, + 3.8719276629853994, + 3.8767027010035235, + 3.870405462977942, + 3.912462295993464, + 3.8637397330021486 ] }, - "framework_to_ml4t_median_ratio": 6.302161740050979, + "framework_to_ml4t_median_ratio": 6.126579592244658, "input_bundle_sha256": "01f38079ce47821a5379d3769e86f4a2170b88033108153bfc0f928698e946db", "ml4t_engine": { "ci_95_seconds": [ - 0.6176329150330275, - 0.6314187130774371 + 0.6284003740001936, + 0.6377887904964155 ], - "maximum_seconds": 0.6397651789011434, - "median_seconds": 0.6234419189859182, - "minimum_seconds": 0.6130480390274897, + "maximum_seconds": 0.6476017300155945, + "median_seconds": 0.6319197794946376, + "minimum_seconds": 0.6249592270178255, "output_identity": { "equity.parquet": "578498185c7abd3b869578c8492937a09ce6cf8904ea64650375587fd397952a", - "fills.parquet": "d3daa2754b23c49802344748cd082d98920a97014694b1af1e40055ea4a4a76b", + "fills.parquet": "b068c42a1d63409086e4cc638aec586818f9025f661897e7bdd34e5e4d8f9c6f", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 0.6130480390274897, - 0.6229738619877025, - 0.6201595860766247, - 0.6176329150330275, - 0.6239099759841338, - 0.6154187310021371, - 0.6294018810149282, - 0.6397651789011434, - 0.6262302270624787, - 0.6366071990923956 + 0.6333068659878336, + 0.6297633819922339, + 0.6313362790097017, + 0.6249592270178255, + 0.6297856899909675, + 0.6422707150049973, + 0.6325032799795736, + 0.6476017300155945, + 0.6270150580094196, + 0.6363518029975239 ] } }, @@ -355,56 +355,56 @@ "framework": "lean", "framework_engine": { "ci_95_seconds": [ - 2.0379864280112088, - 2.1450753634562716 + 2.4874195760057773, + 2.599079799008905 ], - "maximum_seconds": 2.1784407789818943, - "median_seconds": 2.124103998474311, - "minimum_seconds": 1.9973060969496146, + "maximum_seconds": 2.7125714069989044, + "median_seconds": 2.564114402513951, + "minimum_seconds": 2.47689789001015, "output_identity": { - "equity.parquet": "0a644fee4073605011407b32f7cc1443360ce939e00602c2ab357d2d2f797baa", - "fills.parquet": "a24ebc61f9cb814d9e786d3256f64634d90122d475ed5d1c2dbf75668adcf536", + "equity.parquet": "906fd1b8d49ebc67b790dee610327360d55e4cacb77b34c5732b8a3c124fe398", + "fills.parquet": "e0891a195392d6b92fa5956a58c4a57a84b62b8ae11e48dca6a617f2fa126a18", "rejected_orders.parquet": "9e7aedba072cbcd23432976f03fb6edef656da961cd2e73dbd75188842b29c36" }, "samples_seconds": [ - 2.1399313759757206, - 2.1502193509368226, - 2.1784407789818943, - 2.122473064926453, - 1.9973060969496146, - 2.1257349320221692, - 2.1412360890535638, - 2.023386694956571, - 2.1169478789670393, - 2.0379864280112088 + 2.56353892700281, + 2.564689878025092, + 2.5824199889902957, + 2.5214746879937593, + 2.47689789001015, + 2.482074404018931, + 2.6281440810125787, + 2.5700155170052312, + 2.4874195760057773, + 2.7125714069989044 ] }, - "framework_to_ml4t_median_ratio": 2.941765083662065, + "framework_to_ml4t_median_ratio": 3.418485618498456, "input_bundle_sha256": "01f38079ce47821a5379d3769e86f4a2170b88033108153bfc0f928698e946db", "ml4t_engine": { "ci_95_seconds": [ - 0.7172836170066148, - 0.731231466983445 + 0.7486901020165533, + 0.7566314754949417 ], - "maximum_seconds": 0.8213526360923424, - "median_seconds": 0.7220508565660566, - "minimum_seconds": 0.7120782670099288, + "maximum_seconds": 0.7671177280135453, + "median_seconds": 0.750073186980444, + "minimum_seconds": 0.7482178049976937, "output_identity": { "equity.parquet": "9d2ae671c05691680de1a947edc07b5805d3d17c4fffdb0d9cb002908d5d9189", - "fills.parquet": "e8903f6676292f1021bd420c2d530322639bdb2f9534e5130f4ae8b41a04ddd0", + "fills.parquet": "6dabab0285fe7d1d41c6008f9db1910fd0eb5117ce132cda2eac13fa47581b18", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 0.7172836170066148, - 0.7216209170874208, - 0.7165142330341041, - 0.720603023073636, - 0.7320678359828889, - 0.7120782670099288, - 0.7224807960446924, - 0.8213526360923424, - 0.731231466983445, - 0.7233765489654616 + 0.75504609500058, + 0.7502520319831092, + 0.749083264003275, + 0.7518141379987355, + 0.7614488129911479, + 0.7498943419777788, + 0.7482178049976937, + 0.7483703329926357, + 0.7671177280135453, + 0.7486901020165533 ] } }, @@ -414,55 +414,55 @@ "framework": "vectorbt_pro", "framework_engine": { "ci_95_seconds": [ - 0.29537657205946743, - 0.3015630249865353 + 0.28389174649782944, + 0.2887275889952434 ], - "maximum_seconds": 0.32689427491277456, - "median_seconds": 0.2982153939665295, - "minimum_seconds": 0.28120043396484107, + "maximum_seconds": 0.29045845798100345, + "median_seconds": 0.28636373148765415, + "minimum_seconds": 0.28267808200325817, "output_identity": { "equity.parquet": "40991bd7b1641af22425d7bac85980f54f37d25e460f56710a7994eeaf5669c0", "fills.parquet": "6348edba773d059a5417470a3fca1378a6853909266e833b99dc6ec0160b3b78" }, "samples_seconds": [ - 0.2943801870569587, - 0.2991350869415328, - 0.300370148033835, - 0.3015630249865353, - 0.28120043396484107, - 0.30228271801024675, - 0.29537657205946743, - 0.32689427491277456, - 0.2972102720523253, - 0.29729570099152625 + 0.28724599999259226, + 0.2858317520003766, + 0.2839527069882024, + 0.28267808200325817, + 0.2902091779978946, + 0.2844167379953433, + 0.2877347480098251, + 0.2833667550003156, + 0.2868957109749317, + 0.29045845798100345 ] }, - "framework_to_ml4t_median_ratio": 0.7483014571382702, + "framework_to_ml4t_median_ratio": 0.6631588833815962, "input_bundle_sha256": "c7191027f550ef1be0c9528dac08e7c2bf6a76c86d935f593efeb1ad8b628c39", "ml4t_engine": { "ci_95_seconds": [ - 0.39727354305796325, - 0.40751517401076853 + 0.428688713509473, + 0.43454156002553646 ], - "maximum_seconds": 0.4130425000330433, - "median_seconds": 0.39852306997636333, - "minimum_seconds": 0.3969760109903291, + "maximum_seconds": 0.4363564869854599, + "median_seconds": 0.43181768149952404, + "minimum_seconds": 0.42630503099644557, "output_identity": { "equity.parquet": "b61097a9c1c8635ccc9278db28aa955a69c16bac261515fa6ccff06211ca45f6", - "fills.parquet": "0cea5189115b3c7ec680d7f73895278b83ff097e863324bd944c9272d794edbb", - "rejected_orders.parquet": "2b4e500b98a08814aa8b42e0693c7bca7076cf9006444f5b26600bb9669647a7" + "fills.parquet": "fc54ddad09f939944a9070e8a4215089d0dcded8adcc3f6872e78ecec7c9102c", + "rejected_orders.parquet": "f63d7bb35fa856811f134b23dcda951357aa799d3ff565c8416a0a0794b731e0" }, "samples_seconds": [ - 0.39840562804602087, - 0.3969760109903291, - 0.4130425000330433, - 0.41184384003281593, - 0.39726358104962856, - 0.39727354305796325, - 0.3986405119067058, - 0.4056334370980039, - 0.40318650798872113, - 0.39740371506195515 + 0.4363564869854599, + 0.4286542210029438, + 0.43411476400797255, + 0.43559188302606344, + 0.42630503099644557, + 0.43349123702500947, + 0.4287232060160022, + 0.43276859901379794, + 0.4286969269742258, + 0.43086676398525015 ] } }, @@ -472,56 +472,56 @@ "framework": "backtrader", "framework_engine": { "ci_95_seconds": [ - 2.5037397670093924, - 2.5677278629736975 + 2.487967457011109, + 2.526018163494882 ], - "maximum_seconds": 2.5709340639878064, - "median_seconds": 2.5305959385004826, - "minimum_seconds": 2.4771206950535998, + "maximum_seconds": 2.569449374015676, + "median_seconds": 2.494809443000122, + "minimum_seconds": 2.481621830986114, "output_identity": { "equity.parquet": "8f7ec2015c441a7d7723116aadcc7b30bdabb8f30fa4ea108fa96cfff6dcf075", "fills.parquet": "e9888baac855ce576654e66159958eceb70833876507b7228737c7d49a9f8d0b", "rejected_orders.parquet": "28769b824e4cce25769e28dd6764b6ae4e66b1fad0b70e695eba96fa27eb3cef" }, "samples_seconds": [ - 2.4822507250355557, - 2.5709340639878064, - 2.535963068017736, - 2.558035208028741, - 2.5707766979467124, - 2.5677278629736975, - 2.4771206950535998, - 2.525228808983229, - 2.5243962380336598, - 2.5069715139688924 + 2.569449374015676, + 2.4946508139837533, + 2.487967457011109, + 2.483746792015154, + 2.5549371949746273, + 2.497099132015137, + 2.4949680720164906, + 2.5185832470015157, + 2.4939123849908356, + 2.481621830986114 ] }, - "framework_to_ml4t_median_ratio": 6.321791119536858, + "framework_to_ml4t_median_ratio": 5.811638815571466, "input_bundle_sha256": "c7191027f550ef1be0c9528dac08e7c2bf6a76c86d935f593efeb1ad8b628c39", "ml4t_engine": { "ci_95_seconds": [ - 0.39844792702933773, - 0.40330312796868384 + 0.4273611745011294, + 0.4325851899920963 ], - "maximum_seconds": 0.4117315619951114, - "median_seconds": 0.4002973035094328, - "minimum_seconds": 0.39581716002430767, + "maximum_seconds": 0.43512895799358375, + "median_seconds": 0.4292781300027855, + "minimum_seconds": 0.4252439269912429, "output_identity": { "equity.parquet": "2478697a24a7b812e5e84dda67fa5fdbb3dc27455f9bb1b28491f082e96ff501", - "fills.parquet": "4cc366af96c4484a6e84db18f6367b89fabb4d98784b883ef1cde7bcc766eb78", + "fills.parquet": "0ad9d59fde347bc5cf76ab5387b479668bbc64228e1ca2091df56122e693aae3", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 0.4001411640783772, - 0.3998129490064457, - 0.4034680559998378, - 0.39581716002430767, - 0.39708290505222976, - 0.40045344294048846, - 0.40080470603425056, - 0.40330312796868384, - 0.39886940200813115, - 0.4117315619951114 + 0.4277158589975443, + 0.4333903399819974, + 0.4297198849963024, + 0.43135667699971236, + 0.4325851899920963, + 0.42789013299625367, + 0.43512895799358375, + 0.4288363750092685, + 0.4268322160060052, + 0.4252439269912429 ] } }, @@ -531,56 +531,56 @@ "framework": "lean", "framework_engine": { "ci_95_seconds": [ - 2.7245894219959155, - 2.950796814984642 + 2.7094629269995494, + 2.8912153329874855 ], - "maximum_seconds": 3.229695840040222, - "median_seconds": 2.842760041996371, - "minimum_seconds": 2.703325308044441, + "maximum_seconds": 2.9968422400124837, + "median_seconds": 2.801038935489487, + "minimum_seconds": 2.68302350200247, "output_identity": { - "equity.parquet": "7175e01ac24e001ebcc1ae56855f198cd5e4f07d92a376e0361a314ffd766cb8", - "fills.parquet": "c095672f9b5d9bcafdce2f003cb93952c118e5b1eede9db853b1a39b282fcad8", + "equity.parquet": "9fb5d72364e039e75a28a1dcb77c06082418d698cac2467de8dc0c84371d2762", + "fills.parquet": "93ca6c8936e944e5f077e5b9b272a5467bac5ae828650029fc198dacd33ef46b", "rejected_orders.parquet": "9e7aedba072cbcd23432976f03fb6edef656da961cd2e73dbd75188842b29c36" }, "samples_seconds": [ - 2.836501998011954, - 2.7245894219959155, - 2.927007616031915, - 2.849018085980788, - 2.708629651926458, - 2.81544593104627, - 3.0387790360255167, - 2.703325308044441, - 2.8628145939437672, - 3.229695840040222 + 2.8912153329874855, + 2.9968422400124837, + 2.6896367039880715, + 2.68302350200247, + 2.911805715993978, + 2.7292891500110272, + 2.873639104014728, + 2.839817078987835, + 2.762260791991139, + 2.7145858370058704 ] }, - "framework_to_ml4t_median_ratio": 4.904815190790282, + "framework_to_ml4t_median_ratio": 4.266156698399411, "input_bundle_sha256": "2acee3c8542043266e6f9c0dfc9434c95b4469ef6fcaf0556efc569fc9721cdd", "ml4t_engine": { "ci_95_seconds": [ - 0.5742685570148751, - 0.5846358869457617 + 0.6548837659938727, + 0.6614908079791348 ], - "maximum_seconds": 0.5878496560035273, - "median_seconds": 0.5795855565229431, - "minimum_seconds": 0.5710250299889594, + "maximum_seconds": 0.6643680910055991, + "median_seconds": 0.6565719764912501, + "minimum_seconds": 0.6494209709926508, "output_identity": { "equity.parquet": "0b98b8b65e7cc6885a27f9ffff6268d6d15a82b613ab06e4e57bbf96805ef1c9", - "fills.parquet": "57998fb15bb342363f4046982dc9a4a267778875314687991cbdcca1750060d5", + "fills.parquet": "b19ec75bb792f9109356b3127ea8580935932b00a9fb9dae92a970f643d74705", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 0.5823395039187744, - 0.5781347859883681, - 0.5742685570148751, - 0.5878496560035273, - 0.5710250299889594, - 0.586932269972749, - 0.5741957860300317, - 0.5832866409327835, - 0.5800491119734943, - 0.5791220010723919 + 0.6614908079791348, + 0.6643680910055991, + 0.6551232409838121, + 0.656845068995608, + 0.6584545439982321, + 0.6643094899773132, + 0.6494209709926508, + 0.6562988839868922, + 0.6561191559885629, + 0.6536483759991825 ] } }, @@ -590,55 +590,55 @@ "framework": "vectorbt_pro", "framework_engine": { "ci_95_seconds": [ - 0.29131866194074973, - 0.29836336406879127 + 0.2809414380026283, + 0.28584351851895917 ], - "maximum_seconds": 0.2995811679866165, - "median_seconds": 0.2923883109469898, - "minimum_seconds": 0.28654769202694297, + "maximum_seconds": 0.2883088879752904, + "median_seconds": 0.28271306499664206, + "minimum_seconds": 0.2783307459903881, "output_identity": { "equity.parquet": "c667f7404ce6368f5fa73e165414980287d8943b3ac2abc2d434d6db14786f6f", "fills.parquet": "9c7d40cd1f2cb24ce6288084615f64696192c391547568f60116807dfbc0758f" }, "samples_seconds": [ - 0.29372634703759104, - 0.2906005069380626, - 0.2994727100012824, - 0.29216110694687814, - 0.2995811679866165, - 0.29836336406879127, - 0.29203681694343686, - 0.28654769202694297, - 0.29151771403849125, - 0.2926155149471015 + 0.28796336802770384, + 0.2824393089977093, + 0.2829868209955748, + 0.2802182379818987, + 0.28161942298174836, + 0.2883088879752904, + 0.2838454349839594, + 0.2837236690102145, + 0.28166463802335784, + 0.2783307459903881 ] }, - "framework_to_ml4t_median_ratio": 1.9929977750544168, + "framework_to_ml4t_median_ratio": 1.9393634353319569, "input_bundle_sha256": "48922296cea03bfc9867a9c4e1a1d352a0bd54c0b48671e3ca8d1fdddb95d762", "ml4t_engine": { "ci_95_seconds": [ - 0.14515049802139401, - 0.14949007402174175 + 0.14505504499538802, + 0.14667728898348287 ], - "maximum_seconds": 0.1572854929836467, - "median_seconds": 0.14670779596781358, - "minimum_seconds": 0.14445729297585785, + "maximum_seconds": 0.1509846999833826, + "median_seconds": 0.1457762170030037, + "minimum_seconds": 0.1421222960052546, "output_identity": { "equity.parquet": "d2ab479f54be94a77da5d6b5edcc4e019c985b2edf134c2082df9b90e8bbddf9", - "fills.parquet": "a2cea17b1aa5c792685c78c97d3700d19e3a12abf03f1ef53224d41403a2ff1d", + "fills.parquet": "7fa36302b8f71391ffa0470deaea103d02f2c1278f70177815e3e48d3c11810e", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 0.1572854929836467, - 0.1485288980184123, - 0.14949007402174175, - 0.14477453206200153, - 0.1495220789220184, - 0.14649349998217076, - 0.14682617702055722, - 0.14445729297585785, - 0.14658941491506994, - 0.14515049802139401 + 0.14598925798782147, + 0.14513368799816817, + 0.1457257329893764, + 0.14582670101663098, + 0.14505504499538802, + 0.14503437900566496, + 0.1509846999833826, + 0.1421222960052546, + 0.1475023700040765, + 0.14667728898348287 ] } }, @@ -648,55 +648,55 @@ "framework": "vectorbt_oss", "framework_engine": { "ci_95_seconds": [ - 0.14266996848164126, - 0.1487769139930606 + 0.13754021801287308, + 0.1413268009928288 ], - "maximum_seconds": 0.15749915002379566, - "median_seconds": 0.14506802847608924, - "minimum_seconds": 0.14058335695881397, + "maximum_seconds": 0.14422649898915552, + "median_seconds": 0.1387957935075974, + "minimum_seconds": 0.135567949997494, "output_identity": { "equity.parquet": "116edf23b5f28d364e865907b69c84cadcd46cc7094764b77b38c3be4a0643da", "fills.parquet": "43cc7f5cde82d078b5620d532fd35a704d4372a28dad196eaa1b0cbe7a4f697f" }, "samples_seconds": [ - 0.1454549189656973, - 0.15207163500599563, - 0.1440028470242396, - 0.1446811379864812, - 0.14133708993904293, - 0.15749915002379566, - 0.1468806309858337, - 0.14548219298012555, - 0.14364409004338086, - 0.14058335695881397 + 0.13840279701980762, + 0.139568018988939, + 0.14308558299671859, + 0.14422649898915552, + 0.13754021801287308, + 0.135567949997494, + 0.14002962899394333, + 0.1391887899953872, + 0.13838270198903047, + 0.13701783001306467 ] }, - "framework_to_ml4t_median_ratio": 0.991908834557975, + "framework_to_ml4t_median_ratio": 0.9517668155264412, "input_bundle_sha256": "48922296cea03bfc9867a9c4e1a1d352a0bd54c0b48671e3ca8d1fdddb95d762", "ml4t_engine": { "ci_95_seconds": [ - 0.14572928700363263, - 0.14740288199391216 + 0.1447887455142336, + 0.14715092899859883 ], - "maximum_seconds": 0.15113295998889953, - "median_seconds": 0.1462513725273311, - "minimum_seconds": 0.14430116501171142, + "maximum_seconds": 0.14833555501536466, + "median_seconds": 0.14582962049462367, + "minimum_seconds": 0.1442177559947595, "output_identity": { "equity.parquet": "91fc93f96be91701932992950807a28c8d0e70bf96b36419171ddfd3f7e3e4ff", - "fills.parquet": "d526ec929f9291d9fc1d1842d7337fe24b0b5216a9f479a4107c70834c4ff3ee", + "fills.parquet": "a3059de769d2114484cd120ec9e56b70404c50a187b7056c8bb37db8478a0134", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 0.1465634040068835, - 0.15113295998889953, - 0.1463286679936573, - 0.14529098197817802, - 0.14430116501171142, - 0.1475988090969622, - 0.14740288199391216, - 0.14616759202908725, - 0.14617407706100494, - 0.1459647179581225 + 0.1457435579795856, + 0.14518950000638142, + 0.14591568300966173, + 0.1461662469955627, + 0.14833555501536466, + 0.14602854999247938, + 0.14438799102208577, + 0.14827330800471827, + 0.145086723001441, + 0.1442177559947595 ] } }, @@ -706,56 +706,56 @@ "framework": "backtrader", "framework_engine": { "ci_95_seconds": [ - 0.42688500799704343, - 0.43185874505434185 + 0.4199030729942024, + 0.43193558798520826 ], - "maximum_seconds": 0.43671419203747064, - "median_seconds": 0.42911646398715675, - "minimum_seconds": 0.424340242985636, + "maximum_seconds": 0.44734891699044965, + "median_seconds": 0.42490502599684987, + "minimum_seconds": 0.4180895620083902, "output_identity": { "equity.parquet": "8356c90186bb5ee467d3c3c1ee473acecbb89bdb0b36c9dec8ba35bf68b315ef", "fills.parquet": "4d1f97749b28f76c2736ba9df05fdc5aee46409054cd3e43cede9144a03ab83c", "rejected_orders.parquet": "28769b824e4cce25769e28dd6764b6ae4e66b1fad0b70e695eba96fa27eb3cef" }, "samples_seconds": [ - 0.43195584998466074, - 0.42853852291591465, - 0.42924601095728576, - 0.424340242985636, - 0.42525947699323297, - 0.43671419203747064, - 0.42688500799704343, - 0.42898691701702774, - 0.43185874505434185, - 0.4304329639999196 + 0.43223666402627714, + 0.4180895620083902, + 0.42251148002105765, + 0.4269157150120009, + 0.4292930939991493, + 0.42289433698169887, + 0.41964370498317294, + 0.4199030729942024, + 0.43193558798520826, + 0.44734891699044965 ] }, - "framework_to_ml4t_median_ratio": 2.926069991683106, + "framework_to_ml4t_median_ratio": 2.919662876838548, "input_bundle_sha256": "48922296cea03bfc9867a9c4e1a1d352a0bd54c0b48671e3ca8d1fdddb95d762", "ml4t_engine": { "ci_95_seconds": [ - 0.14473605947569013, - 0.14847667794674635 + 0.14518085900635924, + 0.14739416650263593 ], - "maximum_seconds": 0.15094391000457108, - "median_seconds": 0.14665283646900207, - "minimum_seconds": 0.14166140498127788, + "maximum_seconds": 0.1548990169831086, + "median_seconds": 0.1455322220135713, + "minimum_seconds": 0.14440724899759516, "output_identity": { "equity.parquet": "8303060ba6c52232569452705febab5a6eb308b7f98bc82985bd06bfc56c28fb", - "fills.parquet": "82f617a7584707dc1075534e0a981e689481e7e2ebb78bcff043154d5b6189c6", + "fills.parquet": "25df0967710f939d4b2b3cd3f3637f7448a1aa8a8d526a5b61b5c83571e84844", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 0.15094391000457108, - 0.1433839739765972, - 0.14166140498127788, - 0.14665489294566214, - 0.14695709093939513, - 0.14608814497478306, - 0.14847667794674635, - 0.14583439810667187, - 0.146650779992342, - 0.14965950103942305 + 0.14497113300603814, + 0.14818612701492384, + 0.14440724899759516, + 0.14708193400292657, + 0.1548990169831086, + 0.14545863002422266, + 0.14539058500668034, + 0.1453318799904082, + 0.14560581400291994, + 0.146602205990348 ] } }, @@ -765,56 +765,56 @@ "framework": "lean", "framework_engine": { "ci_95_seconds": [ - 0.701544511015527, - 0.7492961169918999 + 0.8773026489943732, + 0.9533085440052673 ], - "maximum_seconds": 1.564707361976616, - "median_seconds": 0.7243583634844981, - "minimum_seconds": 0.6867168369935825, + "maximum_seconds": 0.9673503069789149, + "median_seconds": 0.9130055215064203, + "minimum_seconds": 0.8551066289946903, "output_identity": { - "equity.parquet": "0d2751a207b9fee6360548c61c7d4f8c5975384a639575adcdc632ac562bffe7", - "fills.parquet": "b57996e6b2cc4b261de38866c0c64878c1e5220b750de80b04564767080a52d9", + "equity.parquet": "cb6aa497553239db6c7414156ab932186c47974c5891ada4bea96e7a83bd2061", + "fills.parquet": "98a2d8e111408518d4b3d4b40573415f67c09c7f55767057a50e4689637b664b", "rejected_orders.parquet": "9e7aedba072cbcd23432976f03fb6edef656da961cd2e73dbd75188842b29c36" }, "samples_seconds": [ - 0.757213662029244, - 0.7092427669558674, - 0.7306411049794406, - 0.7492961169918999, - 0.7189480880042538, - 0.6952812260715291, - 1.564707361976616, - 0.6867168369935825, - 0.7297686389647424, - 0.701544511015527 + 0.906807599007152, + 0.9192034440056887, + 0.9479660390061326, + 0.9010869449994061, + 0.9673503069789149, + 0.8773026489943732, + 0.9605227510037366, + 0.8676749280130025, + 0.8551066289946903, + 0.9533085440052673 ] }, - "framework_to_ml4t_median_ratio": 1.4931222714917318, + "framework_to_ml4t_median_ratio": 5.951507252400165, "input_bundle_sha256": "48922296cea03bfc9867a9c4e1a1d352a0bd54c0b48671e3ca8d1fdddb95d762", "ml4t_engine": { "ci_95_seconds": [ - 0.42328740895027295, - 0.6840006644488312 + 0.1521106895088451, + 0.15719534500385635 ], - "maximum_seconds": 0.9133699170779437, - "median_seconds": 0.4851299704751, - "minimum_seconds": 0.1788689080858603, + "maximum_seconds": 0.15817101701395586, + "median_seconds": 0.1534074450028129, + "minimum_seconds": 0.15100426398566924, "output_identity": { "equity.parquet": "20c7470a3770a852d56bb4790ba22e21010d061f2aa077b328ffbbdca1651cc2", - "fills.parquet": "630cd7753bf97bcdde690e05b1065e960f520d22a5622fd0ca4f7f26835a054f", + "fills.parquet": "fd2e8f60f73c28d5f252bdc1ae72eacc2165c793f5d32e43612741e6d783dd30", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 0.9133699170779437, - 0.3653755859704688, - 0.43247588991653174, - 0.4890607090201229, - 0.6654060049913824, - 0.4751350450096652, - 0.1788689080858603, - 0.6074143589939922, - 0.4811992319300771, - 0.7605869699036703 + 0.1515475710039027, + 0.15719534500385635, + 0.15100426398566924, + 0.15350587500142865, + 0.15817101701395586, + 0.1526738080137875, + 0.15500060000340454, + 0.15330901500419714, + 0.15251966202049516, + 0.15789884398691356 ] } }, @@ -824,55 +824,55 @@ "framework": "vectorbt_pro", "framework_engine": { "ci_95_seconds": [ - 0.8683688449673355, - 1.0478205374674872 + 0.7874248115113005, + 0.8377640749968123 ], - "maximum_seconds": 3.69801092101261, - "median_seconds": 0.9140142824617215, - "minimum_seconds": 0.8518763720057905, + "maximum_seconds": 0.9157754240150098, + "median_seconds": 0.7949095129879424, + "minimum_seconds": 0.7838948410062585, "output_identity": { "equity.parquet": "533030a43e7dcfd5961b898ad78139632b57cdc36952680fac5dbf651e664885", "fills.parquet": "12fe4de7986d8803f6de85dab2089777823ade9300fda127d62aec08b68d1f72" }, "samples_seconds": [ - 1.036827608011663, - 0.9456142620183527, - 3.69801092101261, - 0.8683688449673355, - 0.8518763720057905, - 0.8800299750873819, - 1.0207581669092178, - 0.8659621649421751, - 0.8824143029050902, - 1.0748829080257565 + 0.8102761670015752, + 0.7883659350045491, + 0.7855645200179424, + 0.7892851030046586, + 0.7982651509810239, + 0.8129221879935358, + 0.7838948410062585, + 0.9157754240150098, + 0.791553874994861, + 0.8652519829920493 ] }, - "framework_to_ml4t_median_ratio": 0.05820060065762738, + "framework_to_ml4t_median_ratio": 0.03867173809347579, "input_bundle_sha256": "02926d8a7f1c1f5b4855b2393d1763885288ef64950d5cf521ca96c61f454d88", "ml4t_engine": { "ci_95_seconds": [ - 15.51166491303593, - 16.282336122530978 + 20.48596853449999, + 20.599761563003995 ], - "maximum_seconds": 16.826184634002857, - "median_seconds": 15.704550677037332, - "minimum_seconds": 15.441914070979692, + "maximum_seconds": 20.648501724994276, + "median_seconds": 20.555308661496383, + "minimum_seconds": 20.425600546004716, "output_identity": { "equity.parquet": "974f900cf826b55a2cda697c7f8b11abb3c526fa472c5a406cdb7b8c7d0613c0", - "fills.parquet": "923752318482ad571f2d677a6ae1440448200b6cd87616264deb95a9a31b7d9c", - "rejected_orders.parquet": "4222d93b23310ba3c189de88d51ef83d28b54fb7f4a09b95e46ea94f8ad58e56" + "fills.parquet": "cc1907552c0ebe1b8b74aa8f72ed39c27903eed9e34e0f70f2ca14ee3fe7a3d7", + "rejected_orders.parquet": "64ef01bac600740a590295d52b543d6deadf6b3c64dcda1af141873ae097d4fb" }, "samples_seconds": [ - 15.624226039974019, - 15.51166491303593, - 15.591948464047164, - 15.461720133083872, - 15.928092801012099, - 15.784875314100645, - 16.636579444049858, - 16.826184634002857, - 16.26835355896037, - 15.441914070979692 + 20.569528984982753, + 20.622427879017778, + 20.449230501020793, + 20.648501724994276, + 20.522706567979185, + 20.541088338010013, + 20.586456601013197, + 20.57709524699021, + 20.507462484994903, + 20.425600546004716 ] } }, @@ -882,55 +882,55 @@ "framework": "vectorbt_oss", "framework_engine": { "ci_95_seconds": [ - 18.59645750594791, - 26.957320575020276 + 16.959977449994767, + 17.023569879005663 ], - "maximum_seconds": 31.171922648092732, - "median_seconds": 19.663315193960443, - "minimum_seconds": 17.92101247503888, + "maximum_seconds": 17.07916622198536, + "median_seconds": 16.9949149099848, + "minimum_seconds": 16.94968985399464, "output_identity": { "equity.parquet": "3af99a56f5f6366c769907b955bd752be34ba56d59ae475667ee12482c6ed23e", "fills.parquet": "374d0949b1a63984f6fee5c20699a67c8337d13bc89f25a81d9e7529e206d2c4" }, "samples_seconds": [ - 27.598887030035257, - 18.59645750594791, - 19.16582464403473, - 18.41297702305019, - 17.92101247503888, - 19.394220146001317, - 19.93241024191957, - 31.171922648092732, - 26.957320575020276, - 24.028911806992255 + 17.042154588008998, + 16.993152696988545, + 17.00498517000233, + 17.01882042098441, + 17.07916622198536, + 16.950593157991534, + 16.959977449994767, + 16.991588705976028, + 16.94968985399464, + 16.996677122981055 ] }, - "framework_to_ml4t_median_ratio": 1.088702419710214, + "framework_to_ml4t_median_ratio": 0.8292416699730313, "input_bundle_sha256": "02926d8a7f1c1f5b4855b2393d1763885288ef64950d5cf521ca96c61f454d88", "ml4t_engine": { "ci_95_seconds": [ - 17.25126317399554, - 19.34457851044135 + 20.453040241001872, + 20.533734439013642 ], - "maximum_seconds": 20.485390056972392, - "median_seconds": 18.061239543487318, - "minimum_seconds": 17.061426870059222, + "maximum_seconds": 20.610721355013084, + "median_seconds": 20.49452593299793, + "minimum_seconds": 20.434713395981817, "output_identity": { - "equity.parquet": "9a820fbc8f125ccce82789572667ed58120140a531b18d5b3e162ec9b241fed8", - "fills.parquet": "a61d4d9a4a7781bc7d0d8d800aae715becae0a3901fc13566385e4fdf70f7379", - "rejected_orders.parquet": "c9ea02a0d5fdc7867b5c507fa2dafb5984c2d734678b22abc0098a433f4b56b1" + "equity.parquet": "26fbf3b10249580d4c8b6eefbd8591d20fa54140217b3ad65301c6779816260a", + "fills.parquet": "87c09726609b8a908b71b68c2a294e0d6b3cbe4f2a0f5a9b0b4840538a78571b", + "rejected_orders.parquet": "b8fd2976a15d14c33fcb387284a6292dcd8c349f0c292cbfb2c0fd74169e652c" }, "samples_seconds": [ - 19.0856910609873, - 17.865553354029544, - 17.09299683792051, - 18.056999841006473, - 19.004881568951532, - 20.485390056972392, - 19.68427545193117, - 17.25126317399554, - 17.061426870059222, - 18.065479245968163 + 20.434713395981817, + 20.453107789013302, + 20.489535972010344, + 20.554611566010863, + 20.512857312016422, + 20.532295659999363, + 20.610721355013084, + 20.4572258219996, + 20.448854660004145, + 20.499515893985517 ] } }, @@ -940,56 +940,56 @@ "framework": "backtrader", "framework_engine": { "ci_95_seconds": [ - 528.9725945310201, - 570.0017928635352 + 494.2269169654901, + 510.27303914300865 ], - "maximum_seconds": 590.6841153809801, - "median_seconds": 549.1275352675002, - "minimum_seconds": 521.1836836599978, + "maximum_seconds": 531.350485374016, + "median_seconds": 495.55252874150756, + "minimum_seconds": 492.39570217599976, "output_identity": { "equity.parquet": "d4500a220d756773171dc588722b82c57cc1c7948670c2f0e41fde3862778b58", "fills.parquet": "7f3d118ca01063450d37d9e70ed6aa4ce5b6a0d975aa1b279723f516484f77b0", "rejected_orders.parquet": "28769b824e4cce25769e28dd6764b6ae4e66b1fad0b70e695eba96fa27eb3cef" }, "samples_seconds": [ - 550.0999343920266, - 590.6841153809801, - 588.4049604580505, - 553.6098145579454, - 548.1551361429738, - 551.59862526902, - 542.9992017649347, - 528.9725945310201, - 521.1836836599978, - 527.8734635281144 + 494.49598994798725, + 514.874948451994, + 494.6423118210223, + 510.27303914300865, + 493.9578439829929, + 501.6122114500031, + 494.3053281689936, + 531.350485374016, + 496.4627456619928, + 492.39570217599976 ] }, - "framework_to_ml4t_median_ratio": 33.98695175413825, + "framework_to_ml4t_median_ratio": 23.08159898786381, "input_bundle_sha256": "02926d8a7f1c1f5b4855b2393d1763885288ef64950d5cf521ca96c61f454d88", "ml4t_engine": { "ci_95_seconds": [ - 16.052770198031794, - 16.277987660025246 + 21.38583242200548, + 21.54328417198849 ], - "maximum_seconds": 16.432149116997607, - "median_seconds": 16.15701046801405, - "minimum_seconds": 15.759885281091556, + "maximum_seconds": 21.643897917994764, + "median_seconds": 21.46959268298815, + "minimum_seconds": 21.35507860200596, "output_identity": { - "equity.parquet": "69d7e17ff26305c728572cc82e019c28e29c950de01ce51940e205965de245f4", - "fills.parquet": "e5a8c855ed69fdb9a024dd8408bea72892d617f147c8e465bc9e5a1b2fab0265", + "equity.parquet": "59159ec6ab718fc43048968a5d232c82dfb322c5f45899c212e14481c3e99773", + "fills.parquet": "bfae63fd1eacd4d7dee69d27809fb0b79c84c576d5dce15364aaf05a2ac2f936", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 16.25268028001301, - 16.101810730993748, - 16.212210205034353, - 16.09773081704043, - 16.00780957902316, - 16.432149116997607, - 16.305805339012295, - 16.250169981038198, - 16.081822153995745, - 15.759885281091556 + 21.419378380989656, + 21.365852688002633, + 21.39332401601132, + 21.643897917994764, + 21.35507860200596, + 21.539257733995328, + 21.54731060998165, + 21.405812156008324, + 21.53930448999745, + 21.519806984986644 ] } }, @@ -999,55 +999,55 @@ "framework": "zipline", "framework_engine": { "ci_95_seconds": [ - 109.39243838749826, - 111.60780068405438 + 106.83352753649524, + 109.14979357349512 ], - "maximum_seconds": 121.45296368305571, - "median_seconds": 110.22181360953255, - "minimum_seconds": 109.1861914889887, + "maximum_seconds": 117.95733895900776, + "median_seconds": 107.60890489349549, + "minimum_seconds": 106.01340769199305, "output_identity": { "equity.parquet": "916f29fa7170cf1d1318154aff2bdb61db9838da5a780513ba06c42ccf98d3a0", "fills.parquet": "916a68a6f44ea70b6905cca094028d16f8746e3f19c3029637ecb50c5462306a" }, "samples_seconds": [ - 111.60780068405438, - 110.01300074101891, - 110.81128632801119, - 110.43062647804618, - 112.05522017797921, - 109.1861914889887, - 109.29345865501091, - 109.45064685109537, - 109.49141811998561, - 121.45296368305571 + 107.50128808099544, + 106.01340769199305, + 107.25137960899156, + 107.87613571700058, + 106.41567546399892, + 117.95733895900776, + 110.46573096700013, + 107.83385617999011, + 107.71652170599555, + 106.84217402699869 ] }, - "framework_to_ml4t_median_ratio": 6.671435767111864, + "framework_to_ml4t_median_ratio": 4.862239476470224, "input_bundle_sha256": "02926d8a7f1c1f5b4855b2393d1763885288ef64950d5cf521ca96c61f454d88", "ml4t_engine": { "ci_95_seconds": [ - 16.470107797998935, - 16.906124540022574 + 22.08169161299884, + 22.23382121999748 ], - "maximum_seconds": 18.334555651061237, - "median_seconds": 16.52145317097893, - "minimum_seconds": 16.385647121001966, + "maximum_seconds": 22.393758883001283, + "median_seconds": 22.131551811515237, + "minimum_seconds": 22.03865885498817, "output_identity": { - "equity.parquet": "6f1c371e4fcce3c1c3829f71c398807c721e95fa7d03a5c4796119a398453a66", - "fills.parquet": "2db9ccefd91648644c1abefca68701deb4795a8e6da509935beaffa5793e8501", + "equity.parquet": "362d9598366bf548deed068d1eface38e74b874cf352682f79cdb908381cb585", + "fills.parquet": "7af38401bed6a5453090bb124ca645df0f91cf417e0440b72e7693c7d22508a5", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 16.385647121001966, - 16.47907410201151, - 18.334555651061237, - 16.493410420021974, - 16.54533114901278, - 16.497575192945078, - 16.442640403052792, - 17.25487956602592, - 16.55736951401923, - 16.5869839360239 + 22.262472025991883, + 22.12110824297997, + 22.131656308018137, + 22.23382121999748, + 22.197976440977072, + 22.085626848973334, + 22.393758883001283, + 22.03865885498817, + 22.042274983017705, + 22.131447315012338 ] } }, @@ -1057,56 +1057,56 @@ "framework": "lean", "framework_engine": { "ci_95_seconds": [ - 43.8512298935093, - 53.81890031695366 + 47.33300897400477, + 48.01486862101592 ], - "maximum_seconds": 71.90948282403406, - "median_seconds": 45.95678944251267, - "minimum_seconds": 42.33710101793986, + "maximum_seconds": 48.93350173300132, + "median_seconds": 47.68267791901599, + "minimum_seconds": 46.93845382897416, "output_identity": { - "equity.parquet": "a943d6831889ddc227f4f12f103797c854ae6facecac3fbe399d3a84be2579e1", - "fills.parquet": "fd13eeca0e70144131f5a231a2a2e2ec8581437035f887c3af604c9ffec5cc75", + "equity.parquet": "0b28b2c49304bf054f81d906ce0673298989a3f3ef044cec0cb2e3570fc3cd2f", + "fills.parquet": "d56df1f4cb022403ddc3165d064f93b57b8bb210712775a9af3bda1fbf9eb6a6", "rejected_orders.parquet": "9e7aedba072cbcd23432976f03fb6edef656da961cd2e73dbd75188842b29c36" }, "samples_seconds": [ - 44.69809547706973, - 43.00436430994887, - 44.59996887203306, - 45.62681075499859, - 42.33710101793986, - 58.3913600849919, - 47.5572030559415, - 71.90948282403406, - 53.81890031695366, - 46.28676813002676 + 48.93350173300132, + 47.391672911006026, + 47.39366507701925, + 47.275934634002624, + 47.971690761012724, + 47.977595238015056, + 47.33300897400477, + 48.01486862101592, + 48.02573545300402, + 46.93845382897416 ] }, - "framework_to_ml4t_median_ratio": 1.8421150516139404, + "framework_to_ml4t_median_ratio": 1.8083761067475683, "input_bundle_sha256": "02926d8a7f1c1f5b4855b2393d1763885288ef64950d5cf521ca96c61f454d88", "ml4t_engine": { "ci_95_seconds": [ - 23.622859365015756, - 25.41915735101793 + 26.22179457700986, + 26.472655913996277 ], - "maximum_seconds": 25.64795203099493, - "median_seconds": 24.94783884548815, - "minimum_seconds": 21.586407659109682, + "maximum_seconds": 26.64365133800311, + "median_seconds": 26.36767746548867, + "minimum_seconds": 26.150949718023185, "output_identity": { - "equity.parquet": "b5907100a1469d4c9ff63af5bbeb328cddf7d72e6d98db6d9d796488c95545f2", - "fills.parquet": "7eb685423c6c5f32168e7ea8cc19976cb0404aef075514e657cee9e3f458d0d2", + "equity.parquet": "b175134ca1075055bfc2ded472e325749b34a359f6d957ffdd897b0521fae957", + "fills.parquet": "b42bfe84ffe2954289ba5138fed5bc4f487d356c7192f3f67521c6d6e50c5059", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 24.886456022039056, - 25.5052249180153, - 25.64795203099493, - 25.333089784020558, - 25.009221668937244, - 23.946776060038246, - 21.586407659109682, - 22.462323918007314, - 24.7833948120242, - 25.370491398032755 + 26.37750849899021, + 26.23593746300321, + 26.49751085101161, + 26.23863661501673, + 26.150949718023185, + 26.472655913996277, + 26.443023221974727, + 26.357846431987127, + 26.64365133800311, + 26.20495253900299 ] } } diff --git a/validation/REAL_STRATEGY_RESULTS.json b/validation/REAL_STRATEGY_RESULTS.json index 5e461c30..3574b617 100644 --- a/validation/REAL_STRATEGY_RESULTS.json +++ b/validation/REAL_STRATEGY_RESULTS.json @@ -20,7 +20,7 @@ "us_equities_panel": "session date" } }, - "generated_at": "2026-09-08T20:39:08.460346+00:00", + "generated_at": "2026-09-03T08:49:07.253544+00:00", "provenance": { "adapters": { "backtrader": "a456cc3bf9ed6708d239f21ed2c2495a3c19a9a8306634fee24619c2c0484459", @@ -131,12 +131,12 @@ }, "machine": "x86_64", "ml4t": { - "commit": "85c0291447214730bd3328b14b73eb2f64cf9f2c", + "commit": "7034236519cc0a99df6ef34a21d07ec2a81fc87c", "dirty": false, - "engine_source_sha256": "8078ba760b8076c9f3ba3b087bf50aaf4311e5205ee50e13fdedeea639c75836" + "engine_source_sha256": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58" }, "platform": "Linux-6.8.0-138-generic-x86_64-with-glibc2.39", - "python": "3.14.3" + "python": "3.12.11" }, "records": [ {