@actuarial-ts/compliance 0.1.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 +2 -2
- package/dist/bundle.d.ts +114 -38
- package/dist/bundle.d.ts.map +1 -1
- package/dist/bundle.js +114 -124
- package/dist/bundle.js.map +1 -1
- package/dist/disclosure.d.ts +8 -0
- package/dist/disclosure.d.ts.map +1 -1
- package/dist/disclosure.js +109 -9
- package/dist/disclosure.js.map +1 -1
- package/package.json +5 -2
- package/src/ave.ts +132 -0
- package/src/bundle.ts +341 -0
- package/src/disclosure.ts +423 -0
- package/src/index.ts +6 -0
- package/src/ledger.ts +140 -0
- package/src/metadata.ts +189 -0
- package/src/modelCards.ts +531 -0
package/dist/disclosure.js
CHANGED
|
@@ -30,12 +30,41 @@ function describeBasis(b) {
|
|
|
30
30
|
}[b.laeTreatment];
|
|
31
31
|
return `${gross}, ${lae}`;
|
|
32
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Neutralizes document-sourced free text before it is interpolated into the
|
|
35
|
+
* disclosure. Ledger rationales and sources, crosscheck warnings and data
|
|
36
|
+
* review details all originate in DOCUMENTS — and a study's narrative flows
|
|
37
|
+
* into the ledger source with no human edit box in between (the promotion
|
|
38
|
+
* chain writes sourceRef verbatim). Unescaped, a crafted value breaks out of
|
|
39
|
+
* its context and renders as body prose: the demonstrated attack fabricated
|
|
40
|
+
* a certification paragraph in an ASOP 41 disclosure.
|
|
41
|
+
*
|
|
42
|
+
* Division of labour, so nothing is escaped twice: this helper neutralizes
|
|
43
|
+
* CONTENT constructs — backticks (code spans), `<` (raw HTML), newlines
|
|
44
|
+
* (paragraph/bullet breaks) — at the sites where document text is
|
|
45
|
+
* interpolated. mdTable below owns the TABLE-structural escape (pipes) for
|
|
46
|
+
* every cell. Deliberately not a markdown stripper: bold or italics in a
|
|
47
|
+
* rationale render harmlessly inline; only constructs that change document
|
|
48
|
+
* structure are neutralized.
|
|
49
|
+
*/
|
|
50
|
+
function renderUntrusted(text) {
|
|
51
|
+
return text
|
|
52
|
+
.replace(/`/g, "\\`")
|
|
53
|
+
.replace(/</g, "<")
|
|
54
|
+
.replace(/\r?\n/g, " ");
|
|
55
|
+
}
|
|
33
56
|
function mdTable(header, rows) {
|
|
57
|
+
// Structural escaping for EVERY cell, trusted or not: a pipe or newline in
|
|
58
|
+
// any cell breaks the table for every cell after it. GFM renders \| as a
|
|
59
|
+
// literal pipe, including inside code spans, so code-span cells built from
|
|
60
|
+
// canonicalJson survive intact. Pipes are escaped HERE and only here;
|
|
61
|
+
// renderUntrusted never touches them, so nothing double-escapes.
|
|
62
|
+
const cell = (value) => value.replace(/\|/g, "\\|").replace(/\r?\n/g, " ");
|
|
34
63
|
const out = [];
|
|
35
64
|
out.push(`| ${header.join(" | ")} |`);
|
|
36
65
|
out.push(`|${header.map(() => "---").join("|")}|`);
|
|
37
66
|
for (const r of rows)
|
|
38
|
-
out.push(`| ${r.join(" | ")} |`);
|
|
67
|
+
out.push(`| ${r.map(cell).join(" | ")} |`);
|
|
39
68
|
return out;
|
|
40
69
|
}
|
|
41
70
|
function parameterLines(parameters) {
|
|
@@ -44,6 +73,24 @@ function parameterLines(parameters) {
|
|
|
44
73
|
const json = canonicalJson(parameters);
|
|
45
74
|
return json.length > 400 ? `${json.slice(0, 400)}… (truncated; full value in the reproducibility bundle)` : json;
|
|
46
75
|
}
|
|
76
|
+
/** REQUIRED Section 4b boilerplate — verbatim per interchange spec section 5. */
|
|
77
|
+
const CROSS_IMPLEMENTATION_BOILERPLATE = "Agreement between independent implementations supports, but does not by itself constitute, the model validation contemplated by ASOP No. 56; model appropriateness to the book remains a separate professional judgment.";
|
|
78
|
+
/** Relative deviations/tolerances render in scientific notation (they live at 1e-9…1e-2 scale). */
|
|
79
|
+
const fmtDeviation = (v) => v === null ? "—" : v === 0 ? "0" : v.toExponential(2);
|
|
80
|
+
function maxAbsDeviation(report, pick) {
|
|
81
|
+
const cells = [...report.deviations.perOrigin, report.deviations.totals];
|
|
82
|
+
const values = cells.flatMap((cell) => pick(cell).filter((v) => v !== null).map(Math.abs));
|
|
83
|
+
return values.length === 0 ? null : Math.max(...values);
|
|
84
|
+
}
|
|
85
|
+
const engineLabel = (e) => `${e.name} v${e.version}`;
|
|
86
|
+
/**
|
|
87
|
+
* `verified-by-value` renders as exactly "verified by value (no independent
|
|
88
|
+
* recomputation)" — spec 5: the disclosure must not overstate what was
|
|
89
|
+
* checked when the selection was value-only.
|
|
90
|
+
*/
|
|
91
|
+
function verdictLabel(verdict) {
|
|
92
|
+
return verdict === "verified-by-value" ? "verified by value (no independent recomputation)" : verdict;
|
|
93
|
+
}
|
|
47
94
|
/** Renders the ASOP 41-oriented methods-assumptions-and-data appendix. */
|
|
48
95
|
export function generateDisclosure(input) {
|
|
49
96
|
const L = [];
|
|
@@ -89,7 +136,8 @@ export function generateDisclosure(input) {
|
|
|
89
136
|
c.id,
|
|
90
137
|
c.description,
|
|
91
138
|
c.status.toUpperCase(),
|
|
92
|
-
|
|
139
|
+
// The <br> is OURS (one cell, many findings); the details are NOT.
|
|
140
|
+
c.details.length === 0 ? "none" : c.details.map(renderUntrusted).join("<br>"),
|
|
93
141
|
])));
|
|
94
142
|
}
|
|
95
143
|
else {
|
|
@@ -126,6 +174,47 @@ export function generateDisclosure(input) {
|
|
|
126
174
|
}
|
|
127
175
|
L.push("");
|
|
128
176
|
}
|
|
177
|
+
// 4b. Cross-implementation verification (interchange spec 5) — rendered
|
|
178
|
+
// only when referee reports were actually provided.
|
|
179
|
+
if (input.crossImplementation !== undefined && input.crossImplementation.length > 0) {
|
|
180
|
+
L.push("## 4b. Cross-implementation verification");
|
|
181
|
+
L.push("");
|
|
182
|
+
L.push("The computations were cross-checked against independent implementations via the actuarial-interchange referee. Each row is one referee report (relative deviations; SE = standard error):");
|
|
183
|
+
L.push("");
|
|
184
|
+
L.push(...mdTable([
|
|
185
|
+
"Engine A",
|
|
186
|
+
"Engine B",
|
|
187
|
+
"Profile",
|
|
188
|
+
"Max deviation (central)",
|
|
189
|
+
"Max deviation (SE)",
|
|
190
|
+
"Tolerance (central / SE)",
|
|
191
|
+
"Verdict",
|
|
192
|
+
], input.crossImplementation.map((doc) => {
|
|
193
|
+
const r = doc.report;
|
|
194
|
+
return [
|
|
195
|
+
engineLabel(r.engines.a),
|
|
196
|
+
engineLabel(r.engines.b),
|
|
197
|
+
r.engines.a.conventionProfile ?? r.engines.b.conventionProfile ?? "—",
|
|
198
|
+
fmtDeviation(maxAbsDeviation(r, (cell) => [cell.ultimate, cell.unpaid])),
|
|
199
|
+
fmtDeviation(maxAbsDeviation(r, (cell) => [cell.standardError])),
|
|
200
|
+
`${fmtDeviation(r.tolerance.central)} / ${fmtDeviation(r.tolerance.standardError)}`,
|
|
201
|
+
verdictLabel(r.verdict),
|
|
202
|
+
];
|
|
203
|
+
})));
|
|
204
|
+
for (const doc of input.crossImplementation) {
|
|
205
|
+
const r = doc.report;
|
|
206
|
+
if (r.warnings.length === 0)
|
|
207
|
+
continue;
|
|
208
|
+
L.push("");
|
|
209
|
+
L.push(`**Warnings — ${engineLabel(r.engines.a)} vs ${engineLabel(r.engines.b)}:**`);
|
|
210
|
+
L.push("");
|
|
211
|
+
for (const w of r.warnings)
|
|
212
|
+
L.push(`- ${renderUntrusted(w)}`);
|
|
213
|
+
}
|
|
214
|
+
L.push("");
|
|
215
|
+
L.push(CROSS_IMPLEMENTATION_BOILERPLATE);
|
|
216
|
+
L.push("");
|
|
217
|
+
}
|
|
129
218
|
// 5. Assumptions and judgments.
|
|
130
219
|
L.push("## 5. Assumptions and judgments");
|
|
131
220
|
L.push("");
|
|
@@ -138,7 +227,12 @@ export function generateDisclosure(input) {
|
|
|
138
227
|
e.actor,
|
|
139
228
|
e.field,
|
|
140
229
|
`\`${canonicalJson(e.value)}\``,
|
|
141
|
-
[
|
|
230
|
+
[
|
|
231
|
+
e.rationale === undefined ? "" : renderUntrusted(e.rationale),
|
|
232
|
+
e.source ? `(source: ${renderUntrusted(e.source)})` : "",
|
|
233
|
+
]
|
|
234
|
+
.filter(Boolean)
|
|
235
|
+
.join(" ") || "—",
|
|
142
236
|
])));
|
|
143
237
|
}
|
|
144
238
|
else {
|
|
@@ -192,12 +286,18 @@ export function generateDisclosure(input) {
|
|
|
192
286
|
// 8. Reproducibility.
|
|
193
287
|
L.push("## 8. Reproducibility");
|
|
194
288
|
L.push("");
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
289
|
+
// The tag covers the WHOLE disclosed input, not a subset. It previously
|
|
290
|
+
// hashed only metadata/methods/ledger, so fabricating the entire data-review
|
|
291
|
+
// section or swapping the named preparer did not move it — while this
|
|
292
|
+
// sentence presented it as certifying the document. Excluded on purpose:
|
|
293
|
+
// generatedAt (a timestamp is not content) and sdkVersion (stated in clear
|
|
294
|
+
// text beside the tag, so a reader checks it directly).
|
|
295
|
+
const { generatedAt: _generatedAt, sdkVersion: _sdkVersion, ...disclosed } = input;
|
|
296
|
+
// canonicalJson refuses undefined on purpose; an absent section and an
|
|
297
|
+
// explicitly-undefined one are the same disclosure, so both hash identically.
|
|
298
|
+
const hashable = Object.fromEntries(Object.entries(disclosed).filter(([, value]) => value !== undefined));
|
|
299
|
+
const inputHash = fnv1a64(canonicalJson({ ...hashable, ledger: input.ledger ?? null }));
|
|
300
|
+
L.push(`This disclosure derives deterministically from its inputs (integrity tag \`${inputHash}\` over every disclosed section, actuarial-ts v${input.sdkVersion}). Rerunning the same inputs on the same SDK version reproduces the analysis and this document byte for byte; pair with a reproducibility bundle for auditor/examiner requests under ASOP No. 21.`);
|
|
201
301
|
L.push("");
|
|
202
302
|
return L.join("\n");
|
|
203
303
|
}
|
package/dist/disclosure.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disclosure.js","sourceRoot":"","sources":["../src/disclosure.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"disclosure.js","sourceRoot":"","sources":["../src/disclosure.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@actuarial-ts/compliance",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "ASOP-compliance-support layer for the actuarial-ts SDK: estimate metadata, assumption ledger, ASOP 41 disclosure generation, ASOP 56 model cards, reproducibility bundles, and actual-vs-expected roll-forward. Responsibility for compliance remains with the credentialed actuary.",
|
|
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"
|
|
@@ -45,9 +46,11 @@
|
|
|
45
46
|
"prepack": "tsc -p tsconfig.build.json"
|
|
46
47
|
},
|
|
47
48
|
"dependencies": {
|
|
48
|
-
"@actuarial-ts/core": "^0.
|
|
49
|
+
"@actuarial-ts/core": "^0.3.0",
|
|
50
|
+
"@actuarial-ts/interchange": "^0.3.0"
|
|
49
51
|
},
|
|
50
52
|
"devDependencies": {
|
|
53
|
+
"@types/node": "^22.10.5",
|
|
51
54
|
"typescript": "^5.7.3",
|
|
52
55
|
"vitest": "^3.0.5"
|
|
53
56
|
},
|
package/src/ave.ts
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Actual-vs-expected roll-forward: the back-test that asks "did losses emerge
|
|
3
|
+
* between the prior and current valuations the way the prior analysis
|
|
4
|
+
* expected?" — the standard bridge exhibit for the ASOP 41 changes-from-prior
|
|
5
|
+
* discussion and for judging whether prior assumptions still hold (ASOP 43).
|
|
6
|
+
*
|
|
7
|
+
* Ground truth (per origin):
|
|
8
|
+
* - expectedEmergence = priorUltimate x (expectedPercentAtCurrent - expectedPercentAtPrior)
|
|
9
|
+
* - actualEmergence = currentLatest - priorLatest
|
|
10
|
+
* - difference = actualEmergence - expectedEmergence (positive = worse
|
|
11
|
+
* than expected on a loss basis)
|
|
12
|
+
* - ratio = actualEmergence / expectedEmergence, and null — never
|
|
13
|
+
* NaN or Infinity — when expectedEmergence is 0, matching core's
|
|
14
|
+
* null-safety philosophy (no factor, not an exception).
|
|
15
|
+
* - totals sum the rows; the total ratio follows the same null rule.
|
|
16
|
+
* - Suspicious inputs produce WARNINGS, not errors: a development pattern
|
|
17
|
+
* that goes backwards (expectedPercentAtCurrent < expectedPercentAtPrior)
|
|
18
|
+
* or a percent outside [0, 1.05] is reportable, but the arithmetic is still
|
|
19
|
+
* well-defined and the actuary decides what it means. (Slightly above 1 is
|
|
20
|
+
* legitimate: paid patterns can overshoot ultimate before salvage/subro.)
|
|
21
|
+
*
|
|
22
|
+
* Errors follow the package's ComplianceError style (see bundle.ts):
|
|
23
|
+
* `percentDevelopedFromCdfs` throws BAD_CDF on a non-positive or non-finite
|
|
24
|
+
* CDF because no percent-developed interpretation exists for it.
|
|
25
|
+
*
|
|
26
|
+
* These utilities are designed to support the actuary's compliance with
|
|
27
|
+
* ASOP Nos. 41 and 43; responsibility for compliance remains with the
|
|
28
|
+
* credentialed actuary.
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
import { ComplianceError } from "./bundle.js";
|
|
32
|
+
|
|
33
|
+
export interface AveInputRow {
|
|
34
|
+
/** Origin period label (e.g. "2021"). */
|
|
35
|
+
origin: string;
|
|
36
|
+
/** The prior analysis's selected ultimate for this origin. */
|
|
37
|
+
priorUltimate: number;
|
|
38
|
+
/** Latest observed value (paid or incurred, matching the pattern basis) at the prior valuation. */
|
|
39
|
+
priorLatest: number;
|
|
40
|
+
/** Latest observed value at the current valuation, same basis as priorLatest. */
|
|
41
|
+
currentLatest: number;
|
|
42
|
+
/** Prior analysis's expected percent developed at the prior valuation age (fraction). */
|
|
43
|
+
expectedPercentAtPrior: number;
|
|
44
|
+
/** Prior analysis's expected percent developed at the current valuation age (fraction). */
|
|
45
|
+
expectedPercentAtCurrent: number;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export interface AveResultRow {
|
|
49
|
+
origin: string;
|
|
50
|
+
expectedEmergence: number;
|
|
51
|
+
actualEmergence: number;
|
|
52
|
+
/** actualEmergence - expectedEmergence. */
|
|
53
|
+
difference: number;
|
|
54
|
+
/** actualEmergence / expectedEmergence; null when expectedEmergence is 0. */
|
|
55
|
+
ratio: number | null;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export interface AveRollForwardResult {
|
|
59
|
+
rows: AveResultRow[];
|
|
60
|
+
totals: {
|
|
61
|
+
expectedEmergence: number;
|
|
62
|
+
actualEmergence: number;
|
|
63
|
+
difference: number;
|
|
64
|
+
/** Total actual / total expected; null when total expected is 0. */
|
|
65
|
+
ratio: number | null;
|
|
66
|
+
};
|
|
67
|
+
warnings: string[];
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/** Percents above this are flagged (slightly above 1 is legitimate; see doc block). */
|
|
71
|
+
const PERCENT_MAX = 1.05;
|
|
72
|
+
|
|
73
|
+
/** Rolls the prior analysis forward and compares expected to actual emergence per origin. */
|
|
74
|
+
export function aveRollForward(rows: AveInputRow[]): AveRollForwardResult {
|
|
75
|
+
const outRows: AveResultRow[] = [];
|
|
76
|
+
const warnings: string[] = [];
|
|
77
|
+
let totalExpected = 0;
|
|
78
|
+
let totalActual = 0;
|
|
79
|
+
|
|
80
|
+
for (const row of rows) {
|
|
81
|
+
const pctPrior = row.expectedPercentAtPrior;
|
|
82
|
+
const pctCurrent = row.expectedPercentAtCurrent;
|
|
83
|
+
if (pctCurrent < pctPrior) {
|
|
84
|
+
warnings.push(
|
|
85
|
+
`origin ${row.origin}: pattern goes backwards (expectedPercentAtCurrent ${pctCurrent} < expectedPercentAtPrior ${pctPrior})`,
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
for (const [name, pct] of [
|
|
89
|
+
["expectedPercentAtPrior", pctPrior],
|
|
90
|
+
["expectedPercentAtCurrent", pctCurrent],
|
|
91
|
+
] as const) {
|
|
92
|
+
if (pct < 0 || pct > PERCENT_MAX) {
|
|
93
|
+
warnings.push(`origin ${row.origin}: ${name} ${pct} outside [0, ${PERCENT_MAX}]`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const expectedEmergence = row.priorUltimate * (pctCurrent - pctPrior);
|
|
98
|
+
const actualEmergence = row.currentLatest - row.priorLatest;
|
|
99
|
+
const difference = actualEmergence - expectedEmergence;
|
|
100
|
+
const ratio = expectedEmergence === 0 ? null : actualEmergence / expectedEmergence;
|
|
101
|
+
outRows.push({ origin: row.origin, expectedEmergence, actualEmergence, difference, ratio });
|
|
102
|
+
totalExpected += expectedEmergence;
|
|
103
|
+
totalActual += actualEmergence;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
return {
|
|
107
|
+
rows: outRows,
|
|
108
|
+
totals: {
|
|
109
|
+
expectedEmergence: totalExpected,
|
|
110
|
+
actualEmergence: totalActual,
|
|
111
|
+
difference: totalActual - totalExpected,
|
|
112
|
+
ratio: totalExpected === 0 ? null : totalActual / totalExpected,
|
|
113
|
+
},
|
|
114
|
+
warnings,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Percent developed per age from a CDF vector: percent[j] = 1 / cdfs[j]
|
|
120
|
+
* (cdfs[j] = cumulative factor from ages[j] to ultimate, tail included, per
|
|
121
|
+
* core's ChainLadderResult convention). Convenience for pattern-based callers
|
|
122
|
+
* building aveRollForward inputs. Throws ComplianceError("BAD_CDF") on a
|
|
123
|
+
* non-positive or non-finite CDF.
|
|
124
|
+
*/
|
|
125
|
+
export function percentDevelopedFromCdfs(cdfs: number[]): number[] {
|
|
126
|
+
return cdfs.map((cdf, index) => {
|
|
127
|
+
if (!Number.isFinite(cdf) || cdf <= 0) {
|
|
128
|
+
throw new ComplianceError("BAD_CDF", `cdf at index ${index} is ${cdf}; every CDF must be a finite number > 0`);
|
|
129
|
+
}
|
|
130
|
+
return 1 / cdf;
|
|
131
|
+
});
|
|
132
|
+
}
|