fintech-algorithms
Using a coding agent? Give it the skill: npx skills add IslamBaraka90/Fintech-Algorithms-Library What it does →

Reproducible Analysis, Metadata, and Audit Trails

Install and import#

bash
npm install fintech-algorithms
ts
import { reproducibleAnalysisMetadataAndAuditTrails } from "fintech-algorithms/foundations/statistical-computing-and-reproducibility/reproducible-analysis-metadata-and-audit-trails";

Signature#

reproducibleAnalysisMetadataAndAuditTrails(input)

Serializes a run's inputs, method, version and seed into a deterministic JSON string and fingerprints it with a 32-bit FNV-1a hash.

Parameters#

NameTypeNotes
inputD00InputReads auditInputs, method, version and seed, the four fields that identify a run. A non-empty values list of finite numbers must also be present; it is validated but not recorded.

Returns#

D00Output

canonicalJson is the four fields serialized with their top-level keys in sorted order, and because that sorted key list is used as the serializer's replacer, nested objects such as inputs come out empty. fnv1a32 is the hash of that string as eight lowercase hex digits, and metadataComplete is true when none of the four fields is null or undefined.

Errors#

  • When values is absent, empty, or holds a non-finite number — throws RangeError

Complexity: time O(n), space O(n).

Worked example#

verified This is the worked example published in the article, replayed by the test suite on every run. The output cannot drift.

Input#

input
{
  "values": [1, 2, 3, 4, 5],
  "floatingValue": 0.1,
  "maxSafeMagnitude": 1.7976931348623157e+308,
  "window": 3,
  "rawValues": [1, null, 2, "bad", 3],
  "invalidPolicy": "drop-and-report",
  "seed": 42,
  "sampleCount": 5,
  "leftVector": [
    {
      "index": "A",
      "value": 1
    },
    {
      "index": "B",
      "value": 2
    }
  ],
  "rightVector": [
    {
      "index": "B",
      "value": 20
    },
    {
      "index": "C",
      "value": 30
    }
  ],
  "train": [10, 12, 14, 16],
  "test": [18, 20],
  "actual": [1, 2.0000001, 3],
  "expected": [1, 2, 3]
}

Showing 14 of 18 fields.

Call#

reproducibleAnalysisMetadataAndAuditTrails(input)

Returns#

object with 1 field: metadataComplete

{
  "metadataComplete": true
}

Diagrams#

Reproducible Analysis, Metadata, and Audit Trails — article hero
Reproducible Analysis, Metadata, and Audit Trails — calculation ledger
Reproducible Analysis, Metadata, and Audit Trails — concept anatomy
Reproducible Analysis, Metadata, and Audit Trails — failure boundary
Reproducible Analysis, Metadata, and Audit Trails — method map
Reproducible Analysis, Metadata, and Audit Trails — scenario contrast

How it works#

This page states the contract — how to call it correctly. The article explains the concept: why it works, and where it breaks.

Read the article →

References#

The rest of the Statistical Computing and Reproducibility family#