A worst-case log-optimal portfolio covering 1,000 assets and solving in a 0.128 second median on a 3.2 GHz laptop belongs on a trading desk. Hsieh and Gan have built one. Their trading evidence carries less weight. The top Sharpe, 1.11, comes from one of five radii examined over the same sixty months used to report performance. Plain sample-average optimization produced 5.18 cumulative, while the worst-case portfolio delivered 3.64 with a Sharpe of 0.95.
Worst-case log growth
The investor is long-only and fully invested, with log utility on portfolio return: U = log(1 + ⟨w, x⟩). Returns lie inside a box, x_min ≤ x ≤ x_max. Given N sample return vectors, the optimizer replaces empirical average log utility with the worst value across every distribution lying within order-1 Wasserstein distance ε of those observations.
The economic content comes from the transport geometry. Within a Wasserstein ball, probability mass can travel from each observed sample to any point in the support. The model therefore goes beyond reweighting the scenarios already drawn. Dependence on one sample remaining in its observed location attracts a penalty, while a portfolio able to withstand that sample moving elsewhere fares better. ε sets the price paid for controlling sample error.
Removing the 2^n obstacle
Standard Wasserstein duality, for which the authors invoke Mohajerin Esfahani and Kuhn, yields a semi-infinite program. It maximizes −λε + (1/N)Σ a_j subject to U(⟨w, x⟩) + λ‖x − x̂_j‖ ≥ a_j for every x in the support and every sample j. The constraint set is infinite.
With long-only weights, box support and the ℓ1 ground norm, the inner minimum occurs at a vertex of the box formed by x_min and the sample point. This gives an exact finite reduction containing at most N·2^n constraints. The paper treats that formulation as the benchmark for checking the proposed approximation. Once the universe reaches 476 assets, N·2^n constraints are beyond practical reach.
The authors replace the concave log with a majorant made from M tangent hyperplanes, then apply LP duality to each inner support minimization. When p = 1 and the portfolio constraints are polyhedral, the entire problem becomes one polynomial-size linear program. For box support, it has n + 1 + N + nM variables. The synthetic instances use box return support [\u22120.15, 0.15]^n and η = 10^-3, with five supporting hyperplanes approximating log utility. Setting N = 20 and M = 5 leaves 6n + 21 variables and 100 robust-value constraints. Complexity grows as O(nNη^{-1/2}) instead of exponentially with the asset count.
What η guarantees
The tangent majorant lies above utility, and its error is bounded by (L_f/8)Δ_y². A sufficiently fine mesh therefore supplies uniform error η. Two guarantees follow. The surrogate robust value exceeds the true robust value by no more than η. The portfolio selected by the surrogate also lies within η of optimality for the original robust problem. Choosing the tolerance before solving bounds both the reported value and the quality of the resulting weights.
Observed errors are considerably smaller than the bound. On the 11-asset benchmark across ε ∈ [10^-4, 10^0], the largest robust-value gap from the exact vertex reformulation was 1.38×10^-4. The controlled scaling comparison produced a maximum gap of 2.29×10^-4 across all instances. Each is an order of magnitude below the chosen 10^-3.
η has no claim on realized utility.
It measures approximation error relative to the worst case inside the ball. The paper's out-of-sample statement applies on the event that the true distribution falls within ε of the empirical distribution. For their data, the probability of that event remains unquantified.
The computational gain is clear. Across the Wasserstein-radius grid for the 11-asset benchmark, mean end-to-end solution time was 0.009 seconds for the hyperplane LP. The exact formulation took 3.702, a 413× difference, while the same surrogate implemented in RSOME took 0.504, a 56× difference. The 476-asset experiment comprises 300 solves from 60 monthly instances and five Wasserstein radii. Mean runtime was 0.065 seconds, with a median of 0.044, a ninetieth percentile of 0.137 and a maximum of 0.534. Dimension widens the advantage on synthetic instances, reaching 22.53× at n = 476 and 36.32× at n = 1000. Those measurements keep N = 20 and M = 5 fixed. Implementation covers only the ℓ1 case. The p = 2 second-order cone version is discussed without being evaluated.
When the sample disappears
A less prominent result deserves attention. With box return support and the unit simplex as the feasible set, any ε at or above the support diameter makes the optimal solution set equal to the convex hull of assets attaining max_i x_min,i. The threshold is finite. Beyond it, return samples vanish from the allocation decision, which is then governed entirely by the support's assumed lower bounds.
For each estimation window in the market-data experiment, the authors take those bounds from the sample-wide minimum and maximum observed returns and apply them uniformly to every asset. Consequently, x_min = c·1, with the same lower bound across the universe. Their characterization makes every feasible portfolio optimal, allowing equal weight among the solutions without uniquely selecting it. The table shows the empirical counterpart. At ε = 1, the 476-asset portfolio records 0.81 cumulative return, 0.16 volatility, 0.20 drawdown and Sharpe 0.63. Equal-weight buy-and-hold records 0.83, 0.16, 0.20 and Sharpe 0.63. The Sharpes are identical. At this radius, the DRO allocation converges to 1/N.
Sixty months and five radii
The headline allocation uses ε = 10^-2 from 2021 to 2025 with no costs. Its reported figures are CR 3.64, σ 0.29, SR 1.11, MDD 0.27 and Calmar 1.34. The adjacent SAA comparison has CR 5.18, σ 0.46, SR 0.95, MDD 0.38 and Calmar 1.15. Across the full row, the worst-case portfolio surrenders 1.54 of cumulative return in exchange for 0.16 of Sharpe and eleven points of drawdown. SPY buy-and-hold reaches SR 0.70 and Calmar 0.60.
Three limitations keep this from qualifying as a trading result, and the authors acknowledge every one. Their acknowledgment leaves the limitations intact. The fixed universe contains 475 risky assets selected because complete daily adjusted closing-price records were available from December 2020 to December 2025. The paper describes the exercise this way: the experiment "evaluates repeated high-dimensional controller deployment rather than the performance of a point-in-time S&P 500 constituent strategy."
Costs create the next problem. As the authors write, "These costs are assessed ex post and are not included in the portfolio-optimization objective." They never optimize a cost-aware policy. After charging 0.3% proportional cost on risky-asset turnover, the ε = 10^-2 portfolio drops to CR 2.30, SR 0.87 and Calmar 0.98. It still has the highest Sharpe and Calmar among rebalanced policies. SAA reports CR 3.40, SR 0.80 and Calmar 0.87.
Radius selection is the third limitation. The paper uses ε ∈ [10^-4, 10^0] "for sensitivity analysis rather than as a universal calibration rule". SR 1.11 is therefore the best of five grid points judged over the same sixty months on which it was measured.
Each monthly allocation is estimated from that calendar month's daily returns, giving roughly 21 samples for a 476-asset problem. The 2021 to 2025 performance tables report no standard errors for any Sharpe ratio. All results come from a single five-year path.
The abstract says only that the experiments "validate the certified approximation and demonstrate monthly 476-asset rebalancing and computational scalability to 1,000 assets". The conclusion says they "quantified the robustness-performance trade-off governed by the Wasserstein radius". The authors make no claim of a performance edge. The concern begins when a Sharpe of 1.11 leaves the paper and loses those qualifications.
Our run met a binding cap
We implemented a monthly version of the box-specialized LP and traded ten large-cap US names, with SPY included as one member of the basket: AAPL, AMZN, BRK-B, GOOGL, JNJ, JPM, MSFT, SPY, UNH, XOM. The setup used ε = 0.01 and η = 0.001, long-only and fully invested, with a 10% cap on each name. Trades executed at the month-end close. We charged four tenths of a cent a share, imposed a $1 minimum and modelled no slippage. The window ran from 2020-01-01 to 2025-10-08, preceded by twenty months of warmup before the first live rebalance. Our scenario set consisted of twenty trailing monthly return vectors. The paper instead derives each weight vector from daily returns within that calendar month, so the estimators differ.
The cap made the exercise unusable as a test of the mechanism. Ten tradable names in a fully invested long-only portfolio, each capped at 10%, leave exactly one feasible allocation. Every rebalance produces equal weights for any ε. From 2020-01-01 to 2025-10-08, our figures were total return 190.97%, Sharpe 1.04, Sortino 1.38, Calmar 0.45, max drawdown -45.64% and annualized volatility 31.95%. These numbers describe a ten-name equal-weight portfolio rebalanced monthly, with no slippage charged. They provide no evidence on whether worst-case log utility outperforms sample-average log utility.
A side-by-side comparison with the paper's ε = 10^-2 row still gives some scale. Our Sharpe was 1.04 versus their 1.11. Our Calmar was 0.45 versus their 1.34, while our max drawdown was -45.64% versus their 0.27. The designs differ sharply: 10 names versus 476, trailing monthly scenarios versus same-month daily observations, plus a 10% cap that eliminated all optimizer discretion. Our mean-variance comparison also contains an unresolved unit problem because the one-month Treasury yield is an annualized percent. That benchmark should likewise be disregarded.
One automated pass, one broken constraint, no verdict on the authors.
The evidence still needed
A calibration rule for ε would change my view if it were fitted only on data ending before each decision, then evaluated on a point-in-time universe with costs included inside the objective rather than deducted afterward. The paper cites Blanchet, Chen and Zhou on data-driven radius selection, so the required machinery is available to add. Until such evidence arrives, the result is the solver itself: it converts an N·2^n problem into a linear program whose tolerance is fixed in advance. That result is valuable by itself.