diff --git a/README.md b/README.md index 94b5d131..8d76a7bb 100644 --- a/README.md +++ b/README.md @@ -340,25 +340,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://vectorbt.pro/) | 0.293 (0.290-0.298) | 0.424 (0.421-0.434) | 0.691x | -| ETF allocation | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.192 (0.176-0.493) | 0.414 (0.413-0.417) | 0.462x | -| ETF allocation | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 9.631 (9.428-9.710) | 0.439 (0.434-0.444) | 21.954x | -| ETF allocation | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 3.888 (3.878-3.959) | 0.621 (0.618-0.626) | 6.256x | -| ETF allocation | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.638 (2.516-2.707) | 0.750 (0.743-0.757) | 3.520x | -| CME futures | [VectorBT Pro 2026.6.27](https://vectorbt.pro/) | 0.290 (0.289-0.294) | 0.410 (0.406-0.958) | 0.708x | -| CME futures | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 6.639 (5.831-8.332) | 0.428 (0.422-1.235) | 15.504x | -| Crypto perpetual funding | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.828 (2.737-2.952) | 1.327 (0.657-2.183) | 2.131x | -| FX allocation (USD-quoted pairs) | [VectorBT Pro 2026.6.27](https://vectorbt.pro/) | 0.288 (0.286-0.294) | 0.148 (0.147-0.149) | 1.947x | -| FX allocation (USD-quoted pairs) | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.144 (0.142-0.146) | 0.145 (0.145-0.146) | 0.988x | -| FX allocation (USD-quoted pairs) | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 0.434 (0.430-0.440) | 0.147 (0.146-0.149) | 2.947x | -| FX allocation (USD-quoted pairs) | [LEAN 18001](https://github.com/QuantConnect/Lean) | 0.953 (0.936-1.164) | 0.158 (0.155-0.164) | 6.033x | -| US equity panel | [VectorBT Pro 2026.6.27](https://vectorbt.pro/) | 3.806 (3.336-4.341) | 23.306 (21.906-25.833) | 0.163x | -| US equity panel | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 17.116 (17.069-17.633) | 25.738 (24.983-27.163) | 0.665x | -| US equity panel | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 668.611 (642.993-718.202) | 26.887 (26.406-29.406) | 24.868x | -| US equity panel | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 117.445 (116.308-118.391) | 26.821 (25.473-27.644) | 4.379x | -| US equity panel | [LEAN 18001](https://github.com/QuantConnect/Lean) | 48.436 (48.221-48.986) | 27.688 (27.575-27.796) | 1.749x | - -Measured 2026-09-24 on `Linux-6.8.0-139-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://vectorbt.pro/) | 0.317 (0.297-0.330) | 0.420 (0.418-0.422) | 0.754x | +| ETF allocation | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.173 (0.170-0.175) | 0.416 (0.414-0.417) | 0.415x | +| ETF allocation | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 9.408 (9.378-9.537) | 0.437 (0.435-0.438) | 21.549x | +| ETF allocation | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 3.846 (3.841-3.867) | 0.615 (0.613-0.622) | 6.254x | +| ETF allocation | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.571 (2.515-2.635) | 0.749 (0.743-0.754) | 3.433x | +| CME futures | [VectorBT Pro 2026.6.27](https://vectorbt.pro/) | 0.286 (0.283-0.291) | 0.410 (0.408-0.412) | 0.697x | +| CME futures | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 2.475 (2.465-2.535) | 0.422 (0.419-0.425) | 5.864x | +| Crypto perpetual funding | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.793 (2.751-2.871) | 0.653 (0.649-0.658) | 4.280x | +| FX allocation (USD-quoted pairs) | [VectorBT Pro 2026.6.27](https://vectorbt.pro/) | 0.291 (0.283-0.294) | 0.149 (0.147-0.163) | 1.951x | +| FX allocation (USD-quoted pairs) | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.146 (0.138-0.152) | 0.147 (0.145-0.149) | 0.988x | +| FX allocation (USD-quoted pairs) | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 0.439 (0.434-0.447) | 0.152 (0.149-0.154) | 2.891x | +| FX allocation (USD-quoted pairs) | [LEAN 18001](https://github.com/QuantConnect/Lean) | 0.961 (0.935-0.979) | 0.159 (0.158-0.161) | 6.055x | +| US equity panel | [VectorBT Pro 2026.6.27](https://vectorbt.pro/) | 0.865 (0.851-1.004) | 22.991 (22.877-23.162) | 0.038x | +| US equity panel | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 17.246 (17.166-17.345) | 21.418 (21.157-24.293) | 0.805x | +| US equity panel | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 505.641 (499.073-515.494) | 23.585 (21.878-26.507) | 21.439x | +| US equity panel | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 110.874 (105.635-113.330) | 22.831 (22.502-31.470) | 4.856x | +| US equity panel | [LEAN 18001](https://github.com/QuantConnect/Lean) | 49.967 (48.757-50.759) | 40.260 (34.451-40.927) | 1.241x | + +Measured 2026-10-13 on `Linux-7.0.0-38-generic-x86_64-with-glibc2.43` 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 fcdf545b..dd7a08df 100644 --- a/docs/index.md +++ b/docs/index.md @@ -159,25 +159,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://vectorbt.pro/) | 0.293 (0.290-0.298) | 0.424 (0.421-0.434) | 0.691x | -| ETF allocation | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.192 (0.176-0.493) | 0.414 (0.413-0.417) | 0.462x | -| ETF allocation | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 9.631 (9.428-9.710) | 0.439 (0.434-0.444) | 21.954x | -| ETF allocation | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 3.888 (3.878-3.959) | 0.621 (0.618-0.626) | 6.256x | -| ETF allocation | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.638 (2.516-2.707) | 0.750 (0.743-0.757) | 3.520x | -| CME futures | [VectorBT Pro 2026.6.27](https://vectorbt.pro/) | 0.290 (0.289-0.294) | 0.410 (0.406-0.958) | 0.708x | -| CME futures | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 6.639 (5.831-8.332) | 0.428 (0.422-1.235) | 15.504x | -| Crypto perpetual funding | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.828 (2.737-2.952) | 1.327 (0.657-2.183) | 2.131x | -| FX allocation (USD-quoted pairs) | [VectorBT Pro 2026.6.27](https://vectorbt.pro/) | 0.288 (0.286-0.294) | 0.148 (0.147-0.149) | 1.947x | -| FX allocation (USD-quoted pairs) | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.144 (0.142-0.146) | 0.145 (0.145-0.146) | 0.988x | -| FX allocation (USD-quoted pairs) | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 0.434 (0.430-0.440) | 0.147 (0.146-0.149) | 2.947x | -| FX allocation (USD-quoted pairs) | [LEAN 18001](https://github.com/QuantConnect/Lean) | 0.953 (0.936-1.164) | 0.158 (0.155-0.164) | 6.033x | -| US equity panel | [VectorBT Pro 2026.6.27](https://vectorbt.pro/) | 3.806 (3.336-4.341) | 23.306 (21.906-25.833) | 0.163x | -| US equity panel | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 17.116 (17.069-17.633) | 25.738 (24.983-27.163) | 0.665x | -| US equity panel | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 668.611 (642.993-718.202) | 26.887 (26.406-29.406) | 24.868x | -| US equity panel | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 117.445 (116.308-118.391) | 26.821 (25.473-27.644) | 4.379x | -| US equity panel | [LEAN 18001](https://github.com/QuantConnect/Lean) | 48.436 (48.221-48.986) | 27.688 (27.575-27.796) | 1.749x | - -Measured 2026-09-24 on `Linux-6.8.0-139-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://vectorbt.pro/) | 0.317 (0.297-0.330) | 0.420 (0.418-0.422) | 0.754x | +| ETF allocation | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.173 (0.170-0.175) | 0.416 (0.414-0.417) | 0.415x | +| ETF allocation | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 9.408 (9.378-9.537) | 0.437 (0.435-0.438) | 21.549x | +| ETF allocation | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 3.846 (3.841-3.867) | 0.615 (0.613-0.622) | 6.254x | +| ETF allocation | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.571 (2.515-2.635) | 0.749 (0.743-0.754) | 3.433x | +| CME futures | [VectorBT Pro 2026.6.27](https://vectorbt.pro/) | 0.286 (0.283-0.291) | 0.410 (0.408-0.412) | 0.697x | +| CME futures | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 2.475 (2.465-2.535) | 0.422 (0.419-0.425) | 5.864x | +| Crypto perpetual funding | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.793 (2.751-2.871) | 0.653 (0.649-0.658) | 4.280x | +| FX allocation (USD-quoted pairs) | [VectorBT Pro 2026.6.27](https://vectorbt.pro/) | 0.291 (0.283-0.294) | 0.149 (0.147-0.163) | 1.951x | +| FX allocation (USD-quoted pairs) | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.146 (0.138-0.152) | 0.147 (0.145-0.149) | 0.988x | +| FX allocation (USD-quoted pairs) | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 0.439 (0.434-0.447) | 0.152 (0.149-0.154) | 2.891x | +| FX allocation (USD-quoted pairs) | [LEAN 18001](https://github.com/QuantConnect/Lean) | 0.961 (0.935-0.979) | 0.159 (0.158-0.161) | 6.055x | +| US equity panel | [VectorBT Pro 2026.6.27](https://vectorbt.pro/) | 0.865 (0.851-1.004) | 22.991 (22.877-23.162) | 0.038x | +| US equity panel | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 17.246 (17.166-17.345) | 21.418 (21.157-24.293) | 0.805x | +| US equity panel | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 505.641 (499.073-515.494) | 23.585 (21.878-26.507) | 21.439x | +| US equity panel | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 110.874 (105.635-113.330) | 22.831 (22.502-31.470) | 4.856x | +| US equity panel | [LEAN 18001](https://github.com/QuantConnect/Lean) | 49.967 (48.757-50.759) | 40.260 (34.451-40.927) | 1.241x | + +Measured 2026-10-13 on `Linux-7.0.0-38-generic-x86_64-with-glibc2.43` 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 c9744c71..fd94bdf4 100644 --- a/docs/user-guide/profiles.md +++ b/docs/user-guide/profiles.md @@ -198,25 +198,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://vectorbt.pro/) | 0.293 (0.290-0.298) | 0.424 (0.421-0.434) | 0.691x | -| ETF allocation | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.192 (0.176-0.493) | 0.414 (0.413-0.417) | 0.462x | -| ETF allocation | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 9.631 (9.428-9.710) | 0.439 (0.434-0.444) | 21.954x | -| ETF allocation | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 3.888 (3.878-3.959) | 0.621 (0.618-0.626) | 6.256x | -| ETF allocation | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.638 (2.516-2.707) | 0.750 (0.743-0.757) | 3.520x | -| CME futures | [VectorBT Pro 2026.6.27](https://vectorbt.pro/) | 0.290 (0.289-0.294) | 0.410 (0.406-0.958) | 0.708x | -| CME futures | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 6.639 (5.831-8.332) | 0.428 (0.422-1.235) | 15.504x | -| Crypto perpetual funding | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.828 (2.737-2.952) | 1.327 (0.657-2.183) | 2.131x | -| FX allocation (USD-quoted pairs) | [VectorBT Pro 2026.6.27](https://vectorbt.pro/) | 0.288 (0.286-0.294) | 0.148 (0.147-0.149) | 1.947x | -| FX allocation (USD-quoted pairs) | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.144 (0.142-0.146) | 0.145 (0.145-0.146) | 0.988x | -| FX allocation (USD-quoted pairs) | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 0.434 (0.430-0.440) | 0.147 (0.146-0.149) | 2.947x | -| FX allocation (USD-quoted pairs) | [LEAN 18001](https://github.com/QuantConnect/Lean) | 0.953 (0.936-1.164) | 0.158 (0.155-0.164) | 6.033x | -| US equity panel | [VectorBT Pro 2026.6.27](https://vectorbt.pro/) | 3.806 (3.336-4.341) | 23.306 (21.906-25.833) | 0.163x | -| US equity panel | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 17.116 (17.069-17.633) | 25.738 (24.983-27.163) | 0.665x | -| US equity panel | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 668.611 (642.993-718.202) | 26.887 (26.406-29.406) | 24.868x | -| US equity panel | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 117.445 (116.308-118.391) | 26.821 (25.473-27.644) | 4.379x | -| US equity panel | [LEAN 18001](https://github.com/QuantConnect/Lean) | 48.436 (48.221-48.986) | 27.688 (27.575-27.796) | 1.749x | - -Measured 2026-09-24 on `Linux-6.8.0-139-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://vectorbt.pro/) | 0.317 (0.297-0.330) | 0.420 (0.418-0.422) | 0.754x | +| ETF allocation | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.173 (0.170-0.175) | 0.416 (0.414-0.417) | 0.415x | +| ETF allocation | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 9.408 (9.378-9.537) | 0.437 (0.435-0.438) | 21.549x | +| ETF allocation | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 3.846 (3.841-3.867) | 0.615 (0.613-0.622) | 6.254x | +| ETF allocation | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.571 (2.515-2.635) | 0.749 (0.743-0.754) | 3.433x | +| CME futures | [VectorBT Pro 2026.6.27](https://vectorbt.pro/) | 0.286 (0.283-0.291) | 0.410 (0.408-0.412) | 0.697x | +| CME futures | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 2.475 (2.465-2.535) | 0.422 (0.419-0.425) | 5.864x | +| Crypto perpetual funding | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.793 (2.751-2.871) | 0.653 (0.649-0.658) | 4.280x | +| FX allocation (USD-quoted pairs) | [VectorBT Pro 2026.6.27](https://vectorbt.pro/) | 0.291 (0.283-0.294) | 0.149 (0.147-0.163) | 1.951x | +| FX allocation (USD-quoted pairs) | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.146 (0.138-0.152) | 0.147 (0.145-0.149) | 0.988x | +| FX allocation (USD-quoted pairs) | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 0.439 (0.434-0.447) | 0.152 (0.149-0.154) | 2.891x | +| FX allocation (USD-quoted pairs) | [LEAN 18001](https://github.com/QuantConnect/Lean) | 0.961 (0.935-0.979) | 0.159 (0.158-0.161) | 6.055x | +| US equity panel | [VectorBT Pro 2026.6.27](https://vectorbt.pro/) | 0.865 (0.851-1.004) | 22.991 (22.877-23.162) | 0.038x | +| US equity panel | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 17.246 (17.166-17.345) | 21.418 (21.157-24.293) | 0.805x | +| US equity panel | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 505.641 (499.073-515.494) | 23.585 (21.878-26.507) | 21.439x | +| US equity panel | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 110.874 (105.635-113.330) | 22.831 (22.502-31.470) | 4.856x | +| US equity panel | [LEAN 18001](https://github.com/QuantConnect/Lean) | 49.967 (48.757-50.759) | 40.260 (34.451-40.927) | 1.241x | + +Measured 2026-10-13 on `Linux-7.0.0-38-generic-x86_64-with-glibc2.43` 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/src/ml4t/backtest/analytics/metrics.py b/src/ml4t/backtest/analytics/metrics.py index 14887bb5..d3e2921d 100644 --- a/src/ml4t/backtest/analytics/metrics.py +++ b/src/ml4t/backtest/analytics/metrics.py @@ -162,7 +162,11 @@ def cagr( if final_value <= 0: return -1.0 # Total loss - return (final_value / initial_value) ** (1 / years) - 1 + try: + return (final_value / initial_value) ** (1 / years) - 1 + except OverflowError: + # Sub-day windows make the annualized power exceed the float range. + return float("inf") def calmar_ratio(cagr_value: float, max_dd: float) -> float: diff --git a/src/ml4t/backtest/calendar.py b/src/ml4t/backtest/calendar.py index f1e28761..a1c030ab 100644 --- a/src/ml4t/backtest/calendar.py +++ b/src/ml4t/backtest/calendar.py @@ -661,13 +661,16 @@ def filter_to_trading_sessions( min_date = df.select(pl.col(timestamp_col).dt.date().min()).item() max_date = df.select(pl.col(timestamp_col).dt.date().max()).item() - # For overnight sessions (e.g., CME futures 5pm-4pm), a session that opened - # on the previous day may still be open. Expand window by 1 day to capture this. + # Overnight sessions (for example CME equity, 17:00–16:00 exchange time) can + # open on the calendar day before their session date. Expand both ends by one + # day so a bar is not dropped when the frame's UTC dates stop before that + # session date, or start after the previous session's open. prev_date = pd.Timestamp(min_date) - pd.Timedelta(days=1) + next_date = pd.Timestamp(max_date) + pd.Timedelta(days=1) # Get schedule for the expanded date range calendar = get_calendar(calendar_id) - schedule_pd = calendar.schedule(start_date=prev_date.date(), end_date=max_date) + schedule_pd = calendar.schedule(start_date=prev_date.date(), end_date=next_date.date()) if schedule_pd.empty: return df.clear() # No trading days in range diff --git a/src/ml4t/backtest/core/execution_engine.py b/src/ml4t/backtest/core/execution_engine.py index 66a97cf8..9488f130 100644 --- a/src/ml4t/backtest/core/execution_engine.py +++ b/src/ml4t/backtest/core/execution_engine.py @@ -692,7 +692,9 @@ def _passes_simple_cash_check(self, order, fill_price: float) -> bool: commission = estimate_commission( broker.commission_model, order.asset, order.quantity, fill_price ) - projected_cash = broker.cash - signed_qty * fill_price - commission + # Match the fill debit, which scales notional by the contract multiplier. + multiplier = broker.get_multiplier(order.asset) + projected_cash = broker.cash - signed_qty * fill_price * multiplier - commission if projected_cash >= 0.0: return True diff --git a/src/ml4t/backtest/core/order_book.py b/src/ml4t/backtest/core/order_book.py index 08bc3d37..e07c8b0b 100644 --- a/src/ml4t/backtest/core/order_book.py +++ b/src/ml4t/backtest/core/order_book.py @@ -460,12 +460,13 @@ def _passes_buying_power_check(self, order: Order) -> bool: ) shadow_cash = self._submission_shadow_cash + multiplier = broker.get_multiplier(order.asset) if closed != 0.0: - shadow_cash += (-closed) * signal_price + shadow_cash += (-closed) * signal_price * multiplier if opened != 0.0: # LEAN semantics: shorts consume buying power rather than crediting cash. - shadow_cash -= abs(opened) * signal_price + shadow_cash -= abs(opened) * signal_price * multiplier shadow_cash -= estimate_commission( broker.commission_model, order.asset, order.quantity, signal_price ) diff --git a/src/ml4t/backtest/execution/rebalancer.py b/src/ml4t/backtest/execution/rebalancer.py index 3a2b398e..9ef22c40 100644 --- a/src/ml4t/backtest/execution/rebalancer.py +++ b/src/ml4t/backtest/execution/rebalancer.py @@ -72,7 +72,8 @@ class RebalanceConfig: round_lots: Round to lot_size increments (e.g., 100-share lots). lot_size: Lot size for rounding (only used if round_lots=True). allow_short: Allow short positions via negative weights. - max_single_weight: Maximum weight allowed for any single asset. + max_single_weight: Maximum absolute weight allowed for any single asset. + Long targets are capped at this value and short targets at its negation. max_gross_leverage: Maximum gross leverage (sum of abs weights). None means no cap — the gatekeeper's buying power check is the constraint. For cash accounts, the gatekeeper naturally prevents over-allocation. For margin @@ -393,8 +394,13 @@ def _process_asset( Returns: Order if trade needed, None otherwise. """ - # Apply constraints - target_wt = min(target_wt, self.config.max_single_weight) + # Apply constraints. The cap is a magnitude limit: min() alone leaves + # shorts untouched because a negative weight is already below the cap. + cap = self.config.max_single_weight + if target_wt > cap: + target_wt = cap + elif target_wt < -cap: + target_wt = -cap if target_wt < 0 and not self.config.allow_short: target_wt = 0 diff --git a/tests/contracts/test_real_strategy_runner.py b/tests/contracts/test_real_strategy_runner.py index 0f7143d7..b9ead42c 100644 --- a/tests/contracts/test_real_strategy_runner.py +++ b/tests/contracts/test_real_strategy_runner.py @@ -11,6 +11,7 @@ from types import SimpleNamespace import polars as pl +import pytest def _load_runner(): @@ -61,6 +62,33 @@ def _load_benchmark(): return module +@pytest.mark.skipif(sys.platform != "linux", reason="Publication timings identify a Linux host") +def test_benchmark_report_accepts_linux_with_blank_processor_query(monkeypatch) -> None: + benchmark = _load_benchmark() + validation = Path(__file__).parents[2] / "validation" + correctness = json.loads((validation / "REAL_STRATEGY_RESULTS.json").read_text()) + measurements = json.loads((validation / "REAL_STRATEGY_PERFORMANCE.json").read_text()) + retained = { + (record["case_study"], record["framework"]): record for record in measurements["records"] + } + + def measured_side(*, case_study, framework, side, **_settings): + key = "framework_engine" if side == "framework" else "ml4t_engine" + return copy.deepcopy(retained[(case_study, framework)][key]) + + # Reuse real measured samples to isolate report production from native engine runtimes. + monkeypatch.setattr(benchmark, "_measure_side", measured_side) + monkeypatch.setattr(benchmark.platform, "processor", lambda: "") + report = benchmark.build_report( + correctness=correctness, + bundle_root=validation, + warmups=1, + samples=10, + ) + + assert benchmark.report_failures(report, correctness) == [] + + class _Broker: def __init__(self) -> None: self.cash = 1_000.0 diff --git a/tests/execution/test_rebalancer.py b/tests/execution/test_rebalancer.py index 639f3bff..c7ea931a 100644 --- a/tests/execution/test_rebalancer.py +++ b/tests/execution/test_rebalancer.py @@ -1397,6 +1397,25 @@ def test_max_single_weight_constraint(self, broker): value = orders[0].quantity * 150.0 assert value < 26000 # Less than 26% of $100k + def test_max_single_weight_caps_short_targets(self): + """A short target is floored at -max_single_weight, not left uncapped.""" + broker = Broker( + initial_cash=100000.0, + commission_model=NoCommission(), + slippage_model=NoSlippage(), + allow_short_selling=True, + ) + executor = TargetWeightExecutor( + config=RebalanceConfig(allow_short=True, max_single_weight=0.25) + ) + + orders = executor.execute({"AAPL": -0.5}, {"AAPL": {"close": 150.0}}, broker) + + assert len(orders) == 1 + assert orders[0].side == OrderSide.SELL + assert orders[0].quantity > 0 + assert orders[0].quantity * 150.0 < 26000 # Less than 26% of $100k + def test_short_weight_disallowed(self, broker): """Test negative weight is set to 0 when shorts not allowed.""" executor = TargetWeightExecutor( diff --git a/tests/futures/test_cash_multiplier_engine.py b/tests/futures/test_cash_multiplier_engine.py new file mode 100644 index 00000000..4f840478 --- /dev/null +++ b/tests/futures/test_cash_multiplier_engine.py @@ -0,0 +1,65 @@ +"""Cash checks for futures orders through the public Engine workflow.""" + +from datetime import datetime, timedelta + +import polars as pl + +from ml4t.backtest import BacktestConfig, DataFeed, Engine, ExecutionMode, Strategy +from ml4t.backtest.config import FillOrdering +from ml4t.backtest.types import AssetClass, ContractSpec, OrderSide + + +def _run_orders(price: float, count: int, **cash_settings): + class BuyContracts(Strategy): + def __init__(self): + self.orders = [] + + def on_data(self, timestamp, data, context, broker): + if not self.orders: + self.orders = [broker.submit_order("ES", 1, OrderSide.BUY) for _ in range(count)] + + start = datetime(2024, 1, 2) + prices = pl.DataFrame( + { + "timestamp": [start + timedelta(days=i) for i in range(3)], + "asset": ["ES"] * 3, + "open": [price] * 3, + "high": [price] * 3, + "low": [price] * 3, + "close": [price] * 3, + "volume": [1_000_000] * 3, + } + ) + strategy = BuyContracts() + result = Engine( + DataFeed(prices_df=prices), + strategy, + BacktestConfig( + initial_cash=100_000, + execution_mode=ExecutionMode.NEXT_BAR, + reject_on_insufficient_cash=True, + **cash_settings, + ), + contract_specs={"ES": ContractSpec("ES", AssetClass.FUTURE, multiplier=50.0)}, + ).run() + assert all(order is not None for order in strategy.orders) + return [order.status.value for order in strategy.orders], len(result.fills) + + +def test_next_bar_cash_check_rejects_futures_notional_above_cash(): + statuses, fills = _run_orders(4_000.0, 1, next_bar_simple_cash_check=True) + + assert statuses == ["rejected"] + assert fills == 0 + + +def test_sequential_reservation_rejects_third_futures_contract(): + statuses, fills = _run_orders( + 1_000.0, + 3, + buying_power_reservation=True, + fill_ordering=FillOrdering.SEQUENTIAL, + ) + + assert statuses == ["filled", "filled", "rejected"] + assert fills == 2 diff --git a/tests/test_calendar.py b/tests/test_calendar.py index 0fbe411a..d0d31092 100644 --- a/tests/test_calendar.py +++ b/tests/test_calendar.py @@ -444,6 +444,24 @@ def test_filter_to_trading_sessions_irregular_timestamps(self): filtered = filter_to_trading_sessions(df, "NYSE") assert len(filtered) == 4 # All except the one after close + def test_filter_keeps_overnight_open_before_session_date(self): + """A CME Monday session opens Sunday evening; keep that bar when data ends Sunday.""" + # 2024-06-09 is Sunday. CME_Equity opens 17:00 America/Chicago (22:00 UTC, CDT) + # and that session is dated Monday 2024-06-10. + in_session = datetime(2024, 6, 9, 23, 0, tzinfo=UTC) # 18:00 CT + before_open = datetime(2024, 6, 9, 21, 0, tzinfo=UTC) # 16:00 CT + df = pl.DataFrame( + { + "timestamp": [before_open, in_session], + "price": [100.0, 101.0], + } + ) + + filtered = filter_to_trading_sessions(df, "CME_Equity") + + timestamps = filtered["timestamp"].to_list() + assert timestamps == [in_session] + class TestGenerateTradingMinutes: """Tests for generate_trading_minutes function.""" diff --git a/tests/test_config_wiring.py b/tests/test_config_wiring.py index 8e6c879a..59926067 100644 --- a/tests/test_config_wiring.py +++ b/tests/test_config_wiring.py @@ -49,7 +49,7 @@ VolumeShareSlippage, ) from ml4t.backtest.profiles import get_profile_config -from ml4t.backtest.types import OrderSide, Position +from ml4t.backtest.types import AssetClass, ContractSpec, OrderSide, Position # --------------------------------------------------------------------------- # Helpers @@ -453,6 +453,94 @@ def test_margin_submission_precheck_allows_reversal_after_close_proceeds(self): assert order.status.value != "rejected" assert order.rejection_reason is None + def test_next_bar_simple_cash_check_includes_contract_multiplier(self): + """Futures notional is price times multiplier; the open check must use both.""" + spec = { + "ES": ContractSpec(symbol="ES", asset_class=AssetClass.FUTURE, multiplier=50.0), + } + + def broker_for(price: float) -> Broker: + broker = _make_broker( + initial_cash=100_000.0, + execution_mode=ExecutionMode.NEXT_BAR, + next_bar_simple_cash_check=True, + contract_specs=spec, + reject_on_insufficient_cash=True, + ) + broker._update_time( + datetime(2024, 1, 2), + {"ES": price}, + {"ES": price}, + {"ES": price}, + {"ES": price}, + {"ES": 1_000_000.0}, + {}, + ) + return broker + + unaffordable = broker_for(4_000.0) + rejected = unaffordable.submit_order("ES", 1, OrderSide.BUY) + unaffordable._update_time( + datetime(2024, 1, 3), + {"ES": 4_000.0}, + {"ES": 4_000.0}, + {"ES": 4_000.0}, + {"ES": 4_000.0}, + {"ES": 1_000_000.0}, + {}, + ) + unaffordable._process_orders(use_open=True) + + assert rejected is not None + assert rejected.status.value == "rejected" + assert unaffordable.cash == 100_000.0 + + affordable = broker_for(1_000.0) + filled = affordable.submit_order("ES", 1, OrderSide.BUY) + affordable._update_time( + datetime(2024, 1, 3), + {"ES": 1_000.0}, + {"ES": 1_000.0}, + {"ES": 1_000.0}, + {"ES": 1_000.0}, + {"ES": 1_000_000.0}, + {}, + ) + affordable._process_orders(use_open=True) + + assert filled is not None + assert filled.status.value == "filled" + assert affordable.cash == 50_000.0 + + def test_buying_power_reservation_includes_contract_multiplier(self): + """Shadow buying power must reserve futures notional, not the raw price.""" + spec = { + "ES": ContractSpec(symbol="ES", asset_class=AssetClass.FUTURE, multiplier=50.0), + } + broker = _make_broker( + initial_cash=100_000.0, + execution_mode=ExecutionMode.NEXT_BAR, + buying_power_reservation=True, + fill_ordering=FillOrdering.SEQUENTIAL, + contract_specs=spec, + reject_on_insufficient_cash=True, + ) + broker._update_time( + datetime(2024, 1, 2), + {"ES": 4_000.0}, + {"ES": 4_000.0}, + {"ES": 4_000.0}, + {"ES": 4_000.0}, + {"ES": 1_000_000.0}, + {}, + ) + + order = broker.submit_order("ES", 1, OrderSide.BUY) + + assert order is not None + assert order.status.value == "rejected" + assert broker.cash == 100_000.0 + # --------------------------------------------------------------------------- # cash_buffer_pct diff --git a/tests/test_equity_curve.py b/tests/test_equity_curve.py index 72bae584..9932da8b 100644 --- a/tests/test_equity_curve.py +++ b/tests/test_equity_curve.py @@ -83,3 +83,14 @@ def on_data(self, timestamp, data, context, broker): assert result.equity is not None assert result.equity.periods_per_year == 252.0 * 390.0 + + def test_short_window_cagr_does_not_overflow(self): + """A one-minute gain must not raise while annualizing CAGR.""" + eq = EquityCurve() + start = datetime(2025, 1, 2, 9, 30) + eq.append(start, 100_000.0) + eq.append(start + timedelta(minutes=1), 101_000.0) + + metrics = eq.to_dict() + + assert metrics["cagr"] == float("inf") diff --git a/validation/CORRECTNESS_RESULTS.json b/validation/CORRECTNESS_RESULTS.json index bf0ddd7f..1d96d430 100644 --- a/validation/CORRECTNESS_RESULTS.json +++ b/validation/CORRECTNESS_RESULTS.json @@ -63,7 +63,7 @@ "version": "3.1.1" } }, - "generated_at": "2026-10-08T19:42:55.916972+00:00", + "generated_at": "2026-10-13T17:09:07.467415+00:00", "input_policy": { "float_quantum": "0.00000001", "rounding": "ROUND_HALF_EVEN", @@ -704,7 +704,7 @@ "scenario_id": "01" }, "detail": null, - "duration_seconds": 2.3915587529772893, + "duration_seconds": 3.5430145550053567, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -1361,7 +1361,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -1374,7 +1374,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -2034,7 +2034,7 @@ "scenario_id": "02" }, "detail": null, - "duration_seconds": 2.389512272027787, + "duration_seconds": 3.795247642963659, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -2691,7 +2691,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "8901a4a7a750c26fb43ceb5d89b4c6ccf9279503da8659b8398cce30d90c8d9c", @@ -2704,7 +2704,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -2861,7 +2861,7 @@ "scenario_id": "03" }, "detail": null, - "duration_seconds": 2.4279953169752844, + "duration_seconds": 3.432134650007356, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -3009,7 +3009,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "3b0720d05e9e5869aa6f01432d17918e2db8c0d80810310e6c39c8bf82d1aee0", @@ -3022,7 +3022,7 @@ }, "input_digest": "02743db0d03a02ec414e579929e5e4729b5f99124ab2a41bb234adf93626f62a", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -3179,7 +3179,7 @@ "scenario_id": "04" }, "detail": null, - "duration_seconds": 2.380415769002866, + "duration_seconds": 3.823783856991213, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -3327,7 +3327,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "3b0720d05e9e5869aa6f01432d17918e2db8c0d80810310e6c39c8bf82d1aee0", @@ -3340,7 +3340,7 @@ }, "input_digest": "c013a16b8902a5599e53c27dae34849fcf327b4e89ec69d00c951903578f948a", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -4010,7 +4010,7 @@ "scenario_id": "05" }, "detail": null, - "duration_seconds": 2.554190814960748, + "duration_seconds": 4.306227676977869, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -4671,7 +4671,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -4684,7 +4684,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -5354,7 +5354,7 @@ "scenario_id": "06" }, "detail": null, - "duration_seconds": 2.4330581699614413, + "duration_seconds": 3.5021412119967863, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -6015,7 +6015,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -6028,7 +6028,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -6688,7 +6688,7 @@ "scenario_id": "07" }, "detail": null, - "duration_seconds": 2.4299100119969808, + "duration_seconds": 3.566374430025462, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -7345,7 +7345,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -7358,7 +7358,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -8018,7 +8018,7 @@ "scenario_id": "08" }, "detail": null, - "duration_seconds": 2.4053515450214036, + "duration_seconds": 3.2390867569483817, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -8675,7 +8675,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -8688,7 +8688,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -8892,7 +8892,7 @@ "scenario_id": "09" }, "detail": null, - "duration_seconds": 2.409221087989863, + "duration_seconds": 3.4401445150142536, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -9093,7 +9093,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "647d9a4a1a219599288faf756e995322ffee249ad29d3fbb88d3b1859249421a", @@ -9106,7 +9106,7 @@ }, "input_digest": "0857d4181ff37765143cd13fb7b67ead75a163a9ece87f9d258bb436175f2568", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -9367,7 +9367,7 @@ "scenario_id": "10" }, "detail": null, - "duration_seconds": 2.404560345050413, + "duration_seconds": 3.334749614004977, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -9625,7 +9625,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "27979784dbb2f9dd6cf72c0d89ea956d49003ed83a57ed254cb6a2cbd234b6a5", @@ -9638,7 +9638,7 @@ }, "input_digest": "23496f457ab5fcdf8c02626db8af05c791278cc307dff08599f673c376e9116c", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -10298,7 +10298,7 @@ "scenario_id": "11" }, "detail": null, - "duration_seconds": 2.4635453099617735, + "duration_seconds": 3.6540650189854205, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -10955,7 +10955,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "8901a4a7a750c26fb43ceb5d89b4c6ccf9279503da8659b8398cce30d90c8d9c", @@ -10968,7 +10968,7 @@ }, "input_digest": "24a69cd2961c5f77332e19aa92432884a792bd64d1e045dac33f1922902e3ba3", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -11172,7 +11172,7 @@ "scenario_id": "12" }, "detail": null, - "duration_seconds": 2.409709703992121, + "duration_seconds": 3.3119971790001728, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -11373,7 +11373,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "15f4500f48791f0c67d7c57f2554d0689a35a6dd71e07a8117de510acf106770", @@ -11386,7 +11386,7 @@ }, "input_digest": "06b9362c086c33e65085233ecbe78d43de5c0f00950eb8b19d6df6e89ba76d3b", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -11533,7 +11533,7 @@ "scenario_id": "13" }, "detail": null, - "duration_seconds": 2.4244371740496717, + "duration_seconds": 3.637637538020499, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -11677,7 +11677,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "647d9a4a1a219599288faf756e995322ffee249ad29d3fbb88d3b1859249421a", @@ -11690,7 +11690,7 @@ }, "input_digest": "8948480a577fa0d6a769f0af879559553b872df5c12ebbdc621237db201f1d99", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -11837,7 +11837,7 @@ "scenario_id": "14" }, "detail": null, - "duration_seconds": 2.405442788032815, + "duration_seconds": 3.56264476897195, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -11981,7 +11981,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "647d9a4a1a219599288faf756e995322ffee249ad29d3fbb88d3b1859249421a", @@ -11994,7 +11994,7 @@ }, "input_digest": "ea9583aa3a0de9f4e92d22968932fd83ac3e7d6e8d8a3e4f689e59868390c7d2", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -12141,7 +12141,7 @@ "scenario_id": "15" }, "detail": null, - "duration_seconds": 2.391603188996669, + "duration_seconds": 3.4637698529986665, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -12285,7 +12285,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "647d9a4a1a219599288faf756e995322ffee249ad29d3fbb88d3b1859249421a", @@ -12298,7 +12298,7 @@ }, "input_digest": "a11960a1bd3f521902fe84af312597b4c7928f97c2dd5b0b37b898d5a00ce3e6", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -12901,7 +12901,7 @@ "scenario_id": "16" }, "detail": null, - "duration_seconds": 2.430224950017873, + "duration_seconds": 3.6495394019875675, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -13501,7 +13501,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "647d9a4a1a219599288faf756e995322ffee249ad29d3fbb88d3b1859249421a", @@ -13514,7 +13514,7 @@ }, "input_digest": "ffd7241a6fbac9130b1d3b499285d0df2610825316987918d110592cbf847c7d", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -47804,7 +47804,7 @@ "scenario_id": "17" }, "detail": null, - "duration_seconds": 2.5086717620142736, + "duration_seconds": 3.7066370679531246, "framework": "vectorbt_pro", "framework_result": { "capabilities": { @@ -82091,7 +82091,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -82104,7 +82104,7 @@ }, "input_digest": "4fb3be3cba6d7c832eeb1fd8c72523b5260ea67fa5ecf3bceeb8e21256e0f998", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -82764,7 +82764,7 @@ "scenario_id": "01" }, "detail": null, - "duration_seconds": 3.3318582020001486, + "duration_seconds": 4.552707933005877, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -83421,7 +83421,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -83434,7 +83434,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -84094,7 +84094,7 @@ "scenario_id": "02" }, "detail": null, - "duration_seconds": 3.481427848979365, + "duration_seconds": 4.285656346997712, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -84751,7 +84751,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "8901a4a7a750c26fb43ceb5d89b4c6ccf9279503da8659b8398cce30d90c8d9c", @@ -84764,7 +84764,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -84921,7 +84921,7 @@ "scenario_id": "03" }, "detail": null, - "duration_seconds": 3.3575980329769664, + "duration_seconds": 4.317177331016865, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -85069,7 +85069,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "3b0720d05e9e5869aa6f01432d17918e2db8c0d80810310e6c39c8bf82d1aee0", @@ -85082,7 +85082,7 @@ }, "input_digest": "02743db0d03a02ec414e579929e5e4729b5f99124ab2a41bb234adf93626f62a", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -85239,7 +85239,7 @@ "scenario_id": "04" }, "detail": null, - "duration_seconds": 3.374126337002963, + "duration_seconds": 4.4834537880378775, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -85387,7 +85387,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "3b0720d05e9e5869aa6f01432d17918e2db8c0d80810310e6c39c8bf82d1aee0", @@ -85400,7 +85400,7 @@ }, "input_digest": "c013a16b8902a5599e53c27dae34849fcf327b4e89ec69d00c951903578f948a", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -86070,7 +86070,7 @@ "scenario_id": "05" }, "detail": null, - "duration_seconds": 3.347590653982479, + "duration_seconds": 5.734334870998282, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -86731,7 +86731,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -86744,7 +86744,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -86774,7 +86774,7 @@ { "comparison": null, "detail": "Scenario explicitly excludes this framework", - "duration_seconds": 4.765985067933798e-06, + "duration_seconds": 9.373994544148445e-06, "framework": "vectorbt_oss", "framework_result": null, "ml4t_result": null, @@ -87418,7 +87418,7 @@ "scenario_id": "07" }, "detail": null, - "duration_seconds": 3.372510668996256, + "duration_seconds": 5.314111291023437, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -88075,7 +88075,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -88088,7 +88088,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -88748,7 +88748,7 @@ "scenario_id": "08" }, "detail": null, - "duration_seconds": 3.54929475300014, + "duration_seconds": 4.9419119150261395, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -89405,7 +89405,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -89418,7 +89418,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -89622,7 +89622,7 @@ "scenario_id": "09" }, "detail": null, - "duration_seconds": 3.7352145859622397, + "duration_seconds": 6.352049211971462, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -89823,7 +89823,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "b5511731b0b2768bf962b3ac1d81c21a82f96d04896692f85bef5e5030ce2b1c", @@ -89836,7 +89836,7 @@ }, "input_digest": "0857d4181ff37765143cd13fb7b67ead75a163a9ece87f9d258bb436175f2568", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -90097,7 +90097,7 @@ "scenario_id": "10" }, "detail": null, - "duration_seconds": 3.9740366640035063, + "duration_seconds": 4.75137072999496, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -90355,7 +90355,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "27979784dbb2f9dd6cf72c0d89ea956d49003ed83a57ed254cb6a2cbd234b6a5", @@ -90368,7 +90368,7 @@ }, "input_digest": "23496f457ab5fcdf8c02626db8af05c791278cc307dff08599f673c376e9116c", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -91028,7 +91028,7 @@ "scenario_id": "11" }, "detail": null, - "duration_seconds": 3.429924627998844, + "duration_seconds": 4.787803270970471, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -91685,7 +91685,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "8901a4a7a750c26fb43ceb5d89b4c6ccf9279503da8659b8398cce30d90c8d9c", @@ -91698,7 +91698,7 @@ }, "input_digest": "24a69cd2961c5f77332e19aa92432884a792bd64d1e045dac33f1922902e3ba3", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -91902,7 +91902,7 @@ "scenario_id": "12" }, "detail": null, - "duration_seconds": 3.5622921240283176, + "duration_seconds": 4.903605652973056, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -92103,7 +92103,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "85ef0c7c62fc2cf1f841196fce585253cbfa5fe4d3beb0e6c204003994d7f28f", @@ -92116,7 +92116,7 @@ }, "input_digest": "06b9362c086c33e65085233ecbe78d43de5c0f00950eb8b19d6df6e89ba76d3b", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -92263,7 +92263,7 @@ "scenario_id": "13" }, "detail": null, - "duration_seconds": 3.6319940899848007, + "duration_seconds": 4.63017557101557, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -92407,7 +92407,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "b5511731b0b2768bf962b3ac1d81c21a82f96d04896692f85bef5e5030ce2b1c", @@ -92420,7 +92420,7 @@ }, "input_digest": "8948480a577fa0d6a769f0af879559553b872df5c12ebbdc621237db201f1d99", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -92567,7 +92567,7 @@ "scenario_id": "14" }, "detail": null, - "duration_seconds": 3.538389565947, + "duration_seconds": 4.724029624951072, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -92711,7 +92711,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "b5511731b0b2768bf962b3ac1d81c21a82f96d04896692f85bef5e5030ce2b1c", @@ -92724,7 +92724,7 @@ }, "input_digest": "ea9583aa3a0de9f4e92d22968932fd83ac3e7d6e8d8a3e4f689e59868390c7d2", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -92871,7 +92871,7 @@ "scenario_id": "15" }, "detail": null, - "duration_seconds": 3.5529292059945874, + "duration_seconds": 4.75120474898722, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -93015,7 +93015,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "b5511731b0b2768bf962b3ac1d81c21a82f96d04896692f85bef5e5030ce2b1c", @@ -93028,7 +93028,7 @@ }, "input_digest": "a11960a1bd3f521902fe84af312597b4c7928f97c2dd5b0b37b898d5a00ce3e6", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -93631,7 +93631,7 @@ "scenario_id": "16" }, "detail": null, - "duration_seconds": 3.5450143619673327, + "duration_seconds": 4.771700902027078, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -94231,7 +94231,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "b5511731b0b2768bf962b3ac1d81c21a82f96d04896692f85bef5e5030ce2b1c", @@ -94244,7 +94244,7 @@ }, "input_digest": "ffd7241a6fbac9130b1d3b499285d0df2610825316987918d110592cbf847c7d", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -128534,7 +128534,7 @@ "scenario_id": "17" }, "detail": null, - "duration_seconds": 3.6728255189955235, + "duration_seconds": 4.899565747007728, "framework": "vectorbt_oss", "framework_result": { "capabilities": { @@ -162821,7 +162821,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -162834,7 +162834,7 @@ }, "input_digest": "4fb3be3cba6d7c832eeb1fd8c72523b5260ea67fa5ecf3bceeb8e21256e0f998", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -163514,7 +163514,7 @@ "scenario_id": "01" }, "detail": null, - "duration_seconds": 0.20569746801629663, + "duration_seconds": 0.3034649359760806, "framework": "backtrader", "framework_result": { "capabilities": { @@ -164193,7 +164193,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -164206,7 +164206,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -164886,7 +164886,7 @@ "scenario_id": "02" }, "detail": null, - "duration_seconds": 0.2201554150087759, + "duration_seconds": 0.30321297695627436, "framework": "backtrader", "framework_result": { "capabilities": { @@ -165565,7 +165565,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "8901a4a7a750c26fb43ceb5d89b4c6ccf9279503da8659b8398cce30d90c8d9c", @@ -165578,7 +165578,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -165736,7 +165736,7 @@ "scenario_id": "03" }, "detail": null, - "duration_seconds": 0.2052952780504711, + "duration_seconds": 0.2816530709969811, "framework": "backtrader", "framework_result": { "capabilities": { @@ -165885,7 +165885,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "6a425065c946d387fafc9cb9978bb86d7754e617273669247cf1149fbd23cc03", @@ -165898,7 +165898,7 @@ }, "input_digest": "02743db0d03a02ec414e579929e5e4729b5f99124ab2a41bb234adf93626f62a", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -166056,7 +166056,7 @@ "scenario_id": "04" }, "detail": null, - "duration_seconds": 0.19165132701164111, + "duration_seconds": 0.30760570702841505, "framework": "backtrader", "framework_result": { "capabilities": { @@ -166205,7 +166205,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "6a425065c946d387fafc9cb9978bb86d7754e617273669247cf1149fbd23cc03", @@ -166218,7 +166218,7 @@ }, "input_digest": "c013a16b8902a5599e53c27dae34849fcf327b4e89ec69d00c951903578f948a", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -166908,7 +166908,7 @@ "scenario_id": "05" }, "detail": null, - "duration_seconds": 0.2087343970197253, + "duration_seconds": 0.30736139899818227, "framework": "backtrader", "framework_result": { "capabilities": { @@ -167589,7 +167589,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -167602,7 +167602,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -168292,7 +168292,7 @@ "scenario_id": "06" }, "detail": null, - "duration_seconds": 0.2079234800185077, + "duration_seconds": 0.35599474102491513, "framework": "backtrader", "framework_result": { "capabilities": { @@ -168973,7 +168973,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -168986,7 +168986,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -169666,7 +169666,7 @@ "scenario_id": "07" }, "detail": null, - "duration_seconds": 0.20813855802407488, + "duration_seconds": 0.30394031800096855, "framework": "backtrader", "framework_result": { "capabilities": { @@ -170345,7 +170345,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -170358,7 +170358,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -171038,7 +171038,7 @@ "scenario_id": "08" }, "detail": null, - "duration_seconds": 0.20751268602907658, + "duration_seconds": 0.32577525498345494, "framework": "backtrader", "framework_result": { "capabilities": { @@ -171717,7 +171717,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -171730,7 +171730,7 @@ }, "input_digest": "465e20dbdd050a15410d58b7391e304491566407369632fbda07da88e4cc1cee", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -171936,7 +171936,7 @@ "scenario_id": "09" }, "detail": null, - "duration_seconds": 0.2043633599532768, + "duration_seconds": 0.3112082330044359, "framework": "backtrader", "framework_result": { "capabilities": { @@ -172139,7 +172139,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "6a425065c946d387fafc9cb9978bb86d7754e617273669247cf1149fbd23cc03", @@ -172152,7 +172152,7 @@ }, "input_digest": "0857d4181ff37765143cd13fb7b67ead75a163a9ece87f9d258bb436175f2568", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -172416,7 +172416,7 @@ "scenario_id": "10" }, "detail": null, - "duration_seconds": 0.2127545650000684, + "duration_seconds": 0.3014110969961621, "framework": "backtrader", "framework_result": { "capabilities": { @@ -172677,7 +172677,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "6a425065c946d387fafc9cb9978bb86d7754e617273669247cf1149fbd23cc03", @@ -172690,7 +172690,7 @@ }, "input_digest": "23496f457ab5fcdf8c02626db8af05c791278cc307dff08599f673c376e9116c", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -173360,7 +173360,7 @@ "scenario_id": "11" }, "detail": null, - "duration_seconds": 0.2172998600290157, + "duration_seconds": 0.3325871559791267, "framework": "backtrader", "framework_result": { "capabilities": { @@ -174027,7 +174027,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "8901a4a7a750c26fb43ceb5d89b4c6ccf9279503da8659b8398cce30d90c8d9c", @@ -174040,7 +174040,7 @@ }, "input_digest": "24a69cd2961c5f77332e19aa92432884a792bd64d1e045dac33f1922902e3ba3", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -174246,7 +174246,7 @@ "scenario_id": "12" }, "detail": null, - "duration_seconds": 0.20394259301247075, + "duration_seconds": 0.3290550489909947, "framework": "backtrader", "framework_result": { "capabilities": { @@ -174449,7 +174449,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "573f73f81275679129b0b0cda5fdf37aa7c8dadf009a5f5aca55fb7be9f9985e", @@ -174462,7 +174462,7 @@ }, "input_digest": "06b9362c086c33e65085233ecbe78d43de5c0f00950eb8b19d6df6e89ba76d3b", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -174610,7 +174610,7 @@ "scenario_id": "13" }, "detail": null, - "duration_seconds": 0.19762610900215805, + "duration_seconds": 0.32127412501722574, "framework": "backtrader", "framework_result": { "capabilities": { @@ -174755,7 +174755,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "6a425065c946d387fafc9cb9978bb86d7754e617273669247cf1149fbd23cc03", @@ -174768,7 +174768,7 @@ }, "input_digest": "8948480a577fa0d6a769f0af879559553b872df5c12ebbdc621237db201f1d99", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -174916,7 +174916,7 @@ "scenario_id": "14" }, "detail": null, - "duration_seconds": 0.19581121404189616, + "duration_seconds": 0.3393643840099685, "framework": "backtrader", "framework_result": { "capabilities": { @@ -175061,7 +175061,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "6a425065c946d387fafc9cb9978bb86d7754e617273669247cf1149fbd23cc03", @@ -175074,7 +175074,7 @@ }, "input_digest": "ea9583aa3a0de9f4e92d22968932fd83ac3e7d6e8d8a3e4f689e59868390c7d2", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -175222,7 +175222,7 @@ "scenario_id": "15" }, "detail": null, - "duration_seconds": 0.2017260870197788, + "duration_seconds": 0.3407482969923876, "framework": "backtrader", "framework_result": { "capabilities": { @@ -175367,7 +175367,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "6a425065c946d387fafc9cb9978bb86d7754e617273669247cf1149fbd23cc03", @@ -175380,7 +175380,7 @@ }, "input_digest": "a11960a1bd3f521902fe84af312597b4c7928f97c2dd5b0b37b898d5a00ce3e6", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -175992,7 +175992,7 @@ "scenario_id": "16" }, "detail": null, - "duration_seconds": 0.3256040040287189, + "duration_seconds": 0.479374913033098, "framework": "backtrader", "framework_result": { "capabilities": { @@ -176601,7 +176601,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "6a425065c946d387fafc9cb9978bb86d7754e617273669247cf1149fbd23cc03", @@ -176614,7 +176614,7 @@ }, "input_digest": "ffd7241a6fbac9130b1d3b499285d0df2610825316987918d110592cbf847c7d", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -212104,7 +212104,7 @@ "scenario_id": "17" }, "detail": null, - "duration_seconds": 0.5484234970062971, + "duration_seconds": 0.6589003599947318, "framework": "backtrader", "framework_result": { "capabilities": { @@ -247593,7 +247593,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -247606,7 +247606,7 @@ }, "input_digest": "4fb3be3cba6d7c832eeb1fd8c72523b5260ea67fa5ecf3bceeb8e21256e0f998", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -247981,7 +247981,7 @@ "scenario_id": "01" }, "detail": null, - "duration_seconds": 1.5950836910051294, + "duration_seconds": 2.6706839840044267, "framework": "zipline", "framework_result": { "capabilities": { @@ -248357,7 +248357,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -248370,7 +248370,7 @@ }, "input_digest": "1e10efa2535c6df89cf6723633fd6f36e07a7f3449632f4aebaa518c1afade05", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -248745,7 +248745,7 @@ "scenario_id": "02" }, "detail": null, - "duration_seconds": 1.5548907099873759, + "duration_seconds": 2.895074591971934, "framework": "zipline", "framework_result": { "capabilities": { @@ -249121,7 +249121,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "8901a4a7a750c26fb43ceb5d89b4c6ccf9279503da8659b8398cce30d90c8d9c", @@ -249134,7 +249134,7 @@ }, "input_digest": "1e10efa2535c6df89cf6723633fd6f36e07a7f3449632f4aebaa518c1afade05", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -249291,7 +249291,7 @@ "scenario_id": "03" }, "detail": null, - "duration_seconds": 1.5306314430199564, + "duration_seconds": 2.628529411042109, "framework": "zipline", "framework_result": { "capabilities": { @@ -249443,7 +249443,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "16de00f1f72fcdd0199f55a77aaf5fe9c2e99450ae25a5350bd854eebf3896f5", @@ -249456,7 +249456,7 @@ }, "input_digest": "2ade3aa0a65bc5315f2297bc8bbc19b45dfdb8db50e52d56fc85ecb4a82facdd", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -249613,7 +249613,7 @@ "scenario_id": "04" }, "detail": null, - "duration_seconds": 1.5279214510228485, + "duration_seconds": 2.4994650750304572, "framework": "zipline", "framework_result": { "capabilities": { @@ -249765,7 +249765,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "16de00f1f72fcdd0199f55a77aaf5fe9c2e99450ae25a5350bd854eebf3896f5", @@ -249778,7 +249778,7 @@ }, "input_digest": "f576ca0b7380cdcf6eb6c99d5b8467e796d9811d6fb1cd66191df1688a948b62", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -250163,7 +250163,7 @@ "scenario_id": "05" }, "detail": null, - "duration_seconds": 1.6210316250217147, + "duration_seconds": 2.496331933012698, "framework": "zipline", "framework_result": { "capabilities": { @@ -250543,7 +250543,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -250556,7 +250556,7 @@ }, "input_digest": "1e10efa2535c6df89cf6723633fd6f36e07a7f3449632f4aebaa518c1afade05", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -250941,7 +250941,7 @@ "scenario_id": "06" }, "detail": null, - "duration_seconds": 1.5706110470346175, + "duration_seconds": 2.4937728379736654, "framework": "zipline", "framework_result": { "capabilities": { @@ -251321,7 +251321,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -251334,7 +251334,7 @@ }, "input_digest": "1e10efa2535c6df89cf6723633fd6f36e07a7f3449632f4aebaa518c1afade05", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -251709,7 +251709,7 @@ "scenario_id": "07" }, "detail": null, - "duration_seconds": 1.5523726060055196, + "duration_seconds": 2.4653644069912843, "framework": "zipline", "framework_result": { "capabilities": { @@ -252085,7 +252085,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -252098,7 +252098,7 @@ }, "input_digest": "1e10efa2535c6df89cf6723633fd6f36e07a7f3449632f4aebaa518c1afade05", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -252473,7 +252473,7 @@ "scenario_id": "08" }, "detail": null, - "duration_seconds": 1.5809831559890881, + "duration_seconds": 2.57028388598701, "framework": "zipline", "framework_result": { "capabilities": { @@ -252849,7 +252849,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -252862,7 +252862,7 @@ }, "input_digest": "1e10efa2535c6df89cf6723633fd6f36e07a7f3449632f4aebaa518c1afade05", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -253066,7 +253066,7 @@ "scenario_id": "09" }, "detail": null, - "duration_seconds": 1.568807870033197, + "duration_seconds": 2.5069974179496057, "framework": "zipline", "framework_result": { "capabilities": { @@ -253271,7 +253271,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "94534fbfeca18ae041b780a18fbfe6884c21c0ce8c84d15d1d8e2096ba59cce7", @@ -253284,7 +253284,7 @@ }, "input_digest": "52803556b6f294e3ad1223585e297f6dab81add8ca8cf22db7ed227dc14fe627", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -253314,7 +253314,7 @@ { "comparison": null, "detail": "Scenario explicitly excludes this framework", - "duration_seconds": 3.0050287023186684e-06, + "duration_seconds": 9.40496101975441e-06, "framework": "zipline", "framework_result": null, "ml4t_result": null, @@ -253673,7 +253673,7 @@ "scenario_id": "11" }, "detail": null, - "duration_seconds": 1.607480824983213, + "duration_seconds": 2.4060870130197145, "framework": "zipline", "framework_result": { "capabilities": { @@ -254049,7 +254049,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "8901a4a7a750c26fb43ceb5d89b4c6ccf9279503da8659b8398cce30d90c8d9c", @@ -254062,7 +254062,7 @@ }, "input_digest": "8a8791a9d96df21d21b4fa14ebf111ea1417ec8424fd87ac9b4b79515ca6c952", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -254266,7 +254266,7 @@ "scenario_id": "12" }, "detail": null, - "duration_seconds": 1.5682583909947425, + "duration_seconds": 2.655318788951263, "framework": "zipline", "framework_result": { "capabilities": { @@ -254471,7 +254471,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "1d86423ea9c4ce2c32fc3b60b01566b4a0fe7f5629ee4cf2bf6899fd4d728f69", @@ -254484,7 +254484,7 @@ }, "input_digest": "ad5a0b9abf3e7e3ae35e06811443d816a29ac95b66e0bc7ce6b49a175f1e5fce", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -254631,7 +254631,7 @@ "scenario_id": "13" }, "detail": null, - "duration_seconds": 1.5618097010301426, + "duration_seconds": 2.487040247011464, "framework": "zipline", "framework_result": { "capabilities": { @@ -254779,7 +254779,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "94534fbfeca18ae041b780a18fbfe6884c21c0ce8c84d15d1d8e2096ba59cce7", @@ -254792,7 +254792,7 @@ }, "input_digest": "bc94952cbe0b0c493e4a5599ddcd00a92412a9c8c838ea8e5c02d84d217baf0c", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -254939,7 +254939,7 @@ "scenario_id": "14" }, "detail": null, - "duration_seconds": 1.5311189439962618, + "duration_seconds": 2.3489378220401704, "framework": "zipline", "framework_result": { "capabilities": { @@ -255087,7 +255087,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "94534fbfeca18ae041b780a18fbfe6884c21c0ce8c84d15d1d8e2096ba59cce7", @@ -255100,7 +255100,7 @@ }, "input_digest": "a0bd681ff924f45192415219403b02e639df271a2aa5987bb9b1e263b2d8c88a", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -255247,7 +255247,7 @@ "scenario_id": "15" }, "detail": null, - "duration_seconds": 1.513668409024831, + "duration_seconds": 2.4036823810311034, "framework": "zipline", "framework_result": { "capabilities": { @@ -255395,7 +255395,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "94534fbfeca18ae041b780a18fbfe6884c21c0ce8c84d15d1d8e2096ba59cce7", @@ -255408,7 +255408,7 @@ }, "input_digest": "ce9cac417809758597595322703b30800145707fa0db44bd7f2cd0775790c114", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -255783,7 +255783,7 @@ "scenario_id": "16" }, "detail": null, - "duration_seconds": 2.052965320996009, + "duration_seconds": 3.5182564549613744, "framework": "zipline", "framework_result": { "capabilities": { @@ -256159,7 +256159,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "94534fbfeca18ae041b780a18fbfe6884c21c0ce8c84d15d1d8e2096ba59cce7", @@ -256172,7 +256172,7 @@ }, "input_digest": "88cfc732983d3fa783e181fd4c97f8d95f7833e20dd03de0c201aaa85e83ca8b", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { @@ -275471,7 +275471,7 @@ "scenario_id": "17" }, "detail": null, - "duration_seconds": 2.34652952500619, + "duration_seconds": 3.423409524024464, "framework": "zipline", "framework_result": { "capabilities": { @@ -294771,7 +294771,7 @@ "canonical_records": "fa1d9846bdc895cf62e6435097a8953d131ac16f6ae910d41ba81a5090c43707", "capabilities": "dd0f50965982db8aae711f850740fc1d26c5f09d8b7c3d24221b347a7e14c8aa", "comparator": "de6683dd96cab7fc9ce005f4651b7de359b8ddfcd6402b543960133ca35b0f5e", - "engine": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", + "engine": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "manifest": "38e64faa733ac8412b0a1cabec5357be229852f19b432f2f215a7bf20f3a2780", "ml4t_runner": "6e9753811241863f59fc6607f315237aa1caec673372ef3b3a85fc959cf426e0", "profile": "4d2cacb23e64dacdbb2eda228691671d3a5d327dbbdd899de310551b244bae54", @@ -294784,7 +294784,7 @@ }, "input_digest": "6fdd33a401576a2adde590f2f8d5986f5893e4663336033ba6c0f8f221d5d526", "ml4t": { - "commit": "16e7ffabc15360de01638d662160eb41ef7d34d8", + "commit": "2332c71a2733e274d09a9e116315812e77b18ed4", "dirty": false }, "python": { diff --git a/validation/METHODOLOGY.md b/validation/METHODOLOGY.md index 6ec597cd..85dd9ff5 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://vectorbt.pro/) | 0.293 (0.290-0.298) | 0.424 (0.421-0.434) | 0.691x | -| ETF allocation | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.192 (0.176-0.493) | 0.414 (0.413-0.417) | 0.462x | -| ETF allocation | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 9.631 (9.428-9.710) | 0.439 (0.434-0.444) | 21.954x | -| ETF allocation | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 3.888 (3.878-3.959) | 0.621 (0.618-0.626) | 6.256x | -| ETF allocation | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.638 (2.516-2.707) | 0.750 (0.743-0.757) | 3.520x | -| CME futures | [VectorBT Pro 2026.6.27](https://vectorbt.pro/) | 0.290 (0.289-0.294) | 0.410 (0.406-0.958) | 0.708x | -| CME futures | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 6.639 (5.831-8.332) | 0.428 (0.422-1.235) | 15.504x | -| Crypto perpetual funding | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.828 (2.737-2.952) | 1.327 (0.657-2.183) | 2.131x | -| FX allocation (USD-quoted pairs) | [VectorBT Pro 2026.6.27](https://vectorbt.pro/) | 0.288 (0.286-0.294) | 0.148 (0.147-0.149) | 1.947x | -| FX allocation (USD-quoted pairs) | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.144 (0.142-0.146) | 0.145 (0.145-0.146) | 0.988x | -| FX allocation (USD-quoted pairs) | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 0.434 (0.430-0.440) | 0.147 (0.146-0.149) | 2.947x | -| FX allocation (USD-quoted pairs) | [LEAN 18001](https://github.com/QuantConnect/Lean) | 0.953 (0.936-1.164) | 0.158 (0.155-0.164) | 6.033x | -| US equity panel | [VectorBT Pro 2026.6.27](https://vectorbt.pro/) | 3.806 (3.336-4.341) | 23.306 (21.906-25.833) | 0.163x | -| US equity panel | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 17.116 (17.069-17.633) | 25.738 (24.983-27.163) | 0.665x | -| US equity panel | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 668.611 (642.993-718.202) | 26.887 (26.406-29.406) | 24.868x | -| US equity panel | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 117.445 (116.308-118.391) | 26.821 (25.473-27.644) | 4.379x | -| US equity panel | [LEAN 18001](https://github.com/QuantConnect/Lean) | 48.436 (48.221-48.986) | 27.688 (27.575-27.796) | 1.749x | - -Measured 2026-09-24 on `Linux-6.8.0-139-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://vectorbt.pro/) | 0.317 (0.297-0.330) | 0.420 (0.418-0.422) | 0.754x | +| ETF allocation | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.173 (0.170-0.175) | 0.416 (0.414-0.417) | 0.415x | +| ETF allocation | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 9.408 (9.378-9.537) | 0.437 (0.435-0.438) | 21.549x | +| ETF allocation | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 3.846 (3.841-3.867) | 0.615 (0.613-0.622) | 6.254x | +| ETF allocation | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.571 (2.515-2.635) | 0.749 (0.743-0.754) | 3.433x | +| CME futures | [VectorBT Pro 2026.6.27](https://vectorbt.pro/) | 0.286 (0.283-0.291) | 0.410 (0.408-0.412) | 0.697x | +| CME futures | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 2.475 (2.465-2.535) | 0.422 (0.419-0.425) | 5.864x | +| Crypto perpetual funding | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.793 (2.751-2.871) | 0.653 (0.649-0.658) | 4.280x | +| FX allocation (USD-quoted pairs) | [VectorBT Pro 2026.6.27](https://vectorbt.pro/) | 0.291 (0.283-0.294) | 0.149 (0.147-0.163) | 1.951x | +| FX allocation (USD-quoted pairs) | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.146 (0.138-0.152) | 0.147 (0.145-0.149) | 0.988x | +| FX allocation (USD-quoted pairs) | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 0.439 (0.434-0.447) | 0.152 (0.149-0.154) | 2.891x | +| FX allocation (USD-quoted pairs) | [LEAN 18001](https://github.com/QuantConnect/Lean) | 0.961 (0.935-0.979) | 0.159 (0.158-0.161) | 6.055x | +| US equity panel | [VectorBT Pro 2026.6.27](https://vectorbt.pro/) | 0.865 (0.851-1.004) | 22.991 (22.877-23.162) | 0.038x | +| US equity panel | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 17.246 (17.166-17.345) | 21.418 (21.157-24.293) | 0.805x | +| US equity panel | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 505.641 (499.073-515.494) | 23.585 (21.878-26.507) | 21.439x | +| US equity panel | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 110.874 (105.635-113.330) | 22.831 (22.502-31.470) | 4.856x | +| US equity panel | [LEAN 18001](https://github.com/QuantConnect/Lean) | 49.967 (48.757-50.759) | 40.260 (34.451-40.927) | 1.241x | + +Measured 2026-10-13 on `Linux-7.0.0-38-generic-x86_64-with-glibc2.43` 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 3613c984..b6952f62 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://vectorbt.pro/) | 0.293 (0.290-0.298) | 0.424 (0.421-0.434) | 0.691x | -| ETF allocation | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.192 (0.176-0.493) | 0.414 (0.413-0.417) | 0.462x | -| ETF allocation | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 9.631 (9.428-9.710) | 0.439 (0.434-0.444) | 21.954x | -| ETF allocation | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 3.888 (3.878-3.959) | 0.621 (0.618-0.626) | 6.256x | -| ETF allocation | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.638 (2.516-2.707) | 0.750 (0.743-0.757) | 3.520x | -| CME futures | [VectorBT Pro 2026.6.27](https://vectorbt.pro/) | 0.290 (0.289-0.294) | 0.410 (0.406-0.958) | 0.708x | -| CME futures | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 6.639 (5.831-8.332) | 0.428 (0.422-1.235) | 15.504x | -| Crypto perpetual funding | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.828 (2.737-2.952) | 1.327 (0.657-2.183) | 2.131x | -| FX allocation (USD-quoted pairs) | [VectorBT Pro 2026.6.27](https://vectorbt.pro/) | 0.288 (0.286-0.294) | 0.148 (0.147-0.149) | 1.947x | -| FX allocation (USD-quoted pairs) | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.144 (0.142-0.146) | 0.145 (0.145-0.146) | 0.988x | -| FX allocation (USD-quoted pairs) | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 0.434 (0.430-0.440) | 0.147 (0.146-0.149) | 2.947x | -| FX allocation (USD-quoted pairs) | [LEAN 18001](https://github.com/QuantConnect/Lean) | 0.953 (0.936-1.164) | 0.158 (0.155-0.164) | 6.033x | -| US equity panel | [VectorBT Pro 2026.6.27](https://vectorbt.pro/) | 3.806 (3.336-4.341) | 23.306 (21.906-25.833) | 0.163x | -| US equity panel | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 17.116 (17.069-17.633) | 25.738 (24.983-27.163) | 0.665x | -| US equity panel | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 668.611 (642.993-718.202) | 26.887 (26.406-29.406) | 24.868x | -| US equity panel | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 117.445 (116.308-118.391) | 26.821 (25.473-27.644) | 4.379x | -| US equity panel | [LEAN 18001](https://github.com/QuantConnect/Lean) | 48.436 (48.221-48.986) | 27.688 (27.575-27.796) | 1.749x | - -Measured 2026-09-24 on `Linux-6.8.0-139-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://vectorbt.pro/) | 0.317 (0.297-0.330) | 0.420 (0.418-0.422) | 0.754x | +| ETF allocation | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.173 (0.170-0.175) | 0.416 (0.414-0.417) | 0.415x | +| ETF allocation | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 9.408 (9.378-9.537) | 0.437 (0.435-0.438) | 21.549x | +| ETF allocation | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 3.846 (3.841-3.867) | 0.615 (0.613-0.622) | 6.254x | +| ETF allocation | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.571 (2.515-2.635) | 0.749 (0.743-0.754) | 3.433x | +| CME futures | [VectorBT Pro 2026.6.27](https://vectorbt.pro/) | 0.286 (0.283-0.291) | 0.410 (0.408-0.412) | 0.697x | +| CME futures | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 2.475 (2.465-2.535) | 0.422 (0.419-0.425) | 5.864x | +| Crypto perpetual funding | [LEAN 18001](https://github.com/QuantConnect/Lean) | 2.793 (2.751-2.871) | 0.653 (0.649-0.658) | 4.280x | +| FX allocation (USD-quoted pairs) | [VectorBT Pro 2026.6.27](https://vectorbt.pro/) | 0.291 (0.283-0.294) | 0.149 (0.147-0.163) | 1.951x | +| FX allocation (USD-quoted pairs) | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 0.146 (0.138-0.152) | 0.147 (0.145-0.149) | 0.988x | +| FX allocation (USD-quoted pairs) | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 0.439 (0.434-0.447) | 0.152 (0.149-0.154) | 2.891x | +| FX allocation (USD-quoted pairs) | [LEAN 18001](https://github.com/QuantConnect/Lean) | 0.961 (0.935-0.979) | 0.159 (0.158-0.161) | 6.055x | +| US equity panel | [VectorBT Pro 2026.6.27](https://vectorbt.pro/) | 0.865 (0.851-1.004) | 22.991 (22.877-23.162) | 0.038x | +| US equity panel | [VectorBT OSS 1.1.0](https://pypi.org/project/vectorbt/1.1.0/) | 17.246 (17.166-17.345) | 21.418 (21.157-24.293) | 0.805x | +| US equity panel | [Backtrader 1.9.78.123](https://pypi.org/project/backtrader/1.9.78.123/) | 505.641 (499.073-515.494) | 23.585 (21.878-26.507) | 21.439x | +| US equity panel | [Zipline Reloaded 3.1.1](https://pypi.org/project/zipline-reloaded/3.1.1/) | 110.874 (105.635-113.330) | 22.831 (22.502-31.470) | 4.856x | +| US equity panel | [LEAN 18001](https://github.com/QuantConnect/Lean) | 49.967 (48.757-50.759) | 40.260 (34.451-40.927) | 1.241x | + +Measured 2026-10-13 on `Linux-7.0.0-38-generic-x86_64-with-glibc2.43` 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 9d39e67c..cdb7885e 100644 --- a/validation/REAL_STRATEGY_PERFORMANCE.json +++ b/validation/REAL_STRATEGY_PERFORMANCE.json @@ -1,5 +1,5 @@ { - "correctness_evidence_generated_at": "2026-10-08T20:00:49.510846+00:00", + "correctness_evidence_generated_at": "2026-10-13T18:00:57.075986+00:00", "environment": { "cpu_count": 24, "frameworks": { @@ -96,59 +96,15 @@ } }, "machine": "x86_64", - "platform": "Linux-6.8.0-139-generic-x86_64-with-glibc2.39", + "platform": "Linux-7.0.0-38-generic-x86_64-with-glibc2.43", "processor": "x86_64" }, - "generated_at": "2026-09-24T05:37:41.451299+00:00", + "generated_at": "2026-10-13T23:57:58.209855+00:00", "provenance": { - "certified_equivalent_sources": [ - { - "certified_at": "2026-10-08T19:28:11.762869+00:00", - "correctness_evidence_generated_at": "2026-10-08T19:27:55.214328+00:00", - "correctness_evidence_sha256": "8818058c974a2beac7edc59013224bb0fd818f828e656dac5f5a41650a704aa5", - "correctness_pairs_passed": 17, - "engine_source_sha256": "b1ebee1ef59f82269fb69cb4103927398254bfa5d8ad620a23c588260de99aca", - "ml4t_commit": "a1649d9f4271c56dcb1de9688b97218f8c50cb13", - "reason": "The only engine source change is the new module src/ml4t/backtest/prediction_market_fees.py. Nothing in src/ml4t/backtest or the real-strategy runners imports it (grep finds no import outside the module itself), so it is never loaded by the timed region, result = engine.run() in validation/real_strategy_runner.py, and cannot move an engine timing. Real-strategy correctness was rebuilt under this source at f349264: 17/17 pass with no compared value moved.", - "sources": { - "backtrader": "a456cc3bf9ed6708d239f21ed2c2495a3c19a9a8306634fee24619c2c0484459", - "benchmark": "0ccc3c90786dc6bc7b8d5992097cd977e2568c39c20f1490d83531b20e6a5188", - "comparison_input": "a00bf9383c3e5561333ef0fa734745296cf9cda6fe7155ce950713c1ba2da4f9", - "lean_crypto": "82f1fbb6054fba25d74a4eabbc9ad4eae808caf89c00f560edefa63304da0dc4", - "lean_equity": "f566341d0f4103eda45280684be1b8a91f9da1a46a3a06477cba3b49674d89e8", - "lean_fx": "85c18eb1368bfac938fd9909eaa481de867cd864b1f6852281da8af7c2b44951", - "ml4t": "c8a5eb818a64a128dce41bc9827adea0a46fdab87a11f418abb19d5df8c7bff9", - "vectorbt_oss": "c1817727bbf49d1551a072717db324c3e70484eefbdc27aa84af2a093e3e4d52", - "vectorbt_pro": "c1817727bbf49d1551a072717db324c3e70484eefbdc27aa84af2a093e3e4d52", - "zipline": "c23b547767fad7a60f8bd6b0abd1d8f1c1acf99ef0faab3da8fd34621b0ec482" - } - }, - { - "certified_at": "2026-10-08T20:00:56.038473+00:00", - "correctness_evidence_generated_at": "2026-10-08T20:00:49.510846+00:00", - "correctness_evidence_sha256": "3f26dc66ec0874de379a4fe97fa149ccf262688901a7b6aa2c3a973e4376a861", - "correctness_pairs_passed": 17, - "engine_source_sha256": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f", - "ml4t_commit": "e76e95d5b3ca5ef1daf833c82b9548e1db726fed", - "reason": "The engine source differs from the measured one only by the new module src/ml4t/backtest/prediction_market_fees.py. Nothing in src/ml4t/backtest or the real-strategy runners imports it, so it is never loaded in the timed region (result = engine.run() in validation/real_strategy_runner.py) and cannot move an engine timing. Real-strategy correctness was rebuilt under this source at 5b7a27e: 17/17 pass.", - "sources": { - "backtrader": "a456cc3bf9ed6708d239f21ed2c2495a3c19a9a8306634fee24619c2c0484459", - "benchmark": "0ccc3c90786dc6bc7b8d5992097cd977e2568c39c20f1490d83531b20e6a5188", - "comparison_input": "a00bf9383c3e5561333ef0fa734745296cf9cda6fe7155ce950713c1ba2da4f9", - "lean_crypto": "82f1fbb6054fba25d74a4eabbc9ad4eae808caf89c00f560edefa63304da0dc4", - "lean_equity": "f566341d0f4103eda45280684be1b8a91f9da1a46a3a06477cba3b49674d89e8", - "lean_fx": "85c18eb1368bfac938fd9909eaa481de867cd864b1f6852281da8af7c2b44951", - "ml4t": "c8a5eb818a64a128dce41bc9827adea0a46fdab87a11f418abb19d5df8c7bff9", - "vectorbt_oss": "c1817727bbf49d1551a072717db324c3e70484eefbdc27aa84af2a093e3e4d52", - "vectorbt_pro": "c1817727bbf49d1551a072717db324c3e70484eefbdc27aa84af2a093e3e4d52", - "zipline": "c23b547767fad7a60f8bd6b0abd1d8f1c1acf99ef0faab3da8fd34621b0ec482" - } - } - ], - "ml4t_engine_source_sha256": "553e3e351f2de59bc17fc4f42b67e4e4f923d059b44eecd6a69e114df4b4a8fe", + "ml4t_engine_source_sha256": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25", "sources": { "backtrader": "a456cc3bf9ed6708d239f21ed2c2495a3c19a9a8306634fee24619c2c0484459", - "benchmark": "0ccc3c90786dc6bc7b8d5992097cd977e2568c39c20f1490d83531b20e6a5188", + "benchmark": "df7dfe974ec02160168db3281cd71bcb944fa133d7d8f8ef338841fc6ef873d5", "comparison_input": "a00bf9383c3e5561333ef0fa734745296cf9cda6fe7155ce950713c1ba2da4f9", "lean_crypto": "82f1fbb6054fba25d74a4eabbc9ad4eae808caf89c00f560edefa63304da0dc4", "lean_equity": "f566341d0f4103eda45280684be1b8a91f9da1a46a3a06477cba3b49674d89e8", @@ -166,55 +122,55 @@ "framework": "vectorbt_pro", "framework_engine": { "ci_95_seconds": [ - 0.2900016970233992, - 0.297742429014761 + 0.2966858954750933, + 0.32973693052190356 ], - "maximum_seconds": 0.31405577599070966, - "median_seconds": 0.2925560909206979, - "minimum_seconds": 0.289397667045705, + "maximum_seconds": 0.6662518929806538, + "median_seconds": 0.3166568469896447, + "minimum_seconds": 0.281770980975125, "output_identity": { "equity.parquet": "9bef5099c36b4a61b32670d19340ebb9f4adba07c63359a5c31a345ad51d1cd6", "fills.parquet": "698baf228da467fcce287f6f7da4903b3421d2649b181e3905a3681905251ffd" }, "samples_seconds": [ - 0.28968335897661746, - 0.2900016970233992, - 0.29298339993692935, - 0.31405577599070966, - 0.289397667045705, - 0.2975651180604473, - 0.29627046699170023, - 0.2904333530459553, - 0.29921439103782177, - 0.29212878190446645 + 0.3206611230270937, + 0.3199918160098605, + 0.33948204503394663, + 0.6662518929806538, + 0.3163826229865663, + 0.3028941420488991, + 0.3169310709927231, + 0.3073354049702175, + 0.28603638597996905, + 0.281770980975125 ] }, - "framework_to_ml4t_median_ratio": 0.6906261460648622, + "framework_to_ml4t_median_ratio": 0.7543868097818006, "input_bundle_sha256": "01f38079ce47821a5379d3769e86f4a2170b88033108153bfc0f928698e946db", "ml4t_engine": { "ci_95_seconds": [ - 0.4206434920197353, - 0.43413781898561865 + 0.4178587634814903, + 0.42218827301985584 ], - "maximum_seconds": 0.44225622492376715, - "median_seconds": 0.4236099264235236, - "minimum_seconds": 0.4181013370398432, + "maximum_seconds": 0.4241827049991116, + "median_seconds": 0.41975395497865975, + "minimum_seconds": 0.4163680130150169, "output_identity": { "equity.parquet": "30c2d39d1165342a599754cfd6ae76019d212f753ab49c837895c9f6ce942339", "fills.parquet": "904a72fd66278fbb84c164e799c8dfc3d826bb1efdb0c3a4132f72203039368f", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 0.4181013370398432, - 0.4206434920197353, - 0.431770077906549, - 0.4251039489172399, - 0.44225622492376715, - 0.42823008296545595, - 0.42211590392980725, - 0.4197556939907372, - 0.4218772370368242, - 0.44004555500578135 + 0.41668328596279025, + 0.41922854696167633, + 0.4163680130150169, + 0.421055021986831, + 0.4241827049991116, + 0.42027936299564317, + 0.42079901200486347, + 0.41871594096301123, + 0.4190342410001904, + 0.4235775340348482 ] } }, @@ -224,55 +180,55 @@ "framework": "vectorbt_oss", "framework_engine": { "ci_95_seconds": [ - 0.175615189014934, - 0.49315099901286885 + 0.17022673349129036, + 0.17455683700973168 ], - "maximum_seconds": 1.029292443068698, - "median_seconds": 0.19159923505503684, - "minimum_seconds": 0.17306145397014916, + "maximum_seconds": 0.1761610810062848, + "median_seconds": 0.17251070297788829, + "minimum_seconds": 0.16781567904399708, "output_identity": { "equity.parquet": "9bef5099c36b4a61b32670d19340ebb9f4adba07c63359a5c31a345ad51d1cd6", "fills.parquet": "a563dc47e59cc8d1ecf49a490f1e83842e5c4ca67a6a56adb411a58eb0842646" }, "samples_seconds": [ - 0.19964565406553447, - 0.20955988799687475, - 0.1835528160445392, - 1.029292443068698, - 0.239498105016537, - 0.776742110028863, - 0.175615189014934, - 0.17990780505351722, - 0.17306145397014916, - 0.1735441500786692 + 0.1717770019895397, + 0.17306986002949998, + 0.1713208719738759, + 0.168676464993041, + 0.17455683700973168, + 0.17588674899889156, + 0.17273744096746668, + 0.1761610810062848, + 0.1722839649883099, + 0.16781567904399708 ] }, - "framework_to_ml4t_median_ratio": 0.4623417459666571, + "framework_to_ml4t_median_ratio": 0.41477955596631605, "input_bundle_sha256": "01f38079ce47821a5379d3769e86f4a2170b88033108153bfc0f928698e946db", "ml4t_engine": { "ci_95_seconds": [ - 0.41261054255301133, - 0.4170511480187997 + 0.41408894397318363, + 0.4173094659927301 ], - "maximum_seconds": 0.4176567249232903, - "median_seconds": 0.4144104155129753, - "minimum_seconds": 0.40947630698792636, + "maximum_seconds": 0.4177276899572462, + "median_seconds": 0.4159093679918442, + "minimum_seconds": 0.41261249396484345, "output_identity": { "equity.parquet": "30c2d39d1165342a599754cfd6ae76019d212f753ab49c837895c9f6ce942339", "fills.parquet": "904a72fd66278fbb84c164e799c8dfc3d826bb1efdb0c3a4132f72203039368f", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 0.4147904319688678, - 0.41382401203736663, - 0.4170511480187997, - 0.40947630698792636, - 0.41271749197039753, - 0.41403039905708283, - 0.4176567249232903, - 0.411397073068656, - 0.4174045389518142, - 0.41666107904165983 + 0.4174934619804844, + 0.41261249396484345, + 0.41408894397318363, + 0.41593633900629357, + 0.4171254700049758, + 0.4172556250123307, + 0.4158823969773948, + 0.4177276899572462, + 0.41327591199660674, + 0.41549610398942605 ] } }, @@ -282,56 +238,56 @@ "framework": "backtrader", "framework_engine": { "ci_95_seconds": [ - 9.428437763010152, - 9.710194949992001 + 9.37822029250674, + 9.536953294998966 ], - "maximum_seconds": 10.17647002497688, - "median_seconds": 9.630951289960649, - "minimum_seconds": 9.37383054906968, + "maximum_seconds": 9.607651308004279, + "median_seconds": 9.408296349516604, + "minimum_seconds": 9.316354000009596, "output_identity": { "equity.parquet": "194818b08af3ceac17f2ff8b143d76184b63f95a92ab2db1ee4a13b903843d92", "fills.parquet": "8fbc351395431fcaf3d986c1d72011520394fa202db5b25ea2a79f49f4c013ab", "rejected_orders.parquet": "29756624602e47c7f667e995e892fd158828381420d570a8a8a65d23d84d617b" }, "samples_seconds": [ - 9.679804097977467, - 9.616229709936306, - 9.740585802006535, - 9.645672869984992, - 9.479653650079854, - 9.37722187594045, - 9.703809328028001, - 10.17647002497688, - 9.37383054906968, - 9.46689756307751 + 9.38930491701467, + 9.395075071020983, + 9.387469595007133, + 9.36713566799881, + 9.536953294998966, + 9.537475213990547, + 9.607651308004279, + 9.515846160997171, + 9.316354000009596, + 9.421517628012225 ] }, - "framework_to_ml4t_median_ratio": 21.954399486329535, + "framework_to_ml4t_median_ratio": 21.54869835698419, "input_bundle_sha256": "01f38079ce47821a5379d3769e86f4a2170b88033108153bfc0f928698e946db", "ml4t_engine": { "ci_95_seconds": [ - 0.4344198580365628, - 0.4441501100664027 + 0.4354548879782669, + 0.4384493429970462 ], - "maximum_seconds": 0.4469653470441699, - "median_seconds": 0.43867978698108345, - "minimum_seconds": 0.4290196599904448, + "maximum_seconds": 0.4417037470266223, + "median_seconds": 0.4366062484914437, + "minimum_seconds": 0.4345702289720066, "output_identity": { "equity.parquet": "c0d9b87df7d1d490134679c571414ee3f5d5dc96cba2fd81e18c24c920ee9b60", "fills.parquet": "7dac5c83214c8d03368049095db934a284d7f89b46e240ccb9896cce90bcfd1b", "rejected_orders.parquet": "cc78f48b47cfd5253b16288011b7811dc5e702ada6927580bdfa2353a0d05ea8" }, "samples_seconds": [ - 0.4290196599904448, - 0.44298302405513823, - 0.43867243302520365, - 0.43726814200636, - 0.4425441790372133, - 0.43315088690724224, - 0.4469653470441699, - 0.4457560410955921, - 0.43868714093696326, - 0.4344198580365628 + 0.43619526096154004, + 0.4417037470266223, + 0.4360020669992082, + 0.43970473000081256, + 0.4345702289720066, + 0.43633382697589695, + 0.4371939559932798, + 0.43687867000699043, + 0.43830584100214764, + 0.4347145149949938 ] } }, @@ -341,55 +297,55 @@ "framework": "zipline", "framework_engine": { "ci_95_seconds": [ - 3.87795311602531, - 3.9590794310206547 + 3.8409837075159885, + 3.8669446870335378 ], - "maximum_seconds": 4.06156149005983, - "median_seconds": 3.888152966508642, - "minimum_seconds": 3.8552848449908197, + "maximum_seconds": 3.8889477669727057, + "median_seconds": 3.8460193904757034, + "minimum_seconds": 3.83994607598288, "output_identity": { "equity.parquet": "e67ccdf71043cd216a9d8ea6f96f6cc0eba564907919ef1b867bce4726e36b31", "fills.parquet": "611b2ca3adc8a24484dcee08d5fba4c9219c0c0c6f4b27d701db51ea98390572" }, "samples_seconds": [ - 3.8822625660104677, - 3.908796950010583, - 3.9590794310206547, - 3.962741830968298, - 4.06156149005983, - 3.8736436660401523, - 3.8913325699977577, - 3.8796646130504087, - 3.8552848449908197, - 3.884973363019526 + 3.83994607598288, + 3.872551230015233, + 3.8669446870335378, + 3.840569130028598, + 3.852937913965434, + 3.841398285003379, + 3.8428184539661743, + 3.8889477669727057, + 3.8492203269852325, + 3.841051601979416 ] }, - "framework_to_ml4t_median_ratio": 6.256086160815378, + "framework_to_ml4t_median_ratio": 6.254144310064379, "input_bundle_sha256": "01f38079ce47821a5379d3769e86f4a2170b88033108153bfc0f928698e946db", "ml4t_engine": { "ci_95_seconds": [ - 0.6179514050018042, - 0.6255218000151217 + 0.6128364659962244, + 0.621518592000939 ], - "maximum_seconds": 0.62759894807823, - "median_seconds": 0.621499267523177, - "minimum_seconds": 0.6117444499395788, + "maximum_seconds": 0.627417334006168, + "median_seconds": 0.6149553319846746, + "minimum_seconds": 0.6062924119760282, "output_identity": { "equity.parquet": "578498185c7abd3b869578c8492937a09ce6cf8904ea64650375587fd397952a", "fills.parquet": "d3daa2754b23c49802344748cd082d98920a97014694b1af1e40055ea4a4a76b", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 0.6209644980262965, - 0.6202658739639446, - 0.6159874090226367, - 0.6179514050018042, - 0.62759894807823, - 0.6227562909480184, - 0.6255218000151217, - 0.6117444499395788, - 0.6220340370200574, - 0.6265018660342321 + 0.6137509960099123, + 0.627417334006168, + 0.621518592000939, + 0.6159059259807691, + 0.6118853389634751, + 0.617030680004973, + 0.6241913170088083, + 0.6137875930289738, + 0.61400473798858, + 0.6062924119760282 ] } }, @@ -399,56 +355,56 @@ "framework": "lean", "framework_engine": { "ci_95_seconds": [ - 2.515638191951439, - 2.707405475433916 + 2.515426416968694, + 2.6349992309696972 ], - "maximum_seconds": 4.277152065886185, - "median_seconds": 2.6383553470368497, - "minimum_seconds": 2.463276338065043, + "maximum_seconds": 2.7710345389787108, + "median_seconds": 2.571001386968419, + "minimum_seconds": 2.4042469599517062, "output_identity": { "equity.parquet": "0a644fee4073605011407b32f7cc1443360ce939e00602c2ab357d2d2f797baa", "fills.parquet": "a24ebc61f9cb814d9e786d3256f64634d90122d475ed5d1c2dbf75668adcf536", "rejected_orders.parquet": "9e7aedba072cbcd23432976f03fb6edef656da961cd2e73dbd75188842b29c36" }, "samples_seconds": [ - 2.4993772000307217, - 2.515638191951439, - 2.6755189020186663, - 2.7485075009753928, - 2.463276338065043, - 2.666303449892439, - 4.277152065886185, - 2.6394270199816674, - 2.5843563260277733, - 2.637283674092032 + 2.492257098958362, + 2.538854928978253, + 2.4042469599517062, + 2.538595734979026, + 2.538193282962311, + 2.630954708030913, + 2.7710345389787108, + 2.6256170319975354, + 2.6668506169808097, + 2.6031478449585848 ] }, - "framework_to_ml4t_median_ratio": 3.5199600238072577, + "framework_to_ml4t_median_ratio": 3.433373646144694, "input_bundle_sha256": "01f38079ce47821a5379d3769e86f4a2170b88033108153bfc0f928698e946db", "ml4t_engine": { "ci_95_seconds": [ - 0.7431577030802146, - 0.7573418769752607 + 0.7434788240061607, + 0.7543250949820504 ], - "maximum_seconds": 0.7589061490725726, - "median_seconds": 0.7495412814896554, - "minimum_seconds": 0.740414077998139, + "maximum_seconds": 0.7589280099491589, + "median_seconds": 0.7488265630090609, + "minimum_seconds": 0.7410676890285686, "output_identity": { "equity.parquet": "9d2ae671c05691680de1a947edc07b5805d3d17c4fffdb0d9cb002908d5d9189", "fills.parquet": "e8903f6676292f1021bd420c2d530322639bdb2f9534e5130f4ae8b41a04ddd0", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 0.7563386870315298, - 0.7482074870495126, - 0.7428623960586265, - 0.7431577030802146, - 0.7573418769752607, - 0.749361485010013, - 0.7579125961055979, - 0.7589061490725726, - 0.7497210779692978, - 0.740414077998139 + 0.7575628570048138, + 0.7531020590104163, + 0.7480729409726337, + 0.7543250949820504, + 0.7410676890285686, + 0.7495801850454882, + 0.7589280099491589, + 0.7427960180211812, + 0.7436981920036487, + 0.7441616299911402 ] } }, @@ -458,55 +414,55 @@ "framework": "vectorbt_pro", "framework_engine": { "ci_95_seconds": [ - 0.2885498870164156, - 0.2940297279856168 + 0.28267122799297795, + 0.2908896260196343 ], - "maximum_seconds": 0.3007154769729823, - "median_seconds": 0.29048270400380716, - "minimum_seconds": 0.2882876090006903, + "maximum_seconds": 0.30194010701961815, + "median_seconds": 0.28562282951315865, + "minimum_seconds": 0.2811118389945477, "output_identity": { "equity.parquet": "40991bd7b1641af22425d7bac85980f54f37d25e460f56710a7994eeaf5669c0", "fills.parquet": "6348edba773d059a5417470a3fca1378a6853909266e833b99dc6ec0160b3b78" }, "samples_seconds": [ - 0.288515966036357, - 0.2905243040295318, - 0.29565473296679556, - 0.2882876090006903, - 0.3007154769729823, - 0.28967332001775503, - 0.29044110397808254, - 0.2885498870164156, - 0.2926626129774377, - 0.292404723004438 + 0.28267122799297795, + 0.28971028298838064, + 0.30194010701961815, + 0.2822386169573292, + 0.28569769399473444, + 0.28554796503158286, + 0.2901028470369056, + 0.28375551803037524, + 0.29206896905088797, + 0.2811118389945477 ] }, - "framework_to_ml4t_median_ratio": 0.7082094829709413, + "framework_to_ml4t_median_ratio": 0.6970348340016457, "input_bundle_sha256": "c7191027f550ef1be0c9528dac08e7c2bf6a76c86d935f593efeb1ad8b628c39", "ml4t_engine": { "ci_95_seconds": [ - 0.40621895994991064, - 0.9579270925023593 + 0.40815022797323763, + 0.4120016939705238 ], - "maximum_seconds": 1.5739495350280777, - "median_seconds": 0.41016494552604854, - "minimum_seconds": 0.4042154859052971, + "maximum_seconds": 0.41429937700740993, + "median_seconds": 0.40976837251218967, + "minimum_seconds": 0.40528757200809196, "output_identity": { "equity.parquet": "b61097a9c1c8635ccc9278db28aa955a69c16bac261515fa6ccff06211ca45f6", "fills.parquet": "0cea5189115b3c7ec680d7f73895278b83ff097e863324bd944c9272d794edbb", "rejected_orders.parquet": "2b4e500b98a08814aa8b42e0693c7bca7076cf9006444f5b26600bb9669647a7" }, "samples_seconds": [ - 0.40621895994991064, - 0.40606525202747434, - 0.4074287120020017, - 0.4042154859052971, - 0.4106503500370309, - 0.4132733520818874, - 0.41067701298743486, - 0.4096795410150662, - 1.5051771720172837, - 1.5739495350280777 + 0.40815022797323763, + 0.4077760129584931, + 0.41041918203700334, + 0.4128089770092629, + 0.41013300098711625, + 0.40528757200809196, + 0.4120016939705238, + 0.41429937700740993, + 0.4086794670438394, + 0.4094037440372631 ] } }, @@ -516,56 +472,56 @@ "framework": "backtrader", "framework_engine": { "ci_95_seconds": [ - 5.8306038425071165, - 8.332070957985707 + 2.464734014007263, + 2.534691003966145 ], - "maximum_seconds": 8.799221163033508, - "median_seconds": 6.63913488748949, - "minimum_seconds": 5.297625788953155, + "maximum_seconds": 2.5522424509981647, + "median_seconds": 2.4748654425202403, + "minimum_seconds": 2.437657369999215, "output_identity": { "equity.parquet": "8f7ec2015c441a7d7723116aadcc7b30bdabb8f30fa4ea108fa96cfff6dcf075", "fills.parquet": "e9888baac855ce576654e66159958eceb70833876507b7228737c7d49a9f8d0b", "rejected_orders.parquet": "28769b824e4cce25769e28dd6764b6ae4e66b1fad0b70e695eba96fa27eb3cef" }, "samples_seconds": [ - 5.936102256993763, - 5.662118365056813, - 5.297625788953155, - 5.99908931995742, - 7.196253928937949, - 7.160146994981915, - 8.332070957985707, - 8.799221163033508, - 8.426080056931823, - 6.118122779997066 + 2.482021439995151, + 2.544856588996481, + 2.478000528004486, + 2.4687378579983488, + 2.534691003966145, + 2.437657369999215, + 2.4717303570359945, + 2.467667938035447, + 2.5522424509981647, + 2.460730170016177 ] }, - "framework_to_ml4t_median_ratio": 15.503975288952617, + "framework_to_ml4t_median_ratio": 5.8637070841167365, "input_bundle_sha256": "c7191027f550ef1be0c9528dac08e7c2bf6a76c86d935f593efeb1ad8b628c39", "ml4t_engine": { "ci_95_seconds": [ - 0.42172171105630696, - 1.2346106839831918 + 0.4185066439968068, + 0.42519951600115746 ], - "maximum_seconds": 1.2817764669889584, - "median_seconds": 0.4282214569975622, - "minimum_seconds": 0.41942463093437254, + "maximum_seconds": 0.4286990520195104, + "median_seconds": 0.42206498500308953, + "minimum_seconds": 0.415014493977651, "output_identity": { "equity.parquet": "2478697a24a7b812e5e84dda67fa5fdbb3dc27455f9bb1b28491f082e96ff501", "fills.parquet": "4cc366af96c4484a6e84db18f6367b89fabb4d98784b883ef1cde7bcc766eb78", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 1.249723534914665, - 1.2817764669889584, - 1.2346106839831918, - 0.43139286199584603, - 0.41945610602851957, - 0.42398731608409435, - 0.4265086619416252, - 0.4218658530153334, - 0.4299342520534992, - 0.41942463093437254 + 0.415014493977651, + 0.4167455759597942, + 0.4202677120338194, + 0.41938553797081113, + 0.42395916901296005, + 0.4286990520195104, + 0.42105934699065983, + 0.42519951600115746, + 0.4258803559932858, + 0.42307062301551923 ] } }, @@ -575,56 +531,56 @@ "framework": "lean", "framework_engine": { "ci_95_seconds": [ - 2.737479996983893, - 2.9521514074876904 + 2.751212569011841, + 2.871313582494622 ], - "maximum_seconds": 5.8178522599628195, - "median_seconds": 2.828298416978214, - "minimum_seconds": 2.661781172035262, + "maximum_seconds": 2.9096451089717448, + "median_seconds": 2.793453912017867, + "minimum_seconds": 2.6526770019554533, "output_identity": { "equity.parquet": "7175e01ac24e001ebcc1ae56855f198cd5e4f07d92a376e0361a314ffd766cb8", "fills.parquet": "c095672f9b5d9bcafdce2f003cb93952c118e5b1eede9db853b1a39b282fcad8", "rejected_orders.parquet": "9e7aedba072cbcd23432976f03fb6edef656da961cd2e73dbd75188842b29c36" }, "samples_seconds": [ - 3.0119967089267448, - 2.737479996983893, - 5.8178522599628195, - 2.764150841976516, - 2.910047380020842, - 2.661781172035262, - 2.892306106048636, - 2.7186104599386454, - 2.796464517014101, - 2.8601323169423267 + 2.7999488440109417, + 2.86284696997609, + 2.727007090987172, + 2.7649565010215156, + 2.9096451089717448, + 2.7869589800247923, + 2.6526770019554533, + 2.863760566979181, + 2.8797801950131543, + 2.77541804703651 ] }, - "framework_to_ml4t_median_ratio": 2.1307424559523884, + "framework_to_ml4t_median_ratio": 4.2799266882027895, "input_bundle_sha256": "2acee3c8542043266e6f9c0dfc9434c95b4469ef6fcaf0556efc569fc9721cdd", "ml4t_engine": { "ci_95_seconds": [ - 0.6565737564815208, - 2.1832261129748076 + 0.6489052749820985, + 0.6583003619743977 ], - "maximum_seconds": 2.2424513859441504, - "median_seconds": 1.327376947447192, - "minimum_seconds": 0.6452092870604247, + "maximum_seconds": 0.6726797739975154, + "median_seconds": 0.6526873274997342, + "minimum_seconds": 0.6456934380112216, "output_identity": { "equity.parquet": "0b98b8b65e7cc6885a27f9ffff6268d6d15a82b613ab06e4e57bbf96805ef1c9", "fills.parquet": "57998fb15bb342363f4046982dc9a4a267778875314687991cbdcca1750060d5", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 0.6590511460090056, - 0.6540963669540361, - 0.6452092870604247, - 0.65794847602956, - 0.7014746950007975, - 1.9532791998935863, - 2.2369316320400685, - 2.115875629009679, - 2.2424513859441504, - 2.1832261129748076 + 0.6636504599591717, + 0.6524243910098448, + 0.6507762730470859, + 0.6456934380112216, + 0.6541233150055632, + 0.6529502639896236, + 0.6726797739975154, + 0.6489052749820985, + 0.6564637039555237, + 0.6472071500029415 ] } }, @@ -634,55 +590,55 @@ "framework": "vectorbt_pro", "framework_engine": { "ci_95_seconds": [ - 0.28634460049215704, - 0.2939993189647794 + 0.28348681703209877, + 0.2938087059883401 ], - "maximum_seconds": 2.133399173966609, - "median_seconds": 0.2883332470082678, - "minimum_seconds": 0.2853023150237277, + "maximum_seconds": 0.2956084859906696, + "median_seconds": 0.29136185100651346, + "minimum_seconds": 0.28012685099383816, "output_identity": { "equity.parquet": "c667f7404ce6368f5fa73e165414980287d8943b3ac2abc2d434d6db14786f6f", "fills.parquet": "9c7d40cd1f2cb24ce6288084615f64696192c391547568f60116807dfbc0758f" }, "samples_seconds": [ - 2.133399173966609, - 0.2853023150237277, - 0.2870907839387655, - 0.2871479649329558, - 0.2939993189647794, - 0.2943767210235819, - 0.2855412360513583, - 0.28801989706698805, - 0.28864659694954753, - 0.29183984093833715 + 0.28291473805438727, + 0.2953102010069415, + 0.28012685099383816, + 0.2936892000143416, + 0.28348681703209877, + 0.2956084859906696, + 0.2856499349582009, + 0.2904748850269243, + 0.2922488169861026, + 0.29230721096973866 ] }, - "framework_to_ml4t_median_ratio": 1.94688518348125, + "framework_to_ml4t_median_ratio": 1.9507504781346867, "input_bundle_sha256": "48922296cea03bfc9867a9c4e1a1d352a0bd54c0b48671e3ca8d1fdddb95d762", "ml4t_engine": { "ci_95_seconds": [ - 0.14696804992854595, - 0.14891324302880093 + 0.14651139499619603, + 0.162800542981131 ], - "maximum_seconds": 0.15570206800475717, - "median_seconds": 0.148099769547116, - "minimum_seconds": 0.14523314801044762, + "maximum_seconds": 0.1795612079440616, + "median_seconds": 0.1493588515149895, + "minimum_seconds": 0.14495990000432357, "output_identity": { "equity.parquet": "d2ab479f54be94a77da5d6b5edcc4e019c985b2edf134c2082df9b90e8bbddf9", "fills.parquet": "a2cea17b1aa5c792685c78c97d3700d19e3a12abf03f1ef53224d41403a2ff1d", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 0.14716051891446114, - 0.1495700170053169, - 0.14885442389640957, - 0.148092049988918, - 0.14810748910531402, - 0.14714952395297587, - 0.14825646905228496, - 0.14523314801044762, - 0.14677558094263077, - 0.15570206800475717 + 0.14712643600068986, + 0.1795612079440616, + 0.15081055596238002, + 0.1537956660031341, + 0.1496352730318904, + 0.14495990000432357, + 0.14908242999808863, + 0.14617942098993808, + 0.14651139499619603, + 0.17479052999988198 ] } }, @@ -692,55 +648,55 @@ "framework": "vectorbt_oss", "framework_engine": { "ci_95_seconds": [ - 0.14231256995117292, - 0.14608762296848 + 0.13837374601280317, + 0.1516854265355505 ], - "maximum_seconds": 0.15810407302342355, - "median_seconds": 0.14366071502445266, - "minimum_seconds": 0.13813161593861878, + "maximum_seconds": 0.16218455898342654, + "median_seconds": 0.145618453505449, + "minimum_seconds": 0.13631876301951706, "output_identity": { "equity.parquet": "116edf23b5f28d364e865907b69c84cadcd46cc7094764b77b38c3be4a0643da", "fills.parquet": "43cc7f5cde82d078b5620d532fd35a704d4372a28dad196eaa1b0cbe7a4f697f" }, "samples_seconds": [ - 0.14351372991222888, - 0.14292211702559143, - 0.1436876190127805, - 0.13813161593861878, - 0.14363381103612483, - 0.14608762296848, - 0.1466356300516054, - 0.15810407302342355, - 0.14471301797311753, - 0.14111140999011695 + 0.14394026901572943, + 0.14826826204080135, + 0.15510259103029966, + 0.13836270902538672, + 0.13837374601280317, + 0.13631876301951706, + 0.14263640000717714, + 0.15101687796413898, + 0.16218455898342654, + 0.14729663799516857 ] }, - "framework_to_ml4t_median_ratio": 0.9882869360716513, + "framework_to_ml4t_median_ratio": 0.9879060984155341, "input_bundle_sha256": "48922296cea03bfc9867a9c4e1a1d352a0bd54c0b48671e3ca8d1fdddb95d762", "ml4t_engine": { "ci_95_seconds": [ - 0.1448381410446018, - 0.1464932659873739 + 0.14467462594620883, + 0.14909378899028525 ], - "maximum_seconds": 0.1472564940340817, - "median_seconds": 0.14536336541641504, - "minimum_seconds": 0.143077731016092, + "maximum_seconds": 0.14967931498540565, + "median_seconds": 0.1474011079990305, + "minimum_seconds": 0.14332857402041554, "output_identity": { "equity.parquet": "91fc93f96be91701932992950807a28c8d0e70bf96b36419171ddfd3f7e3e4ff", "fills.parquet": "d526ec929f9291d9fc1d1842d7337fe24b0b5216a9f479a4107c70834c4ff3ee", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 0.147095917025581, - 0.143077731016092, - 0.14579966804012656, - 0.14477691904176027, - 0.1464932659873739, - 0.1449414169183001, - 0.1448524680454284, - 0.14578531391452998, - 0.14489936304744333, - 0.1472564940340817 + 0.14332857402041554, + 0.14967931498540565, + 0.14625089697074145, + 0.14862456498667598, + 0.14837891201023012, + 0.14467462594620883, + 0.1443814979866147, + 0.14874963299371302, + 0.14956301299389452, + 0.14642330398783088 ] } }, @@ -750,56 +706,56 @@ "framework": "backtrader", "framework_engine": { "ci_95_seconds": [ - 0.4298818615498021, - 0.43957427295390517 + 0.4343806529941503, + 0.4468175169895403 ], - "maximum_seconds": 0.4604668020037934, - "median_seconds": 0.4338197730248794, - "minimum_seconds": 0.42206139594782144, + "maximum_seconds": 0.4630892680143006, + "median_seconds": 0.43937986050150357, + "minimum_seconds": 0.4282395879854448, "output_identity": { "equity.parquet": "8356c90186bb5ee467d3c3c1ee473acecbb89bdb0b36c9dec8ba35bf68b315ef", "fills.parquet": "4d1f97749b28f76c2736ba9df05fdc5aee46409054cd3e43cede9144a03ab83c", "rejected_orders.parquet": "28769b824e4cce25769e28dd6764b6ae4e66b1fad0b70e695eba96fa27eb3cef" }, "samples_seconds": [ - 0.4375792840728536, - 0.43166758795268834, - 0.43957427295390517, - 0.4269790221005678, - 0.44113637891132385, - 0.42206139594782144, - 0.43439839396160096, - 0.43278470099903643, - 0.4604668020037934, - 0.43324115208815783 + 0.4301620019832626, + 0.4468175169895403, + 0.4367311280220747, + 0.438599304005038, + 0.4630892680143006, + 0.43910582002718, + 0.4477222280111164, + 0.4282395879854448, + 0.44232542399549857, + 0.4396539009758271 ] }, - "framework_to_ml4t_median_ratio": 2.946996815690775, + "framework_to_ml4t_median_ratio": 2.8912449647428295, "input_bundle_sha256": "48922296cea03bfc9867a9c4e1a1d352a0bd54c0b48671e3ca8d1fdddb95d762", "ml4t_engine": { "ci_95_seconds": [ - 0.1461060909787193, - 0.14869934448506683 + 0.14916159550193697, + 0.1543869829911273 ], - "maximum_seconds": 0.15201944101136178, - "median_seconds": 0.14720741152996197, - "minimum_seconds": 0.14476263104006648, + "maximum_seconds": 0.1589853210025467, + "median_seconds": 0.1519690880086273, + "minimum_seconds": 0.1470710239955224, "output_identity": { "equity.parquet": "8303060ba6c52232569452705febab5a6eb308b7f98bc82985bd06bfc56c28fb", "fills.parquet": "82f617a7584707dc1075534e0a981e689481e7e2ebb78bcff043154d5b6189c6", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 0.1461060909787193, - 0.14564719202462584, - 0.14662873395718634, - 0.15201944101136178, - 0.14476263104006648, - 0.14772679307498038, - 0.1479792109457776, - 0.14668802998494357, - 0.14941947802435607, - 0.14838470797985792 + 0.15260151302209124, + 0.15350190695608035, + 0.14753442298388109, + 0.15133666299516335, + 0.1559079039725475, + 0.14997325401054695, + 0.1528660620097071, + 0.1589853210025467, + 0.15078876801999286, + 0.1470710239955224 ] } }, @@ -809,56 +765,56 @@ "framework": "lean", "framework_engine": { "ci_95_seconds": [ - 0.9356942480662838, - 1.163711266941391 + 0.9350300095102284, + 0.978720084996894 ], - "maximum_seconds": 1.6388701400719583, - "median_seconds": 0.952616770984605, - "minimum_seconds": 0.9163093130337074, + "maximum_seconds": 1.026259905018378, + "median_seconds": 0.9605866855126806, + "minimum_seconds": 0.9133232940221205, "output_identity": { "equity.parquet": "0d2751a207b9fee6360548c61c7d4f8c5975384a639575adcdc632ac562bffe7", "fills.parquet": "b57996e6b2cc4b261de38866c0c64878c1e5220b750de80b04564767080a52d9", "rejected_orders.parquet": "9e7aedba072cbcd23432976f03fb6edef656da961cd2e73dbd75188842b29c36" }, "samples_seconds": [ - 0.9163093130337074, - 0.9724616790190339, - 0.9485308360308409, - 1.186076671932824, - 1.6388701400719583, - 0.9356942480662838, - 0.9487062549451366, - 0.9565272870240733, - 1.163711266941391, - 0.9338941839523613 + 0.9574581049964763, + 0.978720084996894, + 0.9798164829844609, + 0.9449667320004664, + 0.9133232940221205, + 0.9637152660288848, + 1.026259905018378, + 0.9157930749934167, + 0.9542669440270402, + 0.9642470829421654 ] }, - "framework_to_ml4t_median_ratio": 6.033058566969102, + "framework_to_ml4t_median_ratio": 6.055006960949548, "input_bundle_sha256": "48922296cea03bfc9867a9c4e1a1d352a0bd54c0b48671e3ca8d1fdddb95d762", "ml4t_engine": { "ci_95_seconds": [ - 0.15491063089575619, - 0.1641812429879792 + 0.1575683255214244, + 0.16070012300042436 ], - "maximum_seconds": 0.1727963569574058, - "median_seconds": 0.15789947344455868, - "minimum_seconds": 0.15280074696056545, + "maximum_seconds": 0.16876467200927436, + "median_seconds": 0.1586433660122566, + "minimum_seconds": 0.15571590303443372, "output_identity": { "equity.parquet": "20c7470a3770a852d56bb4790ba22e21010d061f2aa077b328ffbbdca1651cc2", "fills.parquet": "630cd7753bf97bcdde690e05b1065e960f520d22a5622fd0ca4f7f26835a054f", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 0.15562730294186622, - 0.1727963569574058, - 0.16888348700013012, - 0.15849790291395038, - 0.15491063089575619, - 0.1594789989758283, - 0.1537122828885913, - 0.15968903002794832, - 0.15280074696056545, - 0.15730104397516698 + 0.15919859800487757, + 0.16220164799597114, + 0.15816724603064358, + 0.16876467200927436, + 0.1586152800009586, + 0.1598668759688735, + 0.15696940501220524, + 0.1586714520235546, + 0.15781477704877034, + 0.15571590303443372 ] } }, @@ -868,55 +824,55 @@ "framework": "vectorbt_pro", "framework_engine": { "ci_95_seconds": [ - 3.336437991936691, - 4.340994625003077 + 0.8512606525036972, + 1.004224220989272 ], - "maximum_seconds": 4.953136228956282, - "median_seconds": 3.8055060979677364, - "minimum_seconds": 0.8202721000416204, + "maximum_seconds": 1.2765798729960807, + "median_seconds": 0.8650327959912829, + "minimum_seconds": 0.8210718289483339, "output_identity": { "equity.parquet": "533030a43e7dcfd5961b898ad78139632b57cdc36952680fac5dbf651e664885", "fills.parquet": "12fe4de7986d8803f6de85dab2089777823ade9300fda127d62aec08b68d1f72" }, "samples_seconds": [ - 3.878830279922113, - 0.8202721000416204, - 3.3738032239489257, - 3.364297664957121, - 3.73218191601336, - 3.2990727599244565, - 4.087871203082614, - 4.555743600009009, - 4.340994625003077, - 4.953136228956282 + 0.8674716230016202, + 0.8210718289483339, + 0.9087090179673396, + 0.8939260140177794, + 1.1145224279607646, + 0.8480129059753381, + 0.8625939689809456, + 1.2765798729960807, + 0.8542078980244696, + 0.8545083990320563 ] }, - "framework_to_ml4t_median_ratio": 0.16328304156486445, + "framework_to_ml4t_median_ratio": 0.0376250026190165, "input_bundle_sha256": "02926d8a7f1c1f5b4855b2393d1763885288ef64950d5cf521ca96c61f454d88", "ml4t_engine": { "ci_95_seconds": [ - 21.905962607008405, - 25.832905145478435 + 22.877202277013566, + 23.161764198477613 ], - "maximum_seconds": 29.599702261039056, - "median_seconds": 23.30619310797192, - "minimum_seconds": 21.732965360977687, + "maximum_seconds": 23.540111235983204, + "median_seconds": 22.99090327648446, + "minimum_seconds": 22.773997966956813, "output_identity": { "equity.parquet": "974f900cf826b55a2cda697c7f8b11abb3c526fa472c5a406cdb7b8c7d0613c0", "fills.parquet": "923752318482ad571f2d677a6ae1440448200b6cd87616264deb95a9a31b7d9c", "rejected_orders.parquet": "4222d93b23310ba3c189de88d51ef83d28b54fb7f4a09b95e46ea94f8ad58e56" }, "samples_seconds": [ - 25.161155793000944, - 21.871996363974176, - 24.40696905099321, - 26.504654497955926, - 25.386266839923337, - 29.599702261039056, - 22.20541716495063, - 21.939928850042634, - 21.732965360977687, - 21.91702615795657 + 23.08061850001104, + 22.986563781974837, + 22.98406894900836, + 22.877202277013566, + 22.815388737013564, + 22.773997966956813, + 23.11197276401799, + 22.995242770994082, + 23.540111235983204, + 23.242909896944184 ] } }, @@ -926,55 +882,55 @@ "framework": "vectorbt_oss", "framework_engine": { "ci_95_seconds": [ - 17.069319283997174, - 17.633346832939424 + 17.16648382501444, + 17.344690901518334 ], - "maximum_seconds": 18.72887076297775, - "median_seconds": 17.11634712049272, - "minimum_seconds": 16.98897422896698, + "maximum_seconds": 17.587710631021764, + "median_seconds": 17.246279930957826, + "minimum_seconds": 17.143940365989693, "output_identity": { "equity.parquet": "3af99a56f5f6366c769907b955bd752be34ba56d59ae475667ee12482c6ed23e", "fills.parquet": "374d0949b1a63984f6fee5c20699a67c8337d13bc89f25a81d9e7529e206d2c4" }, "samples_seconds": [ - 17.094699335983023, - 17.03593622101471, - 16.98897422896698, - 17.10580162203405, - 18.019019889063202, - 17.10270234697964, - 17.234466051100753, - 17.126892618951388, - 17.633346832939424, - 18.72887076297775 + 17.36454540299019, + 17.335360576049425, + 17.32483640004648, + 17.266206298954785, + 17.15693913999712, + 17.226353562960867, + 17.143940365989693, + 17.16648382501444, + 17.195957402989734, + 17.587710631021764 ] }, - "framework_to_ml4t_median_ratio": 0.6650299261095273, + "framework_to_ml4t_median_ratio": 0.8052164335510029, "input_bundle_sha256": "02926d8a7f1c1f5b4855b2393d1763885288ef64950d5cf521ca96c61f454d88", "ml4t_engine": { "ci_95_seconds": [ - 24.983315304969437, - 27.163160011463333 + 21.157366771018133, + 24.293494529032614 ], - "maximum_seconds": 29.06330027198419, - "median_seconds": 25.73770961049013, - "minimum_seconds": 24.81676509801764, + "maximum_seconds": 26.716178443981335, + "median_seconds": 21.418191696488066, + "minimum_seconds": 21.149828068038914, "output_identity": { "equity.parquet": "9a820fbc8f125ccce82789572667ed58120140a531b18d5b3e162ec9b241fed8", "fills.parquet": "a61d4d9a4a7781bc7d0d8d800aae715becae0a3901fc13566385e4fdf70f7379", "rejected_orders.parquet": "c9ea02a0d5fdc7867b5c507fa2dafb5984c2d734678b22abc0098a433f4b56b1" }, "samples_seconds": [ - 25.70389811799396, - 24.81676509801764, - 26.260063141933642, - 29.06330027198419, - 24.983315304969437, - 24.871099403011613, - 25.211128549068235, - 28.066256880993024, - 27.121518951957114, - 25.7715211029863 + 26.41115380602423, + 21.216017971979454, + 21.149828068038914, + 26.716178443981335, + 24.293494529032614, + 21.763203699025325, + 21.153581490041688, + 21.26403720898088, + 21.57234618399525, + 21.157366771018133 ] } }, @@ -984,56 +940,56 @@ "framework": "backtrader", "framework_engine": { "ci_95_seconds": [ - 642.9925360960187, - 718.2018002989935 + 499.0733422280173, + 515.4941887080204 ], - "maximum_seconds": 755.0583970909938, - "median_seconds": 668.6108569320058, - "minimum_seconds": 571.016019238974, + "maximum_seconds": 534.2466689419816, + "median_seconds": 505.641280170501, + "minimum_seconds": 494.49659120099386, "output_identity": { "equity.parquet": "d4500a220d756773171dc588722b82c57cc1c7948670c2f0e41fde3862778b58", "fills.parquet": "7f3d118ca01063450d37d9e70ed6aa4ce5b6a0d975aa1b279723f516484f77b0", "rejected_orders.parquet": "28769b824e4cce25769e28dd6764b6ae4e66b1fad0b70e695eba96fa27eb3cef" }, "samples_seconds": [ - 571.016019238974, - 671.0628502479522, - 642.9925360960187, - 638.342453709105, - 666.1588636160595, - 755.0583970909938, - 698.4066179379588, - 737.8176368899876, - 718.2018002989935, - 663.2327087180456 + 504.97275688598165, + 498.1811880230089, + 507.24760945199523, + 494.49659120099386, + 506.3098034550203, + 503.7817519099917, + 516.5203609839664, + 515.4941887080204, + 534.2466689419816, + 499.0733422280173 ] }, - "framework_to_ml4t_median_ratio": 24.8676628499208, + "framework_to_ml4t_median_ratio": 21.439466456162943, "input_bundle_sha256": "02926d8a7f1c1f5b4855b2393d1763885288ef64950d5cf521ca96c61f454d88", "ml4t_engine": { "ci_95_seconds": [ - 26.405730456055608, - 29.40559812099673 + 21.87805502198171, + 26.506909451971296 ], - "maximum_seconds": 42.88268547307234, - "median_seconds": 26.886758959502913, - "minimum_seconds": 25.705174163915217, + "maximum_seconds": 27.495643661008216, + "median_seconds": 23.584601846523583, + "minimum_seconds": 21.776162426976953, "output_identity": { "equity.parquet": "69d7e17ff26305c728572cc82e019c28e29c950de01ce51940e205965de245f4", "fills.parquet": "e5a8c855ed69fdb9a024dd8408bea72892d617f147c8e465bc9e5a1b2fab0265", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 42.88268547307234, - 25.705174163915217, - 26.063800260075368, - 26.747660652035847, - 26.934621419990435, - 26.459219371899962, - 29.40559812099673, - 30.456195703940466, - 27.435421627946198, - 26.83889649901539 + 21.8757742359885, + 21.776162426976953, + 22.346598114992958, + 21.87805502198171, + 22.865047476021573, + 27.495643661008216, + 26.506909451971296, + 26.54635573597625, + 24.304156217025593, + 25.666384021984413 ] } }, @@ -1043,55 +999,55 @@ "framework": "zipline", "framework_engine": { "ci_95_seconds": [ - 116.30800138204359, - 118.39059418800753 + 105.63475944800302, + 113.3295605784806 ], - "maximum_seconds": 118.78390398900956, - "median_seconds": 117.44515722896904, - "minimum_seconds": 115.46986341103911, + "maximum_seconds": 115.32725455000764, + "median_seconds": 110.87386798398802, + "minimum_seconds": 103.75360541796545, "output_identity": { "equity.parquet": "916f29fa7170cf1d1318154aff2bdb61db9838da5a780513ba06c42ccf98d3a0", "fills.parquet": "916a68a6f44ea70b6905cca094028d16f8746e3f19c3029637ecb50c5462306a" }, "samples_seconds": [ - 116.30800138204359, - 117.57503147993702, - 117.31528297800105, - 117.06837280991022, - 118.78390398900956, - 115.46986341103911, - 118.77544961904641, - 117.87836588697974, - 116.18007634195965, - 118.39059418800753 + 103.75360541796545, + 104.66209601802984, + 111.40732150699478, + 109.10197369701928, + 105.63475944800302, + 110.60189302696381, + 112.25105481903302, + 111.14584294101223, + 115.32725455000764, + 115.25179964996642 ] }, - "framework_to_ml4t_median_ratio": 4.378906780114713, + "framework_to_ml4t_median_ratio": 4.856235584319016, "input_bundle_sha256": "02926d8a7f1c1f5b4855b2393d1763885288ef64950d5cf521ca96c61f454d88", "ml4t_engine": { "ci_95_seconds": [ - 25.47267946100328, - 27.643725128495134 + 22.501747052010614, + 31.470065128989518 ], - "maximum_seconds": 28.743276142980903, - "median_seconds": 26.82065710151801, - "minimum_seconds": 25.11828896997031, + "maximum_seconds": 36.58820267301053, + "median_seconds": 22.831237500504358, + "minimum_seconds": 22.467533405986615, "output_identity": { "equity.parquet": "6f1c371e4fcce3c1c3829f71c398807c721e95fa7d03a5c4796119a398453a66", "fills.parquet": "2db9ccefd91648644c1abefca68701deb4795a8e6da509935beaffa5793e8501", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 27.13208918296732, - 27.896943790954538, - 27.457406406058, - 26.06535679800436, - 28.743276142980903, - 26.509225020068698, - 25.191814696067013, - 25.11828896997031, - 25.47267946100328, - 27.39050646603573 + 31.191245488007553, + 32.46037046198035, + 31.470065128989518, + 36.58820267301053, + 22.501747052010614, + 22.71154598996509, + 22.93140872596996, + 22.467533405986615, + 22.731066275038756, + 22.488109457015526 ] } }, @@ -1101,56 +1057,56 @@ "framework": "lean", "framework_engine": { "ci_95_seconds": [ - 48.22138740302762, - 48.98638103704434 + 48.75671257200884, + 50.7587880945066 ], - "maximum_seconds": 49.30812434700783, - "median_seconds": 48.43596676498419, - "minimum_seconds": 48.0310333740199, + "maximum_seconds": 53.9887210970046, + "median_seconds": 49.96704530098941, + "minimum_seconds": 48.1520330060157, "output_identity": { "equity.parquet": "a943d6831889ddc227f4f12f103797c854ae6facecac3fbe399d3a84be2579e1", "fills.parquet": "fd13eeca0e70144131f5a231a2a2e2ec8581437035f887c3af604c9ffec5cc75", "rejected_orders.parquet": "9e7aedba072cbcd23432976f03fb6edef656da961cd2e73dbd75188842b29c36" }, "samples_seconds": [ - 48.241816133027896, - 48.25772183504887, - 48.49347179895267, - 48.0310333740199, - 48.98638103704434, - 48.945306104957126, - 48.18505297100637, - 48.99020988610573, - 49.30812434700783, - 48.378461731015705 + 53.9887210970046, + 50.291894811962266, + 50.86141662602313, + 48.52856559801148, + 50.65615956299007, + 49.64219579001656, + 49.3787735789665, + 48.1520330060157, + 48.75671257200884, + 50.74941124400357 ] }, - "framework_to_ml4t_median_ratio": 1.7493778180777746, + "framework_to_ml4t_median_ratio": 1.2411180442972372, "input_bundle_sha256": "02926d8a7f1c1f5b4855b2393d1763885288ef64950d5cf521ca96c61f454d88", "ml4t_engine": { "ci_95_seconds": [ - 27.575467039016075, - 27.796223080484197 + 34.45073819052777, + 40.926655339979334 ], - "maximum_seconds": 27.996221969951876, - "median_seconds": 27.687539115024265, - "minimum_seconds": 27.42275011492893, + "maximum_seconds": 41.77570006495807, + "median_seconds": 40.25970416801283, + "minimum_seconds": 30.176298015983775, "output_identity": { "equity.parquet": "b5907100a1469d4c9ff63af5bbeb328cddf7d72e6d98db6d9d796488c95545f2", "fills.parquet": "7eb685423c6c5f32168e7ea8cc19976cb0404aef075514e657cee9e3f458d0d2", "rejected_orders.parquet": "043204927e46137ca25cc0fa23883f4868af2b57f48c50d034fd56e113da12e8" }, "samples_seconds": [ - 27.42275011492893, - 27.996221969951876, - 27.575467039016075, - 27.580613891012035, - 27.69515867100563, - 27.767369729001075, - 27.528504969901405, - 27.825076431967318, - 27.6799195590429, - 27.79439065803308 + 30.554377813998144, + 30.176298015983775, + 34.52698410395533, + 39.83557892299723, + 40.73326186800841, + 40.70011804299429, + 41.15319263696438, + 41.77570006495807, + 40.683829413028434, + 38.3470985670574 ] } } diff --git a/validation/REAL_STRATEGY_RESULTS.json b/validation/REAL_STRATEGY_RESULTS.json index 592faaf0..d6033aec 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-10-08T20:00:49.510846+00:00", + "generated_at": "2026-10-13T18:00:57.075986+00:00", "provenance": { "adapters": { "backtrader": "a456cc3bf9ed6708d239f21ed2c2495a3c19a9a8306634fee24619c2c0484459", @@ -131,9 +131,9 @@ }, "machine": "x86_64", "ml4t": { - "commit": "e76e95d5b3ca5ef1daf833c82b9548e1db726fed", + "commit": "bc83aab413d63c02fb16b48390db161d239bd490", "dirty": false, - "engine_source_sha256": "2a0d9b9b0570f22772090e2204b97fb7aa970b99ca6814b63f443b47539bf41f" + "engine_source_sha256": "1e2bf2f45a835f8b0a81b59141843dae77b6341233d7c9ba494efada0a328a25" }, "platform": "Linux-7.0.0-38-generic-x86_64-with-glibc2.43", "python": "3.12.11" @@ -142,13 +142,13 @@ { "case_study": "etfs", "engine_seconds": { - "framework": 0.3412680019973777, - "ml4t": 0.419192252040375, + "framework": 0.36847831297200173, + "ml4t": 0.4581909860135056, "single_run_diagnostic_only": true }, "evidence": { - "framework_manifest_sha256": "1b7f4eca0fd6eafcc14c5bb97a60150810c4517972671ab93d963f507bff1b3a", - "ml4t_manifest_sha256": "abab1d59ba06a1216da8c0be69ad19670c277eec2bc467c42aebcc790d5d6eb3" + "framework_manifest_sha256": "8d99d4a8f8b3c4452e1c55c94e9bafce34597b9a74e33ba04f297e624acaa36c", + "ml4t_manifest_sha256": "7fc4aa9756d81bae117322eaddc582cfea29db22b0166085aae8eaa3df44311f" }, "excluded_surfaces": { "accepted_unfilled_orders": "not exposed by every native runner", @@ -209,13 +209,13 @@ { "case_study": "etfs", "engine_seconds": { - "framework": 0.18416030501248315, - "ml4t": 0.4282481879927218, + "framework": 0.2115370410028845, + "ml4t": 0.5151094649918377, "single_run_diagnostic_only": true }, "evidence": { - "framework_manifest_sha256": "48aa6691ec1a296142101db639e8ba5966ad83490de0b58e646620ff022cfd2c", - "ml4t_manifest_sha256": "064b493228789906039cbd462d3297059d48f56ceed0a4c1c5e691475ed7134c" + "framework_manifest_sha256": "6153be37323d802f577e6bc64340f6a897fd5aedd30043f3d9cfe48f490ec781", + "ml4t_manifest_sha256": "86ba18937ec804aa86c45e5ec04f4ec2101880be5015634639995fcd64af22e4" }, "excluded_surfaces": { "accepted_unfilled_orders": "not exposed by every native runner", @@ -276,13 +276,13 @@ { "case_study": "etfs", "engine_seconds": { - "framework": 9.737538582005072, - "ml4t": 0.4487659599981271, + "framework": 10.434919324994553, + "ml4t": 0.4737774459645152, "single_run_diagnostic_only": true }, "evidence": { - "framework_manifest_sha256": "7f1e9cecc4feeced81af2ee7d99123196536bce1e5fb292631d7d250d19834d7", - "ml4t_manifest_sha256": "d83bebda06df2b217689c872082582b19a7b09d459578458a08de55273b37a7e" + "framework_manifest_sha256": "414393345b899476026c8c16768d2b8d143352a1742c8e53fc751cfc83354e36", + "ml4t_manifest_sha256": "1459cf2c97f3a1fae77c78bd3a659fbf68c344df01ec6a3c47004fd41cfdfa56" }, "excluded_surfaces": { "accepted_unfilled_orders": "not exposed by every native runner", @@ -353,13 +353,13 @@ { "case_study": "etfs", "engine_seconds": { - "framework": 4.807452238979749, - "ml4t": 0.6355875970330089, + "framework": 4.016880822950043, + "ml4t": 0.6412191230338067, "single_run_diagnostic_only": true }, "evidence": { - "framework_manifest_sha256": "26775814326860feebb8fc359492b58f601240a811916b2797219907b443ae11", - "ml4t_manifest_sha256": "a4aaa05edad9e296818a7687a24b7f502d0eecdd796bfde3215fab866f9ecd21" + "framework_manifest_sha256": "19d957f2d3c7fd46a01dd2bfb6a12cb997ff9c6529be8f23211da122d2823e85", + "ml4t_manifest_sha256": "83e0cfaa8b86890a0f91e40f8e82c42b7f7058b0a1ed489d2697056acf7dc18d" }, "excluded_surfaces": { "accepted_unfilled_orders": "not exposed by every native runner", @@ -420,13 +420,13 @@ { "case_study": "etfs", "engine_seconds": { - "framework": 2.9700952940038405, - "ml4t": 0.7646393330069259, + "framework": 2.9675082490430214, + "ml4t": 0.8089450030238368, "single_run_diagnostic_only": true }, "evidence": { - "framework_manifest_sha256": "bccc2fa584afc9759bca5b77f912a2d9df9b7bb22f446d458c32978932f48064", - "ml4t_manifest_sha256": "89ee685f46b21e64bac1fc900cc473735ddfb9a23e02cda8714bf73358f5d657" + "framework_manifest_sha256": "8bf7bdececaa75f61bdb237dd7ec9eaa3af9c3290129aa721285af4d433bfa0f", + "ml4t_manifest_sha256": "52677d0c4dedc72169159a586eef81fa1cbef506fe25d6606439816cbbb45457" }, "excluded_surfaces": { "accepted_unfilled_orders": "not exposed by every native runner", @@ -515,13 +515,13 @@ { "case_study": "cme_futures", "engine_seconds": { - "framework": 0.37743046099785715, - "ml4t": 0.4161097949836403, + "framework": 0.3143156259902753, + "ml4t": 0.40860982896992937, "single_run_diagnostic_only": true }, "evidence": { - "framework_manifest_sha256": "95f831f02c6990a73c4e08b41587dfee3103c8587f2121d5ea2878d841d70c0a", - "ml4t_manifest_sha256": "82e4d2ded6a373d2b5b7cf3f0ec696c54c4405ceecd4fc49c0c067d8f4368370" + "framework_manifest_sha256": "29e763daa4a34f2afa237b8fbd7d2afb9912476c9700aeebea42a119e6132d4d", + "ml4t_manifest_sha256": "6759677537cb553d781a1b7bb239bebde2636498b1d63277b1eb6dc29803e28f" }, "excluded_surfaces": { "accepted_unfilled_orders": "not exposed by every native runner", @@ -589,13 +589,13 @@ { "case_study": "cme_futures", "engine_seconds": { - "framework": 2.6640014040167443, - "ml4t": 0.4422138170339167, + "framework": 2.65922709798906, + "ml4t": 0.45531918795313686, "single_run_diagnostic_only": true }, "evidence": { - "framework_manifest_sha256": "4fe816c44263c0729af1af1d26ab47f6237abdab9c10f02dff3b506a3869d700", - "ml4t_manifest_sha256": "33cac6b620a39bf3ed2a5845ab86d7bbed89dbf8d16606812634fea1deda4716" + "framework_manifest_sha256": "d721f43873ac4ef3b319d1166e8c497631d6ed333bac245bd8881a20e028e9cf", + "ml4t_manifest_sha256": "a903650c5c3f475b09220daddaa1a191607a71ac8ab4081b43d01193e62f9511" }, "excluded_surfaces": { "accepted_unfilled_orders": "not exposed by every native runner", @@ -708,13 +708,13 @@ { "case_study": "crypto_perps_funding", "engine_seconds": { - "framework": 2.87804518698249, - "ml4t": 0.7094007299747318, + "framework": 3.488534543022979, + "ml4t": 0.7976718329591677, "single_run_diagnostic_only": true }, "evidence": { - "framework_manifest_sha256": "5b5873188d1f8731a57f302831809599bcdf6ec72dd225ffc1e6ca0b40b72745", - "ml4t_manifest_sha256": "5badb0761f0665e00873f7490c775bcaf0bcdf2e0c5943c09d968da3632dcd89" + "framework_manifest_sha256": "3e86a3f61fa3685a472db26aeab4de2e2d28efadd38f488b3e2534cc889c4b7e", + "ml4t_manifest_sha256": "c7bbb91f42a7b4ea6cc67f8d1acf7ee3d6b4ad271aadf00c732a3e92f2200ab2" }, "excluded_surfaces": { "accepted_unfilled_orders": "not exposed by every native runner", @@ -785,13 +785,13 @@ { "case_study": "fx_pairs", "engine_seconds": { - "framework": 0.39610078401165083, - "ml4t": 0.15986847499152645, + "framework": 0.42868361802538857, + "ml4t": 0.2173199969693087, "single_run_diagnostic_only": true }, "evidence": { - "framework_manifest_sha256": "087843d9c025881cebdead1a7d6d8e04b10468bb25d85c4f606a18f845ef740b", - "ml4t_manifest_sha256": "0d6e8b530cbefe03afc171edc470f0ee8c9f13e5298284754b9baec75fecdc19" + "framework_manifest_sha256": "b469bb8d64f777daf0ebd76b041296d9d9c42ce3e7ccf28ef84d866e840b9a1e", + "ml4t_manifest_sha256": "948481a7d004557a2ea4823a5b398589d9a2155b2c71e3be880997a647546de3" }, "excluded_surfaces": { "accepted_unfilled_orders": "not exposed by every native runner", @@ -852,13 +852,13 @@ { "case_study": "fx_pairs", "engine_seconds": { - "framework": 0.2652946129674092, - "ml4t": 0.16622454696334898, + "framework": 0.2156169099616818, + "ml4t": 0.20507024100515991, "single_run_diagnostic_only": true }, "evidence": { - "framework_manifest_sha256": "9bc9c3020fda3549d772d6de2464138cc0ff710c845c29e2ca363e1a54e13b4f", - "ml4t_manifest_sha256": "f357b758231290582fcd6f6321ef9e3b7122ef4b8ad23f11c4c259bc9a87895f" + "framework_manifest_sha256": "4618ea30d10c63d8da33955069ba631ba1033928bc6386f9d0c65789d8d609d7", + "ml4t_manifest_sha256": "932f87113b706eb8ce63306eec5e636fd692ae13a02b20eaee362b42a5ba4d1b" }, "excluded_surfaces": { "accepted_unfilled_orders": "not exposed by every native runner", @@ -919,13 +919,13 @@ { "case_study": "fx_pairs", "engine_seconds": { - "framework": 0.4294113659998402, - "ml4t": 0.16142100398428738, + "framework": 0.45311472000321373, + "ml4t": 0.19150224403711036, "single_run_diagnostic_only": true }, "evidence": { - "framework_manifest_sha256": "79035767c67ffb9b102972fd70dcfd0562e021680186b37e4cb9db606591d019", - "ml4t_manifest_sha256": "a96b2a7f38e901f8fbe2c908b850196fd0c166021d38b0c50145dee15730f15a" + "framework_manifest_sha256": "17a68a46a990f4f5edf6f1cfe99dfae5eac6d8007d40bcc8c19ca4ee23eae50e", + "ml4t_manifest_sha256": "463d24dba5d148f561295d10c05a51c423b4f99a3d072455c4a5b8094ae58625" }, "excluded_surfaces": { "accepted_unfilled_orders": "not exposed by every native runner", @@ -1003,13 +1003,13 @@ { "case_study": "fx_pairs", "engine_seconds": { - "framework": 1.0083705990109593, - "ml4t": 0.16377678205026314, + "framework": 1.2311582840047777, + "ml4t": 0.29490180598804727, "single_run_diagnostic_only": true }, "evidence": { - "framework_manifest_sha256": "6c63ce8dee1eec909a0d06ae7629d93aa3a71edd04ba657edb110bb9212b32f3", - "ml4t_manifest_sha256": "152e463ac94d3efbb2578a37020663a84ee8172ee4e21f17960c311d3494f0fe" + "framework_manifest_sha256": "37e3a03ccfc7db4300186c8603ebb0543f428bacc112af2cadd16cc3bbf2e69a", + "ml4t_manifest_sha256": "a45eb7b659861e6ddd8298d1e3a4efca04ca4063c42060d8526a2225966b6463" }, "excluded_surfaces": { "accepted_unfilled_orders": "not exposed by every native runner", @@ -1080,13 +1080,13 @@ { "case_study": "us_equities_panel", "engine_seconds": { - "framework": 1.1930540719768032, - "ml4t": 32.499565685982816, + "framework": 3.6552610140061006, + "ml4t": 62.55559419997735, "single_run_diagnostic_only": true }, "evidence": { - "framework_manifest_sha256": "f9883ea4e6e1f8662b829ddcdb1253490d75539610560497265080ffd691c7b0", - "ml4t_manifest_sha256": "5a8db1c911ee80b7d7cae056eb63737549775edd095b62ef13749f419c780c90" + "framework_manifest_sha256": "09a1abd2855ef1d6e8b7bf2735a8046dbeb9e239d296910d820ab68b03a67919", + "ml4t_manifest_sha256": "eecd80ae4f4ec55fed08f830d01233c5b74abab515081151c2bf013de22d055c" }, "excluded_surfaces": { "accepted_unfilled_orders": "not exposed by every native runner", @@ -1147,13 +1147,13 @@ { "case_study": "us_equities_panel", "engine_seconds": { - "framework": 18.31070233299397, - "ml4t": 30.549421797972172, + "framework": 21.081122264964506, + "ml4t": 44.02443123300327, "single_run_diagnostic_only": true }, "evidence": { - "framework_manifest_sha256": "19fc47421629cc12e8f3512eed860e65bd196cc5942868631a264235bc0ca43f", - "ml4t_manifest_sha256": "556adb7916408a4fa2eda366cf092e065141c651a32c7f8d8e126ee83a09f9b2" + "framework_manifest_sha256": "3c01b74f5096cb25da6de9d76ac6645265417fd206c5d4c8aba11d7e95840cc2", + "ml4t_manifest_sha256": "a5541cd5b61163b9bcdc9023692ea9f0300759e0555d1417277b8f5813aed310" }, "excluded_surfaces": { "accepted_unfilled_orders": "not exposed by every native runner", @@ -1214,13 +1214,13 @@ { "case_study": "us_equities_panel", "engine_seconds": { - "framework": 529.6449827509932, - "ml4t": 23.223136416985653, + "framework": 584.6239064410329, + "ml4t": 23.063333072990645, "single_run_diagnostic_only": true }, "evidence": { - "framework_manifest_sha256": "a8c7c16c5db2812fc6539aa23b2c8a59301495c61b431eac49ed9cd3f9e75588", - "ml4t_manifest_sha256": "c64aa4bcea4da2ee90444168ad8b4b709b12f04836f3ec00c3ce1343bd363af6" + "framework_manifest_sha256": "b8f0cbe9ef129f5ec263ef7235dcb46fd28efc9bc293b1de5f7fa347819b9890", + "ml4t_manifest_sha256": "7be4e8fc31a77f02150bb489d1f2cd15b6d0f208b8270db359306ef2dc1ee15f" }, "excluded_surfaces": { "accepted_unfilled_orders": "not exposed by every native runner", @@ -1291,13 +1291,13 @@ { "case_study": "us_equities_panel", "engine_seconds": { - "framework": 106.2881790450192, - "ml4t": 23.548457249999046, + "framework": 112.63446856901282, + "ml4t": 27.604026440007146, "single_run_diagnostic_only": true }, "evidence": { - "framework_manifest_sha256": "d31da8742d55417f1464e65fc47f46fc8f3ab1bf5464e92035a0684776b6369e", - "ml4t_manifest_sha256": "e118a86cee6fd760435d909cbf5469b59be0d50fa2e7e1c6a18d943041ba65fd" + "framework_manifest_sha256": "2f48bb54c9a723e913d04ede81ab7abff1387410e908a0dcd185ab7f615c40c1", + "ml4t_manifest_sha256": "c57b760ae256ffee64c7f1a2cf72cf770e715c5c9f2021059c0d42517d043d2b" }, "excluded_surfaces": { "accepted_unfilled_orders": "not exposed by every native runner", @@ -1358,13 +1358,13 @@ { "case_study": "us_equities_panel", "engine_seconds": { - "framework": 53.311729563982226, - "ml4t": 29.1640200560214, + "framework": 59.3530328310444, + "ml4t": 32.52971462998539, "single_run_diagnostic_only": true }, "evidence": { - "framework_manifest_sha256": "bd404a4e3ace9eac084d842c777a780702ff9d26a17113599ec0b3c3de5189dc", - "ml4t_manifest_sha256": "5fb49877e497b4541ed7a1d6293c65b6364a3c6637d4d7595b18032703b29acc" + "framework_manifest_sha256": "c2003a1792d51fec2d22fd32181533f4bf2d59ad750c76d98d9595710a6bbe0d", + "ml4t_manifest_sha256": "5500eaac55bf41ab182d5e47e30d179c6121995eadc9e0c70479fc7f67c822bb" }, "excluded_surfaces": { "accepted_unfilled_orders": "not exposed by every native runner", diff --git a/validation/real_strategy_benchmark.py b/validation/real_strategy_benchmark.py index 8b592cb4..2cd8c369 100644 --- a/validation/real_strategy_benchmark.py +++ b/validation/real_strategy_benchmark.py @@ -258,7 +258,7 @@ def build_report( "environment": { "platform": platform.platform(), "machine": platform.machine(), - "processor": platform.processor(), + "processor": platform.processor() or platform.machine(), "cpu_count": os.cpu_count(), "frameworks": targets["framework"], },