diff --git a/docs/evidence/typed-adjustment-factor-snapshot-20260907.json b/docs/evidence/typed-adjustment-factor-snapshot-20260907.json new file mode 100644 index 0000000..a9ffc8a --- /dev/null +++ b/docs/evidence/typed-adjustment-factor-snapshot-20260907.json @@ -0,0 +1,150 @@ +{ + "schemaVersion": "fidc-typed-adjustment-factor-snapshot/v1", + "generatedAt": "2026-09-07T18:12:00+08:00", + "scope": "FIDC engine, backtest runner and strategy runtime", + "changes": { + "engineCommit": "04b45adf98772f4ce3cd8b7a2c08d76480655fee", + "backtestServiceCommit": "76748bbc3d2cfc4d76ff8e35c5fcda1fcddd00ec", + "tradingPlatformCommit": "bec62d0f7f6126a36ec0a101f7b1a66b138537eb", + "datasetSchemaVersion": 58, + "sourceRowCacheSchemaVersion": 28, + "contract": "adjustment_factor_backward1 remains a nullable typed field from Arrow decode through DailyFactorSnapshot and AdjustedCloseSeries; dynamic NumericFactorMap values stay sparse", + "legacyInputPolicy": "extra_factors containing adjustment_factor_backward1 and non-positive or non-finite typed adjustment values are rejected" + }, + "tests": { + "fidcCore": "445 passed, 6 ignored", + "backtestRunner": "351 passed, 3 ignored", + "backtestApi": "80 passed", + "strategyRuntime": "66 passed", + "runtimeRollingOrderRegression": "full 5/10/30/100-day framework rolling history produced a valid paper order" + }, + "productionImplementation": { + "engineCommit": "04b45adf98772f4ce3cd8b7a2c08d76480655fee", + "serviceCommit": "76748bbc3d2cfc4d76ff8e35c5fcda1fcddd00ec", + "identitySha256": "2c0ab93663018f4fae8d61ba0c522c0f796837d952bbfb26a6bc229cc52bd722", + "runnerBinarySha256": "8591dfa763a52e06467dfe2ff2c8bef4d382ef875b356009fe5a7e8ea2013ea3", + "serviceBinarySha256": "4e467981f569e265c4ccc862c04be85eb99e9f4d107878785c5961a8b382d65f", + "status": "verified" + }, + "fiveYearFreshProcess": { + "baseline": { + "runId": "btr_1788772852314_617886_0", + "dataSeconds": 14.121, + "sourceQuerySeconds": 4.304, + "datasetConstructSeconds": 3.672, + "riskFreeRateSeconds": 2.77, + "totalSeconds": 20.947, + "queryCompletedRssKb": 6654344, + "datasetConstructCompletedRssKb": 12775136 + }, + "candidate": { + "runId": "btr_1788775107699_632665_0", + "dataSeconds": 13.198, + "sourceQuerySeconds": 4.169, + "datasetConstructSeconds": 3.499, + "riskFreeRateSeconds": 0.01, + "totalSeconds": 17.381, + "queryCompletedRssKb": 6738520, + "datasetConstructCompletedRssKb": 12694000 + }, + "improvementPercent": { + "dataSeconds": 6.5364, + "sourceQuerySeconds": 3.1366, + "datasetConstructSeconds": 4.7113, + "datasetConstructCompletedRssKb": 0.6351, + "totalSecondsAfterRiskFreeNormalization": 4.4317 + }, + "comparisonNote": "total wall time is normalized only for the independently measured risk-free lookup difference; data and RSS values are compared directly" + }, + "fiveYearMemoryCold": { + "baselineRunIds": [ + "btr_1788772635840_613911_1", + "btr_1788772672944_613911_2", + "btr_1788772707181_613911_3" + ], + "candidateRunIds": [ + "btr_1788775166889_632665_1", + "btr_1788775202156_632665_2", + "btr_1788775353507_632665_5" + ], + "baselineMedian": { + "totalSeconds": 16.809, + "dataSeconds": 12.8, + "sourceQuerySeconds": 4.411, + "dailyLoopSeconds": 1.077, + "datasetConstructSeconds": 3.701, + "engineSeconds": 3.278 + }, + "candidateMedian": { + "totalSeconds": 16.653, + "dataSeconds": 12.569, + "sourceQuerySeconds": 4.054, + "dailyLoopSeconds": 1.047, + "datasetConstructSeconds": 3.577, + "engineSeconds": 3.372 + }, + "improvementPercent": { + "totalSeconds": 0.9281, + "dataSeconds": 1.8047, + "sourceQuerySeconds": 8.0934, + "dailyLoopSeconds": 2.7855, + "datasetConstructSeconds": 3.3504, + "engineSeconds": -2.8676 + }, + "excludedQueueOutlier": { + "runId": "btr_1788775236942_632665_4", + "totalSeconds": 69.401, + "queueWaitSeconds": 48.625, + "blockingRunId": "btr_1788775223727_632665_3", + "reason": "another user backtest naturally occupied the single runner; it was not stopped or modified" + } + }, + "controls": { + "currentClose": { + "runIds": [ + "btr_1788775434926_632665_6", + "btr_1788775464828_632665_7", + "btr_1788775491657_632665_8" + ], + "medianTotalSeconds": 10.044, + "totalReturn": 0.3201517861398, + "tradeCount": 5351, + "canonicalSha256": "7204c6f41b8e39fbf1af7fc55cd601b80f3427a7aa058394ccd8b0b14ca48eed", + "resultStoreSha256": "0b4d24ed5ec2b27cc4135707b4c51c78eb2c3e35a20da8108610778c30c72c73" + }, + "staticDaily": { + "runId": "btr_1788775531308_632665_9", + "totalReturn": 0.13228843240310018, + "tradeCount": 4445, + "canonicalSha256": "fdfa855295c0b55bdbe6f39952ead1515e844bf033ced974d3c3ddc037a5d0b1", + "resultStoreSha256": "697566645116c76ff837cd36f7f9bbd7ad3eb30510a5b95012fb730d5072d511" + }, + "fullMinute": { + "runId": "btr_1788775545217_632665_10", + "totalReturn": 0.03473222656500008, + "tradeCount": 156, + "canonicalSha256": "7dae3a618932b90d36e9968c027f08a94d69b8fc6a56b1ea0cc1a2cb771d85b8", + "resultStoreSha256": "bbbd7080b8fd7f6e8c3a8132499842bd0e4d644dbfdc3e8dbca7d2c0c1381e93" + }, + "nextOpenFiveYear": { + "totalReturn": 0.9922618879291, + "tradeCount": 25827, + "canonicalSha256": "ac1d167cb1e1073e1d1ecb01e914f94d7560081c1d238e6b4418d86233250719", + "resultStoreSha256": "79570e0ae6b07badc1b693dc897dd1381647d259a4fe44ed3e50bc215e2fd088" + }, + "terminalAuditsClean": true + }, + "tradingRuntimeDeployment": { + "sourceCommit": "bec62d0f7f6126a36ec0a101f7b1a66b138537eb", + "strategyRuntimeBinarySha256": "b28aa9a20bff232d5d24ba6c8072c02ff921dea69a5ca3cb81712323e2d88d24", + "healthPorts": [9100, 9101, 9102, 9103, 9104, 9130], + "allHealthChecksPassed": true, + "orderRoutingConfigurationChanged": false, + "observedOrderRoutingMode": "disabled" + }, + "decision": { + "status": "accepted", + "reason": "all business hashes and runtime rolling semantics remain exact while five-year DataSet construction, data time and steady memory-cold wall time improve", + "nextTarget": "construct the immutable Base Panel directly from Arrow column buffers so the remaining SourceRowRecord and DailyFactorSnapshot row materialization can be removed" + } +}