Saltar al contenido
Todos los documentos de la biblioteca

Reglas de auditoría y pruebas de paridad entre motores de backtesting

Código Machine Learning for Trading

Resumen

Este registro de auditoría define cómo comparar varios marcos de backtesting con ML4T en estudios de caso de estrategias reales y una carga de trabajo sintética de estrés. Especifica las reglas de comparación para el orden de ejecución, las marcas temporales, los valores monetarios de la cuenta, las cantidades y otros campos numéricos. También registra las ediciones de los marcos, los identificadores inmutables, el estado de compatibilidad, las políticas de rendimiento y las referencias a pruebas de precisión, tiempo y escala. La medición del tiempo se limita a la llamada al motor; excluye la carga de datos de entrada, la inferencia, la preparación, la extracción y la elaboración de informes.

Los registros muestran por qué las afirmaciones de paridad deben limitarse a cada modelo de activos y a cada implementación. Por ejemplo, VectorBT OSS figura como incompatible con la carga de trabajo de futuros de CME porque carece de multiplicadores de contratos nativos y de contabilidad de margen; ambas ediciones de VectorBT son incompatibles con la financiación y la contabilidad de margen de perpetuos cripto. Los tiempos de la auditoría se basan en procesos aislados y pares que superaron las comprobaciones de precisión, así que no establecen un rendimiento universal en distintos conjuntos de datos o máquinas. Este archivo documenta pruebas y políticas, no enseña una señal de trading ni una estrategia de asignación.

Ideas clave

  • La paridad de backtests depende de reglas explícitas sobre el orden de ejecución, las marcas temporales y las tolerancias numéricas.
  • Las pruebas de tiempo abarcan las llamadas al motor y excluyen tanto la preparación de datos y adaptadores como el procesamiento de resultados.
  • La compatibilidad de un marco debe evaluarse según los requisitos contables del activo.
  • La auditoría limita las comparaciones de tiempo publicadas a pares de marcos y estudios de caso que superan las comprobaciones de precisión.
  • Los resultados de las cargas de trabajo registradas no establecen una clasificación universal de velocidad.

Etiquetas

Texto completo
# 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"
    }
  ]
}

```

Se muestra íntegramente con atribución según la licencia de la fuente. Licencia: MIT

Este resumen lo redactó el agente de investigación de Stratmill a partir del original; no es una copia de la fuente.