@actuarial-ts/core 0.3.0 → 0.5.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.
- package/README.md +115 -0
- package/dist/berquist.d.ts.map +1 -1
- package/dist/berquist.js +4 -12
- package/dist/berquist.js.map +1 -1
- package/dist/caseOutstanding.d.ts.map +1 -1
- package/dist/caseOutstanding.js +2 -9
- package/dist/caseOutstanding.js.map +1 -1
- package/dist/casualtyDiagnostics.d.ts +53 -0
- package/dist/casualtyDiagnostics.d.ts.map +1 -0
- package/dist/casualtyDiagnostics.js +124 -0
- package/dist/casualtyDiagnostics.js.map +1 -0
- package/dist/fisherLange.d.ts.map +1 -1
- package/dist/fisherLange.js +2 -9
- package/dist/fisherLange.js.map +1 -1
- package/dist/freqSev.d.ts.map +1 -1
- package/dist/freqSev.js +3 -10
- package/dist/freqSev.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/metricDiagnostics.d.ts +212 -0
- package/dist/metricDiagnostics.d.ts.map +1 -0
- package/dist/metricDiagnostics.js +627 -0
- package/dist/metricDiagnostics.js.map +1 -0
- package/dist/munichChainLadder.d.ts.map +1 -1
- package/dist/munichChainLadder.js +2 -7
- package/dist/munichChainLadder.js.map +1 -1
- package/dist/periods.d.ts +46 -0
- package/dist/periods.d.ts.map +1 -0
- package/dist/periods.js +121 -0
- package/dist/periods.js.map +1 -0
- package/dist/util.d.ts +8 -0
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +15 -0
- package/dist/util.js.map +1 -1
- package/package.json +1 -1
- package/src/berquist.ts +4 -15
- package/src/caseOutstanding.ts +12 -14
- package/src/casualtyDiagnostics.ts +204 -0
- package/src/fisherLange.ts +12 -14
- package/src/freqSev.ts +11 -15
- package/src/index.ts +3 -0
- package/src/metricDiagnostics.ts +876 -0
- package/src/munichChainLadder.ts +6 -12
- package/src/periods.ts +177 -0
- package/src/util.ts +20 -0
package/dist/freqSev.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { ReservingError } from "./types.js";
|
|
2
|
-
import { isNum, lastObservedIndex, safeRatio } from "./util.js";
|
|
2
|
+
import { assertSameShape, isNum, lastObservedIndex, safeRatio } from "./util.js";
|
|
3
3
|
import { runChainLadder } from "./chainladder.js";
|
|
4
4
|
/**
|
|
5
5
|
* Average-severity triangle: cell-wise losses / counts. Null-safe: a
|
|
6
6
|
* missing, zero, or negative count yields a null severity cell.
|
|
7
7
|
*/
|
|
8
8
|
export function severityTriangle(lossTri, countTri) {
|
|
9
|
-
assertSameShape(lossTri, countTri);
|
|
9
|
+
assertSameShape(lossTri, countTri, "The loss and count triangles must share identical origins and development ages");
|
|
10
10
|
return {
|
|
11
11
|
kind: lossTri.kind,
|
|
12
12
|
origins: [...lossTri.origins],
|
|
@@ -14,15 +14,8 @@ export function severityTriangle(lossTri, countTri) {
|
|
|
14
14
|
values: lossTri.values.map((row, i) => row.map((loss, j) => safeRatio(loss ?? null, countTri.values[i][j] ?? null))),
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
|
-
function assertSameShape(a, b) {
|
|
18
|
-
const sameOrigins = a.origins.length === b.origins.length && a.origins.every((o, i) => o === b.origins[i]);
|
|
19
|
-
const sameAges = a.ages.length === b.ages.length && a.ages.every((v, i) => v === b.ages[i]);
|
|
20
|
-
if (!sameOrigins || !sameAges) {
|
|
21
|
-
throw new ReservingError("SHAPE", "The loss and count triangles must share identical origins and development ages");
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
17
|
export function runFrequencySeverity(lossTri, countTri, options) {
|
|
25
|
-
assertSameShape(lossTri, countTri);
|
|
18
|
+
assertSameShape(lossTri, countTri, "The loss and count triangles must share identical origins and development ages");
|
|
26
19
|
const warnings = [];
|
|
27
20
|
const countCl = runChainLadder(countTri, {
|
|
28
21
|
selected: options.countSelected,
|
package/dist/freqSev.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"freqSev.js","sourceRoot":"","sources":["../src/freqSev.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"freqSev.js","sourceRoot":"","sources":["../src/freqSev.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -14,6 +14,9 @@ export * from "./tail.js";
|
|
|
14
14
|
export * from "./berquist.js";
|
|
15
15
|
export * from "./clark.js";
|
|
16
16
|
export * from "./diagnostics.js";
|
|
17
|
+
export * from "./periods.js";
|
|
18
|
+
export * from "./metricDiagnostics.js";
|
|
19
|
+
export * from "./casualtyDiagnostics.js";
|
|
17
20
|
export * from "./mack.js";
|
|
18
21
|
export * from "./capping.js";
|
|
19
22
|
export * from "./ilf.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,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,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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,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,wBAAwB,CAAC;AACvC,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"}
|
package/dist/index.js
CHANGED
|
@@ -14,6 +14,9 @@ export * from "./tail.js";
|
|
|
14
14
|
export * from "./berquist.js";
|
|
15
15
|
export * from "./clark.js";
|
|
16
16
|
export * from "./diagnostics.js";
|
|
17
|
+
export * from "./periods.js";
|
|
18
|
+
export * from "./metricDiagnostics.js";
|
|
19
|
+
export * from "./casualtyDiagnostics.js";
|
|
17
20
|
export * from "./mack.js";
|
|
18
21
|
export * from "./capping.js";
|
|
19
22
|
export * from "./ilf.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,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,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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,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,wBAAwB,CAAC;AACvC,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"}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
import { type DiagnosticFinding } from "./types.js";
|
|
2
|
+
export type SparseValuePolicy = "preserve-null" | "zero-fill";
|
|
3
|
+
export type DiagnosticMeasureMap = Readonly<Record<string, number | null | undefined>>;
|
|
4
|
+
export type MeasureExpression = {
|
|
5
|
+
op: "measure";
|
|
6
|
+
measure: string;
|
|
7
|
+
} | {
|
|
8
|
+
op: "add";
|
|
9
|
+
terms: readonly MeasureExpression[];
|
|
10
|
+
} | {
|
|
11
|
+
op: "subtract";
|
|
12
|
+
left: MeasureExpression;
|
|
13
|
+
right: MeasureExpression;
|
|
14
|
+
};
|
|
15
|
+
export interface DiagnosticWarning {
|
|
16
|
+
code: "MISSING_COMPONENT" | "NON_FINITE_COMPONENT" | "NON_FINITE_NUMERATOR" | "NON_FINITE_RESULT" | "INVALID_DENOMINATOR" | "INCOMPLETE_EXPOSURE" | "CONFLICTING_EXPOSURE" | "DUPLICATE_EXPOSURE_KEY" | "PAID_EXCEEDS_INCURRED" | (string & {});
|
|
17
|
+
message: string;
|
|
18
|
+
component?: string;
|
|
19
|
+
exposureKey?: string;
|
|
20
|
+
}
|
|
21
|
+
/** Adapts structured metric warnings to the existing core diagnostic finding vocabulary. */
|
|
22
|
+
export declare function diagnosticWarningToFinding(warning: DiagnosticWarning): DiagnosticFinding;
|
|
23
|
+
export interface MetricWarningRule {
|
|
24
|
+
code: "PAID_EXCEEDS_INCURRED";
|
|
25
|
+
when: "numerator-greater-than-denominator";
|
|
26
|
+
message: string;
|
|
27
|
+
tolerance?: number;
|
|
28
|
+
}
|
|
29
|
+
export interface MetricDefinition {
|
|
30
|
+
id: string;
|
|
31
|
+
version: string;
|
|
32
|
+
displayName: string;
|
|
33
|
+
description: string;
|
|
34
|
+
unit: "count-per-million" | "ratio" | "currency-per-exposure" | "currency-per-claim" | (string & {});
|
|
35
|
+
scale: number;
|
|
36
|
+
numerator: MeasureExpression;
|
|
37
|
+
denominator: MeasureExpression;
|
|
38
|
+
numeratorLabel: string;
|
|
39
|
+
denominatorLabel: string;
|
|
40
|
+
basis: string;
|
|
41
|
+
requiredComponents: readonly string[];
|
|
42
|
+
warningRules?: readonly MetricWarningRule[];
|
|
43
|
+
/** Optional pure caller rule for domain warnings beyond the built-in comparisons. */
|
|
44
|
+
evaluateWarnings?: (context: MetricWarningContext) => readonly DiagnosticWarning[];
|
|
45
|
+
}
|
|
46
|
+
export interface MetricWarningContext {
|
|
47
|
+
definition: MetricDefinition;
|
|
48
|
+
components: Readonly<Record<string, number | null>>;
|
|
49
|
+
rawNumerator: number | null;
|
|
50
|
+
rawDenominator: number | null;
|
|
51
|
+
value: number | null;
|
|
52
|
+
}
|
|
53
|
+
export interface MetricEvaluation {
|
|
54
|
+
metricId: string;
|
|
55
|
+
metricVersion: string;
|
|
56
|
+
value: number | null;
|
|
57
|
+
rawNumerator: number | null;
|
|
58
|
+
rawDenominator: number | null;
|
|
59
|
+
numeratorLabel: string;
|
|
60
|
+
denominatorLabel: string;
|
|
61
|
+
unit: MetricDefinition["unit"];
|
|
62
|
+
scale: number;
|
|
63
|
+
basis: string;
|
|
64
|
+
rawComponents: Record<string, number | null>;
|
|
65
|
+
warnings: DiagnosticWarning[];
|
|
66
|
+
}
|
|
67
|
+
export interface MeasureAggregateCell {
|
|
68
|
+
sum: number;
|
|
69
|
+
observed: number;
|
|
70
|
+
missing: number;
|
|
71
|
+
nonFinite: number;
|
|
72
|
+
}
|
|
73
|
+
/** Mergeable sufficient statistics: grouping in stages gives the same result. */
|
|
74
|
+
export interface MeasureAggregate {
|
|
75
|
+
components: Record<string, MeasureAggregateCell>;
|
|
76
|
+
}
|
|
77
|
+
export declare function aggregateMeasures(rows: readonly DiagnosticMeasureMap[]): MeasureAggregate;
|
|
78
|
+
export declare function mergeMeasureAggregates(aggregates: readonly MeasureAggregate[]): MeasureAggregate;
|
|
79
|
+
export interface FinalizedMeasures {
|
|
80
|
+
measures: Record<string, number | null>;
|
|
81
|
+
warnings: DiagnosticWarning[];
|
|
82
|
+
}
|
|
83
|
+
export declare function finalizeMeasureAggregate(aggregate: MeasureAggregate, sparsePolicy?: SparseValuePolicy): FinalizedMeasures;
|
|
84
|
+
export declare function measureExpressionComponents(expression: MeasureExpression): string[];
|
|
85
|
+
export declare function evaluateMetric(definition: MetricDefinition, components: DiagnosticMeasureMap, inheritedWarnings?: readonly DiagnosticWarning[]): MetricEvaluation;
|
|
86
|
+
export type LayerExpression = {
|
|
87
|
+
op: "measure";
|
|
88
|
+
measure: string;
|
|
89
|
+
} | {
|
|
90
|
+
op: "add";
|
|
91
|
+
terms: readonly LayerExpression[];
|
|
92
|
+
} | {
|
|
93
|
+
op: "claim-cap";
|
|
94
|
+
measure: string;
|
|
95
|
+
limit: number;
|
|
96
|
+
};
|
|
97
|
+
export interface AmountLayerDefinition {
|
|
98
|
+
id: string;
|
|
99
|
+
displayName: string;
|
|
100
|
+
paidMeasure: string;
|
|
101
|
+
incurredMeasure: string;
|
|
102
|
+
paid: LayerExpression;
|
|
103
|
+
incurred: LayerExpression;
|
|
104
|
+
/** Documents whether inputs are already limited or this layer caps claim rows. */
|
|
105
|
+
basis: "pre-capped-additive" | "claim-level-cap" | "unlimited-additive";
|
|
106
|
+
}
|
|
107
|
+
export interface DiagnosticClaimRow<T = unknown> {
|
|
108
|
+
dimensions: T;
|
|
109
|
+
measures: DiagnosticMeasureMap;
|
|
110
|
+
}
|
|
111
|
+
/** Applies claim caps before aggregation; this function intentionally accepts claim rows, not aggregates. */
|
|
112
|
+
export declare function deriveAmountLayers<T>(rows: readonly DiagnosticClaimRow<T>[], layers: readonly AmountLayerDefinition[]): DiagnosticClaimRow<T>[];
|
|
113
|
+
export interface DiagnosticLossRow<TDimensions = unknown> {
|
|
114
|
+
id: string;
|
|
115
|
+
group: string;
|
|
116
|
+
origin: string;
|
|
117
|
+
valuation: string;
|
|
118
|
+
ageMonths: number;
|
|
119
|
+
/** Optional caller-mapped policy/fiscal period (for example a Q3-Q2 year). */
|
|
120
|
+
policyPeriod?: string;
|
|
121
|
+
/** Optional caller-owned grouping metadata; `group` remains the stable key. */
|
|
122
|
+
dimensions?: TDimensions;
|
|
123
|
+
measures: DiagnosticMeasureMap;
|
|
124
|
+
}
|
|
125
|
+
export interface DiagnosticExposureRow<TDimensions = unknown> {
|
|
126
|
+
/** Stable exposure identity. Repeated snapshots with the same key count once. */
|
|
127
|
+
key: string;
|
|
128
|
+
group: string;
|
|
129
|
+
origin: string;
|
|
130
|
+
valuation?: string;
|
|
131
|
+
measures: DiagnosticMeasureMap;
|
|
132
|
+
complete?: boolean;
|
|
133
|
+
dimensions?: TDimensions;
|
|
134
|
+
}
|
|
135
|
+
export interface DiagnosticsFilter {
|
|
136
|
+
groups?: readonly string[];
|
|
137
|
+
origins?: readonly string[];
|
|
138
|
+
originFrom?: string;
|
|
139
|
+
originThrough?: string;
|
|
140
|
+
valuations?: readonly string[];
|
|
141
|
+
valuationFrom?: string;
|
|
142
|
+
valuationThrough?: string;
|
|
143
|
+
policyPeriods?: readonly string[];
|
|
144
|
+
minAgeMonths?: number;
|
|
145
|
+
maxAgeMonths?: number;
|
|
146
|
+
}
|
|
147
|
+
export interface DiagnosticEmergencePoint<TDimensions = unknown> {
|
|
148
|
+
group: string;
|
|
149
|
+
dimensions?: TDimensions;
|
|
150
|
+
origin: string;
|
|
151
|
+
valuation: string;
|
|
152
|
+
ageMonths: number;
|
|
153
|
+
components: Record<string, number | null>;
|
|
154
|
+
componentWarnings: DiagnosticWarning[];
|
|
155
|
+
metrics: Record<string, MetricEvaluation>;
|
|
156
|
+
}
|
|
157
|
+
export interface DiagnosticMetricTriangle {
|
|
158
|
+
group: string;
|
|
159
|
+
metricId: string;
|
|
160
|
+
origins: string[];
|
|
161
|
+
ages: number[];
|
|
162
|
+
values: (number | null)[][];
|
|
163
|
+
cells: (MetricEvaluation | null)[][];
|
|
164
|
+
}
|
|
165
|
+
export interface MetricDiagnosticsResult<TDimensions = unknown> {
|
|
166
|
+
emergence: DiagnosticEmergencePoint<TDimensions>[];
|
|
167
|
+
triangles: DiagnosticMetricTriangle[];
|
|
168
|
+
latestDiagonal: DiagnosticEmergencePoint<TDimensions>[];
|
|
169
|
+
}
|
|
170
|
+
export interface RunMetricDiagnosticsInput<TDimensions = unknown> {
|
|
171
|
+
losses: readonly DiagnosticLossRow<TDimensions>[];
|
|
172
|
+
exposures?: readonly DiagnosticExposureRow<TDimensions>[];
|
|
173
|
+
metrics: readonly MetricDefinition[];
|
|
174
|
+
sparsePolicy?: SparseValuePolicy;
|
|
175
|
+
filter?: DiagnosticsFilter;
|
|
176
|
+
/** Maps source group keys to requested aggregate keys before summation. */
|
|
177
|
+
groupMap?: Readonly<Record<string, string>>;
|
|
178
|
+
/** Metadata for mapped/combined output groups. */
|
|
179
|
+
groupDimensions?: Readonly<Record<string, TDimensions>>;
|
|
180
|
+
}
|
|
181
|
+
export interface DiagnosticExposureReconciliationFinding {
|
|
182
|
+
code: "DUPLICATE_EXPOSURE_KEY" | "CONFLICTING_EXPOSURE";
|
|
183
|
+
exposureKey: string;
|
|
184
|
+
group: string;
|
|
185
|
+
origin: string;
|
|
186
|
+
message: string;
|
|
187
|
+
}
|
|
188
|
+
export interface ReconciledDiagnosticExposures<TDimensions = unknown> {
|
|
189
|
+
exposures: DiagnosticExposureRow<TDimensions>[];
|
|
190
|
+
findings: DiagnosticExposureReconciliationFinding[];
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Reconciles stable exposure keys before aggregation. Identical valuation
|
|
194
|
+
* copies collapse to one row. Conflicting copies become one incomplete/null
|
|
195
|
+
* row so exposure-based metrics fail closed rather than using a partial base.
|
|
196
|
+
*/
|
|
197
|
+
export declare function reconcileDiagnosticExposureKeys<TDimensions = unknown>(rows: readonly DiagnosticExposureRow<TDimensions>[]): ReconciledDiagnosticExposures<TDimensions>;
|
|
198
|
+
/**
|
|
199
|
+
* Generic quarterly diagnostics engine. Loss rows aggregate by
|
|
200
|
+
* group/origin/valuation; exposure rows aggregate once by stable exposure key;
|
|
201
|
+
* every metric then divides the aggregated expressions exactly once.
|
|
202
|
+
*/
|
|
203
|
+
export declare function runMetricDiagnostics<TDimensions = unknown>(input: RunMetricDiagnosticsInput<TDimensions>): MetricDiagnosticsResult<TDimensions>;
|
|
204
|
+
export declare function metricTriangleFromEmergence(points: readonly DiagnosticEmergencePoint<unknown>[], metricId: string): DiagnosticMetricTriangle;
|
|
205
|
+
export declare function sameMaturity<TDimensions>(result: MetricDiagnosticsResult<TDimensions>, ageMonths: number, groups?: readonly string[]): DiagnosticEmergencePoint<TDimensions>[];
|
|
206
|
+
export interface CommonMaturityResult<TDimensions = unknown> {
|
|
207
|
+
ageMonths: number | null;
|
|
208
|
+
points: DiagnosticEmergencePoint<TDimensions>[];
|
|
209
|
+
}
|
|
210
|
+
/** Latest maturity present in every selected group; selection is caller-defined. */
|
|
211
|
+
export declare function commonMaturity<TDimensions>(result: MetricDiagnosticsResult<TDimensions>, groups: readonly string[]): CommonMaturityResult<TDimensions>;
|
|
212
|
+
//# sourceMappingURL=metricDiagnostics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metricDiagnostics.d.ts","sourceRoot":"","sources":["../src/metricDiagnostics.ts"],"names":[],"mappings":"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"}
|