@actuarial-ts/core 0.2.0 → 0.3.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 CHANGED
@@ -15,7 +15,7 @@ exist.
15
15
 
16
16
  `@actuarial-ts/core` is the numeric kernel of the actuarial-ts SDK. It is
17
17
  **designed to support the actuary's compliance with the Actuarial Standards of
18
- Practice** (ASOP Nos. 43, 23, 41, 56, 25, 36, 20, 21, 38, and 13) by making
18
+ Practice** (ASOP Nos. 43, 23, 41, 56, 20, and 21) by making
19
19
  methods, assumptions, and their diagnostics explicit and reportable.
20
20
  Responsibility for compliance remains with the credentialed actuary; no
21
21
  software can be "ASOP-approved" and this one does not claim to be.
@@ -104,11 +104,15 @@ Three rules hold everywhere:
104
104
  | `trend` | `analyzeTrend`, `trendValue` (log-linear, windowed) | Werner & Modlin, *Basic Ratemaking* ch. 6 |
105
105
  | `onlevel` | `parallelogramOnLevel` (exact piecewise-linear earning geometry) | Werner & Modlin ch. 5 |
106
106
  | `diagnostics` | `runDiagnostics` (paid/incurred drift, case adequacy, closure rates), `calendarYearTest` | Mack (1994) calendar-year rank test |
107
+ | `canonical` | `canonicalJson` (RFC 8785 / JCS canonical serialization), `fnv1a64` (integrity tagging aid — not a security control) | RFC 8785 |
107
108
 
108
109
  ## Validation against published results
109
110
 
110
- The test suite reproduces, from the primary sources (transcriptions under
111
- `docs/research/` in the repository):
111
+ The test suite reproduces the following, each transcribed from the primary
112
+ source into `test/fixtures/`. Five of them additionally carry a full research
113
+ transcription with context and caveats under `docs/research/` (Clark,
114
+ Merz-Wuthrich, England/Verrall, Munich, ULAE); for the rest the transcription
115
+ notes live in the fixture file itself.
112
116
 
113
117
  - Mack (1993), ASTIN 23(2): Taylor/Ashe and mortgage-guarantee factors,
114
118
  reserves, sigma-squared (including the extrapolated column), standard errors.
@@ -118,7 +122,10 @@ The test suite reproduces, from the primary sources (transcriptions under
118
122
  - Mack (2000), ASTIN 30(2): the Benktander numerical example.
119
123
  - Gluck (1997), PCAS LXXXIV: Generalized Cape Cod Tables 1-4.
120
124
  - England (2002), IME 31: ODP bootstrap prediction errors and percentiles
121
- on Taylor/Ashe.
125
+ on Taylor/Ashe — all nine published accident years plus the Table 3
126
+ predictive distribution. Asserted within the sampling error the publication
127
+ itself exhibits, because a bootstrap figure is one finite sample and cannot
128
+ be reproduced to the digit the way Mack's closed form can.
122
129
  - Merz & Wuthrich (2008): the Table 4 one-year CDR volatilities.
123
130
  - Clark (2003): both methods' fitted parameters, reserves, and variance
124
131
  decompositions (to ~1e-5).
@@ -1 +1 @@
1
- {"version":3,"file":"mack.d.ts","sourceRoot":"","sources":["../src/mack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAW,QAAQ,EAAE,MAAM,YAAY,CAAC;AAIhE,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IAC7B,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,QAAQ,GAAG;IAC7C,CAAC,EAAE,MAAM,EAAE,CAAC;IACZ,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;CAC3B,CAgDA;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,EAC5B,IAAI,EAAE,MAAM,EAAE,EACd,QAAQ,EAAE,MAAM,EAAE,GACjB,MAAM,EAAE,CAqBV;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,GAAE,WAAgB,GAAG,UAAU,CAqJ5E"}
1
+ {"version":3,"file":"mack.d.ts","sourceRoot":"","sources":["../src/mack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAW,QAAQ,EAAE,MAAM,YAAY,CAAC;AAIhE,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IAC7B,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,QAAQ,GAAG;IAC7C,CAAC,EAAE,MAAM,EAAE,CAAC;IACZ,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;CAC3B,CAgDA;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,EAC5B,IAAI,EAAE,MAAM,EAAE,EACd,QAAQ,EAAE,MAAM,EAAE,GACjB,MAAM,EAAE,CAqBV;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,GAAE,WAAgB,GAAG,UAAU,CAoM5E"}
package/dist/mack.js CHANGED
@@ -174,11 +174,23 @@ export function runMack(tri, options = {}) {
174
174
  const ultimate = projected[i][K - 1] * tail;
175
175
  // mse(R_i) accumulated over the projected development range plus tail.
176
176
  let mse = 0;
177
+ let droppedColumns = 0;
177
178
  for (let k = last; k < K - 1; k++) {
178
179
  const cik = projected[i][k];
179
- if (!(cik > 0))
180
+ if (!(cik > 0)) {
181
+ // Mack's 1/C_ik is undefined for a non-positive cumulative. Skipping
182
+ // the column is the only defensible arithmetic, but it removes real
183
+ // variance from the estimate, so the result must not present what
184
+ // remains as if it were the whole story.
185
+ droppedColumns++;
180
186
  continue;
181
- mse += ((sigma2[k] / fEff[k] ** 2) * (1 / cik + 1 / denomSums[k]));
187
+ }
188
+ mse += (sigma2[k] / fEff[k] ** 2) * (1 / cik + 1 / denomSums[k]);
189
+ }
190
+ if (droppedColumns > 0) {
191
+ warnings.push(`Origin ${tri.origins[i]} has a non-positive projected cumulative at ` +
192
+ `${droppedColumns} development step(s); those columns are excluded from its ` +
193
+ `standard error, which is therefore understated`);
182
194
  }
183
195
  if (tail !== 1 && projected[i][K - 1] > 0) {
184
196
  mse += (sigma2Tail / tail ** 2) * (1 / projected[i][K - 1] + 1 / denomTail);
@@ -195,30 +207,58 @@ export function runMack(tri, options = {}) {
195
207
  cv: reserve !== 0 ? Math.sqrt(mse) / reserve : null,
196
208
  });
197
209
  }
198
- // Total mse: sum of row mse plus cross terms (Mack 1993 corollary). The
199
- // tail step participates like one more development column.
210
+ // Total mse: sum of row mse plus the cross-covariance between every PAIR of
211
+ // accident years (Mack 1993 corollary). The tail step participates like one
212
+ // more development column.
213
+ //
214
+ // Two accident years share estimation error only over the columns they have
215
+ // BOTH yet to traverse, so each pair's sum starts at the maturity of the more
216
+ // developed of the two. That floor is per-pair: aggregating the later rows'
217
+ // ultimates before choosing it would assume maturity falls with row index —
218
+ // true of a tidy run-off triangle, false of a ragged or unsorted one, and the
219
+ // resulting total moved by up to 65% purely with row order.
200
220
  let totalMse = 0;
201
221
  for (let i = 0; i < n; i++)
202
222
  totalMse += mseByRow[i];
223
+ const maturity = tri.values.map((row) => lastObservedIndex(row));
224
+ const ultimateOf = (i) => projected[i][K - 1] * tail;
203
225
  for (let i = 0; i < n; i++) {
204
- const lastI = lastObservedIndex(tri.values[i]);
205
- if (lastI < 0 || (tail === 1 && lastI >= K - 1))
226
+ if (maturity[i] < 0)
206
227
  continue;
207
- let laterUltimates = 0;
208
- for (let j = i + 1; j < n; j++) {
209
- if (lastObservedIndex(tri.values[j]) >= 0)
210
- laterUltimates += projected[j][K - 1] * tail;
211
- }
212
- if (laterUltimates <= 0)
228
+ // Mack's 1/C terms are undefined for a non-positive ultimate; the row
229
+ // estimate skips such columns for the same reason (see above).
230
+ const ui = ultimateOf(i);
231
+ if (!(ui > 0))
213
232
  continue;
214
- let inner = 0;
215
- for (let k = lastI; k < K - 1; k++) {
216
- inner += (2 * sigma2[k]) / fEff[k] ** 2 / denomSums[k];
233
+ // Partners are grouped by the floor their pair uses, and each group's
234
+ // ultimates are summed BEFORE multiplying. On a triangle whose maturity
235
+ // falls with row index every partner shares one floor, so this collapses
236
+ // to a single product in the original operand order — the arithmetic is
237
+ // then identical to the last bit, which is what keeps the frozen
238
+ // conformance corpus reproducible.
239
+ const partnerUltimatesByFloor = new Map();
240
+ for (let j = i + 1; j < n; j++) {
241
+ if (maturity[j] < 0)
242
+ continue;
243
+ const uj = ultimateOf(j);
244
+ if (!(uj > 0))
245
+ continue;
246
+ const floor = Math.max(maturity[i], maturity[j]);
247
+ partnerUltimatesByFloor.set(floor, (partnerUltimatesByFloor.get(floor) ?? 0) + uj);
217
248
  }
218
- if (tail !== 1) {
219
- inner += (2 * sigma2Tail) / tail ** 2 / denomTail;
249
+ for (const [floor, partnerUltimates] of partnerUltimatesByFloor) {
250
+ // Both years already run off: no shared development remains.
251
+ if (tail === 1 && floor >= K - 1)
252
+ continue;
253
+ let shared = 0;
254
+ for (let k = floor; k < K - 1; k++) {
255
+ shared += (2 * sigma2[k]) / fEff[k] ** 2 / denomSums[k];
256
+ }
257
+ if (tail !== 1) {
258
+ shared += (2 * sigma2Tail) / tail ** 2 / denomTail;
259
+ }
260
+ totalMse += ui * partnerUltimates * shared;
220
261
  }
221
- totalMse += projected[i][K - 1] * tail * laterUltimates * inner;
222
262
  }
223
263
  const totals = rows.reduce((acc, r) => ({
224
264
  latest: acc.latest + r.latest,
package/dist/mack.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mack.js","sourceRoot":"","sources":["../src/mack.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mack.js","sourceRoot":"","sources":["../src/mack.ts"],"names":[],"mappings":"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"}
@@ -10,8 +10,12 @@ import { type StochasticResult } from "./stochastic.js";
10
10
  * latest observed cumulative, divide back through the volume-weighted
11
11
  * factors, and difference.
12
12
  * - Unscaled Pearson residuals r = (q - m) / sqrt(m) on incrementals; the
13
- * scale parameter is phi = sum(r^2) / (n - p) with n = observed
14
- * incrementals and p = 2I - 1 parameters for an I-origin triangle.
13
+ * scale parameter is phi = sum(r^2) / (n - p) with p = 2I - 1 parameters for
14
+ * an I-origin triangle and n = the incrementals that CONTRIBUTE a residual.
15
+ * On a well-behaved triangle that is every observed incremental, but a
16
+ * non-positive fitted mean leaves the residual undefined: such a cell is
17
+ * absent from the numerator, so counting it in the denominator would divide
18
+ * the sum of squares by degrees of freedom it never earned.
15
19
  * - Resampling: draw residuals with replacement onto the fitted past
16
20
  * (q* = m + r sqrt(m)), cumulate, refit volume-weighted factors, project
17
21
  * each future incremental, and add process variance by sampling
@@ -40,7 +44,9 @@ export interface OdpFit {
40
44
  reserve: number;
41
45
  }[];
42
46
  phi: number;
47
+ /** Incrementals contributing a residual — the dispersion's numerator count. */
43
48
  n: number;
49
+ /** Fitted parameters, 2I - 1 for an I-origin triangle. */
44
50
  p: number;
45
51
  /** Residuals actually in the resampling pool (structural zeros excluded). */
46
52
  poolSize: number;
@@ -1 +1 @@
1
- {"version":3,"file":"odpBootstrap.d.ts","sourceRoot":"","sources":["../src/odpBootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI3C,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,MAAM,WAAW,MAAM;IACrB,sEAAsE;IACtE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,6DAA6D;IAC7D,kBAAkB,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACxC,+EAA+E;IAC/E,SAAS,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAC/B,uEAAuE;IACvE,WAAW,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACjC,4EAA4E;IAC5E,eAAe,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvD,GAAG,EAAE,MAAM,CAAC;IACZ,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AA4BD,4EAA4E;AAC5E,wBAAgB,MAAM,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,CA6G5C;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kEAAkE;IAClE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IAC1D,MAAM,EAAE,cAAc,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,mBAAmB,GAAG,kBAAkB,CAiH/F"}
1
+ {"version":3,"file":"odpBootstrap.d.ts","sourceRoot":"","sources":["../src/odpBootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI3C,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,MAAM,WAAW,MAAM;IACrB,sEAAsE;IACtE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,6DAA6D;IAC7D,kBAAkB,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACxC,+EAA+E;IAC/E,SAAS,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAC/B,uEAAuE;IACvE,WAAW,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACjC,4EAA4E;IAC5E,eAAe,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvD,GAAG,EAAE,MAAM,CAAC;IACZ,+EAA+E;IAC/E,CAAC,EAAE,MAAM,CAAC;IACV,0DAA0D;IAC1D,CAAC,EAAE,MAAM,CAAC;IACV,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AA4BD,4EAA4E;AAC5E,wBAAgB,MAAM,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,CAsH5C;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kEAAkE;IAClE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IAC1D,MAAM,EAAE,cAAc,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,mBAAmB,GAAG,kBAAkB,CAiH/F"}
@@ -75,11 +75,16 @@ export function odpFit(tri) {
75
75
  const m = fittedIncrementals[i][j] ?? null;
76
76
  if (!isNum(q) || !isNum(m))
77
77
  continue;
78
- n++;
79
78
  if (m <= 0) {
79
+ // The Pearson residual (q - m)/sqrt(m) is undefined for a non-positive
80
+ // fitted mean, so this cell contributes nothing to `sumSq` — and must
81
+ // therefore not count toward the degrees of freedom that divide it.
82
+ // Counting it would inflate `n - p`, understating phi and with it the
83
+ // process variance, which is the wrong direction for a reserve range.
80
84
  negativeFitted++;
81
85
  continue;
82
86
  }
87
+ n++;
83
88
  const r = (q - m) / Math.sqrt(m);
84
89
  sumSq += r * r;
85
90
  if (Math.abs(r) > 1e-10) {
@@ -96,7 +101,11 @@ export function odpFit(tri) {
96
101
  }
97
102
  const p = 2 * I - 1;
98
103
  if (n <= p) {
99
- throw new ReservingError("TOO_SMALL", `The ODP fit has ${n} observations for ${p} parameters; no degrees of freedom remain`);
104
+ throw new ReservingError("TOO_SMALL", `The ODP fit has ${n} usable residual(s) for ${p} parameters; no degrees of ` +
105
+ `freedom remain to estimate dispersion` +
106
+ (negativeFitted > 0
107
+ ? ` (${negativeFitted} cell(s) were excluded for a non-positive fitted mean)`
108
+ : ""));
100
109
  }
101
110
  const phi = sumSq / (n - p);
102
111
  // Future incremental means from the fitted projection.
@@ -1 +1 @@
1
- {"version":3,"file":"odpBootstrap.js","sourceRoot":"","sources":["../src/odpBootstrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"odpBootstrap.js","sourceRoot":"","sources":["../src/odpBootstrap.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@actuarial-ts/core",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Pure, zero-dependency P&C loss reserving engine for TypeScript: triangles, chain ladder, Mack, Bornhuetter-Ferguson, Benktander, Cape Cod (Gluck decay), Munich chain ladder, Clark growth curves, frequency-severity, Berquist-Sherman, ULAE, discounting, tails, capping/ILF, trend/on-level, diagnostics, and a seeded stochastic layer (ODP bootstrap, Merz-Wuthrich one-year risk) — validated against published actuarial literature.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -15,6 +15,7 @@
15
15
  },
16
16
  "files": [
17
17
  "dist",
18
+ "src",
18
19
  "README.md",
19
20
  "LICENSE",
20
21
  "NOTICE"
@@ -57,6 +58,7 @@
57
58
  "prepack": "tsc -p tsconfig.build.json"
58
59
  },
59
60
  "devDependencies": {
61
+ "@types/node": "^22.10.5",
60
62
  "typescript": "^5.7.3",
61
63
  "vitest": "^3.0.5"
62
64
  },
@@ -0,0 +1,90 @@
1
+ import type { BornhuetterFergusonResult, ChainLadderResult } from "./types.js";
2
+ import { ReservingError } from "./types.js";
3
+
4
+ /**
5
+ * Benktander-Hovinen method (the "iterated Bornhuetter-Ferguson").
6
+ *
7
+ * Ground truth (Mack 2000, "Credible Claims Reserves: The Benktander
8
+ * Method", ASTIN Bulletin 30(2)):
9
+ * - With q = 1 - 1/CDF (the expected unreported/unpaid fraction) and C the
10
+ * losses to date: U_GB = C + q x U_BF — Bornhuetter-Ferguson applied once
11
+ * more, with the BF ultimate as the a-priori.
12
+ * - Equivalently a credibility mixture U_GB = (1-q) x U_CL + q x U_BF with
13
+ * credibility Z = 1-q on the chain ladder: mature periods lean on CL,
14
+ * green periods lean on the a-priori — automatically.
15
+ * - Mack (2000) shows U_GB has a smaller mean squared error than both CL and
16
+ * BF over a wide parameter range; it is the standard "use both" answer.
17
+ *
18
+ * Rows are the BF result's rows (BF excludes origins with no usable
19
+ * premium; those stay excluded here). CDFs below 1 (incurred bases with
20
+ * expected downward development) make q negative — the estimator still
21
+ * evaluates, but it is an extrapolation past the chain ladder rather than a
22
+ * mixture, and the result says so in warnings.
23
+ */
24
+
25
+ export interface BenktanderRow {
26
+ origin: string;
27
+ latestValue: number;
28
+ cdf: number;
29
+ /** Credibility on the chain ladder: Z = 1 - q = 1/CDF. */
30
+ credibilityZ: number;
31
+ clUltimate: number;
32
+ bfUltimate: number;
33
+ ultimate: number;
34
+ unpaid: number;
35
+ }
36
+
37
+ export interface BenktanderResult {
38
+ method: "benktander";
39
+ basis: BornhuetterFergusonResult["basis"];
40
+ rows: BenktanderRow[];
41
+ totals: { latest: number; ultimate: number; unpaid: number };
42
+ warnings: string[];
43
+ }
44
+
45
+ export function runBenktander(
46
+ chainLadder: ChainLadderResult,
47
+ bf: BornhuetterFergusonResult,
48
+ ): BenktanderResult {
49
+ const warnings: string[] = [];
50
+ const clByOrigin = new Map(chainLadder.rows.map((r) => [r.origin, r]));
51
+
52
+ const rows: BenktanderRow[] = bf.rows.map((bfRow) => {
53
+ const cl = clByOrigin.get(bfRow.origin);
54
+ if (!cl) {
55
+ throw new ReservingError(
56
+ "SHAPE",
57
+ `Origin ${bfRow.origin} is in the Bornhuetter-Ferguson result but missing from the chain ladder result; both must come from the same run`,
58
+ );
59
+ }
60
+ const q = 1 - 1 / bfRow.cdf;
61
+ if (q < 0) {
62
+ warnings.push(
63
+ `Origin ${bfRow.origin}: CDF ${bfRow.cdf.toFixed(3)} is below 1, so Benktander extrapolates past the chain ladder rather than blending (expected downward development)`,
64
+ );
65
+ }
66
+ const ultimate = bfRow.latestValue + q * bfRow.ultimate;
67
+ return {
68
+ origin: bfRow.origin,
69
+ latestValue: bfRow.latestValue,
70
+ cdf: bfRow.cdf,
71
+ credibilityZ: 1 - q,
72
+ clUltimate: cl.ultimate,
73
+ bfUltimate: bfRow.ultimate,
74
+ ultimate,
75
+ unpaid: ultimate - bfRow.latestValue,
76
+ };
77
+ });
78
+
79
+ return {
80
+ method: "benktander",
81
+ basis: bf.basis,
82
+ rows,
83
+ totals: {
84
+ latest: rows.reduce((a, r) => a + r.latestValue, 0),
85
+ ultimate: rows.reduce((a, r) => a + r.ultimate, 0),
86
+ unpaid: rows.reduce((a, r) => a + r.unpaid, 0),
87
+ },
88
+ warnings,
89
+ };
90
+ }