Simple claim: every measure change owes a Radon–Nikodym receipt; reweighting without a density card is silent religion. The trench is density cards before reweighting under Clearance.
The problem we left open
The last three posts built a hedge discipline inside one fixed model of the world: a tree, a measure Q, a Δ schedule, an account that reconciles to the mark. The gate that made it work was typing the measure, a physical probability may not enter a pricing expectation, and the discrete drift overlay is a refuse.
That gate assumed something generous: that the two measures were sitting in the system as named objects you could tell apart. In production they usually are not. What happens instead is that somebody applies weights. Scenario weights to stress a book. Importance weights to correct for a sampling design. Reweighting an eval set so it looks more like live. Tilting a simulated path set because the historical drift seemed unrepresentative. None of these announce themselves as changing the probability measure. They announce themselves as data hygiene.
Three production headaches:
- Reweighted estimates whose weights do not sum to what they should, so the "expectation" is not an expectation of anything.
- Weights that zero out regions of the sample, which is not a reweighting at all but a deletion of states, usually of the exact states that matter.
- Two measures in one pipeline with no artifact naming which is which, so the drift-overlay gate from the last post has nothing to check.
So the question for this post is simple. If that is the failure mode, what does a real AI solution look like?
The solution, as one stack
The core idea: there is exactly one legitimate way to change a probability measure, and it comes with a receipt. Pick a nonnegative random variable Z with mean one under your base measure, and define the new measure by weighting with Z. That Z is the Radon-Nikodym derivative dQ/dP, and it is not an implementation detail, it is the entire content of the change. Every reweighting in a pipeline is either an instance of this with a Z you can produce, or it is an unlogged edit to the world. Five moves, one stack.
1. Require a Z, and require E^P[Z] = 1. The construction states completely: Z ≥ 0, E^P[Z] = 1, and Q(A) = E^P[Z·1_A]. The unit-mean condition is what makes Q a probability rather than a positive measure of arbitrary total mass. It is also the cheapest bug to check and the one most often skipped, because in code the weights arrive as an array and nothing forces a sum. DENSITY_NOT_NORMALIZED should be a startup assertion, not a post-mortem finding.
2. Change expectations by the identity, not by intuition. Once Z exists, every expectation under the new measure is computable under the old one: E^Q[X] = E^P[X·Z]. That lets a harness recompute any Q-claim from P-data and check the number. If a team can produce a reweighted result but cannot reproduce it through this identity, they did something else and called it reweighting.
3. Check equivalence. Z strictly positive where P lives. This is the gate nobody writes. If Z is zero on some region, Q assigns that region no probability at all: you have not tilted the world, you have deleted part of it. And the deleted part is rarely random. It is the tail, the illiquid regime, the co-break week, the scenario the weighting scheme found "unrepresentative." A change of measure worthy of the name is equivalent to the base, the two agree on what is possible and disagree only on how likely. SUPPORT_VIOLATION catches the most consequential reweighting failures in the stack.
4. Track the density as a process, not a scalar. When information arrives over time, the right object is Z_t = E^P[Z | F_t]. That process is a P-martingale by construction, which makes it monitorable exactly like the discounted wealth of the last post: it should not drift, and a computed density path that does drift is a bug rather than a discovery. The same object also fixes conditional expectations, which require dividing by Z_t under a change of measure. Skipping that division produces conditional forecasts that are neither P nor Q.
5. Attach the card, and post the effective sample size. The card names the base measure, the target measure, the density and its derivation, the normalization check, the support check, and, for finite samples, the effective sample size. That last field is the practical one. A technically valid Z that concentrates its mass on a handful of draws produces an estimate with the variance of a much smaller sample, and it will look confident. A density card without an ESS is how a five-point estimate gets reported with a thousand-point interval.
Put together: explicit Z, unit mean, expectation identity, positivity and equivalence, density as a martingale process, and a card carrying ESS. That is the measure-change discipline. Reweighting stays available, it is genuinely one of the most useful operations in the stack. It just cannot happen anonymously.
The example: CEH-001's two coins, written as one density
Go back to the binomial world where the wrong-coin failure lived. Up factor 1.1, down 0.9, r = 0.05. The physical up probability is p = 0.80; the risk-neutral one is q = 0.75. Two posts ago those were two numbers a service could confuse. Now write the object that connects them.
Z is the ratio of the two measures, state by state. In the up state, Z_up = 0.75/0.80 = 0.9375. In the down state, Z_down = 0.25/0.20 = 1.25.
Normalization: E^P[Z] = 0.80 × 0.9375 + 0.20 × 1.25 = 1.00. ✓ Positivity: both values strictly positive, so no state has been deleted and the two measures agree completely about what can happen. ✓
Now the identity, on the call that pays 10 up and 0 down. Under Q directly: E^Q[X] = 0.75 × 10 = 7.50. Through the density from P-data: E^P[X·Z] = 0.80 × 10 × 0.9375 = 7.50. Same number, and the second route never used q at all. Discount by 1.05 and you get 7.14, the replication cost from three posts ago.
That tiny table is the whole lecture made concrete. The risk-neutral measure is not a separate belief system bolted onto the model. It is the physical measure multiplied by a density that shifts weight off the up state and onto the down state by exactly enough to remove the risk premium, a 6.25% cut and a 25% increase, sizable numbers that were previously invisible because they lived in the gap between two decimals.
Once the density is an artifact, the earlier gate has something to bite on. A drift overlay becomes detectable as a composition: someone applied a Z, then applied another, and the product does not equal the declared dQ/dP. That is a comparison a machine can run.
The same card belongs on the reweightings that do not look like finance at all. When a scenario set for CEH-001 gets tilted toward "current regime," the tilt is a Z. It needs a mean-one check, a positivity check, and an ESS. If the tilt puts near-zero weight on the weeks where the spread frame and the curve frame diverged most, then the reweighted study has quietly removed the disagreement rather than resolved it, and the resulting mark will land somewhere comfortable and central, which is to say near 1.80. That is the mechanism by which a denied midpoint arrives wearing a methodology. CEH-001's spread frame near 1.50 and curve frame near 2.10 disagree because of the states a convenience reweighting is most tempted to downweight. Requiring the density card makes the deletion visible before the mark moves.
The flow in one breath
Problem: production changes probability measures constantly, under names like scenario weights and importance weights, with no object recording that a change occurred. Solution: demand an explicit density Z with unit mean, compute Q-expectations through E^P[X·Z] so results are reproducible, refuse densities that zero out states, track the density as a P-martingale process when information is arriving, and attach a card carrying the base measure, target measure, checks, and effective sample size. Example: CEH-001's P and Q differ by Z = (0.9375, 1.25), which normalizes to one, reprices the call to the same 7.50 undiscounted, and exposes any second, undeclared tilt as a product that fails to match.
Curious how others audit reweighting steps that nobody thinks of as measure changes, and whether their scenario-weighting code has ever been caught assigning zero to the regime the study was supposed to be about.
Clearance coupling. Reweighting paths without density_card (Radon–Nikodym recipe, support conditions) is refuse. Measure change is a rights object, not a notebook cell.
Book couple. Measure/hedge chapters own the math; harness owns the card check before any risk-neutral spend.