Entropy Pooling for Portfolio Views
Entropy pooling incorporates investment views by changing scenario probabilities as little as possible while enforcing those views. Rather than assuming returns are normal or translating every view into a mean and covariance adjustment, it produces a posterior distribution over arbitrary joint scenarios. This makes it well suited to nonlinear, relative-value, probability, and tail statements.
Start with J prior scenarios and probabilities p. Find posterior probabilities q that minimize relative entropy:
min_q Σ q_j log(q_j / p_j)
s.t. A q = a, B q ≤ b, q ≥ 0, 1'q = 1
The objective is Kullback-Leibler divergence. It says: accept the view, but otherwise preserve the prior. This is the scenario-distribution counterpart to Black-Litterman, where views update equilibrium returns under a Gaussian model.
Views as constraints
Suppose R has scenarios by assets and portfolio v is a relative-value spread. Examples include:
| View | Constraint idea |
|---|---|
| expected equity excess return is 4% | q' (R v) = 0.04 |
| credit beats duration | q'(Rcredit − Rduration) ≥ 0 |
| probability of loss exceeds 10% | q' 1[Rv < 0] = 0.10 |
| expected shortfall is bounded | auxiliary tail constraints |
The last two cannot be represented cleanly by a simple mean/covariance update. Entropy pooling retains the scenario dependence between all assets, so an equity view also changes expected behavior of correlated credit or FX exposures.
import cvxpy as cp
import numpy as np
def entropy_pool(prior, payoff, expected_payoff):
"""Posterior probabilities matching one expected-payoff view."""
q = cp.Variable(len(prior))
kl = cp.sum(cp.kl_div(q, prior))
constraints = [q >= 1e-12, cp.sum(q) == 1, payoff @ q == expected_payoff]
cp.Problem(cp.Minimize(kl), constraints).solve()
return np.asarray(q.value).ravel()
cp.kl_div includes constants but has the same minimizer. Check feasibility and solver accuracy: contradictory equalities are a view specification error, not an invitation to silently relax constraints.
Prior scenarios deserve scrutiny
The posterior cannot create market states absent from the prior. Historical bootstrap scenarios preserve empirical dependence but may underrepresent novel shocks. Factor simulations can create targeted shocks but introduce model risk. A useful prior combines recent data, long history, and named stress scenarios with explicit probability weights.
Entropy pooling can produce concentrated probabilities when a strong view conflicts with the prior. Report effective scenario count exp(−Σq log q), posterior moments, and the largest weights. If a handful of rows carries the posterior, the result is fragile.
From posterior to portfolio
Calculate posterior expected returns, covariance, and tail losses using q, then optimize subject to the mandate. Or optimize directly on weighted scenarios:
E_q[r] = Σ q_j r_j
CVaR_q = min_ζ ζ + 1/(1−α) Σ q_j(-r_j'w−ζ)+
The latter maintains skew and tail information; see CVaR optimization for the convex form. Do not confuse posterior probabilities with objective probabilities. They are a decision distribution conditional on subjective views.
| Governance item | Question |
|---|---|
| prior | which regimes and shocks are represented? |
| view | is it precise, measurable, and horizon-consistent? |
| confidence | how tight is the constraint? |
| posterior | did probabilities become concentrated? |
| implementation | do turnover and liquidity erase the benefit? |
Soft views are often preferable to hard equality constraints. Implement them as bounds or penalize deviation, and test allocations across a confidence range. This acknowledges that the analyst has information but not certainty.
Maintain a view ledger containing author, horizon, prior, constraint, confidence, and subsequent outcome. Reproducibility is especially important because two teams can reach different posteriors from identical returns simply by encoding the same verbal thesis differently.
Finally, distinguish a probability update from an allocation mandate. A strongly tilted posterior may be a valuable research output even when concentration limits, liquidity, or governance rules appropriately prevent the portfolio from expressing the full mathematical tilt.
Key takeaways
- Entropy pooling minimally reweights scenarios to honor views.
- It supports nonlinear and probability views that mean-covariance frameworks cannot express naturally.
- A posterior is only as credible as its scenario prior and constraint confidence.
- Monitor probability concentration, then optimize with realistic risk, liquidity, and cost constraints.
