@actuarial-ts/core 0.12.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,138 @@
1
+ import { DiagnosticValidationError } from "./types.js";
2
+ import { snapshotDiagnosticJson } from "./diagnosticRuntime.js";
3
+ function predicateDimensions(predicate, path, out) {
4
+ if ("dimensionId" in predicate)
5
+ out.push([predicate.dimensionId, `${path}.dimensionId`]);
6
+ for (const [index, nested] of (predicate.clauses ?? []).entries())
7
+ predicateDimensions(nested, `${path}.clauses[${index}]`, out);
8
+ const inner = predicate.predicate;
9
+ if (inner)
10
+ predicateDimensions(inner, `${path}.predicate`, out);
11
+ }
12
+ /** Every measure and dimension the definition names, with the first path each appears at. */
13
+ function references(definition) {
14
+ const measures = [];
15
+ const dimensions = [];
16
+ definition.dimensions.forEach((item, index) => dimensions.push([item.id, `$.dimensions[${index}].id`]));
17
+ // An exposure names a measure only when its allocation supplies weights.
18
+ definition.exposures.forEach((item, index) => {
19
+ if (item.allocation.kind === "supplied-weights")
20
+ measures.push([item.allocation.weightMeasureId, `$.exposures[${index}].allocation.weightMeasureId`]);
21
+ });
22
+ definition.measures.forEach((measure, index) => {
23
+ const statistic = measure.statistic;
24
+ for (const key of ["measureId", "weightMeasureId", "numeratorMeasureId", "denominatorMeasureId"])
25
+ if (typeof statistic[key] === "string")
26
+ measures.push([statistic[key], `$.measures[${index}].statistic.${key}`]);
27
+ if (measure.condition)
28
+ predicateDimensions(measure.condition, `$.measures[${index}].condition`, dimensions);
29
+ });
30
+ for (const [name, scope] of [
31
+ ["financial", definition.scopes.financial],
32
+ ["reporting", definition.scopes.reporting],
33
+ ])
34
+ predicateDimensions(scope.predicate, `$.scopes.${name}.predicate`, dimensions);
35
+ return { measures, dimensions };
36
+ }
37
+ /** Reports which of a saved definition's references a candidate source cannot resolve. */
38
+ export function planAnalysisDefinitionMigration(definition, available) {
39
+ const measures = new Set(available.measureIds);
40
+ const dimensions = new Set(available.dimensionIds);
41
+ const found = references(definition);
42
+ const seen = new Set();
43
+ const unresolved = [];
44
+ const consider = (kind, entries, have) => {
45
+ for (const [id, path] of entries) {
46
+ const key = `${kind}:${id}`;
47
+ if (have.has(id) || seen.has(key))
48
+ continue;
49
+ seen.add(key);
50
+ unresolved.push({ kind, id, path });
51
+ }
52
+ };
53
+ consider("dimension", found.dimensions, dimensions);
54
+ consider("measure", found.measures, measures);
55
+ return snapshotDiagnosticJson({ resolved: unresolved.length === 0, unresolved });
56
+ }
57
+ function rewritePredicate(predicate, map) {
58
+ const next = { ...predicate };
59
+ if (typeof next.dimensionId === "string" && map[next.dimensionId])
60
+ next.dimensionId = map[next.dimensionId];
61
+ if (Array.isArray(next.clauses))
62
+ next.clauses = next.clauses.map((nested) => rewritePredicate(nested, map));
63
+ if (next.predicate)
64
+ next.predicate = rewritePredicate(next.predicate, map);
65
+ return next;
66
+ }
67
+ /** Applies a remapping, producing a new version. The saved definition is never edited in place. */
68
+ export function applyAnalysisDefinitionMigration(definition, remapping) {
69
+ const measures = remapping.measures ?? {};
70
+ const dimensions = remapping.dimensions ?? {};
71
+ const issues = [];
72
+ const present = references(definition);
73
+ const check = (map, kind, named, path) => {
74
+ for (const [from, to] of Object.entries(map)) {
75
+ if (!named.has(from))
76
+ issues.push({
77
+ domain: "configuration",
78
+ code: "unknown-reference",
79
+ path: `${path}.${from}`,
80
+ message: `This definition does not reference the ${kind} ${from}`,
81
+ });
82
+ if (!to)
83
+ issues.push({
84
+ domain: "configuration",
85
+ code: "invalid-string",
86
+ path: `${path}.${from}`,
87
+ message: `A migrated ${kind} needs a target id`,
88
+ });
89
+ // Merging two distinct references into one would silently change what the definition means.
90
+ else if (named.has(to) && !Object.hasOwn(map, to))
91
+ issues.push({
92
+ domain: "configuration",
93
+ code: "duplicate-id",
94
+ path: `${path}.${from}`,
95
+ message: `Migrating ${kind} ${from} onto ${to} would merge it with a reference this definition already uses`,
96
+ });
97
+ }
98
+ };
99
+ check(measures, "measure", new Set(present.measures.map(([id]) => id)), "$.remapping.measures");
100
+ check(dimensions, "dimension", new Set(present.dimensions.map(([id]) => id)), "$.remapping.dimensions");
101
+ if (issues.length > 0)
102
+ throw new DiagnosticValidationError(issues);
103
+ const measureOf = (id) => measures[id] ?? id;
104
+ return snapshotDiagnosticJson({
105
+ ...definition,
106
+ version: `${definition.version}+migration.1`,
107
+ dimensions: definition.dimensions.map((item) => ({ ...item, id: dimensions[item.id] ?? item.id })),
108
+ exposures: definition.exposures.map((item) => item.allocation.kind === "supplied-weights"
109
+ ? {
110
+ ...item,
111
+ allocation: { ...item.allocation, weightMeasureId: measureOf(item.allocation.weightMeasureId) },
112
+ }
113
+ : item),
114
+ measures: definition.measures.map((measure) => {
115
+ const statistic = { ...measure.statistic };
116
+ for (const key of ["measureId", "weightMeasureId", "numeratorMeasureId", "denominatorMeasureId"])
117
+ if (typeof statistic[key] === "string")
118
+ statistic[key] = measureOf(statistic[key]);
119
+ return {
120
+ ...measure,
121
+ statistic: statistic,
122
+ ...(measure.condition ? { condition: rewritePredicate(measure.condition, dimensions) } : {}),
123
+ };
124
+ }),
125
+ scopes: {
126
+ ...definition.scopes,
127
+ financial: {
128
+ ...definition.scopes.financial,
129
+ predicate: rewritePredicate(definition.scopes.financial.predicate, dimensions),
130
+ },
131
+ reporting: {
132
+ ...definition.scopes.reporting,
133
+ predicate: rewritePredicate(definition.scopes.reporting.predicate, dimensions),
134
+ },
135
+ },
136
+ });
137
+ }
138
+ //# sourceMappingURL=definitionMigration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definitionMigration.js","sourceRoot":"","sources":["../src/definitionMigration.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -75,4 +75,5 @@ export * from "./discounting.js";
75
75
  export * from "./caseOutstanding.js";
76
76
  export * from "./fisherLange.js";
77
77
  export * from "./salvageSubro.js";
78
+ export * from "./definitionMigration.js";
78
79
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -62,4 +62,5 @@ export * from "./discounting.js";
62
62
  export * from "./caseOutstanding.js";
63
63
  export * from "./fisherLange.js";
64
64
  export * from "./salvageSubro.js";
65
+ export * from "./definitionMigration.js";
65
66
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,EAC9B,6BAA6B,EAC7B,6BAA6B,EAC7B,6BAA6B,EAC7B,kCAAkC,EAClC,mCAAmC,GAGpC,MAAM,+BAA+B,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,iBAAiB,EACjB,aAAa,EACb,4BAA4B,EAC5B,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,0CAA0C,EAC1C,+BAA+B,EAC/B,+BAA+B,GAChC,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EACL,kCAAkC,EAClC,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC;AAmDpC,OAAO,EAAE,yBAAyB,EAAE,kCAAkC,EAAE,MAAM,yBAAyB,CAAC;AACxG,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,EAC3B,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AAOjC,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAK3E,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,gCAAgC,EAChC,kCAAkC,GACnC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EACL,6BAA6B,EAC7B,+BAA+B,GAChC,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EACL,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,mCAAmC,EACnC,4BAA4B,EAC5B,iCAAiC,EACjC,gDAAgD,EAChD,2CAA2C,EAC3C,iCAAiC,EACjC,qBAAqB,EACrB,4BAA4B,EAC5B,gCAAgC,EAChC,mCAAmC,EACnC,8BAA8B,EAC9B,kCAAkC,EAClC,qCAAqC,GACtC,MAAM,4BAA4B,CAAC;AAqBpC,OAAO,EACL,oCAAoC,EACpC,cAAc,EACd,qBAAqB,EACrB,kCAAkC,EAClC,iDAAiD,EACjD,oBAAoB,EACpB,2BAA2B,EAC3B,kCAAkC,EAClC,YAAY,EACZ,mBAAmB,EACnB,uCAAuC,EACvC,8CAA8C,GAC/C,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,6BAA6B,EAAE,oCAAoC,EAAE,MAAM,uBAAuB,CAAC;AAC5G,OAAO,EACL,wCAAwC,EACxC,6BAA6B,EAC7B,oCAAoC,EACpC,qDAAqD,EACrD,kCAAkC,EAClC,+BAA+B,EAC/B,qCAAqC,GACtC,MAAM,4BAA4B,CAAC;AA8CpC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC"}
@@ -1,6 +1,11 @@
1
1
  import type { Triangle } from "./types.js";
2
2
  /** Cumulative -> incremental. First cell passes through; nulls propagate. */
3
3
  export declare function cumulativeToIncremental(tri: Triangle): Triangle;
4
+ /**
5
+ * Each observed cell as a share of that origin's latest observed value: the emergence pattern a
6
+ * triangle has actually shown, as opposed to one projected from selected factors. Dimensionless.
7
+ */
8
+ export declare function developmentShareOfLatest(tri: Triangle): Triangle;
4
9
  /** Incremental -> cumulative. A null stops accumulation for the row. */
5
10
  export declare function incrementalToCumulative(tri: Triangle): Triangle;
6
11
  /** Cell-wise a + b; null wherever either side is null. */
@@ -1 +1 @@
1
- {"version":3,"file":"triangleAlgebra.d.ts","sourceRoot":"","sources":["../src/triangleAlgebra.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAqC3C,6EAA6E;AAC7E,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,QAAQ,GAAG,QAAQ,CAoB/D;AAED,wEAAwE;AACxE,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,QAAQ,GAAG,QAAQ,CAiB/D;AAED,0DAA0D;AAC1D,wBAAgB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAa/D;AAED,gFAAgF;AAChF,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAapE"}
1
+ {"version":3,"file":"triangleAlgebra.d.ts","sourceRoot":"","sources":["../src/triangleAlgebra.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAyC3C,6EAA6E;AAC7E,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,QAAQ,GAAG,QAAQ,CAoB/D;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,QAAQ,GAAG,QAAQ,CAkBhE;AAED,wEAAwE;AACxE,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,QAAQ,GAAG,QAAQ,CAiB/D;AAED,0DAA0D;AAC1D,wBAAgB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAa/D;AAED,gFAAgF;AAChF,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAapE"}
@@ -13,6 +13,10 @@ import { isNum } from "./util.js";
13
13
  * - incrementalToCumulative: accumulation stops at the FIRST null in a row
14
14
  * (a later observed increment has no defined cumulative base).
15
15
  * - Incremental[0] = cumulative[0] (the first cell is its own increment).
16
+ * - developmentShareOfLatest: each observed cell over that origin's own latest
17
+ * observed value. The latest cell is therefore exactly 1. A latest value that
18
+ * is missing, zero or negative carries no proportion, so the whole row is
19
+ * null - the same rule every other denominator in this SDK follows.
16
20
  */
17
21
  function sameShape(a, b) {
18
22
  return (a.origins.length === b.origins.length &&
@@ -48,6 +52,32 @@ export function cumulativeToIncremental(tri) {
48
52
  }),
49
53
  };
50
54
  }
55
+ /**
56
+ * Each observed cell as a share of that origin's latest observed value: the emergence pattern a
57
+ * triangle has actually shown, as opposed to one projected from selected factors. Dimensionless.
58
+ */
59
+ export function developmentShareOfLatest(tri) {
60
+ for (const row of tri.values)
61
+ if (row.length !== tri.ages.length)
62
+ throw new ReservingError("SHAPE", "Every triangle row must have one cell per development age");
63
+ if (tri.values.length !== tri.origins.length)
64
+ throw new ReservingError("SHAPE", "A triangle must have one row per origin");
65
+ return {
66
+ kind: tri.kind,
67
+ origins: [...tri.origins],
68
+ ages: [...tri.ages],
69
+ values: tri.values.map((row) => {
70
+ // The row's own latest observation is the denominator; never a neighbouring origin's.
71
+ let latest = null;
72
+ for (const cell of row)
73
+ if (isNum(cell))
74
+ latest = cell;
75
+ if (!isNum(latest) || latest <= 0)
76
+ return new Array(row.length).fill(null);
77
+ return row.map((cell) => (isNum(cell) ? cell / latest : null));
78
+ }),
79
+ };
80
+ }
51
81
  /** Incremental -> cumulative. A null stops accumulation for the row. */
52
82
  export function incrementalToCumulative(tri) {
53
83
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"triangleAlgebra.js","sourceRoot":"","sources":["../src/triangleAlgebra.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"triangleAlgebra.js","sourceRoot":"","sources":["../src/triangleAlgebra.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  /** This package's runtime version. A test pins it to package.json. */
2
- export declare const CORE_PACKAGE_VERSION = "0.12.0";
2
+ export declare const CORE_PACKAGE_VERSION = "0.14.0";
3
3
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  /** This package's runtime version. A test pins it to package.json. */
2
- export const CORE_PACKAGE_VERSION = "0.12.0";
2
+ export const CORE_PACKAGE_VERSION = "0.14.0";
3
3
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@actuarial-ts/core",
3
- "version": "0.12.0",
3
+ "version": "0.14.0",
4
4
  "description": "Pure, zero-dependency P&C actuarial math for TypeScript: reserving, generalized definition-driven diagnostics, trends, limits, discounting, and seeded stochastic methods with published-value validation.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -10,6 +10,10 @@ import type {
10
10
  AnalysisScenarioChange,
11
11
  AnalysisScenarioGrid,
12
12
  AnalysisScenarioRun,
13
+ AnalysisRestatement,
14
+ AnalysisScenarioAttribution,
15
+ AnalysisScenarioAttributionStep,
16
+ AnalysisScenarioDifference,
13
17
  AnalysisRollForward,
14
18
  AnalysisScenarioBridgeStep,
15
19
  AnalysisResultCache,
@@ -668,6 +672,138 @@ export function rollForwardAnalysisRecipe(input: Parameters<typeof runAnalysisRe
668
672
  });
669
673
  }
670
674
 
675
+ /**
676
+ * Runs one recipe at one valuation under two revision views and compares them, so a movement
677
+ * caused by a retroactive data revision is separable from one caused by a changed assumption.
678
+ * Knowledge only accumulates, so the current view may never know less than the prior one.
679
+ */
680
+ export function restateAnalysisRecipe(input: Parameters<typeof runAnalysisRecipe>[0] & {
681
+ readonly priorRevisionView: HistoricalDatasetInput["revisionView"];
682
+ readonly currentRevisionView: HistoricalDatasetInput["revisionView"];
683
+ }): AnalysisRestatement {
684
+ const { priorRevisionView, currentRevisionView, ...common } = input;
685
+ const issues: DiagnosticValidationIssue[] = [];
686
+ if (canonicalJson(priorRevisionView) === canonicalJson(currentRevisionView))
687
+ issues.push({
688
+ domain: "configuration",
689
+ code: "invalid-configuration",
690
+ path: "$.currentRevisionView",
691
+ message: "Restatement revision views must differ",
692
+ });
693
+ else if (priorRevisionView.kind === "restated")
694
+ issues.push({
695
+ domain: "configuration",
696
+ code: "invalid-configuration",
697
+ path: "$.priorRevisionView",
698
+ message: "A restated prior view already knows everything; the prior view must be as-known",
699
+ });
700
+ else if (
701
+ currentRevisionView.kind === "as-known" &&
702
+ currentRevisionView.knowledgeCutoff <= priorRevisionView.knowledgeCutoff
703
+ )
704
+ issues.push({
705
+ domain: "configuration",
706
+ code: "invalid-period",
707
+ path: "$.currentRevisionView.knowledgeCutoff",
708
+ message: "Restatement currentRevisionView knowledgeCutoff must be after the prior cutoff",
709
+ });
710
+ if (issues.length > 0) throw new DiagnosticValidationError(issues);
711
+ const priorResult = runAnalysisRecipe({ ...common, history: { ...common.history, revisionView: priorRevisionView } });
712
+ const currentResult = runAnalysisRecipe({
713
+ ...common,
714
+ history: { ...common.history, revisionView: currentRevisionView },
715
+ });
716
+ return snapshotDiagnosticJson({
717
+ kind: "restatement",
718
+ priorRevisionView,
719
+ currentRevisionView,
720
+ priorResult,
721
+ currentResult,
722
+ differences: compareAnalysisResults(priorResult, currentResult),
723
+ });
724
+ }
725
+
726
+ /**
727
+ * Attributes a joint effect symmetrically (Shapley), so the allocation is the same whatever order
728
+ * the caller listed. Every coalition is evaluated once - 2^n recipe runs for n changes, not n! - and
729
+ * each change's share is the weighted average of its marginal contribution across coalition sizes.
730
+ */
731
+ export function runAnalysisScenarioAttribution(input: Parameters<typeof runAnalysisRecipe>[0] & {
732
+ readonly scenarios: readonly AnalysisScenario[];
733
+ readonly limits: Pick<CustomizationResourceLimits, "maximumActiveScenarios">;
734
+ }): AnalysisScenarioAttribution {
735
+ const maximumActiveScenarios = maximumActiveScenarioLimit(input.limits);
736
+ const { scenarios, limits: _limits, ...common } = input;
737
+ if (scenarios.length === 0)
738
+ throw new DiagnosticValidationError([{
739
+ domain: "configuration", code: "missing-required", path: "$.scenarios",
740
+ message: "Symmetric attribution needs at least one change",
741
+ }]);
742
+ for (const scenario of scenarios)
743
+ if (scenario.changes.length !== 1)
744
+ throw new DiagnosticValidationError([{
745
+ domain: "configuration", code: "invalid-configuration", path: `$.scenarios.${scenario.id}.changes`,
746
+ message: "Each attributed scenario must contain exactly one change",
747
+ }]);
748
+ if (new Set(scenarios.map((scenario) => scenario.id)).size !== scenarios.length)
749
+ throw new DiagnosticValidationError([{
750
+ domain: "configuration", code: "duplicate-id", path: "$.scenarios",
751
+ message: "Attributed scenario ids must be unique",
752
+ }]);
753
+ // The cost is the number of coalitions, so that is what the limit has to bound.
754
+ const coalitions = 2 ** scenarios.length;
755
+ if (coalitions > maximumActiveScenarios)
756
+ throw new DiagnosticValidationError([{
757
+ domain: "configuration", code: "expression-limit", path: "$.scenarios",
758
+ message: `Symmetric attribution evaluates ${coalitions} coalitions, above maximumActiveScenarios ${maximumActiveScenarios}`,
759
+ }]);
760
+ // One run per coalition, keyed by its membership bitmask.
761
+ const results = new Map<number, AnalysisResult>();
762
+ for (let mask = 0; mask < coalitions; mask += 1) {
763
+ const members = scenarios.filter((_, index) => (mask & (1 << index)) !== 0);
764
+ if (members.length === 0) {
765
+ results.set(mask, runAnalysisRecipe(common));
766
+ continue;
767
+ }
768
+ const combined = {
769
+ id: members.map((member) => member.id).join("-"),
770
+ changes: members.flatMap((member) => member.changes),
771
+ };
772
+ results.set(mask, runAnalysisRecipe({ ...common, definition: applyAnalysisScenario(input.definition, combined) }));
773
+ }
774
+ const baseline = results.get(0)!;
775
+ const joint = results.get(coalitions - 1)!;
776
+ const factorial = (value: number): number => (value <= 1 ? 1 : value * factorial(value - 1));
777
+ const total = factorial(scenarios.length);
778
+ const steps: AnalysisScenarioAttributionStep[] = scenarios.map((scenario, index) => {
779
+ // Weighted marginal contributions: |S|! (n - |S| - 1)! / n! over coalitions S without this change.
780
+ const shares = new Map<string, { difference: AnalysisScenarioDifference; value: number }>();
781
+ for (let mask = 0; mask < coalitions; mask += 1) {
782
+ if ((mask & (1 << index)) !== 0) continue;
783
+ const size = scenarios.filter((_, other) => (mask & (1 << other)) !== 0).length;
784
+ const weight = (factorial(size) * factorial(scenarios.length - size - 1)) / total;
785
+ for (const difference of compareAnalysisResults(results.get(mask)!, results.get(mask | (1 << index))!)) {
786
+ const key = canonicalJson([difference.measureId, difference.coordinates]);
787
+ const entry = shares.get(key) ?? { difference, value: 0 };
788
+ entry.value += weight * (difference.absoluteDifference ?? 0);
789
+ shares.set(key, entry);
790
+ }
791
+ }
792
+ return {
793
+ scenarioId: scenario.id,
794
+ differences: [...shares.values()].map(({ difference, value }) => ({
795
+ ...difference,
796
+ absoluteDifference: difference.absoluteDifference === null ? null : value,
797
+ percentageDifference:
798
+ difference.baselineValue === null || difference.baselineValue === 0 || difference.absoluteDifference === null
799
+ ? null
800
+ : value / difference.baselineValue,
801
+ })),
802
+ };
803
+ });
804
+ return snapshotDiagnosticJson({ method: "shapley", baseline, joint, steps });
805
+ }
806
+
671
807
  /** Applies explicitly ordered, one-change scenario steps and reports each incremental bridge. */
672
808
  export function runAnalysisScenarioBridge(input: Parameters<typeof runAnalysisRecipe>[0] & {
673
809
  readonly scenarios: readonly AnalysisScenario[];
@@ -792,6 +792,37 @@ export interface AnalysisRollForward {
792
792
  readonly differences: readonly AnalysisScenarioDifference[];
793
793
  }
794
794
 
795
+ /**
796
+ * The same analysis at one valuation under two revision views. Roll-forward moves the evaluation
797
+ * date and asks what emerged; a restatement holds it fixed and asks what the data revision changed.
798
+ */
799
+ export interface AnalysisRestatement {
800
+ readonly kind: "restatement";
801
+ readonly priorRevisionView: HistoricalDatasetInput["revisionView"];
802
+ readonly currentRevisionView: HistoricalDatasetInput["revisionView"];
803
+ readonly priorResult: AnalysisResult;
804
+ readonly currentResult: AnalysisResult;
805
+ readonly differences: readonly AnalysisScenarioDifference[];
806
+ }
807
+
808
+ /** One change's symmetric share of a joint effect, on the same coordinates as any comparison. */
809
+ export interface AnalysisScenarioAttributionStep {
810
+ readonly scenarioId: string;
811
+ readonly differences: readonly AnalysisScenarioDifference[];
812
+ }
813
+
814
+ /**
815
+ * Shapley attribution: each change's average marginal contribution over every ordering, so the
816
+ * allocation does not depend on the order the caller happened to list. The steps sum to the joint
817
+ * effect exactly, as the sequential bridge's do, but without its order dependence.
818
+ */
819
+ export interface AnalysisScenarioAttribution {
820
+ readonly method: "shapley";
821
+ readonly baseline: AnalysisResult;
822
+ readonly joint: AnalysisResult;
823
+ readonly steps: readonly AnalysisScenarioAttributionStep[];
824
+ }
825
+
795
826
  export interface AnalysisScenarioBridgeStep {
796
827
  readonly scenarioId: string;
797
828
  readonly fromCalculationIdentity: string;