Equal positive and negative counts are the sampling rule worth carrying from this paper. When a learner weights the rare class by N0/N1 and both classes have equal dispersion before weighting, variance is minimised at K0 = K1, subject to availability. Prevalence then disappears from the optimum. Corollary 9 gives the result as an if and only if under sigma_1 = sigma_0. Proportional stratification is therefore the wrong default among subsample designs. The paper's class-stratified and uniform rules both use proportional allocation. Its empirical results make a weaker case.

We cannot reproduce the 2004-2011 experiment. Our U.S. price history starts around 2010, which confines any version we build to 2010-2024. Exact replication would also require the paper's PSY settings: its critical-value simulation, minimum-window rule, two-day merge gap and five-day minimum duration.

The hypothesis test becomes the label

Singh constructs the onset label from a hypothesis test. The Phillips-Shi-Yu procedure runs a recursive right-tailed unit-root test on every window ending at t. Thresholds come from the 95th percentile of 2,000 Gaussian random walks simulated for each window length, with zero augmentation lags. Raw flags separated by at most two non-flagged days are merged. Runs shorter than five days are removed, and each surviving run contributes its first day as an onset.

At the close of day t, the model ranks stocks by the probability of an onset during t+1 through t+h, where h is 5, 10 and 20 days. The inputs comprise 17 close-of-day price and volume columns. There are 16 distinct columns because two are algebraically identical, although both remain for reproducibility. The model receives no BSADF value or threshold gap. Rows within an episode already under way are dropped.

The universe contains the top 350 common stocks by median dollar volume, ranked using 2001-2003 data and then frozen. The sample runs from 2 January 2004 to 30 December 2011, covering 705,061 security-days and 1,285 filtered episodes. Five expanding folds use a 140-date purge on either side of validation, against a derived need for 60 + 20 + 7 = 87 trading days. Extending the purge to 180 days leaves the pattern intact: pooled val-percentile AP is 0.0153 at h = 5, compared with 0.0195 at 140 days.

Full-data LightGBM records macro average precision of 0.0213, 0.0217 and 0.0328. Prevalence is 0.0037, 0.0071 and 0.0143, producing enrichment of 5.8x, 3.1x and 2.3x. ROC-AUC is 0.817, 0.619 and 0.568. A single-feature 60-day momentum baseline reaches AP of 0.0114, 0.0162 and 0.0241. At 20 days, that baseline beats the boosted ensemble on AUC, 0.629 against 0.568. Logistic regression does too, at 0.611. The paper makes no claim that the nonlinear model wins at 10 days, where the comparison is 0.0217 against 0.0214. No backtest, no returns, no costs.

Why equal counts emerge

Three of the four subset rules, uniform, class-stratified and class-balanced, are rewritten as stratified designs for class-weighted empirical risk. Singh derives an exact finite-population variance and a Neyman allocation, K*_c proportional to N_c S_c. K-means representatives fall outside this theory because an exact bias identity excludes them. Their later underperformance therefore says nothing about allocation.

Positive losses are weighted by N0/N1, which enlarges their dispersion by exactly the imbalance ratio. This gives N_1 S_1 = N_0 sigma_1, reducing the optimal ratio to sigma_1/sigma_0, the unweighted dispersions. Proportional allocation would require positive losses to be less dispersed than negative losses by a factor on the order of pi. With pi below 1.5%, that looks implausible. Given the stated dispersion condition and ignoring finite-population corrections, equal allocation has efficiency of 1/[4pi(1-pi)] relative to proportional allocation: 67.8, 35.5 and 17.7 at the three mean fold prevalences. On this account, reweighting and undersampling complement each other.

Sigma_0 = sigma_1 remains an assumption. Singh observes that both quantities can be calculated directly from the per-row losses of a fitted full-data model, but he did not calculate them. Those two dispersions are the first check I would run. The implemented rule truncates at min{N_c, floor(K/2)}, making the realised allocation ratio min(2pi/f, 1). A(pi,f) is consequently determined for all fifteen grid cells before model fitting begins.

One column carries the case

At h = 10, class-balanced construction outperforms full-data training at all five retention levels. The AP differences are +0.0086, +0.0082, +0.0069, +0.0063 and +0.0052, alongside end-to-end speedups from 2.42x to 3.13x. Training with 1% of rows beats training with all rows on accuracy and cost, with a speedup of 2.93x.

This comparison is empirical. The variance algebra concerns the objective at a fixed model state. The result appears at h = 10, while h = 5 does not show it. At h = 10, the advantage declines across retention fractions in exactly the predicted order, with Spearman rho of 1 and exact p of 0.0167, conditional on the theory providing that ordering.

Singh reports the failure across horizons directly. Since A decreases with pi, the largest advantage should occur at h = 5: predicted 66.3 at f = 1% versus 17.7 at h = 20. Instead, measured differences at h = 5 range from -0.0013 to +0.0011, and every interval includes zero. Across the 15 pooled cells, rank correlation is 0.11 (p = 0.70). Uniform and class-stratified subsets are mostly negative at h = 5, reaching -0.0066 and -0.0081 at 1%. K-means representatives are slower end-to-end than full-data training in every setting, from 0.609x to 0.044x.

The theory recovers the ordering within a horizon and fails across horizons.

Half the gain comes from one half-year

The ten-day result is concentrated in fold F2, the second half of 2010, as the paper's conclusion acknowledges. Roughly half the advantage comes from this single forward period, when full-data training gives an inverted ranking and the class-balanced model avoids one. Full-data LightGBM has ROC-AUC of 0.137 in F2, compared with 0.483 to 0.868 across the other four folds, and AP of 0.0019. The 2.5% balanced model reaches 0.0249.

Remove F2 and the average gain falls to +0.0026 to +0.0049. Every fraction except 2.5% then contains folds with both signs. Singh interprets the pair as evidence that the balanced design continued working when training on all observations failed, and presents that interpretation as a hypothesis for a longer panel. I would leave it there. Five unanimous fold signs yield a two-sided sign-test p of 0.0625, the lowest value available from five observations, across 54 configurations and 885 runs. "This is a pattern, not a confirmed effect," the paper says.

A covariate-shift monitor would not have caught the inversion. F2 has mean absolute feature-distribution shift of 0.21 training-IQR units, below F0's 0.46, despite F0 producing no inversion. Exactly four of 17 features change sign at h = 10, all volatility or skew measures. The same group reverses at h = 5 without causing failure, and F2's three strongest individual predictors retain their sign. Singh suggests a validation-time gating rule based on feature-label sign reversal. He also concedes that it was discovered on the failed fold, leaving it in-sample until somebody freezes the rule and tests it forward.

PSY critical values are simulated here under homoskedastic Gaussian walks. Harvey and co-authors show that this test family is non-pivotal and over-sized under permanent volatility shifts, while three predictors measure volatility. Singh identifies relabelling with a wild bootstrap as the single most valuable experiment he did not run. He also states the survivorship boundary. The archive does not document its coverage of securities delisted before the snapshot, and eligibility demands 400 observations during 2001-2003. Post-2004 listings and young speculative names therefore lie outside the studied population.

Score scales are the easy win

Ranking each score inside its own model's validation distribution leaves all within-period ordering unchanged, as the paper's conclusion explains. Pooled cross-period AP rises from 0.0049 to 0.0195 at h = 5, while pooled ROC-AUC moves from 0.541 to 0.878. Internal ordering remains fixed within every fold. The improvement therefore measures drift among the score scales of five separately fitted models. Implementation costs nothing and requires no test labels.

At h = 10, the 2.5% balanced model delivers 42.5% episode recall, a 6.5-day median lead and 1.64 false clusters per security-year. Full-data LightGBM records 40.5%, 6.7 days and 1.84 burden. At the middle budget of one false alert per security-year, full-data training has slightly higher recall and lead, 25.1% and 6.2 days against 24.1% and 5.9, with realised burden of 1.51 against 1.03. At the tightest budget, it also leads on both: 15.3% and 7.5 days against 11.5% and 5.4, at 1.16 against 0.61. Singh says the 2.5% configuration was fixed before the multiplicity analysis, while acknowledging that its selection is not independently documented. Those operating points should be read conditionally.

Evidence that would move me

These ranking metrics remain far removed from a P&L path. We have previously covered ranking statistics that do not explain an equity curve (FinSMART). Two experiments would resolve the sampling claim. First, calculate sigma_0 and sigma_1 from a fitted full-data model. Then run Singh's temporally thinned negative baseline, which asks whether N0 comes close to the number of independent rows. Section 6.4 already accepts that substituting an effective sample size for N0 would reduce the predicted advantage. The available headroom is therefore overstated by 35.5.

I would use the identity tomorrow.