Regularized residual models for equity research

11 June 2026 · Revised 19 August 2026

Abstract

We study a residual model for U.S. common equity in which excess returns are first orthogonalized against a small set of traded factors and then a high-dimensional characteristic matrix is estimated under an 1\ell_1 penalty. The operating mark used in this note isλ=0.02\lambda=0.02. After residualization the in-sample coefficient of determination on the research panel is R2=0.89R^2=0.89. That number is not an out-of-sample claim. A later binary classifier on the sign of the next residual, evaluated on expanding walk-forward windows, records AUC-ROC 0.930.93 and F1=0.88F_1=0.88. Revenue uncertainty is represented by a lognormal field of 10,000 draws with default log-volatility σ=0.14\sigma=0.14.

The paper gives the KKT system for the residual LASSO, an oracle inequality under a restricted eigenvalue condition, a walk-forward protocol that forbids shuffled months, and the algorithms actually run. It is a methods paper. It is not a prospectus and not an audited composite.

Keywords. LASSO, elastic net, walk-forward evaluation, Monte Carlo revenue, AUC-ROC, equity residuals

1. Introduction

Equity research notebooks accumulate characteristics until ordinary least squares is asked to separate a priced factor from a story that will not repeat. The classical remedy is a small, pre-declared factor model. The Fama–French construction remains the right first residualizer1. The second step, when the remaining matrix is wide, is a convex penalty2. This paper records that two-step program as it is run on the research panel, with the numbers that appear on that register kept exactly and with the claims that do not survive a walk-forward deleted.

Three mistakes dominate applied work. The first is to treat an in-sample R2R^2 as a trading score. The second is to select the penalty on a random fold of months, which are not exchangeable. The third is to quote a classifier’s accuracy in the same sentence as a linear fit. We separate the objects. Section 4 residualizes. Section 5 penalizes. Section 8 evaluates on expanding windows. Section 9 maps revenue to a field. Section 10 classes the next residual. The algorithms in Section 12 are the ones that produce the quoted marks.

A finished leftover column — news polarity after the market tape, a dated incidence residual, or an ensemble path — may enter XX only after it has been residualized here. This paper does not refit those models inside a name notebook.

2. Related work

Tibshirani’s LASSO is the convex program we solve2. Zou and Hastie introduced the elastic net when columns are strongly correlated3. Meinshausen and Bühlmann’s stability selection is the check we use instead of a prettier cross-validated penalty4. Bickel, Ritov and Tsybakov give the oracle inequality under restricted eigenvalues that we prove with constants in the later sections7. Debiased / desparsified inference is discussed only as a later sleeve and is not used for the operating mark.

On the return side we take the French library as given5and do not rebuild HML from Compustat in this note. Rebuilding HML is a different paper and a different way to fool a residual. Walk-forward evaluation is older than the current fashion for purged k-fold; we use expanding cuts because that is the protocol a later desk can audit.

3. Setup and notation

Let i=1,,Ni=1,\ldots,N index names and t=1,,Tt=1,\ldots,T months. The observed excess return is ri,tr_{i,t}. A factor matrixFtRkF_t\in\mathbb R^{k} contains the French market, size, value, and profitability prints available at tt. A characteristic matrixXi,tRpX_{i,t}\in\mathbb R^{p} contains only quantities that are known at the formation date. We write n=NTn=NT for the stacked sample after listwise deletion of missing characteristics.

The universe is CRSP share codes 10 and 11. Names under five dollars at formation are dropped. Return tails are winsorized at one percent inside each month. Fundamentals are lagged to the first month they could have been known from a public filing. No alternative that cannot be dated enters XX.

ri,t=Ftγi+εi,t,εi,t=Xi,tβ+ui,tr_{i,t}=F_t^\top\gamma_i+\varepsilon_{i,t},\qquad \varepsilon_{i,t}=X_{i,t}^\top\beta+u_{i,t}

The first equation is estimated name by name (or in a pooled panel with name effects). The leftover εi,t\varepsilon_{i,t} is the object of the penalty. House columns that cannot survive residualization against FtF_t are not house columns. They are the market again.

4. Residualization

Write ε^i,t=ri,tFtγ^i\hat\varepsilon_{i,t}=r_{i,t}-F_t^\top\hat\gamma_i. IfXX still correlates with FF after this step, we residualizeXX as well. The Gram matrix used by LASSO is therefore a residual Gram matrix. This is ordinary Frisch–Waugh–Lovell in a wide panel. It is the entire reason the in-sample R2=0.89R^2=0.89 is not a statement about raw prices.

Proposition 1.

If FF is full column rank on the estimation window andXX is replaced by its residual on FF, the LASSO onε^\hat\varepsilon and residualized XX coincides with the partialled program on the original stacked system.

Proof.

The Frisch–Waugh–Lovell identity says that OLS of rr on(F,X)(F,X) equals OLS of the residual of rr on the residual ofXX. The LASSO objective differs only by λβ1\lambda\|\beta\|_1, which does not involve γ\gamma. Minimizing first in γ\gammafor fixed β\beta recovers the same residualized residual, and the1\ell_1 term is unchanged. Hence the joint minimizer in β\betais the residualized LASSO.

MktSMBHMLRMW
Figure 1. Loadings on the French four after residualization of the house columns. Darker cells are larger absolute weights.

5. The residual LASSO

Let yRny\in\mathbb R^{n} be the stacked residual return andXRn×pX\in\mathbb R^{n\times p} the residualized characteristics, columns standardized to unit empirical second moment. The program is

β^(λ)=argminβRp 12nyXβ22+λβ1\hat\beta(\lambda)=\arg\min_{\beta\in\mathbb R^p}\ \frac{1}{2n}\|y-X\beta\|_2^2+\lambda\|\beta\|_1

The operating mark is λ=0.02\lambda=0.02. A ten-fold shuffle of months prefers a smaller penalty and a larger in-sample fit. Months are not i.i.d. The August 2026 revision keeps 0.02 because it is the last value at which selected columns reappear in the next expanding window more often than not (Section 7).

Theorem (KKT) 2.

A vector β^\hat\beta solves the program if and only if there existsz^β^1\hat z\in\partial\|\hat\beta\|_1 with

1nX(yXβ^)=λz^,z^j=sign(β^j) if β^j0,z^j1 otherwise.\frac{1}{n}X^\top(y-X\hat\beta)=\lambda\hat z,\qquad \hat z_j=\mathrm{sign}(\hat\beta_j)\ \text{if}\ \hat\beta_j\neq 0,\quad |\hat z_j|\le 1\ \text{otherwise.}

Proof.

The objective is convex and coercive for λ>0\lambda>0, so a minimizer exists. The subdifferential of 12nyXβ22\frac{1}{2n}\|y-X\beta\|_2^2 is(1/n)X(yXβ)-(1/n)X^\top(y-X\beta). The subdifferential ofλβ1\lambda\|\beta\|_1 is λβ1\lambda\partial\|\beta\|_1. Stationarity is the displayed inclusion. The characterization of1\partial\|\cdot\|_1 is standard.

Uniqueness fails when two residualized columns are identical. Industry dummies and quality scores are not orthogonal. We therefore use an elastic net with mixing weightα=0.85\alpha=0.85, close enough to LASSO that the register can still say LASSO, far enough from one that a collinear pair can share weight3.

P(β)=λ(αβ1+(1α)12β22),α=0.85P(\beta)=\lambda\Big(\alpha\|\beta\|_1+(1-\alpha)\tfrac12\|\beta\|_2^2\Big),\qquad\alpha=0.85
λ = 0.02log λ →
Figure 2. Coefficient paths as the penalty falls. The vertical mark is the operating value λ = 0.02.

6. Restricted eigenvalues and an oracle inequality

Let S=supp(β)S=\mathrm{supp}(\beta^\star) be a hypothetical sparse target ands=Ss=|S|. The restricted eigenvalue (RE) constant of the residual GramΣ^=n1XX\hat\Sigma=n^{-1}X^{\top}X on a coneC(S)={v:vSc13vS1}\mathcal C(S)=\{v:\|v_{S^c}\|_1\le 3\|v_S\|_1\} is

κ=infvC(S){0}vΣ^vvS22\kappa=\inf_{v\in\mathcal C(S)\setminus\{0\}}\frac{v^\top\hat\Sigma v}{\|v_S\|_2^2}

Theorem 3.

Assume RE holds with κ>0\kappa>0 andλ2n1Xu\lambda\ge 2n^{-1}\|X^\top u\|_\infty. Then

1nX(β^β)22+λβ^β1  Cλ2sκ\frac{1}{n}\|X(\hat\beta-\beta^\star)\|_2^2+\lambda\|\hat\beta-\beta^\star\|_1\ \le\ \frac{C\lambda^2 s}{\kappa}

for an absolute constant CC. In particular the prediction error is of order λ2s/κ\lambda^2 s/\kappa.

Proof.

Write the basic inequality from optimality,12nyXβ^22+λβ^112nyXβ22+λβ1\frac{1}{2n}\|y-X\hat\beta\|_2^2+\lambda\|\hat\beta\|_1\le\frac{1}{2n}\|y-X\beta^\star\|_2^2+\lambda\|\beta^\star\|_1. Substitute y=Xβ+uy=X\beta^\star+u and rearrange to obtain

1nXΔ222nuXΔ+2λ(β1β^1)\frac{1}{n}\|X\Delta\|_2^2\le \frac{2}{n}u^\top X\Delta+2\lambda\big(\|\beta^\star\|_1-\|\hat\beta\|_1\big)

with Δ=β^β\Delta=\hat\beta-\beta^\star. The noise inner product is at mostλΔ1\lambda\|\Delta\|_1 on the eventλ2n1Xu\lambda\ge 2n^{-1}\|X^\top u\|_\infty. The usual cone argument then puts Δ\Delta in C(S)\mathcal C(S), and RE converts the left side into κΔS22\kappa\|\Delta_S\|_2^2. Young’s inequality closes the bound. We omit the absolute-constant bookkeeping; it is the same as in Bickel–Ritov–Tsybakov.

The theorem is a guarantee about the residualized program, not about a live book. It does not produce the 0.89 figure. That figure is an in-sample fit after the mark is chosen.

7. Stability selection

Let S^(λ;I)\hat S(\lambda;I) be the support on a subsample II. Stability selection keeps coordinates whose selection frequency across complementary halves exceeds a threshold4. We use fifty complementary halves on each expanding window and a frequency cutoff of one half. A column that dies when the window advances by a year is treated as a story even if it fattens in-sample R2R^2.

Penalty grid on expanding windows. Keep-rate is the share of selected columns that reappear in the next year.
λIn-sample R²Keep-rateDecision
0.0080.930.41Rejected
0.0120.910.52Rejected
0.0200.890.67Kept
0.0350.810.70Too empty

8. Walk-forward evaluation

Every number that is allowed to sound like a result is computed on a later block than the block that picked λ\lambda. Train through year TT, testT+1T+1, then grow. There is no k-fold on the full panel. There is no peek at 2024 features to write a 2023 column.

expanding train · held-out test
Figure 3. Expanding training windows and held-out test blocks. Shuffled months are not used.

The 2020 window is recorded and not used for advertisement. A gap year is a test of the protocol, not a source of a prettier AUC.

Expanding cuts used for the classifier scores.
Train throughTestRole
20182019Penalty warmth only
20192020Gap year, not quoted
20212022Classifier locked
20232024 to mid-2025Quoted AUC 0.93 and F1 0.88

9. Revenue as a field

Guidance is a point. Let Rˉ\bar R be the consensus annual revenue path. We draw

logR(k)=logRˉ12σrev2+σrevZ(k),Z(k)N(0,1), k=1,,10000\log R^{(k)}=\log\bar R-\tfrac12\sigma_{\mathrm{rev}}^2+\sigma_{\mathrm{rev}}Z^{(k)},\quad Z^{(k)}\sim\mathcal N(0,1),\ k=1,\ldots,10000

with default σrev=0.14\sigma_{\mathrm{rev}}=0.14 when a name has no honest own series. Names with a clean ten-year revenue history use their own estimate. Initial-public names use 0.14 and a wider multiple band, not a tighter one. The map from a revenue draw to an implied residual is an operating-leverage sleeve: contribution margin, a fixed-cost block, and a tax rate that does not pretend to know the next code. There is no terminal growth rate chosen to hit a price target.

10,000 draws · σ = 14%
Figure 4. Ten thousand revenue paths. The heavier stroke is the median path.

Proposition 4.

If RR is lognormal as above, thenE[R]=Rˉ\mathbb E[R]=\bar R andVar(logR)=σrev2\mathrm{Var}(\log R)=\sigma_{\mathrm{rev}}^2. A first-order delta-method interval for a differentiable mapg(R)g(R) has width proportional tog(Rˉ)Rˉσrev|g^{\prime}(\bar R)|\bar R\sigma_{\mathrm{rev}}.

Proof.

Completing the square in the lognormal density gives the mean identity. The delta method is the ordinary first-order Taylor expansion of gg under finite second moments of RR, which hold for every finite σrev\sigma_{\mathrm{rev}}.

10. Classification of the next residual

Let cc be a cost threshold in residual units (spread, borrow, one-day delay). The label is yi,t+1=1{ri,t+1r^i,t+1>c}y_{i,t+1}=\mathbf 1\{r_{i,t+1}-\hat r_{i,t+1}>c\}. A gradient boosted tree is fit on the LASSO leftover, a GARCH scale of that leftover, a liquidity dummy, and a news leftover when one exists. It does not see tomorrow’s print.

AUC=01TPR(FPR1(u))du=0.93,F1=2prp+r=0.88\mathrm{AUC}=\int_0^1 \mathrm{TPR}(\mathrm{FPR}^{-1}(u))\,du=0.93,\qquad F_1=2\frac{pr}{p+r}=0.88

Accuracy 90% is the same cut on the same window. It is not a third model. The operating threshold is the one that held F1F_1, not the one that held accuracy. The in-sample R2R^2 is never an input to this sentence.

AUC 0.93
Figure 5. Walk-forward ROC on the residual class. The dashed diagonal is chance.

After the linear leftover, squared residuals on the research panel still cluster. We record

εt=σtzt,σt2=ω+αεt12+βσt12,Corr^(εt2,εt12)=0.75\varepsilon_t=\sigma_t z_t,\qquad \sigma_t^2=\omega+\alpha\varepsilon_{t-1}^2+\beta\sigma_{t-1}^2,\qquad \widehat{\mathrm{Corr}}(\varepsilon_t^2,\varepsilon_{t-1}^2)=0.75

If the GARCH sleeve wants a larger story than the linear model, the desk widens the revenue field or walks away. Volatility clustering is a warning, not a product.

11. Size after the residual is believed

Let pp be the walk-forward probability and bb the payoff after cost. Textbook Kelly is f=(p(b+1)1)/bf^\star=(p(b+1)-1)/b. The desk uses half of that clip. Full Kelly is a way to die of being right. If either pp orbb is a guess, the clip is zero.

f★
Figure 6. Kelly fraction against estimated edge after cost. The mark is the half-Kelly operating point.

A cost-of-capital screen of eleven percent, built from β=1.37\beta=1.37 and an equity premium of 5.4 percent against the then-prevailing Treasury print6, is permission to keep reading. It is not a buy. Clearing a hurdle is not a position.

12. Algorithms

Algorithm 1 — Residualize and penalize

  1. Input: returns r, factors F, characteristics X, penalty λ, mixing α.
  2. For each name, regress r on F; keep residual ε. Residualize X on F.
  3. Standardize residualized columns to unit second moment.
  4. Solve the elastic-net program at (λ, α) by coordinate descent.
  5. Return β̂ and the leftover ε − Xβ̂.

Algorithm 2 — Expanding walk-forward class

  1. For year T in the evaluation calendar:
  2. Fit Algorithm 1 on all months through T using only information known then.
  3. Fit the boosted ranker on leftovers through T.
  4. Predict labels on T+1. Record AUC and F1. Grow T.
  5. Quote scores only on the pre-declared last block.

Algorithm 3 — Revenue field

  1. If the name has a clean ten-year revenue series, set σ to that estimate; else σ ← 0.14.
  2. Draw Z(k) ~ N(0,1) for k = 1..10000. Set R(k) from the lognormal identity.
  3. Map each R(k) through the operating-leverage sleeve to an implied residual.
  4. Report the median and the 10/90 band. Do not report a point as a fact.

Coordinate descent on the elastic net is the Friedman–Hastie–Tibshirani path. Each coordinate update is a soft-threshold of a partial residual. Complexity per pass is linear in npnp. We run the path on a decreasing grid and warm-start. The booster is a standard histogram gradient boosting implementation with a depth cap and a row subsample; those knobs are frozen before the quoted window.

13. What is not in the live matrix

Neural ordinary differential equations and a Hamilton–Jacobi–Bellman line appear on an older register. They are not an operating sleeve here. A convolutional read of a short residual strip is a veto check: if it wants a trade the linear model forbids, the linear model wins. Quantum annealing was a laboratory trial on a cardinality constraint. The live cardinality rule is a greedy knapsack with a liquidity cap. Private-equity marks are a different residual and a different delay; that delay is a filing clock, not a monthly CRSP clock, and it is not estimated here.

Healthcare names still use this stack. Trial attrition is not an equity feature until a public stop or go date has been turned into a dated column. Macro ensemble paths are consumed as finished leftover columns, not refit inside the residual LASSO.

14. Empirical protocol and quoted marks

The panel is U.S. common equity as specified in Section 3. The French four are left in Ken French’s units. House columns after residualization are revision breadth, revenue concentration, and a news leftover from the sentiment paper when it is not a renaming of profitability. The quoted marks live in different sentences:

Where each published number lives.
NumberWindowForbidden reading
R² = 0.89In-sample residual after LASSONot a trading R²
AUC = 0.93Walk-forward residual classNot a Sharpe ratio
F1 = 0.88Same class, same cutNot accuracy in disguise
90% accuracySame class, same cutNot a third model
σ = 14%Revenue-path defaultNot equity volatility

Paper diagnostics on a classified long-short residual book inside the walk-forward, before borrow fantasy and before capacity, included a Sharpe of 0.89 and a Sortino of 1.24. Those are not a live composite. Liquidity-adjusted CVaR on the same panel was logged at 7.8 percent as a diagnostic, not as a fund limit. Limits live in operations.

15. Limitations

The panel does not travel to a private name or a thinly filed ADR. The Monte Carlo is a revenue field, not an inflation model. The classifier will look clever in a quiet tape and late in a gap. Gaps are why the sentiment paper exists. The restricted-eigenvalue theorem is a condition, not a verification that the 2024 Gram satisfied it. When the next regime is not the last one, R2=0.89R^2=0.89 will fall. That is expected.

16. Conclusion

A residual that survives a penalty, a field of revenues, and a later class test is still only a residual. The June 2026 draft put R2R^2, AUC, and accuracy in one breath. This revision splits them. The desk’s job is to keep the three tests from collapsing into a slogan.

17. Coordinate descent update

Let rj=yXβ^+Xjβ^jr_j=y-X\hat\beta+X_j\hat\beta_j be the partial residual for coordinate jj. The elastic-net scalar problem is

β^j=S ⁣(n1Xjrj, λα)n1Xj22+λ(1α)\hat\beta_j=\frac{S\!\left(n^{-1}X_j^\top r_j,\ \lambda\alpha\right)}{n^{-1}\|X_j\|_2^2+\lambda(1-\alpha)}

where S(z,τ)=sign(z)(zτ)+S(z,\tau)=\mathrm{sign}(z)(|z|-\tau)_+ is soft-thresholding. Cycling through jj until the KKT residual is below a tolerance produces Algorithm 1. Warm starts from a larger λ\lambda reduce the iteration count on the path.

Proof.

Completing the square in the scalar elastic-net objective yields a quadratic with Lipschitz constant n1Xj22+λ(1α)n^{-1}\|X_j\|_2^2+\lambda(1-\alpha) plus an1\ell_1 term of weight λα\lambda\alpha. The proximal map of that 1\ell_1 term is soft-thresholding, which is the displayed update.

18. Why shuffled months bias λ

A random fold places adjacent months in both train and test. Autocorrelated residuals then leak. The apparent risk of a small λ\lambda falls, the penalty shrinks, and the support becomes a memoir of the tape. Expanding walk-forward forbids the leak by construction: every test month is strictly later than every training month.

Proposition 5.

If Cov(ut,ut+1)0\mathrm{Cov}(u_t,u_{t+1})\neq 0 and a fold shares a positive fraction of adjacent pairs across the cut, the cross-validated estimate of prediction risk is downward biased for one-step-ahead risk.

Proof.

Write the test risk as an average of (ε^t+1)2(\hat\varepsilon_{t+1})^2. Whent+1t+1 is adjacent to a training month, the fitted leftover is correlated with the test leftover. The expectation of the apparent risk is then smaller than the expectation of a true one-step residual by a covariance term that does not vanish withnn if the fraction of adjacent pairs stays positive.

19. AUC as a Wilcoxon statistic

On a test block let p^+\hat p^+ be scores for positive residual-class labels and p^\hat p^- for negatives. The AUC equals

1n+ni:yi=1j:yj=01{p^i>p^j}+121{p^i=p^j}\frac{1}{n_+n_-}\sum_{i:y_i=1}\sum_{j:y_j=0}\mathbf 1\{\hat p_i>\hat p_j\}+\tfrac12\mathbf 1\{\hat p_i=\hat p_j\}

which is the Mann–Whitney Wilcoxon probability. We quote it because it does not depend on the particular threshold that produces the 90% accuracy. F1F_1 does, and that is why both are reported.

20. Half Kelly from log-growth

Maximizing Elog(1+fb~)\mathbb E\log(1+f\tilde b) for a two-point payoff recovers textbook Kelly. A second-order expansion around a small edge shows that variance of wealth scales with f2f^2 while drift scales with ff. Halvingff cuts variance by four and drift by two. That is the only justification we use. It is not a utility theorem for a household.

21. Data dictionary

Excess returns are CRSP monthly, delisting-adjusted. Factors are from the French library as of the revision date. Characteristics as-of dates are the later of the filing date and the house lag rule. The news leftover identifier is the sector polarity residual from the sentiment note after the market and the obvious macro tape have been removed. Feature as-of dates, the λ\lambda path, and the walk-forward cuts are versioned under tag QE-03b.

22. Worked name (anonymized)

A mid-cap industrial with a clean revenue series, market beta near 1.2, and a news leftover that was not profitability. LASSO kept market, quality, and revision breadth. The revenue field used own-volatility 11%, not the 14% default. The class desk assignedp=0.61p=0.61 after cost. Half Kelly was a small long. The name is not printed because a printed name becomes a recommendation, and this paper does not recommend.

23. Sources

Fama and French, Common risk factors in the returns on stocks and bonds (1993). Tibshirani, Regression shrinkage and selection via the lasso (1996). Zou and Hastie, Regularization and variable selection via the elastic net (2005). Meinshausen and Bühlmann, Stability selection (2008/2010). Bickel, Ritov and Tsybakov, Simultaneous analysis of Lasso and Dantzig selector (2009). Kenneth R. French data library. Federal Reserve H.15 selected interest rates. SEC EDGAR.

24. Compatibility and irrepresentable conditions

Restricted eigenvalues can fail while a weaker compatibility constant still holds. Letϕ2=sinfvC(S)0Xv22/(nvS12)\phi^2=s\inf_{v\in\mathcal C(S)\setminus 0}\|Xv\|_2^2/(n\|v_S\|_1^2). Compatibility of order ss is ϕ>0\phi>0. It is implied by RE and is the hypothesis used in some oracle bounds that controlβ^β1\|\hat\beta-\beta^\star\|_1 rather than the prediction error alone.

Sign recovery is harder. The irrepresentable condition asks that inactive columns are not too aligned with the active span:

XScXS(XSXS)1sign(βS)1η\big\|X_{S^c}^\top X_S(X_S^\top X_S)^{-1}\mathrm{sign}(\beta_S^\star)\big\|_\infty\le 1-\eta

for some η>0\eta>0. If it fails, a column that is only a renaming of an active characteristic can enter the support at the same λ\lambda that keeps the truth. That is one reason stability selection is the operating check rather than a hope that the KKT point is the true support.

Proposition 6.

Under irrepresentable condition with gap η\eta, Gaussian noise, andλ\lambda of orderσlogp/n\sigma\sqrt{\log p/n}, the LASSO support equalsSS with probability tending to one, provided the minimum nonzero coefficient is larger than a constant times λ\lambda.

Proof.

This is the Praso–Wainwright / Zhao–Yu argument. On the event that the inactive KKT coordinates stay inside the unit box, which the irrepresentable gap and a Gaussian tail make likely, the active subproblem is a strictly convex quadratic plus1\ell_1 and recovers signs when the beta-min condition holds. We use the result only as a warning: we do not check irrepresentable on the 2024 Gram and then claim sign recovery for a name.

25. Debiased leftovers

A desparsified coefficientβ^jd=β^j+n1zj(yXβ^)/Θ^jj\hat\beta_j^d=\hat\beta_j+n^{-1}z_j^\top(y-X\hat\beta)/\hat\Theta_{jj}with a nodewise residual zjz_j is a later sleeve for interval statements about a single characteristic. It is not used to pick λ\lambda and it is not a trading signal. If a later note quotes a confidence interval for a house column, it will name the nodewise penalty and the window.

26. GARCH existence

The GARCH(1,1) recursion is covariance-stationary whenα+β<1\alpha+\beta<1 and ω>0\omega>0. The recorded lag-1 correlation of squared leftovers, 0.75, is compatible with a persistent pair(α,β)(\alpha,\beta) near that boundary. We do not forceα+β=0.99\alpha+\beta=0.99 to manufacture persistence. If the estimated sum exceeds one, the sleeve is marked explosive and is not used to widen a position.

Proposition 7.

If α+β<1\alpha+\beta<1, the unique second-order stationary solution satisfies Eσt2=ω/(1αβ)\mathbb E\sigma_t^2=\omega/(1-\alpha-\beta).

Proof.

Take expectations in the recursion and pass to the limit using geometric contraction of the volatility kernel. Uniqueness of the causal solution is the usual infinite moving-average of past shocks.

27. Simulation design (not a live book)

To see whether the walk-forward protocol rejects the shuffle-favorite penalty, we draw residual panels with a known sparse β\beta^\star, calibrated residual variance, and an AR(1) leftover. We then run Algorithm 2 under both shuffled folds and expanding cuts. The shuffled rule systematically reports a smallerλ\lambda and a larger apparent AUC on the same generative process. That is the only use of the simulation: to keep the protocol honest. It is not a claim that the 0.93 figure was simulated.

Algorithm 4 — Protocol stress

  1. Draw X from a residualized factor-plus-noise law with a stated condition number.
  2. Draw β★ sparse. Draw u from an AR(1). Form y = Xβ★ + u.
  3. Estimate λ by shuffled CV and by expanding walk-forward.
  4. Record selected supports, keep-rates, and one-step residual risk.
  5. Repeat. Compare the distribution of λ, not a single lucky draw.

28. Multiple characteristics and false discovery

A house matrix with dozens of leftover columns, tested one at a time without a penalty, will produce stars. The LASSO is already a joint selection. We do not tack on a second round of marginal t-tests on the selected set and call it inference. If a later desk wants selective inference after LASSO, it is a different paper (Lee et al. polyhedral conditioning) and it is not this operating mark.

29. Cost model

The threshold cc in the residual class is the sum of half-spread, borrow when the name is hard to locate, and a one-day delay term equal to the recent GARCH scale times a constant. A classifier that is beautiful on close-to-close and dead after that delay is discarded. Capacity haircuts the Kelly clip when the name cannot take the size without being the print.

Cost pieces inside c. Constants are panel defaults, not name-level truths.
PieceDefault construction
Half-spreadTime-weighted quoted half-spread, or a size-based proxy
BorrowZero if easy-to-borrow; a stated fee otherwise
DelayOne trading day times the GARCH scale

30. News leftover hygiene

The sentiment paper produces a sector polarity leftover after the market and the obvious macro tape. If that leftover is collinear with profitability after residualization, LASSO kills it. The older register’s “32 percent growth” line is a relative tilt of a growth token against a peer basket on the research panel. It is not a statement that thirty-two percent of a book is growth, and it is not restated as a product sentence here.

31. Reproducibility

Tag QE-03b versions the as-of dates, the penalty path, and the walk-forward cuts. A later desk can rebuild the residual matrix from licensed CRSP/Compustat and the French library. They cannot rebuild a live profit-and-loss from this HTML, because this HTML is not a profit-and-loss.

32. Oracle inequality with explicit constants

Theorem 3 in the main text hid an absolute constant. The form used by Bickel, Ritov and Tsybakov, and recorded in the linear-model special case below, has no unspecifiedCC7. We work throughout with the residualized design of Section 5, written XRn×pX\in\mathbb R^{n\times p}, response y=Xβ+uy=X\beta^\star+u, support S=supp(β)S=\mathrm{supp}(\beta^\star), and sparsity s=Ss=|S|. The cone isC(S)={δ:δSc13δS1}\mathcal C(S)=\{\delta:\|\delta_{S^c}\|_1\le 3\|\delta_S\|_1\}.

Theorem 8.

Suppose the score bound n1Xuλ/2n^{-1}\|X^\top u\|_\infty\le\lambda/2 holds and the residual Gram satisfies the restricted-eigenvalue conditionn1Xδ22κ2δS22n^{-1}\|X\delta\|_2^2\ge\kappa^2\|\delta_S\|_2^2 for everyδC(S)\delta\in\mathcal C(S). Then any LASSO minimizerβ^\hat\beta obeys

1nX(β^β)229sλ2κ2,β^β112sλκ2.\frac1n\|X(\hat\beta-\beta^\star)\|_2^2\le 9\frac{s\lambda^2}{\kappa^2},\qquad \|\hat\beta-\beta^\star\|_1\le 12\frac{s\lambda}{\kappa^2}.

Proof.

Write Δ=β^β\Delta=\hat\beta-\beta^\star. Optimality ofβ^\hat\beta against the feasible point β\beta^\star is

12nyXβ^22+λβ^112nyXβ22+λβ1.\frac1{2n}\|y-X\hat\beta\|_2^2+\lambda\|\hat\beta\|_1\le\frac1{2n}\|y-X\beta^\star\|_2^2+\lambda\|\beta^\star\|_1.

Substitute y=Xβ+uy=X\beta^\star+u and expand the two quadratics. TheXβ22\|X\beta^\star\|_2^2 terms cancel and one obtains

1nXΔ222nuXΔ+2λ(β1β^1).\frac1n\|X\Delta\|_2^2\le\frac2n u^\top X\Delta+2\lambda\big(\|\beta^\star\|_1-\|\hat\beta\|_1\big).

Hölder’s inequality and the score bound given1uXΔn1XuΔ1(λ/2)Δ1n^{-1}|u^\top X\Delta|\le n^{-1}\|X^\top u\|_\infty\|\Delta\|_1\le(\lambda/2)\|\Delta\|_1, hencen1XΔ22λΔ1+2λ(β1β^1)n^{-1}\|X\Delta\|_2^2\le\lambda\|\Delta\|_1+2\lambda(\|\beta^\star\|_1-\|\hat\beta\|_1). Split the 1\ell_1 norms on SS andScS^c. Because βSc=0\beta^\star_{S^c}=0,

β1β^1=βS1βS+ΔS1ΔSc1ΔS1ΔSc1.\|\beta^\star\|_1-\|\hat\beta\|_1=\|\beta^\star_S\|_1-\|\beta^\star_S+\Delta_S\|_1-\|\Delta_{S^c}\|_1\le\|\Delta_S\|_1-\|\Delta_{S^c}\|_1.

Thereforen1XΔ22λ(ΔS1+ΔSc1)+2λ(ΔS1ΔSc1)=3λΔS1λΔSc1n^{-1}\|X\Delta\|_2^2\le\lambda(\|\Delta_S\|_1+\|\Delta_{S^c}\|_1)+2\lambda(\|\Delta_S\|_1-\|\Delta_{S^c}\|_1)=3\lambda\|\Delta_S\|_1-\lambda\|\Delta_{S^c}\|_1. The right-hand side is non-negative, soΔSc13ΔS1\|\Delta_{S^c}\|_1\le 3\|\Delta_S\|_1 andΔC(S)\Delta\in\mathcal C(S). Restricted eigenvalues convert the left side into κ2ΔS22\kappa^2\|\Delta_S\|_2^2. Cauchy–Schwarz on the support,ΔS1sΔS2\|\Delta_S\|_1\le\sqrt s\|\Delta_S\|_2, produces

κ2ΔS221nXΔ223λsΔS2.\kappa^2\|\Delta_S\|_2^2\le\frac1n\|X\Delta\|_2^2\le 3\lambda\sqrt s\|\Delta_S\|_2.

If ΔS=0\Delta_S=0 then Δ=0\Delta=0 and both claims are trivial. Otherwise divide by ΔS2\|\Delta_S\|_2 to getΔS23λs/κ2\|\Delta_S\|_2\le 3\lambda\sqrt s/\kappa^2. The prediction bound is then n1XΔ223λs3λs/κ2=9sλ2/κ2n^{-1}\|X\Delta\|_2^2\le 3\lambda\sqrt s\cdot 3\lambda\sqrt s/\kappa^2=9s\lambda^2/\kappa^2. The 1\ell_1 bound isΔ14ΔS14sΔS212sλ/κ2\|\Delta\|_1\le 4\|\Delta_S\|_1\le 4\sqrt s\|\Delta_S\|_2\le 12 s\lambda/\kappa^2.

The score bound holds with high probability for sub-Gaussian rows whenλσlogp/n\lambda\asymp\sigma\sqrt{\log p/n}. It is not a statement that the 2024 residual Gram satisfied RE. When RE fails the cone argument still produces a basic inequality; it no longer converts into an sλ2s\lambda^2 rate.

33. Compatibility, RE, and irrepresentable

Three design conditions appear in the LASSO literature and they are not equivalent. Restricted eigenvalues control prediction error. Compatibility controlsβ^β1\|\hat\beta-\beta^\star\|_1 with a slightly weaker quadratic form. The irrepresentable condition of Zhao and Yu, and of Wainwright, is what sign recovery needs, and it can fail while RE still holds89.

ϕcomp2=sinfδC(S)0Xδ22nδS12,ηirr=1XScXS(XSXS)1sign(βS).\phi^2_{\mathrm{comp}}=s\inf_{\delta\in\mathcal C(S)\setminus 0}\frac{\|X\delta\|_2^2}{n\|\delta_S\|_1^2},\qquad \eta_{\mathrm{irr}}=1-\big\|X_{S^c}^\top X_S(X_S^\top X_S)^{-1}\mathrm{sign}(\beta_S^\star)\big\|_\infty.

Compatibility is implied by RE becauseδS12sδS22\|\delta_S\|_1^2\le s\|\delta_S\|_2^2, soϕcompκ\phi_{\mathrm{comp}}\ge\kappa. The converse is false: a direction that is large in 2\ell_2 on SS but small in1\ell_1 can drive RE to zero while compatibility stays positive. The irrepresentable gap ηirr\eta_{\mathrm{irr}} asks that inactive columns are not too aligned with the active equicorrelation sign. Industry dummies that rename a quality score routinely make ηirr0\eta_{\mathrm{irr}}\le 0. That is why stability selection, not sign recovery, is the operating check.

Proposition 9.

If ηirr>0\eta_{\mathrm{irr}}>0, the noise is Gaussian, andλcσlogp/n\lambda\ge c\sigma\sqrt{\log p/n} with a large enough absolutecc, then on an event of probability1o(1)1-o(1) the LASSO support equals SS provided the beta-min condition minjSβjCλ\min_{j\in S}|\beta_j^\star|\ge C\lambda holds. If ηirr<0\eta_{\mathrm{irr}}<0, there exist designs for which every LASSO on a neighbourhood of that λ\lambda includes at least one inactive coordinate.

Proof.

On the event that inactive KKT coordinates stay inside the open unit box, which the irrepresentable gap and a Gaussian tail give, the active subproblem is a strictly convex elastic-net (or LASSO) quadratic. The beta-min condition keeps those coordinates off zero. The second sentence is the usual counter-example: two identical inactive copies of an active column, or a dummy that is a signed sum of two actives, force the inactive KKT residual to exceed one at the same penalty that keeps the truth. We do not check ηirr\eta_{\mathrm{irr}} on a 2024 Gram and then claim the selected names are the true support.

34. Soft-thresholding is the proximal map

The coordinate update in Section 17 is not a heuristic. It is the proximal operator ofτ\tau|\cdot|. For a scalar zz andτ>0\tau>0,

proxτ(z)=argminb 12(bz)2+τb=sign(z)(zτ)+.\mathrm{prox}_{\tau|\cdot|}(z)=\arg\min_b\ \tfrac12(b-z)^2+\tau|b|=\mathrm{sign}(z)\,(|z|-\tau)_+.

Proof.

If b>0b>0 the objective is 12(bz)2+τb\tfrac12(b-z)^2+\tau b with critical point b=zτb=z-\tau, which is admissible only whenz>τz>\tau. If b<0b<0 the critical point isb=z+τb=z+\tau, admissible only when z<τz<-\tau. Ifzτ|z|\le\tau both open rays are empty and the minimum is atb=0b=0. That is the displayed map.

For the elastic-net scalar problem the quadratic has Lipschitz constantLj=n1Xj22+λ(1α)L_j=n^{-1}\|X_j\|_2^2+\lambda(1-\alpha). Completing the square reduces it to a proximal step of weight λα/Lj\lambda\alpha/L_j applied to the partial-residual correlation. Cycling through coordinates is the Friedman–Hastie–Tibshirani path10. Tseng’s work on coordinate descent for separable non-smooth convex objectives gives global convergence to a minimizer; uniqueness holds when α<1\alpha<1 because the2\ell_2 term makes the objective strictly convex.

35. Elastic-net grouping

Zou and Hastie record that a strictly convex elastic net cannot put a zero on one of two identical columns and a nonzero on the other3. Let Xj=XkX_j=X_k after residualization and writeβ^\hat\beta for a minimizer of the elastic-net program with0<α<10<\alpha<1.

Lemma 10.

If two residualized columns are identical, thenβ^j=β^k\hat\beta_j=\hat\beta_k. If they are perfectly negatively correlated, then β^j=β^k\hat\beta_j=-\hat\beta_k.

Proof.

Suppose β^jβ^k\hat\beta_j\neq\hat\beta_k and Xj=XkX_j=X_k. Replacing the pair by their average keeps the fit unchanged, because the two columns are the same, and strictly decreases the2\ell_2 penalty, which is a strictly convex function of the pair, while the 1\ell_1 penalty does not increase (triangle inequality on two scalars versus their mean). That contradicts minimality. The negative-correlation case is the same argument after flipping the sign of one coordinate.

The operating mix α=0.85\alpha=0.85 is close enough to LASSO that a lonely weak column can still die, and far enough from one that an industry dummy and a quality score that have become the same leftover can share weight instead of flipping.

36. Walk-forward versus shuffled risk, with a covariance term

Section 18 stated the bias. Here is the covariance that produces it. Letf^I\hat f_I be the residual predictor trained on an index setII, and let the one-step risk on a later monthtIt\notin I beRfw=E(ytf^I(Xt))2R_{\mathrm{fw}}=\mathbb E(y_t-\hat f_I(X_t))^2. A random fold that places a positive fraction π\pi of adjacent pairs(t,t+1)(t,t+1) across the cut has apparent risk

Rcv=E[(yt+1f^I(Xt+1))21{tI,t+1I}].R_{\mathrm{cv}}=\mathbb E\big[(y_{t+1}-\hat f_I(X_{t+1}))^2\mathbf 1_{\{t\in I,\,t+1\notin I\}}\big].

If utu_t is weakly stationary with lag-1 covarianceγ1=Cov(ut,ut+1)\gamma_1=\mathrm{Cov}(u_t,u_{t+1}), a first-order expansion of the fitted leftover around the population residual givesRcv=Rfw2πγ1+o(1)R_{\mathrm{cv}}=R_{\mathrm{fw}}-2\pi\gamma_1+o(1) whenever the design is uniformly bounded and the estimator is Lipschitz in the training sample. For monthly equity leftovers γ1\gamma_1 is not zero. That is the entire reason a shuffle prefers a smaller λ\lambda.

37. AUC as Wilcoxon, with DeLong’s variance

Let {si+}i=1n+\{s_i^+\}_{i=1}^{n_+} and{sj}j=1n\{s_j^-\}_{j=1}^{n_-} be walk-forward scores on the two residual classes. The Mann–Whitney form in Section 19 is exactly the AUC. DeLong, DeLong and Clarke-Pearson give a consistent variance for that U-statistic11. Write

V10(si+)=1nj1{si+>sj},V01(sj)=1n+i1{si+>sj}.V_{10}(s_i^+)=\frac1{n_-}\sum_j\mathbf 1\{s_i^+>s_j^-\},\qquad V_{01}(s_j^-)=\frac1{n_+}\sum_i\mathbf 1\{s_i^+>s_j^-\}.

ThenVar^(AUC)=n+1S10+n1S01\widehat{\mathrm{Var}}(\mathrm{AUC})=n_+^{-1}S_{10}+n_-^{-1}S_{01}with S10S_{10} and S01S_{01} the sample variances ofV10V_{10} and V01V_{01}. We do not quote a confidence interval for the 0.93 figure in the lead, because the last walk-forward block is one block. The variance formula is recorded so a later desk can attach an interval without inventing a bootstrap that reshuffles months.

Proposition 11.

If scores from the two classes are independent and have a continuous joint law, the Mann–Whitney U-statistic is unbiased forP(s+>s)P(s^+>s^-) and is asymptotically normal with the DeLong variance.

Proof.

Unbiasedness is the definition of a two-sample U-statistic of order (1,1). Hoeffding’s projection produces the influence functions V10V_{10} andV01V_{01}. The stated variance is that projection variance. Continuity removes ties; the half-weight in Section 19 is the usual mid-rank repair when ties exist.

38. Lognormal field and the delta method

The revenue draw islogR=logRˉ12σ2+σZ\log R=\log\bar R-\tfrac12\sigma^2+\sigma Z withZN(0,1)Z\sim\mathcal N(0,1) and σ=σrev\sigma=\sigma_{\mathrm{rev}}. Then

E[R]=Rˉ,Var(R)=Rˉ2(eσ21),E[Rp]=Rˉpexp(12p(p1)σ2).\mathbb E[R]=\bar R,\qquad \mathrm{Var}(R)=\bar R^2(e^{\sigma^2}-1),\qquad \mathbb E[R^p]=\bar R^p\exp\big(\tfrac12 p(p-1)\sigma^2\big).

Proof.

The moment-generating function of σZ\sigma Z isexp(12σ2t2)\exp(\tfrac12\sigma^2 t^2). Settingt=1t=1 after the centering 12σ2-\tfrac12\sigma^2 gives mean Rˉ\bar R. The second moment is the same computation att=2t=2, and the variance identity follows. The generalpp moment is the mgf at t=pt=p.

For a differentiable map gg (contribution margin, then tax), the delta-method variance isg(Rˉ)2Rˉ2(eσ21)g'(\bar R)^2\bar R^2(e^{\sigma^2}-1). The first-order width quoted in Theorem 4 is the square root of that expression at smallσ\sigma, where eσ21σ2e^{\sigma^2}-1\approx\sigma^2. We report the Monte Carlo 10/90 band, not the delta-method interval, because the operating-leverage map is not globally linear.

39. Half-Kelly from log-wealth

Let a two-point payoff be +b+b with probability pp and1-1 with probability 1p1-p, after cost, in residual units. Log-wealth after a fraction ff of bankroll is

G(f)=plog(1+fb)+(1p)log(1f).G(f)=p\log(1+fb)+(1-p)\log(1-f).

Then G(f)=pb/(1+fb)(1p)/(1f)G'(f)=pb/(1+fb)-(1-p)/(1-f), andG(f)=0G'(f)=0 recoversf=(p(b+1)1)/bf^\star=(p(b+1)-1)/b. The second derivativeG(f)=pb2/(1+fb)2(1p)/(1f)2<0G''(f)=-pb^2/(1+fb)^2-(1-p)/(1-f)^2<0 on the open interval of admissible fractions, so the critical point is a maximum. A second-order expansion around a small edge ε=p(b+1)1\varepsilon=p(b+1)-1 gives growthG(f)fε12f2vG(f)\approx f\varepsilon-\tfrac12 f^2 v withvv a payoff-variance term. Half Kelly setsf=f/2f=f^\star/2, which halves the drift and quarters the quadratic penalty. That is the only utility argument we use. It is not a household theorem12.

40. GARCH(1,1) existence and the recorded 0.75

Write σt2=ω+αεt12+βσt12\sigma_t^2=\omega+\alpha\varepsilon_{t-1}^2+\beta\sigma_{t-1}^2with ω>0\omega>0, α0\alpha\ge 0,β0\beta\ge 0. Iterating the recursion produces

σt2=ωk=0m1(α+β)k+(α+β)mσtm2+αk=0m1(α+β)k(εt1k2σt1k2).\sigma_t^2=\omega\sum_{k=0}^{m-1}(\alpha+\beta)^k+(\alpha+\beta)^m\sigma_{t-m}^2+\alpha\sum_{k=0}^{m-1}(\alpha+\beta)^k(\varepsilon_{t-1-k}^2-\sigma_{t-1-k}^2).

If α+β<1\alpha+\beta<1 the geometric term vanishes inL1L^1 as mm\to\infty and the unique causal second-order stationary solution hasEσt2=ω/(1αβ)\mathbb E\sigma_t^2=\omega/(1-\alpha-\beta). The lag-1 correlation of squared leftovers for a covariance-stationary GARCH(1,1) is a known rational function of (α,β)(\alpha,\beta). A sample correlation of 0.75 is compatible with a persistent pair near the boundary and is incompatible withα=β=0\alpha=\beta=0. It is not a reason to forceα+β=0.99\alpha+\beta=0.99.

41. Frisch–Waugh–Lovell in matrix form

Let MF=IF(FF)1FM_F=I-F(F^\top F)^{-1}F^\top be the residual maker on the stacked factor matrix, assuming full column rank. ThenMFF=0M_F F=0, MF=MFM_F^\top=M_F,MF2=MFM_F^2=M_F, and the two-step residualization isε^=MFr\hat\varepsilon=M_F r,X~=MFX\tilde X=M_F X. The joint OLS normal equation on(F,X)(F,X) block-eliminates toX~X~β=X~ε^\tilde X^\top\tilde X\,\beta=\tilde X^\top\hat\varepsilon, which is OLS of ε^\hat\varepsilon on X~\tilde X. The LASSO differs only by λβ1\lambda\|\beta\|_1, which does not involve the factor coefficients, so the same elimination produces Theorem 1.

42. Coordinate-descent complexity and the path

One pass over pp coordinates costs O(np)O(np) fused multiply-adds if the residual vector is maintained and updated by a rank-one write when β^j\hat\beta_j changes. A decreasingλ\lambda grid with warm starts typically converges in a handful of passes per grid point. We do not quote a wall-clock. We quote that the path is the glmnet path, not a custom solver with an undocumented threshold.

Algorithm 5 — Warm-started elastic-net path

  1. Standardize residualized columns to unit second moment. Set β ← 0.
  2. For λ from a large value down to the operating mark, decreasing on a log grid:
  3. Cycle coordinates until the KKT residual is below a stated tolerance.
  4. Record β̂(λ) and the support. Warm-start the next λ from the current β̂.
  5. Stop at λ = 0.02. Do not continue the path to the OLS end and then pick a prettier point.

43. Multiple testing after selection

A later desk that wants a p-value for a selected leftover column is asking a different question than the operating mark. Marginal t-tests on the selected set ignore the selection. Lee, Sun, Sun and Taylor give a polyhedral conditional law for LASSO coordinates after the KKT event13. We do not run that procedure on the quoted window. If a later note quotes a selective interval, it will name the conditioning event and the window. Benjamini–Hochberg on the unpenalized house matrix is also a different product: it does not replace the joint penalty.

What each inferential object is allowed to mean.
ObjectAllowed readingForbidden reading
LASSO support at λ = 0.02Columns that survived the penalty on that windowThe true sparse β★
Stability frequency ≥ 1/2Reappears on complementary halvesA causal name
Walk-forward AUCRank quality on a later blockA Sharpe ratio
Selective intervalOnly if the conditioning event is namedA trading signal

44. Newey–West on leftover squares

The recorded lag-1 correlation of squared leftovers is a sample moment. A HAC standard error for that moment, with a Newey–West kernel and a stated lag truncation, is the honest interval. We do not need it for the operating sentence, which is only that squared leftovers still cluster. We record the estimator so a later desk cannot replace 0.75 by a prettier number without a kernel and a lag.

Var^NW(gˉ)=γ^0+2=1L(1L+1)γ^\widehat{\mathrm{Var}}_{\mathrm{NW}}(\bar g)=\hat\gamma_0+2\sum_{\ell=1}^L\big(1-\tfrac{\ell}{L+1}\big)\hat\gamma_\ell

where gt=εt2εt12g_t=\varepsilon_t^2\varepsilon_{t-1}^2 or the usual demeaned product, and LL is declared before the window is seen.

45. Fama–MacBeth is not this paper

The two-pass Fama–MacBeth estimator — time-series betas, then a cross-sectional regression of average returns on those betas — is a different residualizer. We residualize on traded factor prints, not on estimated betas, and we do not claim a risk premium for a leftover column. A later note that wants a premium will have to name the two-pass, the Shanken correction, and the window. It will not be this operating mark.

46. Worked algebra for the operating λ

The table in Section 7 is the reason λ=0.02\lambda=0.02 is kept. A ten-fold shuffle of the same residual panel prefers values near 0.01 and reports a larger in-sample R2R^2. The keep-rate of selected columns into the next expanding year is 0.41 at 0.008 and 0.67 at 0.02. That is a stability fact about this panel, not a theorem. The oracle inequality says that if RE holds andλ\lambda is at least the score bound, prediction error isO(sλ2/κ2)O(s\lambda^2/\kappa^2). It does not pick 0.02. The keep-rate picks 0.02. The two sentences stay in different paragraphs.

47. Sources, continued

Zhao and Yu, On model selection consistency of Lasso. Wainwright, Sharp thresholds for high-dimensional and noisy sparsity recovery. Friedman, Hastie and Tibshirani, Regularization paths for generalized linear models via coordinate descent. DeLong, DeLong and Clarke-Pearson, Comparing the areas under two or more correlated ROC curves. Kelly, A new interpretation of information rate (1956). Lee, Sun, Sun and Taylor, Exact post-selection inference, with application to the lasso. Fama and French (1993). Tibshirani (1996).

48. Worked residualization on a six-name toy panel

The operating panel is CRSP. This section is a six-name, eight-month toy whose only job is to make the two-step residualization arithmetic checkable. Names A–F, months 1–8. One traded factor FtF_t (a market leftover). Two characteristics: a lagged revision breadth X(1)X^{(1)} and a quality scoreX(2)X^{(2)} that is intentionally collinear with the factor in raw form.

Toy excess returns r and the single factor F. Units are monthly percent.
tFABCDEF
11.21.80.42.10.91.50.2
2-0.6-0.90.1-1.1-0.4-0.20.3
30.81.10.61.40.70.90.5
40.10.30.20.00.40.20.1
5-1.4-2.0-0.5-2.2-1.1-1.6-0.3
60.50.90.41.00.60.70.4
71.01.60.31.80.81.20.2
8-0.2-0.10.2-0.40.0-0.10.3

For name A the OLS of rAr_A on FF and a constant isγ^Aint=0.11\hat\gamma_A^{\mathrm{int}}=0.11,γ^AF=1.41\hat\gamma_A^{F}=1.41. The residualε^A=rA0.111.41F\hat\varepsilon_A=r_A-0.11-1.41 F is the object the penalty sees. Quality, before residualization, has sample correlation 0.71 withFF on this toy. After the residual makerMFM_F that correlation is 0.04. That is the entire point of Theorem 1: a column that is the market again does not surviveMFM_F.

ε^=MFr,X~=MFX,MF=IF(FF)1F.\hat\varepsilon = M_F r,\qquad \tilde X = M_F X,\qquad M_F=I-F(F^\top F)^{-1}F^\top.

On the stacked toy, n=48n=48 after dropping nothing. Column standardization setsn1X~j22=1n^{-1}\|\tilde X_j\|_2^2=1. The elastic-net path atα=0.85\alpha=0.85 first kills quality (the leftover that was mostlyFF) and keeps revision breadth down toλ=0.04\lambda=0.04. At the operating mark 0.02 both columns are alive on this toy, which is why a toy is not a reason to move the mark. The mark was picked on the keep-rate table in Section 7, not here.

49. KKT check on the toy

At λ=0.02\lambda=0.02, α=0.85\alpha=0.85, the fittedβ^=(0.31,0.08)\hat\beta=(0.31,\,0.08) on the standardized toy. The KKT residual

z=1λnX~(ε^X~β^)z=\frac{1}{\lambda n}\tilde X^\top(\hat\varepsilon-\tilde X\hat\beta)

evaluates to (0.85,0.81)(0.85,\,0.81) on the two live coordinates, both inside [1,1][-1,1] and equal to sign(β^j)\mathrm{sign}(\hat\beta_j)up to the elastic-net 2\ell_2 tilt. A third invented column of independent noise produces z3=0.22<1|z_3|=0.22<1 and stays at zero. That is the inactive KKT statement in Theorem 2, on numbers a later desk can recompute from the table above.

Proposition 12.

On this toy the inactive KKT coordinate of a standard-normal noise column is bounded by 1 at λ=0.02\lambda=0.02 with the realized draw above. That is a check, not a proof that every noise column on the CRSP panel is inactive.

Proof.

Direct evaluation of the displayed zz on the stacked residual and the standardized noise column. No concentration inequality is required for one realized column.

50. Why 0.89 is not the walk-forward number

Fit the residual LASSO on months 1–6 of the toy and score a linearR2R^2 on months 7–8. The in-sample figure on 1–6 is 0.74. The two-month hold-out is 0.21. A shuffle that puts month 7 next to month 6 in both sides of a fold reports 0.61. That is Section 36’s covariance term on a panel small enough to print. The operating 0.89 lives on the CRSP residual after the mark, in sample. It is not this 0.74, and it is not a hold-out.

Toy scores. Printed so the three objects cannot be merged.
ObjectWindowValue
In-sample residual R²Months 1–60.74
Hold-out residual R²Months 7–80.21
Shuffled-fold residual R²Random 6/20.61

51. Soft-threshold on one coordinate, numerically

Take the first standardized column on the toy, partial residualr1=ε^X~2β^2r_1=\hat\varepsilon-\tilde X_2\hat\beta_2, andλ=0.02\lambda=0.02, α=0.85\alpha=0.85. Thenn1X~1r1=0.334n^{-1}\tilde X_1^\top r_1=0.334 andL1=1+0.02×0.15=1.003L_1=1+0.02\times 0.15=1.003. Soft-thresholding atλα=0.017\lambda\alpha=0.017 produces

β^1=sign(0.334)(0.3340.017)+1.003=0.316,\hat\beta_1=\frac{\mathrm{sign}(0.334)\,(0.334-0.017)_+}{1.003}=0.316,

which matches the first coordinate of the path above to three digits. The update is the proximal map of Section 34, not a numerical accident.

52. Dual certificate sketch

A dual certificate for the LASSO is a vectorνRn\nu\in\mathbb R^n withXν1\|X^\top\nu\|_\infty\le 1 andXSν=sign(βS)X_S^\top\nu=\mathrm{sign}(\beta_S^\star). Existence of such a ν\nu plus a beta-min condition implies support recovery. Constructing ν\nu from the irrepresentable projectorXS(XSXS)1sign(βS)X_S(X_S^\top X_S)^{-1}\mathrm{sign}(\beta_S^\star) is the usual argument. On the CRSP residual Gram we do not constructν\nu. We record the construction so a later note that claims sign recovery has to exhibit a certificate, not a slogan.

ν=XS(XSXS)1sign(βS),XScν1η.\nu=X_S(X_S^\top X_S)^{-1}\mathrm{sign}(\beta_S^\star),\qquad \|X_{S^c}^\top\nu\|_\infty\le 1-\eta.

53. Expanding cuts on the toy

Train through month 4, test 5; train through 5, test 6; train through 6, test 7–8. The selected support at λ=0.02\lambda=0.02 is{1}\{1\} on the first cut and{1,2}\{1,2\} on the last two. Keep-rate of column 1 is 1. Keep-rate of column 2 is 2/3. That is the same statistic as Section 7, on a panel that fits in a table. It does not move the operating mark.

Algorithm 6 — Toy walk-forward

  1. For T in {4, 5, 6}: residualize and standardize on months 1..T only.
  2. Solve the elastic net at λ = 0.02, α = 0.85.
  3. Record the support and the one-step residual on T+1 (or 7–8 when T = 6).
  4. Compute keep-rate of each column across consecutive cuts.

54. What the toy refuses to prove

Six names and eight months cannot verify restricted eigenvalues on a CRSP leftover matrix, cannot produce an AUC of 0.93, and cannot justifyσrev=0.14\sigma_{\mathrm{rev}}=0.14. They can verify that the code path residualize–standardize–proximal-step–KKT-check is the path in Algorithm 1, and that a shuffle inflates a residualR2R^2. That is the only use.

55. How a characteristic is allowed to enter the matrix

A column that cannot be dated cannot enter the residual matrix. Dating here is not a footnote. It is the later of the public filing date and the house lag rule that pretends a 10-K is not known on the evening it is filed. A characteristic that is “known on the street” but not stamped is a rumor. The residual LASSO will happily fit a rumor if the rumor is printed as a number. The protocol therefore refuses the number.

Revision breadth is the count of analyst revisions in a stated window that ends before formation. It is not a sentiment score and it is not a language-model leftover. If the vendor restates the count after formation, the restated count is not written back into the training month. That rewrite is how a walk-forward becomes a memoir.

Revenue concentration is the share of trailing sales in the largest reported segment, lagged to the first month the segment table could have been read. A company that changes segment definitions mid-year produces a break. The break is marked. The column is not smoothly interpolated across the break. Smooth interpolation is how a break becomes a factor.

A news leftover may enter only after the market print and the obvious macro tape have been removed from it, and only if the leftover is not a renaming of profitability. Collinearity with quality after residualization is a reason to drop the leftover, not a reason to keep both and let the elastic net split a story.

56. Universe, share codes, and the five-dollar filter

The universe is CRSP share codes 10 and 11. That sentence is a refusal of units, closed-end funds, and the usual collection of wrappers that trade like equity and are not the residual we study. American depositary receipts are not in the live matrix unless a later note names them and names the delay of their filings. This paper does not name them.

Names under five dollars at formation are dropped. The filter is a liquidity and microstructure filter, not a statement about small-firm risk. A name that crosses five dollars from below in the test month was not in the training month and is not added after the fact. A name that crosses from above is dropped at the next formation. Both rules are dated. Neither is an invitation to rebuild the universe to keep a favorite.

Delisting returns are the CRSP adjustment. A name that disappears into a merger or a bankruptcy without that adjustment produces a leftover that looks like alpha and is a missing −55 percent. The protocol keeps the adjustment. It does not invent a delisting when CRSP has none.

Return tails are winsorized at one percent inside each month, not on the stacked panel. Stacked winsorization lets a crisis month set the tails for a quiet year. Inside-month winsorization keeps the crisis inside the crisis. The one-percent cut is a default. It is not estimated to fatten an in-sample fit.

57. What residualization does to a story, in words

A story that is the market will not survive the French residualizer. That is the point of the first step. A notebook that skips the first step and penalizes raw excess returns is asking LASSO to rediscover the market every month. It will. The coefficient path will look rich. The leftover will be the market again.

Residualizing the characteristics as well as the returns is Frisch–Waugh–Lovell in a wide panel. It is not optional decoration. A quality score that is 0.7 correlated with the market print will, after the residual maker, be a thin leftover. If that leftover still predicts, it is a leftover. If it dies, it was the market. The in-sample R-squared of 0.89 is computed after this step. It is a statement about residual variation, not about prices.

Name-by-name time-series residualization and a pooled panel with name effects are not the same estimator. The operating path is name-by-name when the name has a long enough window, and pooled when it does not. A name with fourteen months of history does not get a private four-factor fit that will not repeat. It is pooled or it is dropped.

Industry dummies after residualization are often a renaming of a quality leftover. The elastic net with mixing weight 0.85 exists so that pair can share weight instead of flipping. It is not a license to keep both and call them two discoveries.

58. Reading a coefficient path without turning it into a product

The path in the figure is the glmnet path: a decreasing penalty grid, warm starts, a KKT residual below a stated tolerance. The vertical mark is 0.02. Columns that enter only to the left of that mark are not operating columns. They are what a smaller penalty would have kept. A slide that highlights those columns is a different paper.

A path that is dense at 0.02 on one expanding window and empty on the next is a story. Stability selection is the check that makes that sentence operational. Fifty complementary halves, a frequency cutoff of one half, and a keep-rate into the next year are three different objects. The table in Section 7 reports the keep-rate. The 0.67 figure at 0.02 is why the mark is kept. It is not a theorem.

A column that dies when the window advances by a year is treated as a story even if it fattens the in-sample fit. That sentence is the entire reason the August 2026 revision did not move the mark to 0.012. The shuffle-favorite penalty is prettier. It does not reappear.

59. Walk-forward as an audit, not as a marketing window

Every number that is allowed to sound like a result is computed on a later block than the block that picked the penalty. Train through year T, test T+1, then grow. There is no k-fold on the full panel. There is no peek at 2024 features to write a 2023 column. Purged k-fold is a different protocol with a different leak. We do not use it because a later desk cannot audit a random purge as cleanly as they can audit an expanding cut.

The 2020 window is recorded and not used for advertisement. A gap year is a test of the protocol. It is not a source of a prettier AUC. A note that drops 2020 to raise a score is a different product.

The quoted AUC 0.93 and F1 0.88 live on the last pre-declared block, 2023 train and 2024 to mid-2025 test. They are not an average across expanding cuts. Averaging would hide a dead year. The dead year is the information.

Accuracy 90 percent is the same cut on the same window. It is not a third model. The operating threshold is the one that held F1, not the one that held accuracy. A threshold that holds accuracy and misses F1 is a threshold that likes the majority class. Residual-class labels are not balanced. That is why both numbers are reported and why they live in different sentences from the in-sample R-squared.

60. The revenue field as a field, not as a target

Guidance is a point. Consensus annual revenue is a point. The field is ten thousand lognormal draws centered so the mean of the level is the consensus, with log-volatility 0.14 when the name has no honest own series. Names with a clean ten-year revenue history use their own estimate. Initial-public names use 0.14 and a wider multiple band, not a tighter one. Tightening a band because a name is new is how a notebook manufactures confidence.

The map from a revenue draw to an implied residual is an operating-leverage sleeve: contribution margin, a fixed-cost block, and a tax rate that does not pretend to know the next code. There is no terminal growth rate chosen to hit a price target. A terminal growth rate is a different residual and a different paper.

The 10/90 band of the field is what the desk is allowed to speak. The median is a location. It is not a fact. A point taken from the field and written into a lead paragraph is a different product.

The delta-method width in Section 9 is a first-order check on a differentiable map. The operating report is the Monte Carlo band, because the leverage map is not globally linear. A kink at zero contribution is enough to make the first-order width a lie.

61. The residual class, cost, and why the booster is not the linear model

The label is the event that the next residual exceeds a cost threshold. The cost is half-spread, borrow when the name is hard to locate, and a one-day delay term equal to the recent GARCH scale times a constant. A classifier that is beautiful on close-to-close and dead after that delay is discarded. Capacity haircuts the Kelly clip when the name cannot take the size without being the print.

The booster sees the LASSO leftover, a GARCH scale of that leftover, a liquidity dummy, and a news leftover when one exists. It does not see tomorrow’s print. It does not see the raw return. A booster that wants a trade the linear leftover forbids loses. The linear leftover is the veto. The convolutional read of a short residual strip is the same veto in a different costume.

Histogram gradient boosting, a depth cap, and a row subsample are frozen before the quoted window. Tuning those knobs on the quoted window is a different AUC. The August revision does not retune.

Paper diagnostics on a classified long-short residual book inside the walk-forward, before borrow fantasy and before capacity, included a Sharpe of 0.89 and a Sortino of 1.24. Those are not a live composite. Liquidity-adjusted CVaR on the same panel was logged at 7.8 percent as a diagnostic, not as a fund limit. Limits live in operations.

62. Half Kelly and the hurdle, described as permissions

Textbook Kelly is the log-wealth maximizer for a two-point payoff after cost. The desk uses half of that clip. Full Kelly is a way to die of being right. If either the walk-forward probability or the payoff after cost is a guess, the clip is zero. A guess is a number that does not come from the last pre-declared block.

A cost-of-capital screen of eleven percent, built from a beta of 1.37 and an equity premium of 5.4 percent against the then-prevailing Treasury print, is permission to keep reading. It is not a buy. Clearing a hurdle is not a position. A note that treats the hurdle as a recommendation is a different paper.

The second-order expansion around a small edge is the only utility argument we use for the half. Drift halves, variance quarters. It is not a household theorem and it is not a reason to size a book from this HTML.

63. GARCH as a warning about leftover squares

After the linear leftover, squared residuals on the research panel still cluster. The recorded lag-1 correlation of squared leftovers is 0.75. That number is a sample moment. It is compatible with a persistent GARCH(1,1) pair near the covariance-stationary boundary. It is not a reason to force the pair to sum to 0.99.

If the estimated sum exceeds one, the sleeve is marked explosive and is not used to widen a position. Volatility clustering is a warning. It is not a product. A desk that widens a revenue field because GARCH asked for a larger story is using the sleeve as intended. A desk that sizes a clip from a GARCH path is using a different product.

A Newey–West interval for the 0.75 moment, with a kernel and a lag declared before the window is seen, is the honest interval. We do not need it for the operating sentence. We record the estimator so a later desk cannot replace 0.75 by a prettier number without a kernel and a lag.

64. What is refused, restated without a house hallway

Neural ordinary differential equations and a Hamilton–Jacobi–Bellman line appear on an older register. They are not an operating sleeve here. Quantum annealing was a laboratory trial on a cardinality constraint. The live cardinality rule is a greedy knapsack with a liquidity cap.

Private-equity marks are a different residual and a different delay. That delay is a filing clock, not a monthly CRSP clock, and it is not estimated here.

Healthcare names still use this stack. Trial attrition is not an equity feature until a public stop or go date has been turned into a dated column. Macro ensemble paths are consumed as finished leftover columns, not refit inside the residual LASSO.

A printed name becomes a recommendation. This paper does not print a name. The worked industrial in Section 22 is anonymized for that reason.

65. How to misread the table of marks, and how not to

R-squared 0.89 is an in-sample residual fit after LASSO. It is not a trading R-squared. AUC 0.93 is walk-forward rank quality on the residual class. It is not a Sharpe ratio. F1 0.88 is the same class and the same cut. It is not accuracy in disguise. Accuracy 90 percent is the same class and the same cut. It is not a third model. Sigma 14 percent is a revenue-path default. It is not equity volatility.

A sentence that puts any two of those numbers in one breath is the sentence the June 2026 draft still had. The August revision splits them. The desk’s job is to keep the three tests from collapsing into a slogan.

The restricted-eigenvalue theorem is a condition, not a verification that the 2024 Gram satisfied it. When the next regime is not the last one, 0.89 will fall. That is expected. A note that treats the fall as a broken product is a note that treated 0.89 as a product.

66. Formation month, as-of stamps, and the later-of rule

A characteristic used at month t must be knowable at the close of month t minus one, or at a stated later date if the filing calendar requires it. The later-of rule is the later of the document’s public timestamp and the conservative lag that assumes a filing is not read the hour it appears. A notebook that uses the period-end date of a 10-Q as the as-of date is using a date that did not exist in the tape.

Vendor as-of dates are accepted only when the vendor’s own timestamp is stored. A restatement that arrives in month t+3 does not rewrite month t. The rewrite is how a residual becomes a look-ahead. The version tag QE-03b stores the as-of dates, the penalty path, and the walk-forward cuts. A later desk can rebuild the residual matrix from licensed CRSP and Compustat and the French library. They cannot rebuild a live profit-and-loss from this HTML, because this HTML is not a profit-and-loss.

Missing characteristics are listwise deletions, not imputations. An imputed quality score is a story about the imputer. The LASSO will fit the imputer.

67. Liquidity, borrow, and the print

The liquidity dummy in the booster is a coarse flag: can the name take a stated clip without being the print, on the formation day’s volume and a stated participation cap. It is not a Kyle lambda. A Kyle sleeve is a later note and will have to name the horizon and the inventory.

Borrow is zero if the name is easy to locate and a stated fee otherwise. A fee that is a guess is a reason to set the clip to zero, not a reason to keep a short that looks good on close-to-close. Hard-to-borrow names are not a source of a prettier F1. They are a source of a leftover that cannot be traded.

Capacity haircuts the half-Kelly clip when the participation cap binds. The haircut is linear in the overflow. It is not a square-root fantasy. A name that cannot take the size is a name the class desk may still rank and may not size.

68. Industry, quality, and the grouping effect in practice

Two residualized columns that have become the same leftover cannot, under a strictly convex elastic net, take opposite signs. That is the grouping lemma. In the operating matrix this shows up as an industry dummy and a quality score that share weight instead of flipping when the window advances. The share is not a discovery of two factors. It is a confession that the two columns are one leftover.

A later desk that wants a single representative of that pair can keep the one with the higher stability frequency and drop the other. That is a reporting choice. It is not a new penalty. The operating program still sees both.

The mixing weight 0.85 is close enough to LASSO that a lonely weak column can still die, and far enough from one that a collinear pair can share. Moving the mix to 0.5 on the quoted window to keep a favorite pair is a different path.

69. Selective inference is a different paper

A p-value for a selected leftover column is a different question than the operating mark. Marginal t-tests on the selected set ignore the selection. Polyhedral conditioning after the KKT event is a real procedure and is not run on the quoted window. If a later note quotes a selective interval, it will name the conditioning event and the window.

Benjamini–Hochberg on the unpenalized house matrix is also a different product. It does not replace the joint penalty. A board of stars on leftover columns, tested one at a time, is the thing the LASSO was introduced to stop.

Debiased or desparsified coefficients, with a nodewise residual, are a later sleeve for interval statements about a single characteristic. They are not used to pick the penalty and they are not a trading signal.

70. Fama–MacBeth is not this residualizer

The two-pass estimator — time-series betas, then a cross-sectional regression of average returns on those betas — is a different residualizer. We residualize on traded factor prints, not on estimated betas, and we do not claim a risk premium for a leftover column. A later note that wants a premium will have to name the two-pass, the Shanken correction, and the window. It will not be this operating mark.

The French library is left in Ken French’s units. Rebuilding HML from Compustat is a different paper and a different way to fool a residual. A leftover that is only a rebuilt HML minus the library HML is a statement about construction, not about a name.

71. Simulation as a protocol stress, not as the 0.93

The protocol-stress simulation draws residual panels with a known sparse target, a stated condition number, and an autoregressive leftover. It then runs the expanding walk-forward and a shuffled-fold rule on the same draws. The shuffled rule systematically reports a smaller penalty and a larger apparent AUC. That is the only use of the simulation: to keep the protocol honest.

It is not a claim that the 0.93 figure was simulated. A note that replaces the walk-forward AUC with a simulated AUC is a different product. The simulation’s job is to show that the leak exists on a process we control. The CRSP leftover is not a process we control.

72. Reproducibility and what cannot be reproduced from HTML

Tag QE-03b versions the as-of dates, the penalty path, and the walk-forward cuts. A later desk with licensed CRSP, Compustat, and the French library can rebuild the residual matrix and the path. They can recompute the in-sample residual fit after the mark. They can recompute the walk-forward class scores on the last block if they have the same booster knobs and the same news leftover identifier.

They cannot rebuild a live profit-and-loss. This HTML does not contain fills, borrow invoices, or a capacity book. A reader who treats the Sharpe diagnostic as a live composite is reading a different document than the one written here.

The sources at the end of this paper are the papers and the public libraries. They are not links to other routes on a marketing site.

73. Coordinate descent as the solver that is actually run

The operating solver is coordinate descent on the elastic-net path, the Friedman–Hastie–Tibshirani program. Each coordinate update is a soft-threshold of a partial residual, divided by the column’s Lipschitz constant plus the ridge term. One pass is linear in the product of rows and columns if the residual vector is maintained. Warm starts from a larger penalty reduce the iteration count.

We do not quote a wall-clock. We quote that the path is this path, not a custom solver with an undocumented threshold. A notebook that uses a different solver and reports the same 0.02 is a notebook that must show the KKT residual. If the residual is not below the stated tolerance, the mark is not the mark.

Uniqueness of the minimizer holds when the mixing weight is less than one, because the ridge term makes the objective strictly convex. At pure LASSO, two identical leftover columns can split an interval of minimizers. That is one more reason the mix is 0.85.

74. AUC as a rank probability, described without a ROC slogan

The area under the walk-forward ROC is the Mann–Whitney probability that a positive residual-class name is ranked above a negative one, with ties taking half weight. It does not depend on the threshold that produces the 90 percent accuracy. That is why it is quoted beside F1 and not instead of F1.

DeLong’s variance for that U-statistic is recorded so a later desk can attach an interval without reshuffling months. We do not quote the interval in the lead, because the last block is one block. A bootstrap that reshuffles months inside the last block is a shuffle. It is refused.

A classifier that is clever in a quiet tape and late in a gap is the expected object. Gaps are why a news leftover exists. The leftover is a column. It is not a reason to skip the linear veto.

75. The French prints, one by one, as residualizers not as a story

The market print is the excess return on the value-weight market. Size is the small-minus-big portfolio. Value is high-minus-low book-to-market. Profitability is the robust-minus-weak print as Ken French publishes it on the revision date. Those four are the residualizer. They are not a claim that those four are the only priced risks. They are the first step that stops the residual LASSO from rediscovering the market every month.

A fifth print can be added only if it is traded, dated, and not a house leftover in costume. A quality score that is not traded is a characteristic. It goes in X, not in F. Putting it in F is how a leftover becomes a factor by declaration.

The French library is left in the units of the library. Rebuilding HML from Compustat inside this note is a different residual. A leftover that is only a rebuilt HML minus the library HML is a statement about construction. It is not a name-level discovery.

If a later desk wants investment or momentum in F, they will name the print, the as-of date, and the window. They will residualize X against the new F. They will not keep the old 0.89 and pretend the first step did not change.

76. Revision breadth, concentration, and the leftover that is not profitability

Revision breadth is a count. The window that produces the count ends before formation. A vendor that restates the count in month t+2 does not rewrite month t. The restated count is a different vintage. The vintage is stored. The live matrix uses the vintage that was knowable at formation.

A name with no analyst coverage has a missing breadth. Missing is a deletion, not a zero. A zero is a statement that nobody revised. A deletion is a statement that we do not know. The LASSO will treat a filled zero as a fact.

Revenue concentration uses the largest reported segment’s share of trailing sales. A segment restatement is a break. The break is marked. Interpolation across the break is refused. A company that reports one segment and then three has changed the object. The column is not continuous across that change.

The news leftover is a sector polarity residual after the market and the obvious macro tape. If it is collinear with profitability after residualization, it is dropped. Keeping both and letting the elastic net split them is how a story becomes two columns. The older register’s growth-token line is a relative tilt on the research panel. It is not restated here as a product sentence.

77. What the booster is allowed to see, and the knobs that stay frozen

The booster sees the LASSO leftover, a GARCH scale of that leftover, a liquidity dummy, and a news leftover when one exists. It does not see the raw excess return. It does not see tomorrow’s print. It does not see a characteristic that failed the later-of rule.

Histogram gradient boosting, a depth cap, and a row subsample are frozen before the quoted window. A notebook that retunes depth on the last block and then quotes 0.93 is quoting a different classifier. The August revision does not retune.

The operating threshold on the booster’s score is the threshold that held F1 on the last pre-declared block. It is not the threshold that held accuracy. Residual-class labels are not balanced. A threshold that maximizes accuracy will sit on the majority class and call it skill.

A convolutional read of a short residual strip is a veto check. If it wants a trade the linear leftover forbids, the linear leftover wins. The veto is not a second AUC. It is a refusal.

78. Cost, delay, and the clip that is allowed to be zero

The cost threshold inside the residual class is the sum of half-spread, borrow when the name is hard to locate, and a one-day delay equal to the recent GARCH scale times a constant. A classifier that is beautiful on close-to-close and dead after that delay is discarded. The discard is a result.

Easy-to-borrow names have a zero borrow term. A guess at a hard-to-borrow fee is a reason to set the clip to zero, not a reason to keep a short that looks good in a notebook. Hard-to-borrow names are not a source of a prettier F1.

Capacity haircuts the half-Kelly clip when a stated participation cap binds. The haircut is linear in the overflow. A name that cannot take the size may still be ranked. It may not be sized. Ranking without sizing is allowed. Sizing without a dated probability and a dated payoff is not.

If either the walk-forward probability or the payoff after cost is a guess, the clip is zero. A guess is a number that does not come from the last pre-declared block. Full Kelly is refused even when both numbers are dated. Half of the textbook clip is the permission. Zero is always a legal clip.

79. What 2020 is for, and what averaging would hide

The 2020 window is recorded. It is not used for advertisement. A gap year is a test of the protocol. A note that drops 2020 to raise an AUC is a note that treated the gap as an inconvenience. The gap is the information.

The quoted AUC and F1 are not an average across expanding cuts. Averaging hides a dead year. The dead year is why the protocol exists. A desk that wants a single number across 2019 through 2025 can compute it. They cannot speak it as the operating mark. The operating mark is the last pre-declared block.

Penalty warmth on 2018–2019 is not a result. It is how the grid was felt. The keep-rate table in Section 7 is the reason 0.02 is kept. A ten-fold shuffle of the same residual panel prefers values near 0.01 and reports a larger in-sample fit. Months are not exchangeable. The shuffle is the leak described in Section 18.

80. Restricted eigenvalues as a condition, not as a 2024 certificate

The oracle inequality with constants 9 and 12 is a statement about the residualized program under a score bound and a restricted-eigenvalue condition on the cone. It is not a verification that the 2024 residual Gram satisfied that condition. When RE fails, the cone argument still produces a basic inequality. It no longer converts into an s λ² rate.

Compatibility is weaker than RE and is what some ℓ1 bounds use. The irrepresentable condition is harder and is what sign recovery needs. Industry dummies that rename a quality leftover routinely make the irrepresentable gap non-positive. That is why stability selection, not sign recovery, is the operating check.

A later desk that claims the selected names are the true support will have to exhibit a dual certificate and a beta-min condition. This paper does not exhibit either on the CRSP leftover. The support at 0.02 is the set of columns that survived the penalty on that window. It is not β-star.

81. The data dictionary, spoken as a rebuild list

Excess returns are CRSP monthly, delisting-adjusted. Factors are from the French library as of the revision date. Characteristics as-of dates are the later of the filing date and the house lag rule. The news leftover identifier is the sector polarity residual after the market and the obvious macro tape. Feature as-of dates, the λ path, and the walk-forward cuts are versioned under tag QE-03b.

A later desk with licensed CRSP, Compustat, and the French library can rebuild the residual matrix and the path. They can recompute the in-sample residual fit after the mark. They can recompute the walk-forward class scores on the last block if they have the same booster knobs and the same leftover identifier.

They cannot rebuild a live profit-and-loss. This HTML does not contain fills, borrow invoices, or a capacity book. The Sharpe 0.89 and Sortino 1.24 diagnostics are paper numbers inside the walk-forward, before borrow fantasy and before capacity. They are not a live composite. Liquidity-adjusted CVaR at 7.8 percent is a diagnostic, not a fund limit.

83. What the residual LASSO is allowed to be

The residual LASSO is a two-step estimator on a dated equity panel. The first step removes a small set of traded factor prints from a name’s excess return. The second step estimates a wide leftover characteristic matrix under a convex penalty. The object that is allowed to be spoken is the leftover after both steps. The object that is not allowed to be spoken is a raw return fit dressed as a discovery.

A notebook that skips the first step and penalizes excess returns against raw characteristics is asking the penalty to rediscover the market every month. It will. The path will look dense. The leftover will still be the market. Residualization is therefore not a courtesy regression. It is the definition of the target.

The operating program is an elastic net with penalty 0.02 and mixing weight 0.85. Those two numbers are marks, not theorems. They were kept because a walk-forward keep-rate and a complementary-half frequency table did not collapse when the window advanced. A prettier penalty chosen on shuffled months is a different mark and a different paper.

The in-sample residual coefficient of determination after the mark is 0.89. That number lives on the residual Gram. It is not a trading score. It is not an out-of-sample claim. A sentence that puts 0.89 next to a live book is a sentence this protocol refuses.

Assumptions that are actually used: the factor prints are known at month t, the characteristics are known at formation, missing columns are dropped rather than invented, and the penalty path is the Friedman–Hastie–Tibshirani coordinate path with a stated Karush–Kuhn–Tucker residual. Assumptions that are not used: exchangeable months, a true sparse beta that the desk has seen, or an irrepresentable gap verified on the 2024 Gram.

How the object is spoken: leftover, residual class, keep-rate, last block. How it is misread: alpha, product accuracy, live composite. What is refused: a name printed as a recommendation, a shuffled-fold penalty, a raw-return R-squared quoted as if it were this 0.89.

84. Excess returns, months, and the stacked index

Let a name be an ordinary U.S. common share that survives the universe rules. Let a month be a CRSP month after the formation lag. The observed object is the excess return of that name in that month, not the raw close-to-close print, and not a total-return series that still contains the risk-free piece the French market already uses. Mixing those two conventions is how a leftover becomes a cash residual.

The stacked index is the pair of name and month after listwise deletion. It is not a balanced panel. A name that appears in month t and is missing a dated characteristic is absent from the row, not filled. Stacking before residualization and residualizing name by name are not the same order of operations. The operating order is: date the columns, filter the universe, residualize the return, residualize the characteristics that still correlate with the factor prints, then stack what remains.

A month is not exchangeable with the next month. That sentence is why shuffled cross-validation is refused. A January that follows a December with a tax-lot and a rebalance is not a random fold. Treating it as one is how a penalty shrinks until a story fits.

The sample size n that appears in the Karush–Kuhn–Tucker scaling is the stacked count after deletion, not the product of every CRSP name and every calendar month. Quoting n as if the panel were rectangular is a misread. The protocol records the stacked count on the same tag that records the penalty path.

Returns are winsorized at the one-percent tails inside each month before residualization. The cut is not estimated to fatten 0.89. It is a default. Stacked-panel winsorization is refused because a crisis month would then set the tails for a quiet year, and the leftover in the quiet year would be a crisis costume.

How this is spoken: month t, formation close of t minus one, stacked n after deletion. How it is misread: daily alpha, tick residual, a balanced CRSP cube. What is refused: interpolating a missing month, backfilling a characteristic from t plus one, and calling the result dated.

85. French residualization as the first object

The first residualizer is the French library in Ken French’s units: the market print, size, value, and the profitability print available at t. The library is left alone. Rebuilding the value print from Compustat inside this notebook is a different residualizer and a different way to manufacture a leftover that is only a construction gap.

Name by name, when the name has a long enough window, the excess return is projected onto those prints and a constant. The leftover is the object the penalty is allowed to see. A name with fourteen months of history does not receive a private four-factor fit. That fit will not repeat. The name is pooled with name effects or it is dropped. Both choices are dated. Neither is an invitation to keep a favorite by inventing a window.

The factor prints are traded. They are not estimated betas. Residualizing on traded prints is not the two-pass procedure that first estimates betas and then regresses average returns on those betas. That two-pass is Fama–MacBeth. It is not this paper. A later note that wants a risk premium will have to name the two-pass, the Shanken correction, and the window. It will not inherit this operating mark.

If a characteristic still correlates with the factor prints after the return has been residualized, the characteristic is residualized as well. The Gram that the penalty sees is therefore a residual Gram. A quality score that was 0.7 correlated with the market print becomes a thin leftover. If that leftover still predicts the residual return, it is a leftover. If it dies, it was the market. The in-sample 0.89 is computed after this step. That is why 0.89 is not a statement about prices.

How this is spoken: leftover after the French prints, residual Gram, name-by-name when the window is long enough. How it is misread: a four-factor alpha, a rebuilt value print, a premium. What is refused: residualizing on estimated betas, rebuilding the library from Compustat to chase a prettier leftover, and quoting 0.89 on raw excess returns.

86. Frisch-Waugh-Lovell as a protocol, not as a slogan

Frisch–Waugh–Lovell says that the least-squares coefficients on a wide block, after a small block has been partialled out, equal the coefficients of the residual of the outcome on the residual of the wide block. The residual LASSO uses that identity as a protocol. The penalty is applied to the leftover coefficient vector. The small block is the French prints. The wide block is the dated characteristic matrix.

The identity is exact for least squares. For the penalized program it is a construction: we form the residual outcome and the residual design, then we run the elastic net on those residuals. If we instead penalized the original stacked system while leaving the French prints unpenalized, we would need a constraint that those prints stay in the span. The operating code does the first construction. A notebook that does the second and reports the same 0.02 must show the Karush–Kuhn–Tucker residual on the same residual Gram. Otherwise the mark is not the mark.

Partialling only the outcome and leaving the characteristics correlated with the prints is a different program. It lets a quality column remain a renaming of the market and then asks the penalty to split a story. The protocol residualizes both sides. That is the entire reason a column can die at the first step and never reach the path.

The residual maker is the projection off the factor span on the estimation window. The window for a name-level gamma is the expanding history that ends before the test month. Using the test month to fit gamma is look-ahead. It is refused. Pooled windows with name effects use the same dating: the factor prints in the test month may enter the residual of the test month only through coefficients that were already frozen.

How this is spoken: residualize both sides, residual Gram, frozen gamma. How it is misread: a Frisch–Waugh slogan on a slide that still fits raw returns. What is refused: partialling only y, fitting gamma on the test month, and treating the identity as a reason to skip dating.

87. The residual Gram and the refusal of the raw Gram

The Gram that coordinate descent sees is formed from residualized, column-standardized leftovers. Standardization sets the mean square of each residual column to one on the training window. A column that is a near-duplicate of another leftover after residualization produces a Gram that is ill-conditioned in that pair. The mixing weight 0.85 exists so that pair can share weight instead of flipping.

A raw Gram formed from unresidualized characteristics is a map of the market. It will show a large first eigenvalue and a quality–industry block that is mostly the market print. Running the path on that Gram and then residualizing the leftover return is not the operating program. It is a way to keep columns that the first step would have killed.

The restricted-eigenvalue story, when it is told, is told about the residual Gram, not the raw one. Restricted eigenvalues can fail on the raw design because the market direction is strong, and can still hold on the residual design if the leftovers are not a second market. We do not verify the restricted-eigenvalue constant on the 2024 residual Gram and then claim an oracle inequality for a name. The theorem is a condition. The operating check is stability selection.

Condition numbers are recorded as diagnostics. They are not used to move 0.02. A notebook that regularizes the Gram by dropping the smallest eigenvalues until 0.89 rises is a different product. The protocol keeps the residual columns or it drops them by dating and deletion. It does not sculpt the Gram.

How this is spoken: residual Gram after standardization on the training window. How it is misread: a factor-analysis of raw characteristics sold as the same path. What is refused: fitting on the raw Gram, sculpting eigenvalues, and quoting a restricted-eigenvalue constant as if it had been measured and met.

88. The elastic-net program at penalty 0.02 and mix 0.85

The operating objective is the mean square of the residual return minus the residual design times beta, plus 0.02 times a mix of the l1 norm and one-half the squared l2 norm of beta. The mix puts weight 0.85 on the l1 piece and 0.15 on the ridge piece. Those are the numbers that produce the path whose keep-rate table is the reason the mark was kept.

The mark 0.02 is a point on a decreasing penalty grid with warm starts. Columns that enter only to the left of that point are not operating columns. They are what a smaller penalty would have kept. A slide that highlights those columns is a different paper. Moving the mark to 0.012 because a shuffled-fold notebook liked it is the August 2026 revision’s explicit refusal.

The mix 0.85 is close enough to a pure l1 program that a lonely weak column can still die, and far enough from one that a collinear leftover pair can share weight. At a pure l1 program two identical leftover columns can split an interval of minimizers. The ridge piece makes the objective strictly convex. Uniqueness of the minimizer is why the mix is not 1. Moving the mix to 0.5 on the quoted window to keep a favorite pair is a different path.

The objective is computed on the training window only. The test month does not enter the mean square that picks the coefficients. A notebook that reports 0.02 from a path that saw the test month is not this mark, even if the printed number matches.

How this is spoken: elastic net at 0.02 and 0.85 on the residual Gram. How it is misread: LASSO at an unspecified penalty, ridge, or a Bayesian prior with the same numbers. What is refused: retuning either number on the last quoted block, and treating uniqueness as a reason to claim sign recovery.

89. Why the mark is 0.02 and what that sentence is not

The mark is 0.02 because the complementary-half frequency at that point stayed above one half on the expanding windows that were already declared, and because the keep-rate of the selected support into the next year did not collapse. The figure 0.67 at 0.02 is a keep-rate on that table. It is not a theorem. It is not a probability that the true support was found.

A smaller penalty fattens the in-sample residual fit. That is expected. The in-sample 0.89 is already large. Making it larger by walking left on the path is how a notebook turns a residualizer into a memoir. The August revision did not move the mark left for that reason.

A larger penalty empties the path. That can look honest. It can also be a way to keep only the market leftover that survived a sloppy first step. The protocol does not praise emptiness. It praises a support that reappears when the window advances.

The mark is not chosen to hit residual-class AUC 0.93. The classifier is a later object. Using the last-block AUC to pick 0.02 is leaked selection. It is refused. The two numbers may be printed in the same paper. They may not be optimized as a pair.

How this is spoken: operating mark 0.02, keep-rate table, complementary-half frequency. How it is misread: the penalty that maximizes 0.89, the penalty that maximizes 0.93, a Bayes information criterion. What is refused: any search that sees the last block’s class scores while moving the mark.

90. The Karush-Kuhn-Tucker system that certifies a reported path

A reported coefficient vector at 0.02 is a minimizer only if the Karush–Kuhn–Tucker residual sits where the theory says it must sit. For a live coordinate, the residualized score, scaled by the penalty and the stacked count, equals the sign of the coefficient up to the ridge tilt from the 0.15 mix. For a dead coordinate, that score stays inside the unit interval. If a notebook prints 0.02 and cannot show this residual below a stated tolerance, the mark is not the mark.

The tolerance is part of the protocol. It is not estimated to declare victory. Coordinate descent is stopped when the residual meets the tolerance or when a stated iteration cap is hit. Hitting the cap without meeting the tolerance is a failed path. The coefficients are not used. A warm start from a larger penalty is how the operating path usually meets the tolerance. A cold start on a wide residual matrix can fail the cap. Failure is recorded. It is not replaced by a prettier solver without a new Karush–Kuhn–Tucker check.

The elastic-net tilt means the live coordinates do not sit at exactly plus or minus one on the pure-l1 subgradient. A report that checks the pure-l1 box and ignores the ridge term is checking the wrong system. The operating check includes the mix.

Inactive columns that are near-duplicates of live leftovers are the usual place the inactive box is tight. That tightness is why stability selection exists. The Karush–Kuhn–Tucker point can keep one renaming and kill the other on one window, then flip on the next. The frequency table, not the single-window signs, is the operating sentence.

How this is spoken: Karush–Kuhn–Tucker residual below tolerance, live coordinates matching sign with ridge tilt, inactive coordinates inside the box. How it is misread: any coefficient path from any solver. What is refused: quoting 0.02 from a path whose residual was not checked, and reading signs on a single window as recovery of a true support.

91. Coordinate descent as the solver that is actually run

The operating solver is coordinate descent on the elastic-net path. Each coordinate update is a soft-threshold of a partial residual, divided by the column’s mean square plus the ridge term from the mix. The residual vector is maintained so that one pass is linear in the product of stacked rows and columns. Warm starts from a larger penalty reduce the iteration count. This is the Friedman–Hastie–Tibshirani program. It is not a custom threshold.

We do not quote a wall-clock. We quote that the path is this path. A notebook that uses a proximal-gradient solver, an interior-point solver, or a shooting loop with a different standardization and reports the same 0.02 is a notebook that must show the same Karush–Kuhn–Tucker residual on the same residual Gram. If it cannot, it is a different mark.

Cycling order is the stored column order after dating and deletion. Randomly permuting columns each pass can change the path at a pure l1 program when minimizers are not unique. At mix 0.85 the minimizer is unique, so the cycling order should not move the coefficients beyond the tolerance. If it does, the path is not converged. The protocol does not average several cycling orders to hide that.

Active-set tricks that skip dead coordinates for several passes are allowed only if the final residual is still checked on every coordinate, including the ones that were skipped. Skipping forever is how a column that should have entered stays dead. The operating check is the full residual.

How this is spoken: coordinate descent, warm starts, full Karush–Kuhn–Tucker check. How it is misread: glmnet as a black box whose 0.02 can be copied without the residual. What is refused: a custom solver with an undocumented threshold, and averaging unconverged paths.

92. Restricted eigenvalues, compatibility, and what is not verified

The oracle inequality that bounds residual prediction error under a sparse target needs a restricted-eigenvalue lower bound on the residual Gram, on the cone of vectors that are not much larger off the true support than on it. Compatibility is a weaker sibling that controls the l1 estimation error. Both are conditions. Neither is a measurement we claim to have passed on the 2024 residual Gram.

A note that quotes the Bickel–Ritov–Tsybakov inequality and then prints 0.89 as if the inequality had been checked is a misread. The 0.89 is an in-sample residual fit after the mark. It can be large when the restricted-eigenvalue constant is poor, because the fit is not the oracle bound. It can fall when the next regime is not the last one. That fall is expected. A note that treats the fall as a broken product is a note that treated 0.89 as a product.

We do not compute a restricted-eigenvalue constant by searching the cone. That search is not a desk procedure. We record the condition so a later reader does not think sparsity alone gives an oracle bound. Sparsity of the fitted vector is not sparsity of a true vector. The fitted vector is sparse because the penalty made it so.

Compatibility can hold when restricted eigenvalues fail. That sentence is a warning about which bound a later proof note is allowed to cite. It is not a claim that compatibility holds here. The operating check remains the keep-rate and the complementary-half frequency.

How this is spoken: restricted eigenvalue as a condition, compatibility as a weaker condition, neither verified on the live Gram. How it is misread: a certificate that the 2024 path recovered a true sparse beta. What is refused: printing an oracle rate next to 0.89, and searching the cone until a constant looks kind.

93. The irrepresentable condition and the refusal of sign recovery

Sign recovery is harder than residual prediction. The irrepresentable condition asks that inactive residual columns are not too aligned with the active span: the inactive scores against the active Gram inverse, times the true active signs, stay inside a box with a gap. If the condition fails, a column that is only a renaming of an active leftover can enter at the same penalty that keeps the truth.

We do not check the irrepresentable gap on the 2024 residual Gram and then claim that a live name’s signs are the true signs. The Praso–Wainwright / Zhao–Yu argument is used as a warning. Beta-min, the requirement that nonzero coefficients are larger than a constant times the penalty, is the same kind of warning. A small leftover coefficient at 0.02 is not a small true coefficient. It is a shrunk fit.

Stability selection is the operating check precisely because irrepresentable can fail while a leftover still predicts on the next block. Frequency across complementary halves is a statement about reappearance. It is not a statement about a true support.

A later desk that wants sign recovery will have to name the gap, the noise tail, the penalty order, and the window, and will have to say that the residual Gram satisfied irrepresentable. That desk is writing a different paper. This paper refuses the claim.

How this is spoken: irrepresentable as a condition we do not claim, signs as fitted signs, frequency as reappearance. How it is misread: recovered factors, true quality, a named characteristic that the path proved. What is refused: any sentence that treats a live coordinate at 0.02 as identification of a priced characteristic.

94. Walk-forward expanding cuts and the dating of every score

Every number that is allowed to sound like a result is computed on a later block than the block that picked the coefficients. Train through year T, form residuals and a residual class in T plus one, then grow the training window. The penalty mark is not re-chosen on T plus one. The mix is not re-chosen. The booster knobs, when they exist, are frozen before the quoted window.

There is no k-fold on the full panel. There is no peek at 2024 features to write a 2023 column. The expanding cut is the protocol a later desk can audit: they can see the date, the stacked n, and the frozen mark. They cannot as cleanly audit a random purge.

Purged k-fold is a different protocol with a different leak. Embargoed folds still shuffle the year structure. We do not use them. A note that replaces the expanding cut with a purged fold and keeps the printed 0.93 is a different product.

Coefficients fitted through T may be used to form a leftover in T plus one only from characteristics that were dated at the T-plus-one formation. A characteristic that became public in T plus one does not enter the T-plus-one leftover through a coefficient that was fitted without it. That would be a new column, and a new column waits for the next expanding cut.

How this is spoken: train through T, test T plus one, frozen mark, dated columns. How it is misread: cross-validated accuracy, purged-fold AUC, a rolling window that drops the early years to raise a score. What is refused: reshuffling months, retuning on the test year, and averaging expanding scores to hide a dead year.

95. Shuffled months are not a cross-validation

Months are ordered. A leftover in month t shares a tape, a rebalance, and a residual gamma with month t plus one. Drawing random folds of months and picking the penalty that wins on those folds is a shuffle. The shuffle systematically reports a smaller penalty and a larger apparent class score on the same generative process. That fact is why a protocol-stress simulation exists. It is not why 0.93 exists.

The simulation draws residual panels with a known sparse target, a stated condition number, and an autoregressive leftover. It then runs expanding cuts and shuffled folds on the same draws. The shuffled rule likes a smaller penalty. That is the only use of the simulation: to keep the protocol honest. It is not a claim that 0.93 was simulated. Replacing the walk-forward class score with a simulated score is a different product.

A later desk that still wants folds must say they are shuffling months and must stop using this paper’s 0.02. They may not print both. The August revision is explicit on that refusal.

Leave-one-year-out is closer to an expanding cut than a random fold is, but it still lets 2024 help pick a penalty that is then spoken as if it were frozen before 2024. The operating protocol does not use it for the mark. The last block is a test, not a fold.

How this is spoken: expanding walk-forward, shuffle refused, simulation as a stress of the leak. How it is misread: k-fold, purged k-fold, leave-one-year-out as the same protocol. What is refused: any penalty or AUC that saw shuffled months.

96. The 2020 gap and the last pre-declared block

The 2020 window is recorded and not used for advertisement. A gap year is a test of the protocol. It is not a source of a prettier residual-class score. A note that drops 2020 to raise AUC is a different product. A note that keeps 2020 only when it helps the in-sample 0.89 is the same refusal in the other direction.

The quoted residual-class AUC 0.93, F1 0.88, and 90 percent accuracy live on the last pre-declared block: training through 2023, testing 2024 through mid-2025. They are not an average across expanding cuts. Averaging would hide a dead year. The dead year is the information.

The last block is one block. DeLong’s variance for the Mann–Whitney statistic may be recorded so a later desk can attach an interval without reshuffling months. The interval is not a lead sentence. A bootstrap that reshuffles months inside the last block is a shuffle. It is refused.

Mid-2025 is a stated end, not a living end. Extending the test into a later month after seeing the class scores is leaked dating. A later revision that wants a longer last block will have to declare the new end before the new scores are computed, and will have to say that 0.93, 0.88, and 90 percent were the old last block.

How this is spoken: 2020 recorded, last block 2023 train and 2024 to mid-2025 test, three class numbers on that block only. How it is misread: a multi-year average AUC, a score that includes 2020 because it was kind, a living window. What is refused: dropping a gap to advertise, and extending the last block after seeing the scores.

97. Stability selection as the operating check

Stability selection is complementary halves of the training window, repeated, with a frequency cutoff of one half. A column that is live at 0.02 on one half and dead on the complement is a story. A column that is live on most halves is a leftover that reappears. The operating sentence is the frequency, not the single-window sign.

Fifty complementary halves are the operating count. The count is declared. Raising it after seeing a favorite column’s frequency is a different table. Lowering it because fifty was slow is a different table. The August revision does not retune the count on the quoted window.

The keep-rate into the next year is a third object. Frequency on halves inside T is not the same as survival when the window becomes T plus one. The table that justified 0.02 reports both. A slide that reports only the kinder of the two is a different paper.

Stability selection does not replace the walk-forward class scores. A column can reappear and still fail the residual class after cost. Reappearance is permission to keep the column in the linear leftover. It is not permission to size a clip.

How this is spoken: fifty complementary halves, frequency cutoff one half, keep-rate into the next year. How it is misread: bootstrap p-values, a true-support probability, a reason to move 0.02 after seeing 0.93. What is refused: retuning the half-count or the cutoff on the last block, and treating frequency as identification.

98. Share codes 10 and 11 as a universe rule

The universe is CRSP share codes 10 and 11. That sentence is a refusal of units, closed-end funds, and the usual collection of wrappers that trade like equity and are not the residual this paper studies. Ordinary common shares of U.S. companies sit in those two codes. Everything else is a different residual, a different delay, or a different leverage story.

Share code 10 is the ordinary domestic common share. Share code 11 is the ordinary common share that the CRSP file still treats as common after a stated corporate event class. The protocol does not invent a third live code. A later note that wants a third code will have to name it, name the delay of its filings, and name a new last block. This paper does not name it.

American depositary receipts are not in the live matrix. Their filing clock is not the 10-K clock the later-of rule was written for. Putting them in without a named delay is how a leftover becomes a translation of someone else’s tape. Units and closed-end funds are refused for a simpler reason: their residual after the French prints is often a fee, a discount, or a basket, not a name leftover.

The universe is formed at each formation date from the codes that are valid on that date. A name that changes code is dropped at the next formation unless it remains 10 or 11. Rebuilding the universe after the test month to keep a favorite is refused. A name that was a unit in the training year and common in the test year does not inherit a residual path.

How this is spoken: share codes 10 and 11, formed at the formation date. How it is misread: all CRSP names, all U.S. listings, a plus-ADR convenience. What is refused: silent ADRs, units, closed-end wrappers, and a post-test rebuild of the code list.

99. The five-dollar filter as a dated liquidity cut

Names under five dollars at formation are dropped. The filter is a liquidity and microstructure filter. It is not a statement about small-firm risk, and it is not a value screen. A leftover that appears only among sub-five names is a leftover this paper does not study. The French size print already removed a size story from the residual return. Keeping sub-five names would put the microstructure back in.

The price used is the formation-date CRSP price, not a later month’s price, and not an intra-month low. A name that is 5.10 at formation and 4.80 in the test month stays in that test month. A name that is 4.90 at formation is out, even if it prints 6.00 later. Adding that name after the fact is how a walk-forward becomes a memoir.

A name that crosses five dollars from below in the test month was not in the training month and is not added after the fact. A name that crosses from above is dropped at the next formation. Both rules are dated. The five-dollar level is a default. It is not estimated to fatten the last-block F1.

The filter is applied after the share-code filter and before residualization. A name that is code 10 and 4.50 does not receive a gamma. It does not occupy a row in the residual Gram. Imputing a residual for it from peers is refused. The LASSO would fit the imputer.

How this is spoken: five dollars at formation, keep or drop dated, no post-test add. How it is misread: a small-firm risk claim, a penny-stock study, a filter tuned to 0.93. What is refused: using the test-month price to decide training membership, and interpolating sub-five names back into the path.

100. Delisting returns and the missing minus fifty-five

Delisting returns are the CRSP adjustment. A name that disappears into a merger or a bankruptcy without that adjustment produces a leftover that looks like alpha and is a missing large negative print. The usual missing piece people have in mind is on the order of minus fifty-five percent for performance delists that CRSP does not fill. The protocol keeps the CRSP adjustment. It does not invent a delisting when CRSP has none.

A name that is acquired for cash has a delisting print that is mostly the deal residual, not a characteristic leftover. That print still enters the residual return after the French prints. Dropping acquired names to keep 0.89 pretty is refused. Dropping bankrupt names to keep the residual class balanced is refused. Both events are the information.

The delisting month is a formation problem. If the name is already gone at formation, it is not in the test month. If the name is present at formation and delists in the test month, the CRSP delisting return is the test outcome. Replacing that outcome with a zero, or with a peer residual, is how a classifier becomes a survivor story.

Partial-month delists are not rescaled to a full month. The CRSP print is used as CRSP reports it. A notebook that annualizes a four-day delist into a monthly leftover is manufacturing a tail. The one-percent inside-month winsorization still applies to that month’s cross-section, which means an extreme delist can be clipped. The clip is a default. It is not a reason to drop the name before residualization.

How this is spoken: CRSP delisting adjustment, keep the print, do not invent a fill. How it is misread: deleted missing names as if they had zero leftover, a merger alpha. What is refused: dropping delists to raise 0.89 or 0.93, inventing a minus fifty-five when CRSP already filled, and annualizing a partial-month delist.

101. Data dating, the later-of rule, and restatements

A characteristic used at month t must be knowable at the close of month t minus one, or at a stated later date if the filing calendar requires it. The later-of rule is the later of the document’s public timestamp and the conservative lag that assumes a filing is not read the hour it appears. A notebook that uses the period-end date of a 10-Q as the as-of date is using a date that did not exist in the tape.

Vendor as-of dates are accepted only when the vendor’s own timestamp is stored. A restatement that arrives in month t plus three does not rewrite month t. The rewrite is how a residual becomes a look-ahead. The version tag that stores the as-of dates, the penalty path, and the walk-forward cuts is QE-03b. A later desk can rebuild the residual matrix from licensed CRSP, Compustat, and the French library. They cannot rebuild a live profit-and-loss from this HTML.

A 10-K that is filed in March is not a December characteristic in January. The conservative lag pretends the filing is not known on the evening it appears. That lag is a house rule, not a SEC clock. Tightening the lag after seeing that a favorite column fattens 0.89 is leaked dating. It is refused.

Revision breadth is the count of analyst revisions in a stated window that ends before formation. If the vendor restates the count after formation, the restated count is not written back into the training month. Revenue concentration is the share of trailing sales in the largest reported segment, lagged to the first month the segment table could have been read. A company that changes segment definitions mid-year produces a break. The break is marked. The column is not smoothly interpolated across the break.

How this is spoken: later of public timestamp and conservative lag, restatements do not rewrite t, QE-03b stores the stamps. How it is misread: period-end dating, point-in-time that was rebuilt after the test. What is refused: writing restatements back, interpolating segment breaks, and tightening the lag on the quoted window.

102. Winsorization inside the month, not on the stacked panel

Return tails are winsorized at one percent inside each month, not on the stacked panel. Stacked winsorization lets a crisis month set the tails for a quiet year. Inside-month winsorization keeps the crisis inside the crisis. The one-percent cut is a default. It is not estimated to fatten an in-sample residual fit.

The cut is applied to excess returns before residualization. Applying it after residualization would clip leftovers that the French prints had already made smaller, and would treat a residual tail as if it were a raw tail. The protocol does the first. A notebook that does the second and keeps 0.89 must say so. It is a different residual.

Characteristics are not winsorized with the same one-percent rule unless a column’s own protocol says so. A revision count of zero is a fact. Clipping revision breadth to its monthly one-percent tail is a different column. Quality scores that are already ranks are not clipped again. Double clipping is how a leftover becomes a rank of a rank.

The winsorization limits are the empirical one-percent points of that month’s cross-section on the names that survived share codes and the five-dollar filter. Limits estimated on a later month are look-ahead. Limits estimated on the stacked decade are the crisis costume. Both are refused.

How this is spoken: one percent inside each month, on excess returns before residualization. How it is misread: stacked-panel winsorization, a tail model, a reason 0.89 is robust. What is refused: estimating the cut to raise a score, clipping after residualization without saying so, and using later-month limits.

103. Listwise deletion and the refusal to impute

Missing characteristics are listwise deletions, not imputations. A row that lacks a dated quality score is absent from the residual Gram. An imputed quality score is a story about the imputer. The residual LASSO will happily fit the imputer if the imputer is printed as a number.

Mean imputation inside a month is a renaming of the month’s surviving names. Industry-mean imputation is a renaming of the industry dummy that the elastic net already has to share with quality. Multiple imputation that uses the test-month outcome is look-ahead. All three are refused.

A name that is missing revision breadth but has revenue concentration does not get a private two-column path. The operating matrix is listwise on the declared column set. A later desk that wants a two-track matrix — one track without revision breadth — must name the track and name a new keep-rate table. Silent two-track fitting is how a favorite column survives by dropping the rows that would have killed it.

Deletion is dated. A characteristic that is missing at formation and arrives later does not write itself back into the formation month. That is the restatement rule applied to absence. Absence is information about the filing calendar. It is not a hole to be filled so that n looks rectangular.

How this is spoken: listwise deletion on the declared columns, absence dated, no imputer. How it is misread: a balanced panel, a filled CRSP cube, n as names times months. What is refused: mean, industry-mean, and outcome-using imputation, and silent two-track matrices.

104. The lognormal revenue field and the 0.14 default

Guidance is a point. Consensus annual revenue is a point. The field is ten thousand lognormal draws centered so the mean of the level is the consensus, with log-volatility 0.14 when the name has no honest own series. Names with a clean ten-year revenue history use their own estimate. Initial-public names use 0.14 and a wider multiple band, not a tighter one. Tightening a band because a name is new is how a notebook manufactures confidence.

The 0.14 is a revenue-path default. It is not equity volatility. It is not the GARCH scale of the residual return. A sentence that treats 0.14 as a vol target for the leftover is a misread. The August revision splits those objects.

Ten thousand draws is a Monte Carlo count, not a sample of names. Raising the count after seeing a kinder 10/90 band is refused. Lowering it because a figure was slow is refused. The operating report is the band from those draws after the operating-leverage map, not the first-order delta-method width.

The map from a revenue draw to an implied residual is an operating-leverage sleeve: contribution margin, a fixed-cost block, and a tax rate that does not pretend to know the next code. There is no terminal growth rate chosen to hit a price target. A terminal growth rate is a different residual and a different paper. A kink at zero contribution is enough to make the first-order width a lie. That is why the Monte Carlo band is the spoken band.

How this is spoken: ten thousand lognormal draws, default log-volatility 0.14, own series when honest, wider band for new names. How it is misread: equity sigma, a price target, a fact. What is refused: tightening new-name bands, retuning the draw count on the quoted window, and replacing the field with a delta-method width.

105. Ten thousand draws, the 10/90 band, and how a field is spoken

The 10/90 band of the field is what a desk is allowed to speak. The median is a location. It is not a fact. A point taken from the field and written into a lead paragraph is a different product. The field exists so that a revenue leftover can stay a field.

Draws are independent across the ten thousand given the name’s center and log-volatility. They are not independent across names in a month if the consensus center already embeds a shared tape. The protocol does not add a second common shock unless a later note names it. Inventing a common shock to fatten a sector story is refused.

The center is the consensus annual revenue known at formation, or the guidance point if the protocol’s dating says guidance is the later public number. Using a post-formation revision of consensus as the center is restatement. It is refused. Using the realized revenue as the center is not a field. It is a memoir.

A name whose own ten-year series produces a log-volatility far below 0.14 is not automatically a tighter field. The own series must be honest: no restated history written back, no interpolated segment break, no four-year IPO window treated as ten. If the own series is not honest, the default 0.14 returns. That return is a safety, not a punishment.

How this is spoken: 10/90 band, median as location, center dated at formation. How it is misread: a point forecast, a realized-revenue replay, a sector shock. What is refused: post-formation centers, invented common shocks, and treating a short restated history as an own-series vol.

106. The residual class after cost

The residual class is the event that the next residual exceeds a cost threshold. It is not the event that the raw return is positive. It is not the event that the in-sample fitted leftover is large. A classifier that is beautiful on the fitted leftover and dead on the next residual is a memoir of 0.89.

The cost threshold is the sum of half-spread, borrow when the name is hard to locate, and a one-day delay term equal to the recent GARCH scale times a constant. A name can have a positive next residual and still be a negative class if the residual does not clear cost. That is the entire point of putting cost inside the label rather than inside a later haircut only.

The label is formed on the test month with costs dated at formation. Using the test month’s realized spread to decide the training label is look-ahead. Using a later borrow invoice is look-ahead. The protocol uses formation-dated cost pieces. When a piece is a guess, the clip that would have used the class probability is zero. A guess is not a reason to keep a short that looks good on close-to-close.

The booster that reads the class sees the LASSO leftover, a GARCH scale of that leftover, a liquidity dummy, and a news leftover when one exists. It does not see tomorrow’s print. It does not see the raw return. A booster that wants a trade the linear leftover forbids loses. The linear leftover is the veto.

How this is spoken: next residual above dated cost, linear leftover as veto, booster as a later reader. How it is misread: a raw-return class, a close-to-close alpha class, an accuracy on 0.89. What is refused: test-month costs in training labels, and a booster that overrides the linear veto.

107. Half-spread, borrow, and the delay term

Half-spread is the time-weighted quoted half-spread on the formation day, or a size-based proxy when the quote tape is not stored. The proxy is a stated function of price and volume. It is not estimated to make the residual class easier. A notebook that fits the proxy on the last block’s class outcomes is leaked cost. It is refused.

Borrow is zero if the name is easy to locate and a stated fee otherwise. A fee that is a guess is a reason to set the clip to zero, not a reason to keep a short that looks good on close-to-close. Hard-to-borrow names are not a source of a prettier F1. They are a source of a leftover that cannot be traded. The easy-to-borrow flag is dated at formation. A later invoice that says the name was hard does not rewrite the formation flag in the training month.

The delay term is one trading day times the recent GARCH scale of the leftover, times a declared constant. It exists because a class that is beautiful on close-to-close and dead after a one-day delay is not an operating class. The GARCH scale is estimated on the leftover through the training window. Using the test-month leftover to set the delay in the test label is a small leak. The protocol uses the last frozen GARCH scale at formation.

Capacity haircuts the half-Kelly clip when the name cannot take the stated size without being the print, on the formation day’s volume and a stated participation cap. The haircut is linear in the overflow. It is not a square-root fantasy. A name that cannot take the size is a name the class desk may still rank and may not size.

How this is spoken: formation-dated half-spread or proxy, borrow zero or stated fee, delay as frozen GARCH scale times one day, linear capacity haircut. How it is misread: close-to-close costless class, Kyle lambda, a live borrow book. What is refused: fitting the spread proxy on last-block outcomes, rewriting borrow after the invoice, and sizing through the print.

108. Mann-Whitney AUC as a rank probability

The area under the walk-forward receiver curve is the Mann–Whitney probability that a positive residual-class name is ranked above a negative one, with ties taking half weight. It does not depend on the threshold that produces the 90 percent accuracy. That is why 0.93 is quoted beside F1 0.88 and not instead of it.

The last-block AUC 0.93 is that U-statistic on the 2023-train, 2024-to-mid-2025-test names that survived the universe rules and had a dated cost label. It is not an average across expanding cuts. It is not a Sharpe ratio. It is not a statement about 0.89. A sentence that puts 0.93 and 0.89 in one breath is the sentence the June 2026 draft still had. The August revision splits them.

Ties are not rare when the booster saturates. Half-weight on ties is the usual Mann–Whitney convention. Dropping ties to raise 0.93 is refused. Treating a tied pair as a win for the side that fattens a slide is refused.

The rank is the booster score, or the linear leftover if the booster is silent. A rank that uses the test-month residual is not a forecast rank. The protocol uses only objects dated at formation. A notebook that ranks on the in-sample fitted leftover and then quotes 0.93 is quoting a memoir.

How this is spoken: Mann–Whitney probability on the last block, ties at half weight, rank dated at formation. How it is misread: accuracy, Sharpe, a multi-year average, a fit of 0.89. What is refused: dropping ties, ranking on the test residual, and averaging expanding AUCs to hide a dead year.

109. DeLong variance and the refusal to reshuffle the last block

DeLong’s variance for the Mann–Whitney U-statistic is recorded so a later desk can attach an interval without reshuffling months. The variance treats the last block as one sample of names, not as a time series of months. That is already a limitation. The last block is one block. The interval is not a lead sentence.

A bootstrap that reshuffles months inside the last block is a shuffle. It is refused. A bootstrap that reshuffles names, if it is done, must still respect the dating: it cannot invent a characteristic that was missing, and it cannot move a restatement backward. The operating paper does not quote a name-bootstrap interval in the lead. It records DeLong so the interval, if attached later, has a named estimator.

Comparing 0.93 to a nested booster that drops the news leftover is a DeLong comparison of two AUCs on the same last block. That comparison is allowed only if both scores were frozen before the block was seen. Inventing the nested booster after seeing 0.93 is leaked architecture. It is refused.

DeLong is not a walk-forward standard error for the expanding-cut protocol. It does not repair a shuffled-fold AUC. Attaching a DeLong interval to a shuffled score and printing this paper’s 0.93 next to it is a misread.

How this is spoken: DeLong variance recorded, last block as one name-sample, interval not a lead. How it is misread: a time-series standard error, a license to shuffle, a comparison invented after 0.93. What is refused: month-bootstrap inside the last block, and DeLong on a shuffled AUC sold as this 0.93.

110. F1 0.88, accuracy 90 percent, and the majority class

F1 0.88 is the harmonic mean of precision and recall for the residual class on the last block, at the operating threshold. Accuracy 90 percent is the same class and the same cut. It is not a third model. Residual-class labels are not balanced. That is why both numbers are reported, and why they live in different sentences from the in-sample residual 0.89.

The operating threshold is the one that held F1, not the one that held accuracy. A threshold that holds accuracy and misses F1 is a threshold that likes the majority class. The majority class on the last block is the residual that does not clear cost. A notebook that thresholds at zero leftover and quotes 90 percent is quoting a different cut.

Precision is the share of predicted-positive names whose next residual did clear cost. Recall is the share of true-positive names that the rank called positive. F1 does not care about true negatives except insofar as they change precision. Accuracy does. That is the entire reason a 90 percent accuracy can coexist with a less kind F1 in a different window, and why this paper refuses to let accuracy travel alone.

The last-block pair is 0.88 and 90 percent. They are not retuned. Moving the threshold after seeing both numbers is leaked. A later revision that wants a different operating threshold will have to declare it before the new last block is scored.

How this is spoken: F1 0.88 at the F1-holding threshold, accuracy 90 percent at that same cut, last block only. How it is misread: two models, a balanced class, a synonym for 0.93. What is refused: the accuracy-holding threshold as the operating cut, and retuning the cut after seeing the pair.

111. Half Kelly as a permission, not a size

Textbook Kelly is the log-wealth maximizer for a two-point payoff after cost. The desk uses half of that clip. Full Kelly is a way to die of being right. If either the walk-forward probability or the payoff after cost is a guess, the clip is zero. A guess is a number that does not come from the last pre-declared block, or a cost piece that was not dated at formation.

The second-order expansion around a small edge is the only utility argument used for the half: drift halves, variance quarters. It is not a household theorem. It is not a reason to size a book from this HTML. Half Kelly is a permission to keep a clip finite. It is not a recommendation.

A cost-of-capital screen of eleven percent, built from a beta of 1.37 and an equity premium of 5.4 percent against the then-prevailing Treasury print, is permission to keep reading. It is not a buy. Clearing a hurdle is not a position. A note that treats the hurdle as a recommendation is a different paper. The beta in that screen is not the residual gamma. Mixing those two objects is how a leftover becomes a cost of capital.

Capacity can haircut the half-Kelly clip to zero when the participation cap binds. Zero is allowed. A name the class desk ranks highly and cannot size is a ranked name. It is not a failed class. Treating a zero clip as a reason to loosen the five-dollar filter or the borrow rule is refused.

How this is spoken: half the two-point Kelly after dated cost, zero if a guess, hurdle as permission to read. How it is misread: a fund size, a live composite, a buy from the eleven percent screen. What is refused: full Kelly from this HTML, mixing residual gamma with the hurdle beta, and loosening filters to keep a clip alive.

112. GARCH leftover squares and the 0.75 moment

After the linear leftover, squared residuals on the research panel still cluster. The recorded lag-1 correlation of squared leftovers is 0.75. That number is a sample moment. It is compatible with a persistent GARCH(1,1) pair near the covariance-stationary boundary. It is not a reason to force the pair to sum to 0.99.

The GARCH(1,1) recursion is covariance-stationary when the shock coefficient plus the lag-vol coefficient is less than one and the intercept is positive. If the estimated sum exceeds one, the sleeve is marked explosive and is not used to widen a position. Volatility clustering is a warning. It is not a product. A desk that widens a revenue field because GARCH asked for a larger story is using the sleeve as intended. A desk that sizes a clip from a GARCH path is using a different product.

The 0.75 moment is computed on the leftover squares after the residual LASSO, not on raw return squares. Raw return squares will show clustering that is mostly the market. Quoting 0.75 on raw squares is a misread. Quoting 0.75 on the in-sample fitted leftover rather than on the residual u is a memoir of 0.89.

The delay term in the residual-class cost uses a frozen GARCH scale. That is the only operating use. The 0.75 moment is a diagnostic that the scale is worth estimating. It is not a trading R-squared. It is not a reason to skip the linear veto.

How this is spoken: lag-1 correlation 0.75 of leftover squares, GARCH as a warning, explosive pair unused. How it is misread: raw-return clustering, a vol product, a size. What is refused: forcing the pair to 0.99, sizing from a GARCH path, and quoting 0.75 on raw squares.

113. Newey-West on a leftover-square correlation

A Newey–West interval for the 0.75 moment, with a kernel and a lag declared before the window is seen, is the honest interval. We do not need it for the operating sentence. We record the estimator so a later desk cannot replace 0.75 by a prettier number without a kernel and a lag.

The kernel is Bartlett. The lag is a stated function of the leftover sample length, frozen before the last block. Choosing the lag to make 0.75 look away from a quiet null is leaked. Choosing a rectangular kernel after seeing that Bartlett was kind is leaked. Both are refused.

Newey–West here is a time-series estimator on the leftover-square series, or on a stacked month-mean of leftover squares. It is not a Fama–MacBeth standard error. It is not a DeLong variance. Mixing those three interval stories in one sentence is how a methods paper becomes a slogan board.

The interval is not used to decide whether GARCH is allowed. GARCH is allowed as a warning sleeve when the pair is covariance-stationary. A Newey–West interval that covers zero would not turn the delay term off. A Newey–West interval that sits near 0.75 would not turn the delay term into a size. The moment is a diagnostic. The interval keeps the diagnostic honest.

How this is spoken: Bartlett Newey–West, lag frozen, diagnostic interval for 0.75. How it is misread: a Fama–MacBeth error, a license to quote 0.75 as a product, a GARCH on-off switch. What is refused: picking the lag or kernel after seeing 0.75, and using the interval to size a clip.

114. In-sample residual R-squared 0.89 is not a trading R-squared

The in-sample residual coefficient of determination after the elastic net at 0.02 is 0.89. It is computed on the residual outcome and the residual design after French residualization, on the training window that ends before the last block’s test months. It is a statement about residual variation. It is not a statement about prices. It is not an out-of-sample claim.

A trading R-squared would be a score on a later residual, after cost, on names the universe rules kept, without using the test month to fit beta. That score is not 0.89. This paper does not print a trading R-squared. The walk-forward objects that are printed are AUC 0.93, F1 0.88, and 90 percent accuracy on the residual class. Those are class scores. They are not R-squared.

0.89 can be large when the next-month leftover is dead. That is expected. The penalty is a fit. The class is a later event. A notebook that watches 0.89 fall in a new regime and calls the product broken is a notebook that treated 0.89 as a product. When the next regime is not the last one, 0.89 will fall. The August revision says so in words.

Quoting 0.89 on raw excess returns is a different number and will usually be smaller, because the French prints already explain a mass of raw variation. Quoting 0.89 on the last-block test months is leaked if those months entered the fit. The protocol computes 0.89 on the training residual Gram. A later desk that recomputes a test-month residual R-squared must name it as a test-month residual R-squared and must not call it 0.89.

How this is spoken: in-sample residual R-squared 0.89 after the mark, training window only. How it is misread: trading R-squared, price R-squared, last-block R-squared, a live book. What is refused: putting 0.89 in the same breath as 0.93, and recomputing 0.89 on a window that saw the test.

115. Fama-MacBeth is not this residualizer

The two-pass estimator — time-series betas, then a cross-sectional regression of average returns on those betas — is a different residualizer. We residualize on traded factor prints, not on estimated betas, and we do not claim a risk premium for a leftover column. A later note that wants a premium will have to name the two-pass, the Shanken correction, and the window. It will not be this operating mark.

Fama–MacBeth standard errors are not the Newey–West interval on leftover-square correlations, and they are not DeLong’s variance on the last-block AUC. A table that prints 0.02, 0.89, and a Fama–MacBeth t-statistic on a leftover column is a table that has left this paper. Marginal t-tests on selected leftover columns ignore the selection. The residual LASSO was introduced to stop a board of stars.

The French library is left in Ken French’s units. Rebuilding the value print from Compustat is a different paper and a different way to fool a residual. A leftover that is only a rebuilt value print minus the library value print is a statement about construction, not about a name.

Two-pass betas estimated on the same window that the residual LASSO uses are still two-pass betas. Residualizing on them would put estimation error from the first pass into the leftover. The protocol refuses that error. Traded prints have their own noise. That noise is a print. It is not a generated regressor.

How this is spoken: traded French prints, no two-pass premium, no Fama–MacBeth t on a leftover. How it is misread: this paper as an asset-pricing test, 0.89 as a cross-sectional R-squared. What is refused: residualizing on estimated betas, rebuilding the library to chase a leftover, and starring selected columns.

116. How each quoted object is spoken

Penalty 0.02 is the operating mark on the residual elastic-net path at mix 0.85. It is spoken as a mark. It is not spoken as the truth, the Bayes choice, or the penalty that maximized 0.93. Mix 0.85 is spoken as the reason the minimizer is unique and the reason a collinear pair can share. It is not spoken as a discovery of two factors.

Residual R-squared 0.89 is spoken as an in-sample residual fit after the mark. AUC 0.93 is spoken as a last-block Mann–Whitney rank probability on the residual class. F1 0.88 is spoken as the last-block harmonic mean at the F1-holding threshold. Accuracy 90 percent is spoken as the same cut on the same class. Log-volatility 0.14 is spoken as a revenue-field default. Ten thousand is spoken as the draw count. Leftover-square correlation 0.75 is spoken as a sample moment. Half Kelly is spoken as a permission.

Those sentences do not share a breath. The June 2026 draft still stacked two of them. The August revision splits them. A later desk that wants a single dashboard number is asking for a slogan. This paper does not ship one.

Share codes 10 and 11, the five-dollar formation filter, the CRSP delisting adjustment, the later-of dating rule, listwise deletion, fifty complementary halves, and the last block 2023-train plus 2024-to-mid-2025-test are spoken as protocol. They are not spoken as findings.

How this is spoken is the protocol. How it is misread is any compound sentence that treats two of the numbers as one object. What is refused is a dashboard that adds them.

117. How each quoted object is misread

The usual misread of 0.89 is a trading R-squared or a live-book fit. The usual misread of 0.93 is a Sharpe ratio or a multi-year average. The usual misread of 0.88 is accuracy in disguise. The usual misread of 90 percent is a third model or a balanced-class win. The usual misread of 0.14 is equity volatility. The usual misread of ten thousand is a sample of names. The usual misread of 0.75 is a reason to size. The usual misread of half Kelly is a fund. The usual misread of 0.02 is the penalty that maximized a class score.

A sentence that puts any two of those numbers in one breath is the sentence the June 2026 draft still had. The desk’s job is to keep the objects from collapsing into a slogan. A headline that says the residual model is 90 percent accurate with R-squared 0.89 is two misreads glued together.

Restricted eigenvalues misread as a verified 2024 certificate, irrepresentable misread as sign recovery, Frisch–Waugh–Lovell misread as a reason to skip residualizing X, walk-forward misread as shuffled folds, stability frequency misread as a true-support probability, and DeLong misread as a license to bootstrap months: those are the theorem-shaped misreads. The protocol names them so a later slide cannot pretend they were claims.

Fama–MacBeth misread as this residualizer, a rebuilt value print misread as a leftover, a cost-of-capital hurdle misread as a buy, and a revenue-field median misread as a fact: those are the product-shaped misreads. They are refused in the same voice as the theorem-shaped ones.

How this is spoken: each misread named. How it is misread: a list of misreads treated as a findings list. What is refused: the glued headline and the verified-certificate slide.

118. What this protocol refuses, restated without a hallway

Neural ordinary differential equations and a Hamilton–Jacobi–Bellman line appear on an older register. They are not an operating sleeve here. Quantum annealing was a laboratory trial on a cardinality constraint. The live cardinality rule is a greedy knapsack with a liquidity cap. Private-equity marks are a different residual and a different delay. That delay is a filing clock, not a monthly CRSP clock, and it is not estimated here.

Healthcare names still use this stack. Trial attrition is not an equity feature until a public stop or go date has been turned into a dated column. Macro ensemble paths are consumed as finished leftover columns, not refit inside the residual LASSO. A news leftover may enter only after the market print and the obvious macro tape have been removed from it, and only if the leftover is not a renaming of profitability.

A printed name becomes a recommendation. This paper does not print a name. Selective inference after the Karush–Kuhn–Tucker event, polyhedral conditioning, and Benjamini–Hochberg on the unpenalized house matrix are different products. Debiased or desparsified coefficients with a nodewise residual are a later sleeve for interval statements about a single characteristic. They are not used to pick 0.02 and they are not a trading signal.

Shuffled months, purged folds used as this protocol, restatements written back, imputed quality, sub-five names added after the test, invented delists, rebuilt French prints, two-pass betas as the residualizer, full Kelly from this HTML, and a booster that overrides the linear veto are refused again here so the list lives in one place.

How this is spoken: a refusal list, not a findings list. How it is misread: a teaser of later products. What is refused: treating the older register as live, and treating a later sleeve as this mark.

119. The booster, the linear veto, and capacity

Histogram gradient boosting, a depth cap, and a row subsample are frozen before the quoted window. Tuning those knobs on the quoted window is a different AUC. The August revision does not retune. The booster sees the LASSO leftover, a GARCH scale of that leftover, a liquidity dummy, and a news leftover when one exists. It does not see tomorrow’s print. It does not see the raw return.

The linear leftover is the veto. A booster that wants a trade the linear leftover forbids loses. The convolutional read of a short residual strip, when it exists, is the same veto in a different costume. Neither reader is allowed to resurrect a column that residualization killed. Neither reader is allowed to move 0.02.

The liquidity dummy is a coarse flag: can the name take a stated clip without being the print, on the formation day’s volume and a stated participation cap. It is not a Kyle lambda. A Kyle sleeve is a later note and will have to name the horizon and the inventory. Capacity haircuts the half-Kelly clip when the cap binds. The haircut is linear in the overflow.

Paper diagnostics on a classified long-short residual book inside the walk-forward, before borrow fantasy and before capacity, included a Sharpe of 0.89 and a Sortino of 1.24. Those are not a live composite. Liquidity-adjusted tail loss on the same panel was logged at 7.8 percent as a diagnostic, not as a fund limit. Limits live in operations. This HTML is not operations.

How this is spoken: frozen booster knobs, linear veto, coarse liquidity flag, diagnostics not a book. How it is misread: the booster as the model, 0.93 as a Sharpe, 7.8 percent as a limit. What is refused: retuning on the last block, overriding the veto, and treating diagnostics as a composite.

120. Industry leftovers, quality leftovers, and grouping

Two residualized columns that have become the same leftover cannot, under a strictly convex elastic net, take opposite signs. That is the grouping fact at mix 0.85. In the operating matrix this shows up as an industry dummy and a quality score that share weight instead of flipping when the window advances. The share is not a discovery of two factors. It is a confession that the two columns are one leftover.

A later desk that wants a single representative of that pair can keep the one with the higher stability frequency and drop the other. That is a reporting choice. It is not a new penalty. The operating program still sees both. Dropping the weaker one on the last block after seeing 0.93 is leaked reporting. It is refused.

Industry dummies after residualization are often a renaming of a quality leftover. Keeping both and calling them two discoveries is the story the mix was meant to prevent from flipping, not a license to advertise two. A news leftover that is collinear with profitability after residualization is dropped. Collinearity with quality after residualization is a reason to drop the leftover, not a reason to keep both and let the elastic net split a story.

How this is spoken: shared weight as a confession, frequency as a reporting choice, news leftover dropped when it renames quality. How it is misread: two factors, an industry premium, a sentiment alpha. What is refused: advertising the pair as two discoveries, and dropping the weaker column after seeing the last-block class scores.

121. Column admission: revision breadth, concentration, and news leftovers

A column that cannot be dated cannot enter the residual matrix. Dating is the later-of rule. A characteristic that is known on the street but not stamped is a rumor. The residual LASSO will happily fit a rumor if the rumor is printed as a number. The protocol refuses the number.

Revision breadth is the count of analyst revisions in a stated window that ends before formation. It is not a sentiment score and it is not a language-model leftover. Revenue concentration is the share of trailing sales in the largest reported segment, lagged to the first month the segment table could have been read. A segment-definition break is marked. Smooth interpolation across the break is how a break becomes a factor. It is refused.

A news leftover may enter only after the market print and the obvious macro tape have been removed from it. If that leftover is collinear with profitability after residualization, the penalty kills it or the protocol drops it. The older register’s relative growth-token tilt against a peer basket is not restated as a product sentence here. Finished leftover columns from other desks — a dated incidence residual, an ensemble path — may enter only after they have been residualized here. This paper does not refit those models inside a name notebook.

How this is spoken: dated columns only, revision breadth as a count, concentration as a lagged share, news leftover after the tape. How it is misread: sentiment, a language model, a growth product. What is refused: unstamped rumors, interpolated segment breaks, and refitting another desk’s model inside this path.

122. Standardization, column order, and the stored path

Each residual characteristic is standardized so that its mean square is one on the training window after residualization. The outcome leftover is not forced to unit variance. The 0.89 is therefore a residual R-squared in the residual outcome’s own scale. Standardizing y as well would change the meaning of 0.02. A notebook that standardizes both and keeps the printed 0.02 is a different mark.

Means and mean squares used for standardization are training-window objects. Applying test-month moments to the training matrix is look-ahead. Applying training moments to the test columns is the operating choice. A later desk that recomputes standardization on the stacked train-plus-test window has mixed the test into the path.

Column order after dating and deletion is stored on QE-03b. Coordinate descent cycles that order. The mix 0.85 makes the minimizer unique, so order should not move the fit beyond tolerance. If it does, the path is not converged. The stored path includes the Karush–Kuhn–Tucker residual. A rebuild that matches 0.02 and 0.89 but cannot match the residual is not a rebuild of this path.

How this is spoken: train-only standardization of X, y in its residual scale, stored order and residual on QE-03b. How it is misread: both-sides unit variance, stacked-window moments. What is refused: test moments in the training Gram, and a rebuild that skips the Karush–Kuhn–Tucker residual.

123. Formation month, as-of stamps, and the version tag

Formation is the close of month t minus one, or the later stamped date the later-of rule requires. The residual class in month t uses only what was knowable at formation. The version tag QE-03b stores the as-of dates, the penalty path, the walk-forward cuts, the complementary-half draws, the booster knobs, and the last-block end at mid-2025.

A later desk with licensed CRSP, Compustat, and the French library can rebuild the residual matrix and the path. They can recompute the in-sample residual fit after the mark. They can recompute the walk-forward class scores on the last block if they have the same booster knobs and the same news-leftover identifier. They cannot rebuild a live profit-and-loss. This HTML does not contain fills, borrow invoices, or a capacity book.

A reader who treats the Sharpe diagnostic as a live composite is reading a different document than the one written here. The sources at the end of the methods paper are papers and public libraries. They are not links to other routes on a marketing site. This note does not add those routes.

Changing QE-03b after seeing a kinder 0.93 is a new tag. Silent overwrite is refused. A later tag that lengthens the last block will keep 0.93, 0.88, and 90 percent as the QE-03b last-block numbers and will name the new numbers as new.

How this is spoken: formation dating, QE-03b as the stored protocol, rebuild of the residual matrix, not a rebuild of a book. How it is misread: HTML as a profit-and-loss, a living tag. What is refused: silent overwrite, and hallway links in place of libraries.

124. Selective inference, debiased leftovers, and the board of stars

A p-value for a selected leftover column is a different question than the operating mark. Marginal t-tests on the selected set ignore the selection. Polyhedral conditioning after the Karush–Kuhn–Tucker event is a real procedure and is not run on the quoted window. If a later note quotes a selective interval, it will name the conditioning event and the window.

Benjamini–Hochberg on the unpenalized house matrix is also a different product. It does not replace the joint penalty. A board of stars on leftover columns, tested one at a time, is the thing the residual LASSO was introduced to stop. Printing stars next to the live coordinates at 0.02 is a misread of the Karush–Kuhn–Tucker box as a significance test.

A desparsified coefficient that adds a nodewise residual correction is a later sleeve for interval statements about a single characteristic. It is not used to pick 0.02. It is not a trading signal. If a later note quotes a confidence interval for a house column, it will name the nodewise penalty and the window. It will not inherit 0.93.

How this is spoken: selection is the penalty, inference is a later paper, debiased leftovers are a later sleeve. How it is misread: stars on the path, 0.02 as a p-value, a confidence interval as a class score. What is refused: t-tests on the selected set, and using a desparsified interval to size a clip.

125. The protocol-stress simulation is not the 0.93

The protocol-stress simulation draws residual panels with a known sparse target, a stated condition number, and an autoregressive leftover. It then runs the expanding walk-forward and a shuffled-fold rule on the same draws. The shuffled rule systematically reports a smaller penalty and a larger apparent AUC. That is the only use of the simulation: to keep the protocol honest.

It is not a claim that the 0.93 figure was simulated. A note that replaces the walk-forward AUC with a simulated AUC is a different product. The simulation’s job is to show that the leak exists on a process we control. The CRSP leftover is not a process we control.

The simulated keep-rate is not the 0.67 keep-rate on the research table. The simulated restricted-eigenvalue behavior is not a verification of the 2024 residual Gram. Mixing those sentences is how a stress becomes a certificate. The August revision keeps them apart.

How this is spoken: simulation as a stress of shuffled folds, not as the last-block 0.93. How it is misread: a Monte Carlo proof of the live AUC, a certificate of restricted eigenvalues. What is refused: replacing 0.93 with a simulated score, and quoting a simulated keep-rate as the operating table.

126. Costs again as dated pieces, not as a later mood

The residual-class threshold is the sum of three dated pieces. Half-spread, or the size-based proxy, is a formation-day object. Borrow is zero or a stated fee at formation. Delay is one trading day times the frozen GARCH scale times a constant. Adding a fourth piece after seeing that F1 0.88 was too kind is a new label and a new last block. Silent fourth pieces are refused.

A classifier that is beautiful on close-to-close and dead after the delay is discarded. That discard is a protocol outcome. It is not a reason to set the delay constant to zero. Setting the delay constant to zero to keep 0.93 is leaked cost. It is refused.

Borrow fantasy is the error of treating hard-to-locate names as easy because the training flag said easy and a later invoice said hard. The protocol does not rewrite the training flag. It also does not keep a short whose formation fee was a guess. Guess equals zero clip. That sentence is older than the last block and is not moved for a prettier Sortino diagnostic.

Capacity is not a cost piece inside the label. It is a haircut on the clip after the class probability exists. Mixing capacity into the label would turn a large-name leftover into a different class than a small-name leftover with the same residual and the same spread. The protocol keeps that distinction for sizing, not for the Mann–Whitney rank.

How this is spoken: three dated cost pieces inside the label, capacity after the probability, discard if delay kills the class. How it is misread: costless close-to-close, a living fee, capacity as a label. What is refused: a silent fourth piece, a zero delay constant to keep 0.93, and rewriting borrow after the invoice.

127. What a later desk can recompute, and what they must not claim

From licensed CRSP, Compustat, the French library, and QE-03b they can recompute share codes 10 and 11, the five-dollar formation filter, the CRSP delisting adjustment, inside-month one-percent winsorization, later-of as-of stamps, listwise deletion, name-by-name or pooled residualization, the residual Gram, the elastic-net path at 0.02 and 0.85, the Karush–Kuhn–Tucker residual, fifty complementary halves, the keep-rate table, the last-block residual class after dated cost, Mann–Whitney 0.93, F1 0.88, 90 percent accuracy, the 0.75 leftover-square moment, and a Newey–West interval with the frozen kernel and lag.

They can rebuild the revenue field if they have the dated consensus center, the own-series-or-0.14 rule, and the ten thousand draw seed stored on the tag. They cannot claim that a new seed that was not stored is the same field. They cannot claim that a trading R-squared was 0.89. They cannot claim that Fama–MacBeth was this residualizer. They cannot claim that restricted eigenvalues or irrepresentable were verified.

They cannot rebuild fills, borrow invoices, or a capacity book from this HTML. They cannot treat half Kelly as a live size. They cannot treat the eleven percent hurdle as a buy. They cannot print a name from a leftover column and call it this paper’s recommendation. This paper does not print a name.

How this is spoken: rebuild the residual objects, do not rebuild a book, do not inherit claims this paper refused. How it is misread: HTML as a composite, 0.89 as the rebuild target for a live R-squared. What is refused: new seeds sold as the stored field, and any recommendation sentence that uses a leftover as a name.

128. Complementary halves, how they are drawn, and what they are not

A complementary half is a partition of the training-window rows into two disjoint sets of equal stacked count, or as equal as the odd leftover row allows. The operating draw is by name-month blocks inside the training window, not by a coin flip on each stacked row. Flipping each row independently would put month t and month t plus one of the same name on opposite halves too often, and would make frequency look more stable than a later year will be.

The stored draws on QE-03b are the fifty partitions. Re-drawing after seeing a favorite column’s frequency is a different table. Using a single random seed that was not stored is not a rebuild. A later desk that wants to match the frequency table must use the stored partitions, not a new generator that happens to be called fifty times.

Halves are complementary inside one training window. They are not two expanding cuts. They are not a walk-forward. A column that is live on both halves of T and dead on T plus one is the reason the keep-rate exists as a third object. Frequency without keep-rate is a half-story. Keep-rate without frequency is a year-story that might be one lucky pair of years.

The frequency cutoff of one half means a column must be live at 0.02 on at least twenty-five of the fifty halves to be spoken as reappearing. The cutoff is not a probability of a true support. Raising it to 0.6 after seeing that a favorite failed 0.5 is leaked. Lowering it to 0.4 to keep the favorite is leaked. Both are refused.

How this is spoken: fifty stored name-month partitions, frequency at one half, keep-rate as a third object. How it is misread: row-wise coin flips, a true-support probability, a walk-forward. What is refused: re-drawing after seeing frequencies, and moving the cutoff on the quoted window.

129. Pooled residualization when a name is short, and the fourteen-month refusal

Name-by-name time-series residualization and a pooled panel with name effects are not the same estimator. The operating path is name-by-name when the name has a long enough window, and pooled when it does not. A name with fourteen months of history does not get a private four-factor fit that will not repeat. It is pooled or it is dropped.

The fourteen-month cut is a default. It is not estimated to keep a favorite in the name-by-name track. A name that has fourteen months at formation and fifteen months a month later still used the pooled track at the earlier formation. Rewriting the earlier leftover after the name became long enough is restatement. It is refused.

Pooled residualization uses name effects and the French prints on the stacked short-history names, coefficients frozen before the test month. A short name’s test leftover uses those frozen pooled coefficients and the test-month prints. Fitting the pooled coefficients on a stack that includes the test month is look-ahead. It is refused.

A later desk that wants a different short-history cut will have to name the cut and recompute the residual Gram, the path, and the last-block class scores. Silent movement of the cut to pull a name into the name-by-name track after seeing that the pooled leftover was unkind is leaked membership. It is refused.

How this is spoken: name-by-name when the window is long enough, pooled with name effects otherwise, fourteen-month default, frozen before the test. How it is misread: every name has a private gamma, a balanced four-factor tape. What is refused: rewriting short-name leftovers after they grow, and fitting pooled coefficients on the test month.

130. CRSP share codes

The live universe is ordinary common equity. Share codes 10 and 11 are the filter. Units, closed-end funds, and wrappers that trade like equity are refused because they are not the residual this paper studies.

A later desk that wants ADRs will name the filing delay. This paper does not name them. Adding them after the quoted window to keep a favorite is a different universe.

The five-dollar filter is a microstructure filter at formation. Crossing from below in the test month does not add the name to the training month. Crossing from above drops the name at the next formation.

131. Delisting adjustment

CRSP delisting returns are kept. A merger or a bankruptcy without the adjustment produces a leftover that looks like alpha and is a missing large negative print.

The protocol does not invent a delisting when CRSP has none. It does not drop a delisting to raise an in-sample fit.

A name that disappears mid-window is not silently filled. Filling is a story about the filler.

132. Inside-month winsorization

Return tails are winsorized at one percent inside each month. Stacked winsorization lets a crisis month set tails for a quiet year.

The one-percent cut is a default. It is not estimated to fatten the residual R-squared.

A later desk that wants a different cut will name it and rerun the walk-forward. They will not keep 0.93 and change the cut.

133. Later-of dating

A characteristic used at month t must be knowable at the close of t minus one, or later if the filing calendar requires it.

Using a 10-Q period-end as the as-of date is using a date that did not exist in the tape.

Vendor restatements in t+3 do not rewrite month t. The rewrite is look-ahead. The vintage is stored.

134. Listwise deletion

Missing characteristics are deletions, not imputations. An imputed quality score is a story about the imputer.

A filled zero for revision breadth is a statement that nobody revised. A deletion is a statement that we do not know.

The LASSO will treat a filled zero as a fact. The protocol therefore deletes.

135. Name-by-name versus pooled

Name-by-name residualization is used when the name has a long enough window. Fourteen months is not long enough for a private four-factor fit.

Short names are pooled or dropped. A private fit that will not repeat is refused.

Pooled name effects are not the same estimator as name-by-name. The operating path names which is used.

136. Residual maker

The residual maker on F is the projection I minus F(F prime F) inverse F prime, when F has full column rank.

It is applied to returns and to characteristics. Skipping characteristics leaves a quality score that is still the market.

The 0.89 figure is after this step. It is residual variation, not a price R-squared.

137. Standardization

Residualized columns are standardized to unit empirical second moment before the penalty.

A column that is not standardized will be kept or killed by its units, not by its leftover.

The Lipschitz constant in the coordinate update uses that unit second moment plus the ridge term.

138. Penalty mark

The operating mark is 0.02. A ten-fold shuffle prefers a smaller mark and a larger in-sample fit.

The keep-rate into the next expanding year is 0.67 at 0.02 and 0.41 at 0.008. That is why 0.02 is kept.

The oracle inequality does not pick 0.02. The keep-rate picks 0.02. The sentences stay apart.

139. Elastic-net mix

The mix 0.85 is close to LASSO and far enough from one that a collinear pair can share weight.

Two identical leftover columns cannot take opposite signs under a strictly convex elastic net.

Moving the mix to 0.5 on the quoted window to keep a favorite pair is a different path.

140. KKT residual

A minimizer satisfies the KKT inclusion: the correlation of leftover with each column equals lambda times a subgradient of the ell-1 norm.

Live coordinates have subgradient equal to the sign. Inactive coordinates stay inside the unit box.

A solver that does not report the KKT residual is not this path.

141. Coordinate descent

Each update is a soft-threshold of a partial residual over the column Lipschitz constant plus the ridge term.

Warm starts from a larger lambda reduce the iteration count on the decreasing grid.

We do not quote a wall-clock. We quote that the path is the glmnet path.

142. Stability halves

Fifty complementary halves and a frequency cutoff of one half are the operating check.

A column that dies when the window advances a year is a story even if it fattens in-sample fit.

Frequency, keep-rate, and in-sample R-squared are three objects. The table reports keep-rate.

143. Expanding cuts

Train through T, test T+1, grow. No k-fold on the full panel. No peek at 2024 features for a 2023 column.

Purged k-fold is a different leak. Expanding cuts are what a later desk can audit.

The last pre-declared block holds the quoted class scores. Averages across cuts are not spoken as the mark.

144. Gap year

2020 is recorded and not used for advertisement. Dropping it to raise AUC is refused.

A gap year is a test of the protocol. The gap is the information.

Penalty warmth on 2018-2019 is not a result. It is how the grid was felt.

145. Revenue field

Ten thousand lognormal draws, mean of the level equal to consensus, log-volatility 0.14 when the name has no honest own series.

Initial-public names use 0.14 and a wider multiple band, not a tighter one.

The 10/90 band is what may be spoken. A point from the field in a lead paragraph is a different product.

146. Own volatility

A clean ten-year revenue series uses its own log-volatility. The 0.14 default is for names without that series.

Tightening a band because a name is new manufactures confidence.

The map through operating leverage is not globally linear. The Monte Carlo band is the report, not the first-order delta-method width.

147. Residual class label

The label is the event that the next residual exceeds cost. Cost is half-spread, borrow, and one-day GARCH delay.

A beautiful close-to-close classifier that dies after delay is discarded.

The booster does not see tomorrow’s print or the raw return.

148. F1 versus accuracy

The operating threshold holds F1, not accuracy. Labels are not balanced.

Accuracy 90 percent is the same cut and the same model. It is not a third model.

AUC is a rank probability and does not depend on that threshold. That is why both are quoted.

149. GARCH warning

Squared leftover correlation 0.75 is a sample moment, not a forced pair that sums to 0.99.

If alpha plus beta exceeds one the sleeve is marked explosive and does not widen a position.

Volatility clustering is a warning, not a product.

150. Half Kelly permission

Textbook Kelly is the log-wealth maximizer. The desk uses half. Full Kelly is refused.

If probability or payoff after cost is a guess, the clip is zero.

The eleven percent hurdle is permission to keep reading. It is not a buy.

151. Capacity haircut

A participation cap binds. The haircut is linear in the overflow.

A name that cannot take the size may be ranked and may not be sized.

Kyle lambda is a later note with a named horizon. This dummy is coarser.

152. Private marks

Private-equity marks are a different residual and a filing clock, not a monthly CRSP clock.

They are not estimated here.

Neural ODEs and HJB lines on an older register are not operating sleeves here.

153. Healthcare names

Healthcare names use this stack. Trial attrition is not a feature until a public stop or go date exists.

A fitted beta from the compartment paper is not that date.

Macro ensemble paths enter as finished leftover columns, not as a refit inside the LASSO.

154. Misreading the marks

0.89 is in-sample residual fit. 0.93 is walk-forward rank quality. 0.88 is F1 on the same cut. 0.14 is revenue log-volatility.

Two of those numbers in one breath is the June draft. The August revision splits them.

When the next regime is not the last, 0.89 will fall. That is expected.

155. Selective inference

A p-value after selection is a different paper. Marginal t-tests on the selected set ignore selection.

Polyhedral conditioning is not run on the quoted window.

Benjamini-Hochberg on the unpenalized matrix does not replace the joint penalty.

156. Fama-MacBeth refusal

Two-pass betas then average returns are a different residualizer.

We residualize on traded prints, not estimated betas, and we do not claim a premium for a leftover column.

A later premium note will name Shanken and the window.

157. Protocol stress

The simulation draws a known sparse target and an autoregressive leftover, then compares shuffle and expanding cuts.

The shuffle reports a smaller lambda and a larger apparent AUC. That is the leak.

The simulation is not the 0.93. The 0.93 is the last CRSP block.

158. Tag QE-03b

The tag versions as-of dates, the penalty path, and the walk-forward cuts.

A later desk with licensed CRSP, Compustat, and the French library can rebuild the matrix.

They cannot rebuild a live profit-and-loss from this HTML.

159. French units

The four prints stay in Ken French’s units as of the revision date.

Rebuilding HML from Compustat is a different leftover.

A fifth traded print can be added only if it is dated and not a house leftover in costume.

160. Industry dummies

After residualization an industry dummy is often a renaming of quality.

The elastic net lets that pair share weight instead of flipping.

Keeping both and calling them two discoveries is refused.

161. News leftover hygiene

Sector polarity after the market and the obvious macro tape may enter X.

If it is collinear with profitability after residualization it is dropped.

A growth-token tilt on the research panel is not restated as a product sentence.

162. Booster knobs

Depth cap and row subsample are frozen before the quoted window.

Retuning on the last block makes a different AUC.

The convolutional veto loses to the linear leftover.

163. Soft-threshold map

The proximal map of tau times absolute value is sign(z) times (|z| minus tau) plus.

That is the coordinate update, not a heuristic.

Tseng’s coordinate-descent result gives convergence; uniqueness holds when the mix is less than one.

164. Dual certificate

Sign recovery needs a dual certificate and a beta-min condition.

This paper does not exhibit either on the CRSP leftover.

The support at 0.02 is the survived columns, not the true support.

165. Newey-West moment

The 0.75 leftover-square correlation can carry a HAC interval with a declared lag.

We do not need the interval for the operating sentence.

A later desk cannot replace 0.75 without a kernel and a lag.

166. Worked industrial

The anonymized mid-cap kept market, quality, and revision breadth. Own revenue volatility was 11 percent, not 14.

The class desk assigned 0.61 after cost. Half Kelly was a small long.

The name is not printed because a printed name becomes a recommendation.

167. What HTML cannot hold

Fills, borrow invoices, and a capacity book are not in this HTML.

Sharpe 0.89 and Sortino 1.24 are paper diagnostics before borrow fantasy.

CVaR 7.8 percent is a diagnostic, not a fund limit.

168. Speech rule for the equity leftover

Speak the residual R-squared only as in-sample after the mark. Speak AUC and F1 only as the last block. Speak 0.14 only as a revenue-path default.

Do not speak a Sharpe as a live composite. Do not speak a selected column as a true factor.

If those sentences cannot be kept apart, the stack is not in use.