قواعد التدقيق وأدلة تكافؤ محركات الاختبار التاريخي
الملخص
يحدد سجل التدقيق هذا كيفية مقارنة عدة أطر للاختبار التاريخي مع 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 هذا الملخص استنادًا إلى المصدر الأصلي؛ وهو ليس نسخة منه.