Перейти к содержимому
Все документы библиотеки

Правила аудита и данные о паритете движков бэктестинга

Код Machine Learning for Trading

Сводка

В этой записи аудита определено, как несколько фреймворков для бэктестинга сравниваются с ML4T на реальных практических примерах торговых стратегий и синтетической стрессовой нагрузке. В ней заданы правила сравнения упорядоченных исполнений, временных меток, денежных значений счёта, количеств и других числовых полей. Также указаны редакции фреймворков, неизменяемые идентификаторы, статус поддержки, правила оценки производительности и ссылки на данные о корректности, времени и масштабе. Время измеряется только для вызова движка; загрузка входных данных, инференс, подготовка, извлечение и представление результатов исключены.

Записи показывают, почему заявления о паритете нужно ограничивать конкретной моделью актива и реализацией. Например, VectorBT OSS отмечен как неподдерживаемый для нагрузки с фьючерсами CME, поскольку в нём нет встроенных множителей контрактов и учёта маржи; обе редакции VectorBT также не поддерживают учёт финансирования криптовалютных бессрочных контрактов и маржи. Замеры времени выполнены в изолированных процессах для пар, прошедших проверку корректности, поэтому они не устанавливают универсальную производительность на разных наборах данных и компьютерах. Этот файл документирует данные и правила, а не обучает торговому сигналу или распределению активов.

Ключевые идеи

  • Паритет бэктестов зависит от явных правил упорядочивания исполнений, временных меток и числовых допусков.
  • Данные о времени охватывают вызовы движка и не включают подготовку данных и адаптера, а также обработку результатов.
  • Поддержку фреймворка нужно оценивать с учётом требований к учёту конкретного актива.
  • В аудите сравнения времени ограничены парами фреймворков и практических примеров, прошедшими проверки корректности.
  • Результаты зафиксированных нагрузок не устанавливают универсальный рейтинг скорости.

Теги

Полный текст
# framework_parity_audit.json


```json
{
  "audit_generated_at": "2026-09-03T11:44:14.344493+00:00",
  "comparison_policy": {
    "account_money_fields": [
      "cash",
      "commission",
      "equity",
      "final_value"
    ],
    "account_money_quantum": "0.01",
    "fill_order": "canonical timestamp, asset, side, quantity, price, commission",
    "meaning": "account-money gaps round to zero cents; quantity gaps round to zero at 1e-5 shares or contracts; all other numeric gaps round to zero at 1e-8",
    "quantity_quantum": "0.00001",
    "record_numeric_quantum": "0.00000001",
    "rounding": "ROUND_HALF_EVEN",
    "timestamp_domain": {
      "cme_futures": "session date",
      "crypto_perps_funding": "exact UTC event timestamp",
      "etfs": "session date",
      "fx_pairs": "session date",
      "us_equities_panel": "session date"
    }
  },
  "engine_commit": "7034236519cc0a99df6ef34a21d07ec2a81fc87c",
  "engine_source_sha256": "8011ecdaf90807b4fe4fb5ada518a237311774b32891179bf1fad0a0baad8a58",
  "evidence": {
    "correctness": "https://github.com/ml4t/backtest/blob/0c3de46b1881ce6cb9fd72b672a1dba38ebc383b/validation/REAL_STRATEGY_RESULTS.json",
    "performance": "https://github.com/ml4t/backtest/blob/0c3de46b1881ce6cb9fd72b672a1dba38ebc383b/validation/REAL_STRATEGY_PERFORMANCE.json",
    "source_artifacts": [
      {
        "path": "validation/REAL_STRATEGY_RESULTS.json",
        "sha256": "d7c6460fcb5ebf9ecf74c31d06e227996c66f488de46a5beaa2145104209916b"
      },
      {
        "path": "validation/REAL_STRATEGY_PERFORMANCE.json",
        "sha256": "7276dfba4356c4ce2e6e45c256e4431a4e01cd47ca5710e9d341893286929c40"
      },
      {
        "path": "validation/LARGE_SCALE_RESULTS.json",
        "sha256": "fb3a06a7c485bfb131dfef286ff743af18fa4ba673f5f1075245d7a9123cb3f5"
      }
    ],
    "synthetic_stress": "https://github.com/ml4t/backtest/blob/0c3de46b1881ce6cb9fd72b672a1dba38ebc383b/validation/LARGE_SCALE_RESULTS.json"
  },
  "frameworks": {
    "backtrader": {
      "access": "public",
      "artifact": "backtrader-1.9.78.123-py2.py3-none-any.whl",
      "display_name": "Backtrader",
      "environment": ".venv-backtrader",
      "immutable_id": "sha256:9a07a516b0de9155539a35c56e9404d8711dd7020b3d37b30495e83e1b9d5dfd",
      "license": "GPL-3.0-or-later",
      "package": "backtrader",
      "profile": "backtrader_strict",
      "python": "3.12 audit interpreter; upstream package metadata does not declare a range",
      "python_env_var": "ML4T_BACKTRADER_PYTHON",
      "required_scenarios": 17,
      "scenario_matrix": true,
      "source": "https://pypi.org/project/backtrader/1.9.78.123/",
      "unsupported_scenarios": 0,
      "version": "1.9.78.123"
    },
    "lean": {
      "access": "public",
      "artifact": "quantconnect/lean@sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70",
      "cli_immutable_id": "sha256:eaa4c08f16295b76f005e429d9ca0d0453784dc1a40c1f5cbe5e50c02a05bd7c",
      "cli_version": "1.0.228",
      "display_name": "LEAN",
      "environment": ".venv-lean",
      "immutable_id": "sha256:ecd62b0e418d40d1d7c0cd95e90a94e397642a21d2c8810614830c8a4e9a8f70",
      "license": "Apache-2.0",
      "package": "lean",
      "platform_artifact": "linux/amd64@sha256:cbe3f26b3f16c57be836b2cf913253d434f58e010c84ed038360d26b9df88307",
      "profile": "lean",
      "python": "3.11",
      "python_env_var": "ML4T_LEAN_PYTHON",
      "required_scenarios": 0,
      "scenario_matrix": false,
      "source": "https://github.com/QuantConnect/Lean",
      "source_commit": "278fcb3d1b815b63ccadba68d7ae54422e34b792",
      "unsupported_scenarios": 0,
      "version": "18001"
    },
    "vectorbt_oss": {
      "access": "public",
      "artifact": "vectorbt-1.1.0.tar.gz",
      "display_name": "VectorBT OSS",
      "environment": ".venv-vectorbt-oss",
      "immutable_id": "sha256:67a3b41466234485af70c18d201da105f1ebb2c1d1fac079db20059e45ddc73b",
      "license": "Apache-2.0 WITH Commons-Clause",
      "package": "vectorbt",
      "profile": "vectorbt_oss_strict",
      "python": ">=3.11,<3.15",
      "python_env_var": "ML4T_VECTORBT_OSS_PYTHON",
      "required_scenarios": 16,
      "scenario_matrix": true,
      "source": "https://pypi.org/project/vectorbt/1.1.0/",
      "source_commit": "259d2d89fe2e7638baf3ca76c394937cd32b656d",
      "unsupported_scenarios": 1,
      "version": "1.1.0"
    },
    "vectorbt_pro": {
      "access": "licensed",
      "display_name": "VectorBT Pro",
      "environment": ".venv-vectorbt-pro",
      "immutable_id": "git:6e18cf0aa37849cfc20848f40f1d26ecfdc771b4",
      "license": "Proprietary",
      "package": "vectorbtpro",
      "profile": "vectorbt_strict",
      "python": ">=3.11",
      "python_env_var": "ML4T_VECTORBT_PRO_PYTHON",
      "required_scenarios": 17,
      "scenario_matrix": true,
      "source": "https://github.com/polakowo/vectorbt.pro",
      "source_commit": "6e18cf0aa37849cfc20848f40f1d26ecfdc771b4",
      "unsupported_scenarios": 0,
      "version": "2026.6.27"
    },
    "zipline": {
      "access": "public",
      "artifact": "zipline_reloaded-3.1.1.tar.gz",
      "display_name": "Zipline Reloaded",
      "environment": ".venv-zipline",
      "immutable_id": "sha256:4a305524616f7aad836f929e5a2ba5afc7db0e238757f47eb49487d9e2457a6f",
      "license": "Apache-2.0",
      "package": "zipline-reloaded",
      "profile": "zipline_strict",
      "python": ">=3.10",
      "python_env_var": "ML4T_ZIPLINE_PYTHON",
      "required_scenarios": 16,
      "scenario_matrix": true,
      "source": "https://pypi.org/project/zipline-reloaded/3.1.1/",
      "source_commit": "09885a2ebc7567d40942c891b3879dc03c745070",
      "unsupported_scenarios": 1,
      "version": "3.1.1"
    }
  },
  "library_commit": "0c3de46b1881ce6cb9fd72b672a1dba38ebc383b",
  "performance_policy": {
    "boundary": "engine call only",
    "excluded": [
      "input loading",
      "model inference",
      "target construction",
      "adapter preparation",
      "result extraction",
      "serialization",
      "reporting"
    ],
    "interval": "10,000-draw percentile bootstrap of the sample median",
    "measured_processes": 10,
    "process_isolation": true,
    "publication_scope": "only correctness-passing case-study/framework pairs",
    "warmup_processes": 1
  },
  "performance_records": [
    {
      "case_study": "etfs",
      "framework": "vectorbt_pro",
      "framework_ci95_seconds": [
        0.28554552848800085,
        0.2885417409997899
      ],
      "framework_median_seconds": 0.2872375610168092,
      "framework_to_ml4t_ratio": 0.6924827859284183,
      "ml4t_ci95_seconds": [
        0.4141692244884325,
        0.41945260000647977
      ],
      "ml4t_median_seconds": 0.4147937925008591
    },
    {
      "case_study": "etfs",
      "framework": "vectorbt_oss",
      "framework_ci95_seconds": [
        0.17068579950137064,
        0.17357376401196234
      ],
      "framework_median_seconds": 0.17132284450053703,
      "framework_to_ml4t_ratio": 0.4124410450618539,
      "ml4t_ci95_seconds": [
        0.41297478799242526,
        0.41699278698069975
      ],
      "ml4t_median_seconds": 0.4153874754993012
    },
    {
      "case_study": "etfs",
      "framework": "backtrader",
      "framework_ci95_seconds": [
        9.30285160850326,
        9.423639220010955
      ],
      "framework_median_seconds": 9.355300096503925,
      "framework_to_ml4t_ratio": 21.7615755934312,
      "ml4t_ci95_seconds": [
        0.42605314050160814,
        0.431600633499329
      ],
      "ml4t_median_seconds": 0.4298999425082002
    },
    {
      "case_study": "etfs",
      "framework": "zipline",
      "framework_ci95_seconds": [
        3.8670725979900453,
        3.9098115700180642
      ],
      "framework_median_seconds": 3.8715068249875912,
      "framework_to_ml4t_ratio": 6.126579592244658,
      "ml4t_ci95_seconds": [
        0.6284003740001936,
        0.6377887904964155
      ],
      "ml4t_median_seconds": 0.6319197794946376
    },
    {
      "case_study": "etfs",
      "framework": "lean",
      "framework_ci95_seconds": [
        2.4874195760057773,
        2.599079799008905
      ],
      "framework_median_seconds": 2.564114402513951,
      "framework_to_ml4t_ratio": 3.418485618498456,
      "ml4t_ci95_seconds": [
        0.7486901020165533,
        0.7566314754949417
      ],
      "ml4t_median_seconds": 0.750073186980444
    },
    {
      "case_study": "cme_futures",
      "framework": "vectorbt_pro",
      "framework_ci95_seconds": [
        0.28389174649782944,
        0.2887275889952434
      ],
      "framework_median_seconds": 0.28636373148765415,
      "framework_to_ml4t_ratio": 0.6631588833815962,
      "ml4t_ci95_seconds": [
        0.428688713509473,
        0.43454156002553646
      ],
      "ml4t_median_seconds": 0.43181768149952404
    },
    {
      "case_study": "cme_futures",
      "framework": "backtrader",
      "framework_ci95_seconds": [
        2.487967457011109,
        2.526018163494882
      ],
      "framework_median_seconds": 2.494809443000122,
      "framework_to_ml4t_ratio": 5.811638815571466,
      "ml4t_ci95_seconds": [
        0.4273611745011294,
        0.4325851899920963
      ],
      "ml4t_median_seconds": 0.4292781300027855
    },
    {
      "case_study": "crypto_perps_funding",
      "framework": "lean",
      "framework_ci95_seconds": [
        2.7094629269995494,
        2.8912153329874855
      ],
      "framework_median_seconds": 2.801038935489487,
      "framework_to_ml4t_ratio": 4.266156698399411,
      "ml4t_ci95_seconds": [
        0.6548837659938727,
        0.6614908079791348
      ],
      "ml4t_median_seconds": 0.6565719764912501
    },
    {
      "case_study": "fx_pairs",
      "framework": "vectorbt_pro",
      "framework_ci95_seconds": [
        0.2809414380026283,
        0.28584351851895917
      ],
      "framework_median_seconds": 0.28271306499664206,
      "framework_to_ml4t_ratio": 1.9393634353319569,
      "ml4t_ci95_seconds": [
        0.14505504499538802,
        0.14667728898348287
      ],
      "ml4t_median_seconds": 0.1457762170030037
    },
    {
      "case_study": "fx_pairs",
      "framework": "vectorbt_oss",
      "framework_ci95_seconds": [
        0.13754021801287308,
        0.1413268009928288
      ],
      "framework_median_seconds": 0.1387957935075974,
      "framework_to_ml4t_ratio": 0.9517668155264412,
      "ml4t_ci95_seconds": [
        0.1447887455142336,
        0.14715092899859883
      ],
      "ml4t_median_seconds": 0.14582962049462367
    },
    {
      "case_study": "fx_pairs",
      "framework": "backtrader",
      "framework_ci95_seconds": [
        0.4199030729942024,
        0.43193558798520826
      ],
      "framework_median_seconds": 0.42490502599684987,
      "framework_to_ml4t_ratio": 2.919662876838548,
      "ml4t_ci95_seconds": [
        0.14518085900635924,
        0.14739416650263593
      ],
      "ml4t_median_seconds": 0.1455322220135713
    },
    {
      "case_study": "fx_pairs",
      "framework": "lean",
      "framework_ci95_seconds": [
        0.8773026489943732,
        0.9533085440052673
      ],
      "framework_median_seconds": 0.9130055215064203,
      "framework_to_ml4t_ratio": 5.951507252400165,
      "ml4t_ci95_seconds": [
        0.1521106895088451,
        0.15719534500385635
      ],
      "ml4t_median_seconds": 0.1534074450028129
    },
    {
      "case_study": "us_equities_panel",
      "framework": "vectorbt_pro",
      "framework_ci95_seconds": [
        0.7874248115113005,
        0.8377640749968123
      ],
      "framework_median_seconds": 0.7949095129879424,
      "framework_to_ml4t_ratio": 0.03867173809347579,
      "ml4t_ci95_seconds": [
        20.48596853449999,
        20.599761563003995
      ],
      "ml4t_median_seconds": 20.555308661496383
    },
    {
      "case_study": "us_equities_panel",
      "framework": "vectorbt_oss",
      "framework_ci95_seconds": [
        16.959977449994767,
        17.023569879005663
      ],
      "framework_median_seconds": 16.9949149099848,
      "framework_to_ml4t_ratio": 0.8292416699730313,
      "ml4t_ci95_seconds": [
        20.453040241001872,
        20.533734439013642
      ],
      "ml4t_median_seconds": 20.49452593299793
    },
    {
      "case_study": "us_equities_panel",
      "framework": "backtrader",
      "framework_ci95_seconds": [
        494.2269169654901,
        510.27303914300865
      ],
      "framework_median_seconds": 495.55252874150756,
      "framework_to_ml4t_ratio": 23.08159898786381,
      "ml4t_ci95_seconds": [
        21.38583242200548,
        21.54328417198849
      ],
      "ml4t_median_seconds": 21.46959268298815
    },
    {
      "case_study": "us_equities_panel",
      "framework": "zipline",
      "framework_ci95_seconds": [
        106.83352753649524,
        109.14979357349512
      ],
      "framework_median_seconds": 107.60890489349549,
      "framework_to_ml4t_ratio": 4.862239476470224,
      "ml4t_ci95_seconds": [
        22.08169161299884,
        22.23382121999748
      ],
      "ml4t_median_seconds": 22.131551811515237
    },
    {
      "case_study": "us_equities_panel",
      "framework": "lean",
      "framework_ci95_seconds": [
        47.33300897400477,
        48.01486862101592
      ],
      "framework_median_seconds": 47.68267791901599,
      "framework_to_ml4t_ratio": 1.8083761067475683,
      "ml4t_ci95_seconds": [
        26.22179457700986,
        26.472655913996277
      ],
      "ml4t_median_seconds": 26.36767746548867
    }
  ],
  "protocol_scope": {
    "disabled_on_both_sides": [
      "transaction costs",
      "position rules"
    ],
    "shared_inputs": "frozen model-derived targets and historical market data",
    "tested": [
      "target sizing",
      "order sequencing",
      "fills",
      "cash and margin",
      "funding where applicable",
      "valuation"
    ]
  },
  "real_strategy_records": [
    {
      "case_study": "etfs",
      "equity_gap": "0.00",
      "equity_raw_gap": "0.00000000",
      "fill_gap": "0.00000000",
      "fills": 2466,
      "framework": "vectorbt_pro",
      "input_bundle_sha256": "01f38079ce47821a5379d3769e86f4a2170b88033108153bfc0f928698e946db",
      "negative_control_detected": true,
      "profile": "vectorbt_strict",
      "status": "pass",
      "terminal_gap": "0.00",
      "terminal_raw_gap": "0.00000000",
      "valuation_timestamps_match": true,
      "valuations": 1995
    },
    {
      "case_study": "etfs",
      "equity_gap": "0.00",
      "equity_raw_gap": "0.00000000",
      "fill_gap": "0.00000000",
      "fills": 2466,
      "framework": "vectorbt_oss",
      "input_bundle_sha256": "01f38079ce47821a5379d3769e86f4a2170b88033108153bfc0f928698e946db",
      "negative_control_detected": true,
      "profile": "vectorbt_oss_strict",
      "status": "pass",
      "terminal_gap": "0.00",
      "terminal_raw_gap": "0.00000000",
      "valuation_timestamps_match": true,
      "valuations": 1995
    },
    {
      "case_study": "etfs",
      "equity_gap": "0.00",
      "equity_raw_gap": "0.00000000",
      "fill_gap": "0.00000000",
      "fills": 2433,
      "framework": "backtrader",
      "input_bundle_sha256": "01f38079ce47821a5379d3769e86f4a2170b88033108153bfc0f928698e946db",
      "negative_control_detected": true,
      "profile": "backtrader_strict",
      "status": "pass",
      "terminal_gap": "0.00",
      "terminal_raw_gap": "0.00000000",
      "valuation_timestamps_match": true,
      "valuations": 1995
    },
    {
      "case_study": "etfs",
      "equity_gap": "0.00",
      "equity_raw_gap": "0.00000000",
      "fill_gap": "0.00000000",
      "fills": 2458,
      "framework": "zipline",
      "input_bundle_sha256": "01f38079ce47821a5379d3769e86f4a2170b88033108153bfc0f928698e946db",
      "negative_control_detected": true,
      "profile": "zipline_strict",
      "status": "pass",
      "terminal_gap": "0.00",
      "terminal_raw_gap": "0.00000000",
      "valuation_timestamps_match": true,
      "valuations": 1995
    },
    {
      "case_study": "etfs",
      "equity_gap": "0.00",
      "equity_raw_gap": "0.00000000",
      "fill_gap": "0.00000000",
      "fills": 2457,
      "framework": "lean",
      "input_bundle_sha256": "01f38079ce47821a5379d3769e86f4a2170b88033108153bfc0f928698e946db",
      "negative_control_detected": true,
      "profile": "lean",
      "status": "pass",
      "terminal_gap": "0.00",
      "terminal_raw_gap": "0.00000000",
      "valuation_timestamps_match": true,
      "valuations": 1995
    },
    {
      "case_study": "cme_futures",
      "equity_gap": "0.00",
      "equity_raw_gap": "0.00000010",
      "fill_gap": "0.00000000",
      "fills": 3545,
      "framework": "vectorbt_pro",
      "input_bundle_sha256": "c7191027f550ef1be0c9528dac08e7c2bf6a76c86d935f593efeb1ad8b628c39",
      "negative_control_detected": true,
      "profile": "vectorbt_futures_strict",
      "status": "pass",
      "terminal_gap": "0.00",
      "terminal_raw_gap": "0.00000007",
      "valuation_timestamps_match": true,
      "valuations": 1595
    },
    {
      "case_study": "cme_futures",
      "equity_gap": "0.00",
      "equity_raw_gap": "0.00000015",
      "fill_gap": "0.00000000",
      "fills": 3376,
      "framework": "backtrader",
      "input_bundle_sha256": "c7191027f550ef1be0c9528dac08e7c2bf6a76c86d935f593efeb1ad8b628c39",
      "negative_control_detected": true,
      "profile": "backtrader_strict",
      "status": "pass",
      "terminal_gap": "0.00",
      "terminal_raw_gap": "0.00000015",
      "valuation_timestamps_match": true,
      "valuations": 1595
    },
    {
      "case_study": "crypto_perps_funding",
      "equity_gap": "0.00",
      "equity_raw_gap": "0.00000000",
      "fill_gap": "0.00000000",
      "fills": 8408,
      "framework": "lean",
      "input_bundle_sha256": "2acee3c8542043266e6f9c0dfc9434c95b4469ef6fcaf0556efc569fc9721cdd",
      "negative_control_detected": true,
      "profile": "lean_crypto_future",
      "status": "pass",
      "terminal_gap": "0.00",
      "terminal_raw_gap": "0.00000000",
      "valuation_timestamps_match": true,
      "valuations": 2426
    },
    {
      "case_study": "fx_pairs",
      "equity_gap": "0.00",
      "equity_raw_gap": "0.00000000",
      "fill_gap": "0.00000000",
      "fills": 279,
      "framework": "vectorbt_pro",
      "input_bundle_sha256": "48922296cea03bfc9867a9c4e1a1d352a0bd54c0b48671e3ca8d1fdddb95d762",
      "negative_control_detected": true,
      "profile": "vectorbt_strict",
      "status": "pass",
      "terminal_gap": "0.00",
      "terminal_raw_gap": "0.00000000",
      "valuation_timestamps_match": true,
      "valuations": 2108
    },
    {
      "case_study": "fx_pairs",
      "equity_gap": "0.00",
      "equity_raw_gap": "0.00000000",
      "fill_gap": "0.00000000",
      "fills": 279,
      "framework": "vectorbt_oss",
      "input_bundle_sha256": "48922296cea03bfc9867a9c4e1a1d352a0bd54c0b48671e3ca8d1fdddb95d762",
      "negative_control_detected": true,
      "profile": "vectorbt_oss_strict",
      "status": "pass",
      "terminal_gap": "0.00",
      "terminal_raw_gap": "0.00000000",
      "valuation_timestamps_match": true,
      "valuations": 2108
    },
    {
      "case_study": "fx_pairs",
      "equity_gap": "0.00",
      "equity_raw_gap": "0.00000000",
      "fill_gap": "0.00000000",
      "fills": 279,
      "framework": "backtrader",
      "input_bundle_sha256": "48922296cea03bfc9867a9c4e1a1d352a0bd54c0b48671e3ca8d1fdddb95d762",
      "negative_control_detected": true,
      "profile": "backtrader_strict",
      "status": "pass",
      "terminal_gap": "0.00",
      "terminal_raw_gap": "0.00000000",
      "valuation_timestamps_match": true,
      "valuations": 2108
    },
    {
      "case_study": "fx_pairs",
      "equity_gap": "0.00",
      "equity_raw_gap": "0.00000000",
      "fill_gap": "0.00000000",
      "fills": 279,
      "framework": "lean",
      "input_bundle_sha256": "48922296cea03bfc9867a9c4e1a1d352a0bd54c0b48671e3ca8d1fdddb95d762",
      "negative_control_detected": true,
      "profile": "lean",
      "status": "pass",
      "terminal_gap": "0.00",
      "terminal_raw_gap": "0.00000000",
      "valuation_timestamps_match": true,
      "valuations": 2108
    },
    {
      "case_study": "us_equities_panel",
      "equity_gap": "0.00",
      "equity_raw_gap": "0.00001950",
      "fill_gap": "0.00000000",
      "fills": 54295,
      "framework": "vectorbt_pro",
      "input_bundle_sha256": "02926d8a7f1c1f5b4855b2393d1763885288ef64950d5cf521ca96c61f454d88",
      "negative_control_detected": true,
      "profile": "vectorbt_strict",
      "status": "pass",
      "terminal_gap": "0.00",
      "terminal_raw_gap": "0.00001880",
      "valuation_timestamps_match": true,
      "valuations": 4146
    },
    {
      "case_study": "us_equities_panel",
      "equity_gap": "0.00",
      "equity_raw_gap": "0.00001910",
      "fill_gap": "0.00000000",
      "fills": 49120,
      "framework": "vectorbt_oss",
      "input_bundle_sha256": "02926d8a7f1c1f5b4855b2393d1763885288ef64950d5cf521ca96c61f454d88",
      "negative_control_detected": true,
      "profile": "vectorbt_oss_strict",
      "status": "pass",
      "terminal_gap": "0.00",
      "terminal_raw_gap": "0.00001870",
      "valuation_timestamps_match": true,
      "valuations": 4146
    },
    {
      "case_study": "us_equities_panel",
      "equity_gap": "0.00",
      "equity_raw_gap": "0.00000170",
      "fill_gap": "0.00000000",
      "fills": 54242,
      "framework": "backtrader",
      "input_bundle_sha256": "02926d8a7f1c1f5b4855b2393d1763885288ef64950d5cf521ca96c61f454d88",
      "negative_control_detected": true,
      "profile": "backtrader_strict",
      "status": "pass",
      "terminal_gap": "0.00",
      "terminal_raw_gap": "0.00000160",
      "valuation_timestamps_match": true,
      "valuations": 4146
    },
    {
      "case_study": "us_equities_panel",
      "equity_gap": "0.00",
      "equity_raw_gap": "0.00000190",
      "fill_gap": "0.00000000",
      "fills": 54259,
      "framework": "zipline",
      "input_bundle_sha256": "02926d8a7f1c1f5b4855b2393d1763885288ef64950d5cf521ca96c61f454d88",
      "negative_control_detected": true,
      "profile": "zipline_strict",
      "status": "pass",
      "terminal_gap": "0.00",
      "terminal_raw_gap": "0.00000030",
      "valuation_timestamps_match": true,
      "valuations": 4027
    },
    {
      "case_study": "us_equities_panel",
      "equity_gap": "0.00",
      "equity_raw_gap": "0.00000460",
      "fill_gap": "0.00000000",
      "fills": 54265,
      "framework": "lean",
      "input_bundle_sha256": "02926d8a7f1c1f5b4855b2393d1763885288ef64950d5cf521ca96c61f454d88",
      "negative_control_detected": true,
      "profile": "lean",
      "status": "pass",
      "terminal_gap": "0.00",
      "terminal_raw_gap": "0.00000420",
      "valuation_timestamps_match": true,
      "valuations": 4027
    }
  ],
  "schema_version": 2,
  "scope": {
    "case_protocols": {
      "fx_pairs": "USD-quoted pairs from the frozen target stream, preserving native USD valuation in every required engine"
    },
    "case_studies": [
      "etfs",
      "cme_futures",
      "crypto_perps_funding",
      "fx_pairs",
      "us_equities_panel"
    ],
    "frameworks": [
      "vectorbt_pro",
      "vectorbt_oss",
      "backtrader",
      "zipline",
      "lean"
    ],
    "real_strategy_equivalence_gate_passed": true,
    "required_pairs": 17,
    "unsupported_pairs": 8
  },
  "synthetic_stress": {
    "assets": 250,
    "bars": 1260000,
    "comparison_policy": {
      "account_money_quantum": "0.01",
      "record_numeric_quantum": "1E-8"
    },
    "generated_at": "2026-09-03T08:44:03.035191+00:00",
    "records": [
      {
        "fills": 423313,
        "framework": "vectorbt_pro",
        "intents": 427790,
        "status": "pass",
        "terminal_value": 1285886.32,
        "trades": 222751
      },
      {
        "fills": 417941,
        "framework": "vectorbt_oss",
        "intents": 427790,
        "status": "pass",
        "terminal_value": 1345348.85,
        "trades": 211322
      },
      {
        "fills": 343813,
        "framework": "backtrader",
        "intents": 427790,
        "status": "pass",
        "terminal_value": -9166273.56,
        "trades": 182019
      },
      {
        "fills": 427696,
        "framework": "zipline",
        "intents": 427790,
        "status": "pass",
        "terminal_value": 10504095.9,
        "trades": 226434
      },
      {
        "fills": 361297,
        "framework": "lean",
        "intents": 427790,
        "status": "pass",
        "terminal_value": 184538.13,
        "trades": 191297
      }
    ],
    "sessions": 5040,
    "synthetic": true
  },
  "unsupported_records": [
    {
      "case_study": "cme_futures",
      "framework": "vectorbt_oss",
      "reason": "no native futures contract multiplier and margin-account model",
      "source": "https://vectorbt.dev/api/portfolio/base/",
      "status": "unsupported"
    },
    {
      "case_study": "cme_futures",
      "framework": "zipline",
      "reason": "the frozen workload has continuous root series but no dated contract chain or roll map",
      "source": "https://zipline.ml4trading.io/api-reference.html",
      "status": "unsupported"
    },
    {
      "case_study": "cme_futures",
      "framework": "lean",
      "reason": "the frozen workload has continuous root series but no dated contract chain or roll map",
      "source": "https://www.quantconnect.com/docs/v2/writing-algorithms/securities/asset-classes/futures",
      "status": "unsupported"
    },
    {
      "case_study": "crypto_perps_funding",
      "framework": "vectorbt_pro",
      "reason": "no native perpetual-futures funding and margin-account model",
      "source": "https://vectorbt.pro/features/portfolio/",
      "status": "unsupported"
    },
    {
      "case_study": "crypto_perps_funding",
      "framework": "vectorbt_oss",
      "reason": "no native perpetual-futures funding and margin-account model",
      "source": "https://vectorbt.dev/api/portfolio/base/",
      "status": "unsupported"
    },
    {
      "case_study": "crypto_perps_funding",
      "framework": "backtrader",
      "reason": "no native perpetual-futures funding model",
      "source": "https://www.backtrader.com/docu/commission-schemes/commission-schemes/",
      "status": "unsupported"
    },
    {
      "case_study": "crypto_perps_funding",
      "framework": "zipline",
      "reason": "no crypto perpetual-futures asset and funding model",
      "source": "https://zipline.ml4trading.io/api-reference.html",
      "status": "unsupported"
    },
    {
      "case_study": "fx_pairs",
      "framework": "zipline",
      "reason": "no native spot-forex asset, currency cashbook, or conversion model",
      "source": "https://zipline.ml4trading.io/api-reference.html",
      "status": "unsupported"
    }
  ]
}

```

Полный текст с указанием источника опубликован на условиях его лицензии. Лицензия: MIT

Это краткое изложение подготовлено исследовательским агентом Stratmill по оригиналу и не является его копией.