palette = ({
naipca_iab: "#18557f", complete: "#18557f",
qz_ipca: "#8a6a1a",
ipca: "#6f9cc0", rp_pca: "#7a7a7a", ff5: "#b3b3b3",
naipca_beta_only: "#8a8378", beta_only: "#8a8378",
band: "rgba(0,0,0,0.06)", muted: "rgba(0,0,0,0.6)", rule: "rgba(0,0,0,0.1)"
})
LANG = (document.documentElement.lang || "en").startsWith("zh") ? "zh" : "en"
STR = ({ en: { view: "View", cost: "Cost (bp per traded dollar)", universe: "Universe", sample: "Sample (months)", log: "Log scale", models: "Models", statistic: "Statistic", theme: "Theme", sort: "Sort by", method: "Method", scenario: "Scenario", block: "Block (months)", metric: "Metric", intervals: "Intervals", cost_bp: "One-way cost (bp)", failed: "Interactive data failed to load. The static figure is shown instead." },
zh: { view: "视图", cost: "成本(每交易一美元,基点)", universe: "股票池", sample: "样本(月)", log: "对数坐标", models: "模型", statistic: "统计量", theme: "主题", sort: "排序", method: "方法", scenario: "情景", block: "块长(月)", metric: "指标", intervals: "区间", cost_bp: "单边成本(基点)", failed: "交互数据加载失败,改为显示静态图。" } })
t = (k) => STR[LANG][k] ?? STR.en[k] ?? k
fmt2 = (x) => (x == null || Number.isNaN(x)) ? "n/a" : x.toFixed(2)
fmt1 = (x) => (x == null || Number.isNaN(x)) ? "n/a" : x.toFixed(1)
fmtBp = (x) => (x == null || Number.isNaN(x)) ? "> 500" : `${Math.round(x)} bp`
parseMonth = (s) => new Date(`${s}-01T00:00:00Z`)
// Sharpe, annualised, sample std (ddof = 1): matches the release convention
sharpe = (r) => {
const n = r.length, m = r.reduce((a, b) => a + b, 0) / n
const v = r.reduce((a, b) => a + (b - m) ** 2, 0) / (n - 1)
const vol = Math.sqrt(v) * Math.sqrt(12)
return vol > 1e-12 ? (m * 12) / vol : NaN
}
netSeries = (r, to, bp) => r.map((x, i) => x - to[i] * bp / 1e4)
wealthPath = (r) => { let w = 1; return r.map((x) => (w *= 1 + x)) }
nberMarks = (nber) => Plot.rectX(nber, { x1: (d) => parseMonth(d.start), x2: (d) => parseMonth(d.end), fill: palette.band })Characteristic Libraries and Portfolio Decisions
Copying or reweighting stock characteristics a library already has adds no information, yet it changes what a tuned investment rule holds; whether returns after trading costs rise or fall depends on the method.
Job market paper · Working paper, September 2026 · 87 pages including the Internet Appendix
Asset managers keep adding stock characteristics to the libraries behind their return forecasts. Some changes add no information at all: copying a characteristic already in the library, or reweighting a whole theme. On U.S. stocks, even these changes shift which themes a tuned portfolio rule leans on and which stocks it holds. Whether the change helps or hurts depends on the method, the trading costs and how missing returns are valued. Genuinely new characteristics, by contrast, have small and imprecisely estimated effects on forecast accuracy in the procedures tested.
1 The question
In the agenda, this is the last step: same information, different holdings? Characteristic Geometry showed that the ruler’s units can move holdings (the ruler: how a model measures combinations of characteristics; see The framework). This paper asks whether the way the library is written can move holdings too, and follows the answer to named stocks and returns after trading costs.
A characteristic library is the list of stock traits, such as size, book-to-market or past return, that a model is fed. If an investment model gets the same information written down differently, does it pick different stocks? And does that change what the investor earns after trading costs?
The short answer. Yes: same data, stocks, dates and method, but different holdings, because the model’s penalty charges each column as the library writes it. Take theme balancing, which reweights themes (groups of related measures, such as the 17 quality measures) and adds no information. If this rewrite did not matter, target positions would not move. Yet even after the penalty is retuned on past data, the original and balanced libraries ask for same-date positions that differ by 19–28% of their average total position size, long plus short. This is a same-date difference in targets, not trading (Table I, p. 24). Whether returns after trading costs rise or fall depends on the method, the cost level and how held stocks with no next-month return are valued.
Why anything changes: a tax on the square of each bet. Imagine a tax that grows with the square of every bet you place. Split a bet of size b into five equal smaller bets and the total tax falls to one-fifth: 5 × (b/5)² = b²/5. You would then bet more on that idea, although you learned nothing new. A ridge penalty works this way: five exact copies of a characteristic cut its effective penalty to one-fifth (Section I.B, eq. 2, p. 5), so the model leans toward the copied theme.
The analogy has limits. The penalty is a statistical device that shrinks estimates toward zero, not a real cost to the investor. Retuning can move only one tax rate, which applies to every theme at once, so it generally cannot undo a split that favoured only one theme (p. 5).
Theme balancing rescales each theme’s columns by how many columns it has, so that a theme with many columns gets no extra room under the penalty; like a change of units, it neither adds nor removes information. The other rewrite, a selective copy, repeats one theme’s columns five times.
2 Why it matters
Library updates are routine, and a better backtest alone cannot tell new information apart from a change in how the estimator weights existing inputs (Section I.A, p. 4). The quality theme has 17 measures, but they move together so closely that, in terms of linear overlap, they behave like about 3.5 separate ones (participation rank 3.47). The 12 seasonality measures behave like almost 12 (Table II, p. 25). The rank counts directions in the data, not independent sources of information (Section III.A, p. 11).
- Economic. A manager may read a new tilt toward, say, value as news about value; part of it can reflect how many columns represent value.
- Practical. Tilts become trades, and trades cost money: the original portfolios already trade 1.13–1.28 dollars per dollar of capital each month (Table V, p. 28).
- Statistical. A lower test error is not proof of new information. In the paper’s simulation, where the information is known by design, exact copies leave the best achievable (Bayes) error at 0.7500. Yet 16 exact copies cut retuned ridge’s error from 0.7999 to 0.7695 (Section V.C, p. 17; Table VII, p. 30).
3 The argument at a glance
- Question. Does a library change that adds no information still move a tuned rule’s holdings and returns after costs? → The question
- Why. A better backtest after a library update may reflect reweighting, not new information. → Why it matters
- Framework. Only the library’s wording changes; data, stocks, dates and method stay fixed, so any response belongs to the fitted procedure. → The framework
- Mechanism. A ridge penalty charges a bet on a theme copied m times only 1/m of the usual price; one retuned penalty strength generally cannot undo copies that favour one theme. → A simple example
- Evidence. Theme balancing makes same-date target positions differ by 19–28% of their average total position size, long plus short; this is a same-date difference, not trading (Table I, p. 24). Returns after costs move in method-specific directions; separately, genuinely expanding monthly ridge from 39 to 153 characteristics has small, imprecisely estimated forecast effects. → Design and main results
- Contribution. A diagnostic that follows a library update to themes, named stocks and returns after trading costs. → How it relates to prior work
- Boundary. No claim of investable profits and no optimal library. → Scope
4 The framework
Copying a column adds no new data, and it does not change which portfolios the rule could build (Section I.A, p. 4).
The ruler (for contrast). To say how much of a stock’s expected return each driver explains, a model must first decide when two combinations of characteristics are really different, and how large each one is. Give each characteristic a weight and add them up: every stock gets a score, and the weighted combination is called a direction (it is not a portfolio). The ruler is the convention a model uses to measure how large a direction is and how much two directions overlap. The plain ruler (the Euclidean or identity metric) judges a direction by its weights alone. The characteristic ruler (the Gram metric) judges it by the scores it gives real stocks, so two value signals that pick out the same cheap stocks overlap under the characteristic ruler but look unrelated under the plain ruler.
The penalty. A ridge penalty charges each coefficient by its square, column by column, exactly as the library is written. In stock ridge (a ridge regression that forecasts each stock’s next-month return from its characteristics) and in blocked ridge, every column is charged alike, which is the plain ruler; the Sharpe-weighted variant reweights the columns by their inverse squared training Sharpe ratios (p. 11). This column-by-column charge is not the characteristic ruler, and copying a column is not a change of ruler in the sense of Characteristic-Space Metrics.
In symbols (Section I.B, eq. 2, p. 5): if a characteristic is replaced by m identical columns whose coefficients \theta_j add up to b, the cheapest split of b gives
\min_{\sum_j \theta_j = b} \; \sum_{j=1}^{m} \theta_j^2 \;=\; \frac{b^2}{m}.
For stock ridge there is an exact control: scale the copies’ penalty back up (the paper’s transported penalty) and the original problem returns (Section I.B, p. 5). Every estimate is mapped back to the 153 original characteristics and scored in the same 13 themes (Section III.B, p. 12).
For specialists
With an identity penalty on the encoded coefficients, a library written as Z_t A (A of full row rank) induces the coefficient penalty b'(AA')^{-1}b (Section I.B, p. 5). The paper measures a coefficient change d by the stock exposures it creates, d'Q_t d (the characteristic ruler), rather than by d'd (the plain ruler) (eq. 3, p. 6). It warns that a penalty built on the characteristic ruler is not automatically a better investment rule (p. 6), and such a penalty (Ridge Gram) forecasts no better in its tests (Table VI, p. 29). Theme attribution uses covariance shares, s_g = \operatorname{Cov}(u_g, u)/\operatorname{Var}(u) (Section I.D, eq. 4, p. 6).
5 A simple example
Try this. (1) At k = 1 (no copying), each theme carries 50% of the fitted risk. (2) Drag k, the number of copies of theme X, to 5. Nothing in the data has changed, yet theme X’s share rises to 73%. The dashed line uses the same five copies with the penalty scaled back up, and it stays at 50%. (3) Raise λ, the penalty strength, to 4: the share climbs to about 83%; at 0.1 it falls to about 55%. (4) Reset λ to 1 and set ρ, how much the two themes overlap, to 0.9: the share reaches about 80%. At moderate overlap it barely moves (about 72–73%), so do not expect a steady rise as you drag ρ. What to notice: the copies carry no new information; only the price the penalty charges theme X has changed. λ is held fixed here; in the paper it is re-chosen, and one re-chosen number generally cannot undo a copy that favours one theme (Section I.B, p. 5). Illustrative numbers, not the paper’s data.
Figure 1: Illustrative example, copying a theme without new information. Two characteristics, one per theme, equally useful by construction.
How to read it. X and Z are standardised, overlap by correlation ρ and each has a true coefficient of 0.5; the ridge rule is fitted without sampling noise. The last column moves only because X’s penalty changes: at the defaults it falls as k rises. With no noise, a λ re-chosen from the data would fall to zero and remove the tilt; with noisy data a penalty is needed, and the paper’s simulation shows the same trap (Table VII, p. 30). Source: computed in the browser from the formulas in Sections I.B and I.D of the paper; no data file.
6 Design and main results
The library is the Jensen–Kelly–Pedersen database of 153 U.S. stock characteristics in 13 themes (Jensen et al. 2023). The paper follows 179 monthly decisions, from January 2011 to November 2025, each estimated on the previous 120 months (Sections II.A and II.C, pp. 7–9). Four tuned ridge-type portfolio procedures make these decisions (Sections II.C and III.B, pp. 9, 11–12):
- blocked ridge, tuned on a held-out block of recent months;
- Sharpe-weighted ridge, whose penalty is weighted by inverse squared training Sharpe ratios, adapted from Ke and Pourmohammadi (2025);
- Universal Portfolio Shrinkage (UPSA), which combines several ridge portfolios (Kelly et al. 2026);
- LOO ridge, the single ridge rule in UPSA’s code, chosen by leave-one-out validation.
One common rule turns every estimate into stock positions, and stock-by-stock ledgers charge trading costs of 10 to 100 basis points (bp; 1 bp = 0.01 percentage point) per dollar traded (Sections IV.A and IV.C, pp. 13–14).
Details
The allocation rule scales each direction to a 10% volatility target on training data and caps total position size (long plus short) at two dollars per dollar of capital, so realised volatility differs across methods (Section IV.A, p. 13). No cost scenario includes borrow fees or market impact (Section IV.C, p. 14).
Table 1: Theme balancing changes what all four procedures lean on and hold. Original (O) and theme-balanced (B) libraries (Table I, p. 24).
| Method | Attribution change | Holdings change | Sharpe before costs, O | Sharpe before costs, B |
|---|---|---|---|---|
| Blocked ridge | 0.231 | 0.277 | 0.366 | 0.348 |
| Sharpe-weighted ridge | 0.198 | 0.239 | 0.490 | 0.397 |
| LOO ridge | 0.271 | 0.227 | 1.003 | 1.105 |
| UPSA | 0.274 | 0.191 | 1.126 | 1.141 |
Attribution change: how far the 13 themes’ shares of the portfolio’s fitted risk move, half the summed absolute change (0 = no change; for scale, under the original library the shares move 0.13–0.26 between adjacent months, descriptive, not sampling noise (p. 18)). Holdings change: the gap between the two sets of stock targets as a share of their average total position size, long plus short; a same-date difference, not trading. Sharpe ratios are annualised (Table I, p. 24). Source: Characteristic Libraries and Portfolio Decisions, Table I.
What this shows. Even after retuning, all four procedures change which themes they lean on and which stocks they want to hold; for example, balancing cuts the 17-column quality theme’s share of UPSA’s fitted risk from 0.324 to 0.248 (Table III, p. 26). Point estimates of Sharpe ratios before trading costs rise for two procedures and fall for two (Table I, p. 24). So how the library is written down matters, but it does not push performance one way, and a shift in themes is not in itself a loss.
Figure 2: Trading costs take most of the return; the effect of the library’s wording depends on the procedure. One-way costs, 0–100 bp (Figure 3, p. 33).
How to read it. Each panel is one procedure; each line is one version of the library: original, theme-balanced, or five copies of every value characteristic. The vertical axis is the annual mean excess return; held stocks with no next-month return are given a zero excess return (Section IV.C, p. 15). Exact at 0, 10, 25, 50 and 100 bp; points between are straight-line interpolations. Source: Characteristic Libraries and Portfolio Decisions, Figure 3 and Table IV; results file summary.csv. Data
What this shows. At 25 bp per dollar traded, trading costs take most or all of the return before costs: original UPSA’s mean excess return falls from 4.79% to 1.10% a year. At this cost, balancing and value copies both lower the mean for blocked ridge and Sharpe-weighted ridge, both raise it for LOO ridge, and split for UPSA (Table IV, p. 27). Under a stock-by-stock spread proxy instead of a flat rate, every original portfolio has a negative mean, so returns before costs do not establish a profitable strategy (pp. 14–15).
For UPSA, theme balancing changes the mean excess return at 25 bp by −0.19 percentage points, but the 95% interval, [−0.57, 0.19], includes zero (Section III.D, p. 13). Of the 52 single-theme copy comparisons at 25 bp, only 2 have simultaneous bands (intervals that hold jointly across a procedure’s 13 copy tests) that exclude zero, and both are losses. Copying the seasonality theme five times lowers Sharpe-weighted ridge’s mean return by 1.30 percentage points a year (band [−2.35, −0.25]) and UPSA’s by 0.77 (Tables IA.25–IA.27, pp. 77–79).
Adding 114 real characteristics to monthly ridge (the stock ridge above; from 39 to 153) changes its forecast loss by only 0.0079 percentage points of a zero-forecast benchmark, with a 95% interval from −0.040 to 0.068: the data cannot tell a gain from a loss (Section V.A, p. 15). An interval that includes zero does not show that the two libraries forecast equally well (p. 18), and the comparison does not separate new information from a change in how strongly the model is penalised (p. 2). Dropping any single theme does not make forecasts detectably worse once all 13 are tested jointly (Figure 4, p. 34).
7 How it relates to prior work
| Prior work | What it established | What this paper adds |
|---|---|---|
| Kozak et al. (2020) | Shrinking characteristic-portfolio weights gives stochastic discount factors that hold up out of sample. | Shows that the same kind of penalty responds to how the library is written, and follows the response into holdings. |
| Kelly et al. (2026) | UPSA combines ridge portfolios to target out-of-sample performance and groups weights into economic themes. | Keeps UPSA’s public code fixed and changes only its inputs; theme balancing moves UPSA’s theme shares by 0.274 (Table I, p. 24). |
| Jensen et al. (2023); Jensen et al. (2026) | A public library of 153 factors in 13 themes; most factors replicate, and portfolios should be judged after trading costs. | Makes that library the object of study and charges costs explicitly; with a fixed allocation rule, a cost-aware optimiser could respond differently (Section IV.A, p. 13). |
The controls rest on known identities: duplication invariance in portfolio construction (Choueifaty et al. 2013) and priors that correct for redundant models (George 2010). Exact copies add no richer function class of the kind studied by Kelly et al. (2024), so the paper does not settle the broader complexity debate, including Nagel (2025).
What is new is how much four tuned procedures respond to a change that adds no information, measured on a common U.S. panel down to named-stock positions (p. 3). The result is a diagnostic: before adopting a library update, compare attribution, stock targets and returns after costs under the actual implementation, alongside an information-preserving control such as exact copies, theme balancing or, for stock ridge, the transported penalty (Sections I.B and VI.D, pp. 5, 19).
This is the step where the agenda lands. Geometric Framework and Characteristic-Space Metrics choose and qualify the ruler; Interpreting Pricing Errors reads alpha with the ruler held fixed; Characteristic Geometry shows that the ruler’s units can move holdings. This paper cites Characteristic-Space Metrics and Characteristic Geometry as companion papers.
8 Scope
- No claim of investable performance (see Figure 2). Before trading costs, original UPSA’s mean excess return is 4.79% a year; valuing held stocks with missing returns at +100% total return instead gives 0.62%, and at −100%, 8.98%. These are scenarios, not bounds (Sections IV.C and VI.D, pp. 15, 19).
- No optimal library: theme balancing is a declared alternative weighting, and the experiment shows neither that it is optimal nor that a uniquely correct ruler exists (p. 3).
- No claim that the added characteristics lack information (Section VII, p. 20).
- The data are a retrospective U.S. extraction (May 2026) that was also used to develop the design, which was not preregistered (Sections II.F and VI.D, pp. 10, 19).
- Intervals condition on the fitted decisions (Section VI.A, p. 17).
References
Choueifaty, Yves, Tristan Froidure, and Julien Reynier. 2013. “Properties of the Most Diversified Portfolio.” Journal of Investment Strategies 2 (2): 49–70.
George, Edward I. 2010. “Dilution Priors: Compensating for Model Space Redundancy.” In Borrowing Strength: Theory Powering Applications, a Festschrift for Lawrence d. Brown, vol. 6. IMS Collections. Institute of Mathematical Statistics. https://doi.org/10.1214/10-IMSCOLL611.
Jensen, Theis Ingerslev, Bryan T. Kelly, Semyon Malamud, and Lasse Heje Pedersen. 2026. “Machine Learning and the Implementable Efficient Frontier.” The Review of Financial Studies 39 (10): 3035–78. https://doi.org/10.1093/rfs/hhag022.
Jensen, Theis Ingerslev, Bryan Kelly, and Lasse Heje Pedersen. 2023. “Is There a Replication Crisis in Finance?” The Journal of Finance 78 (5): 2465–518. https://doi.org/10.1111/jofi.13249.
Ke, Shikun, and Mohammad Pourmohammadi. 2025. Shrinkage Alignment in High-Dimensional Portfolios. Working Paper No. 5723922. SSRN. https://papers.ssrn.com/sol3/papers.cfm?abstract_id=5723922.
Kelly, Bryan T., Semyon Malamud, Mohammad Pourmohammadi, and Fabio Trojani. 2026. “Universal Portfolio Shrinkage.” Review of Financial Studies. https://www.nber.org/papers/w32004.
Kelly, Bryan, Semyon Malamud, and Kangying Zhou. 2024. “The Virtue of Complexity in Return Prediction.” The Journal of Finance 79 (1): 459–503. https://doi.org/10.1111/jofi.13298.
Kozak, Serhiy, Stefan Nagel, and Shrihari Santosh. 2020. “Shrinking the Cross-Section.” Journal of Financial Economics 135 (2): 271–92. https://doi.org/10.1016/j.jfineco.2019.06.008.
Nagel, Stefan. 2025. Seemingly Virtuous Complexity in Return Prediction. NBER Working Paper No. 34104. National Bureau of Economic Research. https://www.nber.org/papers/w34104.
Reuse
Page text and interactive figures: CC BY 4.0. The manuscript is © the author and is not covered by this licence.(View License)
Citation
BibTeX citation:
@report{liu2026libraries,
author = {Liu, Mingyang},
publisher = {Imperial Business School, Imperial College London},
title = {Characteristic {Libraries} and {Portfolio} {Decisions}},
date = {2026-09},
url = {https://yl7919.github.io/research/characteristic-libraries.html},
langid = {en}
}
For attribution, please cite this work as:
Liu, Mingyang. 2026. Characteristic Libraries and Portfolio
Decisions. Working paper. Imperial Business School, Imperial
College London. https://yl7919.github.io/research/characteristic-libraries.html.