From db155e7ad0627b8f8686ce9ec18d5a5707ed4c38 Mon Sep 17 00:00:00 2001 From: boris Date: Sat, 5 Sep 2026 00:03:53 +0800 Subject: [PATCH] docs: record stock-state calendar index benchmark --- ...k-state-calendar-index-reuse-20260905.json | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 docs/evidence/stock-state-calendar-index-reuse-20260905.json diff --git a/docs/evidence/stock-state-calendar-index-reuse-20260905.json b/docs/evidence/stock-state-calendar-index-reuse-20260905.json new file mode 100644 index 0000000..ecbf245 --- /dev/null +++ b/docs/evidence/stock-state-calendar-index-reuse-20260905.json @@ -0,0 +1,92 @@ +{ + "schemaVersion": "fidc-stock-state-calendar-index-reuse-ab/v1", + "measuredAt": "2026-09-05T00:02:00+08:00", + "host": "192.168.31.177", + "engineCommit": "6d458dbbc6fa3acb1bff0824307281c82170031a", + "serviceCommit": "9fd5a9e6d5668af57f6942fc3c4127953545d9c6", + "serviceBinarySha256": "bcd918407de2aa3fdc230d8e9976be5cbf5d3b53185f2a528d55beb10f5f1552", + "runnerBinarySha256": "e33dd75aa7b481975c0991cf634d07900cdefa51756802e28e64f18b980a83dc", + "implementation": { + "description": "resolve the trading-calendar index once when the per-day stock-state cache advances, then reuse it for decision and current rolling-series boundaries", + "cachedFactorValues": false, + "cachedSelectionResults": false, + "cachedOrderState": false, + "pitSemanticsChanged": false, + "adjustmentSemanticsChanged": false, + "fallback": "dates outside the indexed calendar retain the existing date-based rolling fallback" + }, + "componentBenchmark": { + "samples": 6, + "iterationsPerSample": 5000000, + "dateLookupSeconds": 0.400282218, + "reusedCalendarIndexSeconds": 0.070751718, + "speedup": 5.657561813552005, + "checksum": 90000000, + "equal": true + }, + "testGate": { + "coreUnitTotal": 419, + "corePassed": 413, + "ignoredManualBenchmarks": 6, + "failed": 0, + "integrationSuitesPassed": true + }, + "primaryFiveYearContract": { + "startDate": "2021-08-23", + "endDate": "2026-08-28", + "frequency": "1d", + "matchingType": "next_bar_open", + "totalReturn": 0.9219861819172002, + "tradeCount": 26088, + "canonicalSha256": "b42fea66237d06eadb24f6b8c9e2760e7319fe3699f315b99e01f433ef2aa234", + "resultStoreSha256": "92343fb369fea68b2544b654151c5c43a935940580b14afbe8eefb3844f72a54", + "beforeEngineSeconds": [6.764, 6.391, 12.387], + "beforeMedianEngineSeconds": 6.764, + "afterHotEngineSeconds": [6.224, 6.497, 6.405, 6.539, 6.386], + "afterMedianEngineSeconds": 6.405, + "observedMedianImprovementPercent": 5.307510348905976, + "benchmarkSummaryProcessHotMedianSeconds": { + "before": 9.389, + "after": 6.451 + }, + "note": "The explicit all-run medians are reported above. The benchmark tool excludes its first run when calculating processHotMedian; concurrent non-FIDC load makes the tool summary less comparable than the complete sample list." + }, + "secondaryFiveYearContract": { + "description": "same frozen source and execution contract with target positions changed from 30 to 20", + "totalReturn": 1.1342962298106998, + "tradeCount": 19404, + "canonicalSha256": "0dbd3fad624097c673c4a5ec2f545f95e9c21d1d5337bb2b48ffeb22b16cb2b9", + "resultStoreSha256": "416d2f87241fb4c6b917f6aeecb588f82f6e7d51a103f4c53a74d11971f16839", + "engineSeconds": [6.217, 9.279, 10.771], + "resultConsistent": true, + "performanceClaimed": false, + "reason": "two runs overlapped high external host contention; the strategy is retained as cross-strategy semantic evidence only" + }, + "excludedHighContentionBatch": { + "hostLoadAverageObserved": [65.08, 44.49, 35.56], + "engineSeconds": [11.601, 12.061, 33.904, 23.149, 7.391], + "resultConsistent": true, + "performanceComparisonExcluded": true, + "reason": "independent tan processes and active FIDC symbolic workers caused material host scheduling contention; no external process was modified" + }, + "runtime": { + "servicePid": 2548679, + "serviceUser": "boris", + "serviceState": "active/running", + "allowedCpus": "0 2 4 6 8 10 12 14 48 50 52 54 56 58 60 62", + "memoryCurrentBytes": 11426254848, + "memoryPeakBytes": 11427790848, + "maxConcurrentRuns": 1, + "runnerThreadsPerRun": 8 + }, + "remoteArtifacts": [ + "/srv/fidc/canonical/run/fidc-private/evidence/calendar-index-before-20260904.json", + "/srv/fidc/canonical/run/fidc-private/evidence/calendar-index-after-20260904.json", + "/srv/fidc/canonical/run/fidc-private/evidence/calendar-index-after-hot-20260904.json", + "/srv/fidc/canonical/run/fidc-private/evidence/calendar-index-secondary-20260905.json" + ], + "acceptance": { + "status": "accepted_component_and_primary_end_to_end_no_regression", + "reason": "the component path is materially faster, the stable primary five-year batch improves, and both frozen business contracts preserve exact returns, trade counts, canonical digests, result-store digests, and clean terminal audits" + } +}