Bayesian NAV Updating w/ Kalman Filters
Updating quarterly marks via .
10/5/2025
Valuation is not a verdict; it is a belief with receipts. Bayesian updating turns scraps of quarter-to-date evidence into a living, probabilistic estimate of NAV. The math is compact; the philosophy is wide: confidence with a dial. Laplace called probability "common sense reduced to calculation." Tetlock reminded us that "beliefs are hypotheses to be tested, not treasures to be guarded."
This post builds a model step by step. Each step adds one idea and shows how it changes the posterior and the decisions you might take. Think "from toy to tool":
- simple normal update,
- many signals,
- sequential updates,
- better priors,
- robust likelihoods,
- a small state-space model,
- cross-fund pooling,
- decisions and diagnostics.
TL;DR
- Model the quarter-end return as a hidden variable.
- Combine a prior (manager, macro) with the likelihood of partial signals.
- Interpret the posterior as a belief to act on, then test and recalibrate.
Ten-second intuition
Bayes updates beliefs:
- The prior encodes what you believed before you saw this quarter.
- The likelihood says how probable the data would be if the true return were .
- The posterior blends the two, with the balance set by comparative uncertainty.
A tighter prior (more certain) moves less; a cleaner signal (less noisy) moves you more. This is the same engine behind weather nowcasting, sensor fusion, and Black-Litterman portfolio updates.
Interactive — Prior vs Posterior (one latent). Use the sliders to change the prior mean and standard deviation. Watch how the posterior curve shifts and tightens as the signal gets cleaner. Treat prior sd as your "confidence dial": narrow = dogmatic, wide = humble.
Play with prior confidence
Prior standard deviation s0 (%, on quarterly r)
Posterior combines the prior with active signals. Narrower priors move less; stronger data move more.
Setup and notation
Let be NAV at quarter end . Define quarterly log return
We use log returns because they add across time: if monthly logs are , then . That makes sequential updating algebraic instead of acrobatic.
During the quarter, partial evidence trickles in:
- exact or near-final month 1,
- provisional month 2,
- proxies for month 3 (sector ETFs, macro surprises, peer marks).
Our task: infer continuously and map it into a distribution for .
NAV mapping. If , then is lognormal with
The minimal model: one latent, one signal
Start with one belief, one clue.
- Prior:
- Signal:
Posterior:
This is a precision-weighted average. Intuition: if the signal is twice as precise (half the variance) as the prior, it gets twice the weight.
Common pitfalls.
- Do not double-count the same piece of information via multiple "signals".
- Keep units straight: work in logs when you add over months, and convert to percents only for display.
Interactive — Signals and posterior (start simple). Set one signal equal to a clean month-1 return, vary its sd, and watch the posterior mean migrate toward while the band tightens.
Signals
NAV: E[V] ≈ 101.45 | median ≈ 101.45 | 5–95% ≈ [100.43, 102.49]
Multi-signal extension (conjugate Normal)
Now allow many clues that linearly load on :
Stack in matrix form: with and , . The posterior remains Normal:
Why this matters. Different proxies carry different units and cleanliness. A sector ETF with and small will move beliefs more than a noisy peer print with .
NAV expectation.
Interactive — Multiple signals. Toggle , , , and to see how weights reallocate when you add or remove evidence. The implied NAV band updates in place.
Signals
NAV: E[V] ≈ 101.45 | median ≈ 101.45 | 5–95% ≈ [100.43, 102.49]
Sequential updating through the quarter
Evidence arrives in order, but conjugate Normal updates commute: updating with then yields the same posterior as updating once with together. That lets you treat the quarter as a loop:
- T1 (after month 1): prior updated by gives
- T2: update by to
- T3: add proxies for month 3
- T4: final mark collapses uncertainty
Order-invariance proof sketch. With independent Gaussian signals, posteriors multiply and the product of Gaussians is Gaussian; multiplication is commutative, so the update order does not matter.
Interactive — Timeline scrubber. Scrub T1 to T4 and see the band narrow. The badges report posterior mean and sd at each stage.
Sequential updates
As you move from T1 to T4, evidence accumulates and the distribution tightens. T4 can be modeled as an almost-exact observation.
| Stage | Mean r (%) | SD r (%) |
|---|---|---|
| T1 | 1.79 | 0.89 |
| T2 | 1.50 | 0.63 |
| T3 | 1.44 | 0.61 |
| T4 | 1.44 | 0.61 |
Constructing the prior: reputation and regime
A good prior is earned, not guessed.
Reputation as pseudo-data. Suppose a manager has track record mean and variance over quarters. Use an effective sample size to discount for drift or luck. Then
Regime priors. Add macro features with a ridge prior on coefficients:
This is just regularized regression; Black-Litterman is a portfolio-size cousin.
Interactive — Prior builder. Feed in a track record and a peer rate, set , and push into the rest of the post.
Prior builder: reputation and regime
We treat past performance as pseudo-observations and shrink toward a peer base rate. Smaller effective samples widen s0; tighter priors imply stronger conviction.
Robustness: when reality is not Gaussian
Marks can jump, proxies can be wrong, and volatility is not constant.
- Unknown variance. A Normal-Inverse-Gamma prior on yields a Student-t posterior on . Fatter tails slow overreaction to outliers.
- Outlier-resistant likelihood. Model . Small down-weights wild points.
Interactive — Likelihood chooser. Flip between Gaussian and t, vary , and note how the posterior spreads when you admit heavy tails.
Robustness to tails and noise
Lower ν thickens tails, putting more probability on outliers and slowing overreaction to noisy signals.
State-space step-up: monthly latent returns (Kalman)
We now model the monthly path, not just the quarterly sum. The latent state is
Process (prior). Each month has baseline mean plus macro tilt and correlated uncertainty:
where is a 3x3 Toeplitz correlation with . This makes months related but not identical.
Observations.
- exact months: , with small but nonzero sd (near-final, not perfect),
- month-3 proxy: , ,
- optional final sum: , with sd .
Kalman update (scalar measurement). For a measurement , , the update is
What the gain does. increases when is large (you were uncertain) or is small (measurement is clean). That is, move fast when you were unsure and the new data are good.
Total-quarter uncertainty. The variance of the quarterly return is
Interactive — Monthly state nowcast.
- Move through stages T1 to T4; see how exact months collapse their bands and the sum variance shrinks.
- Increase to couple months more tightly.
- Use nonzero so "exact" months are near-final rather than perfect; this prevents degeneracy and is more realistic.
Kalman nowcast (3-month state)
Non-zero prior correlation (rho_proc) and finite observation noise (s_obs12) prevent the geometry from degenerating to identity. The Joseph update keeps P PSD and numerically stable.
Measurement geometry
We visualize correlation rather than raw covariance to center the color scale at 0 and emphasize structure over magnitude. H is a simple loading vector; R is the scalar noise level for the current measurement.
How to read the geometry.
- The correlation heatmap shows structure across months; off-diagonals indicate shared shocks.
- The bar shows which latent you are observing at this stage (e.g., month 2 or a sum).
- is the observation noise; larger yields smaller and gentler moves.
Cross-fund pooling: hierarchical Bayes
You rarely follow one fund. To calibrate beliefs across many, you share statistical strength.
Model quarterly fund returns with fund-specific means and idiosyncratic noise :
Given a fund summary with sample mean , variance , sample size , the posterior for is
with shrinkage weight
Interpretation: data-poor or high-volatility funds (small ) shrink more. This is James-Stein in fund clothing.
Interactive — Shrinkage in action. Move to tune pooling strength. Long arrows mean heavy shrinkage. Try increasing volatility for a couple of funds to see how their posteriors retreat toward the sector anchor.
Cross-fund pooling
| Fund | n | sigma (%) | raw (%) | post (%) | |shrink| (pp) |
|---|---|---|---|---|---|
| Fund 2 | 12 | 10.85 | -7.01 | -4.69 | 2.31 |
| Fund 7 | 8 | 6.86 | 7.55 | 6.34 | 1.21 |
| Fund 8 | 14 | 7.64 | -4.94 | -4.06 | 0.88 |
| Fund 3 | 27 | 11.87 | -3.83 | -2.96 | 0.87 |
| Fund 9 | 22 | 8.97 | -5.02 | -4.23 | 0.79 |
Data-poor or high-vol funds shrink more. Pooling trades narrative for calibration.
From belief to action
A posterior is not an answer; it is a control surface for choices. Here are three operational views:
- Tail odds. For a loss threshold in log terms, compute and decide if rebalancing or hedging triggers.
- Beat-the-benchmark odds. If the benchmark quarterly log return is , then quantifies the chance of outperformance.
- Risk-adjusted rule. Define risk-adjusted return
with the posterior mean and the posterior sd. Choose thresholds and ; Add if , Trim if , else Hold.
Contours. Lines of constant RA satisfy ; steeper penalizes uncertainty more.
Value of information (quick approximation). If the next signal reduces variance from to , the RA improves by about for small changes. Expensive information should clear this expected improvement hurdle.
Interactive — Decision map. The heatmap shows Add/Hold/Trim regions in the nonnegative quadrant. The cross marks your current posterior. Tune and thresholds to match mandate and risk appetite.
From beliefs to actions
The map now shows only non-negative means and standard deviations. Adjust the axis maxima to fit your fund’s posterior scale.
Diagnostics and epistemic humility
Beliefs need audit trails. Three checks help keep you honest.
- Log score. The average log predictive density rewards sharp and calibrated forecasts.
- Brier score. For a binary event like , the mean squared error between predicted probabilities and outcomes.
- Calibration curves and PIT. Probability integral transforms should be uniform if calibrated; reliability curves should sit on the diagonal.
Interactive — Calibration dashboard. Simulate forecasts and outcomes. Inject mean bias or noise mis-specification and see how the PIT warps and scores deteriorate. Then fix your priors or likelihoods upstream.
Calibration and scoring
A flat PIT and a reliability curve on the diagonal indicate well-calibrated beliefs. If not, widen priors or revisit likelihood assumptions.
Implementation notes
- Treat each signal’s uncertainty as first-class metadata.
- Prevent leakage: never let final marks influence interim updates.
- Unit test the algebra: conjugate updates, Kalman recursions (including Joseph form), and posterior predictive checks.
- Beware double counting: a peer print and an ETF move may express the same shock; correlate or down-weight accordingly.
The progression — simple average -> multi-signal -> sequential -> dynamic -> pooled — mirrors the evolution of belief itself: from a single guess to a system that learns, checks itself, and earns its confidence.