# Utility analysis: the math, the conventions, and the evidence

This file documents the calculations behind the two streams, the scenario conventions, the lay
translations used in the document body, and the evidence basis for the softer defaults. It is
the reference a reviewer should be able to check the engine against.

## 1. Performance value (Brogden-Cronbach-Gleser, incremental form)

```
performance_value = N * delta_r * SD_y * Z_x * T
delta_r = max(0, R_proposed - R_current)
SD_y    = 0.40 * salary
```

### The selection intensity term Z_x

Z_x is the mean standardised predictor score of the people who are selected, given a selection
ratio SR (the fraction of applicants or candidates chosen). For a normal predictor:

```
c   = the cutoff such that P(Z > c) = SR        (c = inverse-normal-CDF(1 - SR))
Z_x = phi(c) / SR                                (phi = standard normal density)
```

The engine computes this **exactly** for any SR using an inverse-normal-CDF approximation
(Acklam) and the normal density, rather than a lookup table. Worked values:

| SR | c | Z_x |
|---|---|---|
| 0.10 | 1.2816 | 1.755 |
| 0.15 | 1.0364 | 1.554 |
| 0.20 | 0.8416 | 1.400 |
| 0.30 | 0.5244 | 1.159 |
| 0.50 | 0.0000 | 0.798 |

A more selective process (smaller SR) yields a higher Z_x: when you choose fewer people, the
average quality of those chosen is higher, so a valid predictor is worth more per decision.

### Why undiscounted (no NPV)

The performance value spans the tenure T of one year's selected cohort. A net present value
adjustment would discount the later years. We deliberately do **not** apply one: it adds a
discount-rate assumption and complexity for a modest change in the figure, and the framing
(one year of decisions, valued over tenure, against one year of cost) is stated plainly so the
basis is transparent. The methodology section of every document records that figures are
undiscounted.

### Horizon and the benefit-cost ratio

The headline ratio compares the lifetime value of one year's decisions to one year of program
cost:

```
benefit_cost_ratio = total_value / annual_budget
```

This is an honest apples-to-apples comparison (the cost of assessing one cohort against the
value that cohort produces over its tenure), provided the wording makes the horizon explicit,
which the document does. Note that because the numerator spans several years and the
denominator is a single year, ratios are naturally large; this is a known property of
selection utility analysis, not an error. The conservative levers (incremental validity, flat
0.40 SD_y, capped validity) keep the estimate grounded.

## 2. Retention value

```
expected_departures = N * (1 - (1 - VTR)^T)
retention_value     = expected_departures * reduction_fraction * cost_per_departure
```

`expected_departures` is the expected number of voluntary leavers from one cohort of N over
its tenure T, using a survival approximation that is bounded by N (you cannot lose more than
the whole cohort). The model counts only first-order departures (it does not chain in
replacements' departures), which keeps it conservative.

### Evidence basis for the turnover-reduction band (5% / 10% / 15%)

This is the softest parameter, so it is deliberately modest and is what the scenarios flex. The
direction and rough magnitude are supported by the turnover literature:

- Meta-analytic work on the antecedents of voluntary turnover shows job attitudes and fit are
  consistent, if moderate, predictors of who leaves (Griffeth, Hom, and Gaertner, 2000).
- Person-job and person-organisation fit are meta-analytically linked to lower intention to
  quit and lower actual turnover (Kristof-Brown, Zimmerman, and Johnson, 2005).
- Realistic, accurate information at the point of selection reduces subsequent turnover
  (realistic job preview meta-analyses, for example Phillips, 1998).

We do not claim a precise meta-analytic percentage. Instead we treat a 5% to 15% relative
reduction in voluntary turnover among the assessment-selected population as a conservative,
plausible band, flexed across the three scenarios, and we flag it in the document as the
softest assumption.

### Evidence basis for the cost-per-departure default (0.50 x salary)

When the user does not supply a figure, the model defaults to half of annual salary per
voluntary departure. Commonly cited total replacement costs (recruiting, vacancy, onboarding,
and ramp to full productivity) range widely, often from roughly one half to two times salary
depending on role seniority and specialisation (for example SHRM and related practitioner
estimates). Half of salary is at the low, conservative end and is overridable with the
client's own cost-per-hire or replacement-cost figure.

## 3. Scenario conventions

| Lever | Conservative | Expected | Strong | Held constant |
|---|---|---|---|---|
| Proposed battery validity | x 0.85 | x 1.00 | x 1.10 (cap 0.60) | |
| Turnover reduction | 5% | 10% | 15% | |
| R_current | | point estimate | | yes, all scenarios |
| SD_y | | 0.40 of salary | | yes, all scenarios |
| Selection ratio | | user input | | yes, all scenarios |

Rationale: each stream has exactly one genuine source of uncertainty, and only that lever
moves. Flexing SD_y or the selection ratio as well would compound assumptions and inflate the
spread. The validity band of 0.85 to 1.10 reflects a sensible credibility interval around a
meta-analytic point estimate and keeps the Strong case believable relative to Expected. With
incremental validity the band lands on delta_r after R_current is subtracted, so the spread on
value is somewhat wider than 0.85 to 1.10, which is the honest result.

## 4. Lay translations (for the body, relative to the CURRENT process)

The body never prints a validity coefficient. It translates the gain into plain language,
always relative to the organization's own current process (not relative to chance):

### Top-performer multiplier

Using a top-quartile performance criterion (base rate 0.25) and a linear Taylor-Russell style
approximation:

```
lifted_rate(R) = clamp(0.25 + R * Z_x * 0.25, 0, 1)
top_performer_multiplier = lifted_rate(R_proposed) / lifted_rate(R_current)
```

Reported as, for example, "expected to surface strong performers at roughly 1.3 times the rate
of the current process." This is the single concrete lay metric in the body.

### Decision-quality lift (engine output, NOT shown in the body)

```
decision_quality_lift = (R_proposed - R_current) / R_current
```

The engine computes this, but the body does **not** print it, because against a weak baseline
(an unstructured interview at r = 0.19) the relative figure is large and reads as overclaiming.
The qualitative benefit ("fewer regretted hires and promotions") is used instead.

## 5. Validity combination

See validity_coefficients.md. Multiple methods combine with a uniform 0.2 intercorrelation via
the multiple-R formula and a 0.60 cap, applied separately to the current process and the
proposed battery.

## 6. Worked check (single segment)

Inputs: N = 50, salary = 80,000, SR = 0.20, T = 3, VTR = 0.15, budget = 150,000,
current = unstructured interview + job experience, proposed = structured interview + cognitive
+ conscientiousness (contextualized).

- R_current ~ 0.193, R_proposed ~ 0.497, delta_r ~ 0.304 (Expected)
- SD_y = 0.40 x 80,000 = 32,000; Z_x(0.20) = 1.400
- Performance (Expected) = 50 x 0.304 x 32,000 x 1.400 x 3 ~ 2.045m
- expected_departures = 50 x (1 - 0.85^3) ~ 19.3; retention (Expected) = 19.3 x 0.10 x 40,000 ~ 77k
- Total (Expected) ~ 2.12m; benefit-cost ratio ~ 14.1x
- Conservative to Strong total ~ 1.58m to 2.49m

These match the engine output and the rendered sample document.
