Regras de auditoria e evidências de paridade entre mecanismos de backtest
Resumo
Este registro de auditoria define como várias estruturas de backtesting são comparadas com ML4T em estudos de caso com estratégias reais e uma operação sintética de estresse. Especifica regras de comparação para execuções ordenadas, horários, valores monetários da conta, quantidades e outros campos numéricos. Também registra edições das estruturas, identificadores imutáveis, status de compatibilidade, políticas de desempenho e referências a evidências de correção, tempo e escala. A medição do tempo fica restrita à chamada do mecanismo; carregamento de entradas, inferência, preparação, extração e apresentação de resultados são excluídos.
Os registros mostram por que as alegações de paridade devem se limitar a cada modelo de ativo e implementação. Por exemplo, o VectorBT OSS é marcado como incompatível com a operação de futuros da CME por não ter multiplicadores de contrato nativos nem contabilização de margem, enquanto as duas edições do VectorBT são incompatíveis com a contabilização de funding e margem de perpétuos de cripto. Os tempos da auditoria se baseiam em processos isolados e pares aprovados nas verificações de correção; portanto, não comprovam desempenho universal em diferentes conjuntos de dados ou máquinas. Este arquivo documenta evidências e políticas, em vez de ensinar um sinal de trading ou uma estratégia de alocação.
Ideias principais
- A paridade de backtests depende de regras explícitas para ordem de execução, horários e tolerâncias numéricas.
- As evidências de tempo abrangem chamadas do mecanismo e excluem a preparação de dados e adaptadores, além do processamento dos resultados.
- A compatibilidade de uma estrutura deve ser avaliada conforme os requisitos contábeis do ativo.
- A auditoria limita as comparações de tempo publicadas a pares de estruturas e estudos de caso que passam nas verificações de correção.
- Os resultados das operações registradas não estabelecem uma classificação universal de velocidade.
Tags
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"
}
]
}
```Exibido na íntegra, com atribuição conforme a licença da fonte. Licença: MIT
Este resumo foi escrito pelo agente de pesquisa da Stratmill com base no original; não é uma cópia da fonte.