AQAI QuantAI research lab for systematic strategies

Automated analysis

This analysis was drafted by our research engine and has not been checked by a human editor. It may contain errors. It separates the paper’s own results from our tests, and any figures called ours come from our own backtest.

Our automated analysisOur backtest

Linear-in-assets SGLD bounds for CVaR, without a convex LP benchmark

Ding, Sabanis and Zhang derive linear excess-risk bounds; their numerical tests use only simulated Gaussian losses.

2026-11-03 · 6 min read · CVaR Portfolio Optimization · US ETFs

Reviewing: Non-asymptotic analysis of SGLD with discontinuous stochastic gradients: a new route to portfolio CVaR minimization · Yan Ding, Sotirios Sabanis and Ying Zhang · Read it on arxiv

Our backtest of this idea

Our automated quick test, not the paper's

Five-ETF Regularized SGLD CVaR Research with Platform-Capped Execution

Backtest period 2020-01-01 to 2024-07-01 · hypothetical, net of modelled costs

Why these figures are not the paper's (3)

The paper reports no results of its own

This is a theoretical paper — derivations and proofs, with no measurement on market data. The backtest below is a strategy we built from its idea, not a test of anything the authors claimed.

Run on a different market than the paper

The market-agnostic portfolio optimizer is applied to US ETFs using historical return scenarios instead of simulated Gaussian losses. This tests a real-market application of the allocation mechanism, not a replication of the simulated results.

The paper's own figures describe its universe and do not carry over to ours.

Our own audit found this run does not follow the paper faithfully (5)

  • Equation (12), simulated expected excess risk: E[V(θ_n^λ)] − inf_{θ∈R^{N+1}} V(θ) ≈ (1/100)∑_{m=1}^{100} V(θ_{n,m}^λ) − V^⋆.: Preserve the formula as paper reference but do not compute its estimator. Report separate terminal objective values and independent-seed differences without claiming a matched regularized global optimum. (invalidates: Figure 2's approximately linear dimension-scaling experiment is not replicated; no estimated expected excess risk relative to a matched regularized optimum is reported)
  • Paper simulation distribution, dimensions, fixed optimization parameters and numerical update budgets.: Use the specified historical ETF joint-return scenarios, past-only hyperparameter selection and the finite primary update budget. (invalidates: Table 1's allocations and VaR/CVaR values are not ETF targets; Table 2's allocation agreement is not an ETF prediction; Figure 2's dimension-scaling observation is not replicated; Table 3's timings and accuracy are not transferable)
  • Read the allocation from g(w) and the jointly optimized threshold from η; the numerical experiments evaluate terminal iterates.: Read and report the terminal softmax allocation and fitted threshold unchanged as optimizer outputs, but execute equal weighting because the mandatory per-position cap leaves no other fully invested feasible target. (invalidates: Executed portfolio weights do not represent SGLD's allocation; executed comparative returns, tail losses and drawdowns cannot test the requested SGLD allocation hypothesis)
  • The paper specifies no historical estimation window, chronological validation procedure, monthly rebalance rule, transaction-cost model or trading execution convention.: Add the requested rolling scenario window, chronological monthly validation, next-open execution, daily performance accounting and explicit notional trading costs. (invalidates: Gaussian optimization diagnostics cannot be interpreted as historical ETF performance predictions)

1 further finding(s) are described in the note.

These are our findings about our own implementation, not criticisms of the paper. Read the figures below as a description of what we ran.

Jan 2020Total 42.7%Jul 2024
Sharpe
0.64
Total Return
42.7%
Max Drawdown
-28.6%
CAGR
8.2%
Volatility
14.8%
Beta vs SPY
0.61
Trades
294

A portfolio manager has no evidence here for choosing stochastic gradient Langevin dynamics (SGLD) over a convex CVaR program. Ding, Sabanis and Zhang carefully prove that SGLD can minimize a problem their reformulation has made harder. The theory earns its place. But the headline claim of constants independent of the number of assets requires holding fixed a moment that grows as assets are added.

The paper reports no trading results, returns or risk-adjusted performance. All its numerical evidence comes from simulated, independent Gaussian losses.

Why abandon the convex formulation?

Under the Rockafellar and Uryasev representation, CVaR at level 0.95 is the minimum over a threshold η of η + E[(portfolio loss - η)+]/0.05. The minimizing η is the VaR. With long-only weights on the simplex, the objective is convex; historical scenarios turn it into a linear program.

The authors instead remove the constraints by expressing weights as a softmax of free logits w. This makes the weights positive and ensures they sum to one. They also add a penalty γ|θ|² on the threshold and logits together. The resulting objective is nonconvex in w, and its stochastic gradient jumps because it contains the indicator 1{portfolio loss ≥ η}. This gives a Langevin sampler an unconstrained problem to work on. As β increases, the Gibbs measure proportional to exp(-βV) concentrates on global minimizers.

That choice changes the solution. Setting the expected η-gradient to zero produces a tail probability of 0.05(1 + 2γη), rather than 0.05, so the fitted threshold targets a slightly different quantile. For γ = 5×10^-5 and η near 1.9, the shift is about two parts in ten thousand. The penalty pulls logits toward zero and thus weights toward equality. In the second three-asset example, the third asset is a near-certain loss of 3 with variance 10^-4. Even the reference solution assigns it 0.0004 rather than zero; SGLD assigns it 0.0068.

Elsewhere, the small examples agree closely. SGLD's first three-asset solution has weights (0.4631, 0.2102, 0.3267), VaR 1.9042 and CVaR 2.2310. The reference values are (0.4637, 0.2102, 0.3261), 1.9056 and 2.2304. At N = 15, the top three weights match to the second decimal, and CVaR is 1.3038 against 1.3001. Those references minimize the regularized objective. They check the solver while leaving the regularization bias unmeasured.

Linear in N, empty numerically at β = 10^7

Theorem 1 bounds the Wasserstein-2 distance from the iterate's law to the Gibbs measure by 2C5·λ^{1/4} + e·C6·exp(-nλ/T0). The step-size contribution shrinks slowly. Halving its error requires a step sixteen times smaller.

Theorem 2 turns that result into an excess-risk bound, multiplying the convergence term by C_V and adding a Gibbs term of order (N+1)/(2β)·log(...). With C5, C6 and C_V all O(√N), and T0 independent of N, the combined bound grows roughly linearly in N. The comparison is with the (N+1)^{9/2} dependence of tamed SGHMC in the parameter regime used for that paper's CVaR application. This is a large improvement. It also avoids the density assumption on losses required by the multilevel VaR papers the authors survey.

The "dimension-independent" constants deserve a closer look. The radius beyond which convexity holds is r = 2(1 + E[M(X)])/(γ(1 - q̄)). Both this radius and the semi-convexity constant k contain E[M(X)]; the growth constant m contains E[M(X)²]. The paper defines M(x) = 2·max_i |x_i|. As the asset count rises, so does the expected maximum absolute loss, slowly for Gaussians and faster for fat tails. Calling r, k and m independent of N therefore treats E[max_i |X_i|] as fixed. A portfolio of 160 assets does not have the same expected maximum as a portfolio of 30.

Then there is the size of the constants. The experiments use γ = 5×10^-5 and q̄ = 0.95, giving a denominator γ(1 - q̄) of 2.5×10^-6. This makes r equal to 8×10^5·(1 + E[M]). The bound on the log-Sobolev constant is (2/(βγ))·exp(β(4r(√m + √L·r) + γr²/2)), with β = 10^7. Its exponent enters T0, while C5 contains exp(2kT0). At the experimental settings, the explicit bound provides no quantitative guidance. The scaling argument survives, and that is where the authors put their emphasis.

For the dimension experiment, N takes values in {30, 38, 48, 62, 78, 99, 126, 160}. The authors average 100 chains of 2×10^6 steps at λ = 5×10^-4 and estimate a log-log slope of about one. They describe this as consistent with Theorem 2; the abstract goes further and says the experiments exhibit the predicted dimension dependence. Yet the experiment does not distinguish the terms in the bound. Any error accumulating coordinate by coordinate can produce a slope of one, including the additional variance from stochastic gradients at λ = 5×10^-4. The fitted slope therefore cannot distinguish the theorem's constants from generic per-coordinate scaling. All eight points also use one fixed draw of means and volatilities.

5 seconds for SGLD, 2,748 for PSGLA

The timing table supplies the only computational comparison. It covers a single N = 10 instance, averages each checkpoint over 100 trajectories, and sets tolerance at 5×10^-3. The reported iterations to tolerance, final excess risk and elapsed time are:

PSGLA takes the fewest iterations and the longest time. The authors explain that the proximal methods "incur substantially higher computational costs due to the numerical proximal updates used in our implementations." On their account, the 238x elapsed-time gap (1,190 s against 5 s) largely measures the cost of their numerical proximal step. The proximal methods also end further below the 5×10^-3 target: 4.27×10^-3 and 4.31×10^-3, compared with 4.86×10^-3 for SGLD. A checking grid spaced at 10^3 iterations allows those differences.

We did not find a run solving the original convex problem directly, either through a scenario linear program or through the closed-form Gaussian objective already used for the references. A desk would try that first.

Every method in the table tackles the same nonconvex softmax formulation. The authors themselves restrict their claim to that setting: the abstract claims efficiency "for the optimization problem under consideration", and the comparison section closes with "for the CVaR portfolio optimization problem considered here." The table therefore ranks solvers within the authors' chosen formulation. Why restrict the benchmark to softmax when the convex program in their own equation (1) is available? Nor does the table establish portfolio quality, since all four methods stop at the same excess-risk target.

Our ETF adaptation became an equal-weight book

We built an adaptation of our own. The paper trades nothing, and the figures below belong to our construction. We replaced simulated Gaussians with historical daily losses on SPY, QQQ, IWM, TLT and GLD. At each month-end, we used the trailing 504 daily joint losses and selected γ, λ and β from a 27-point grid over 12 monthly validation intervals. We then refit from zero using 100,000 SGLD updates, resampling whole rows from the scenario history. Our backtest covers 2020-01-01 to 2024-07-01. Commissions are $0.0040 a share, subject to a $1.00 order minimum.

Our execution imposed a 20% position cap. Across five assets, that forces every holding to 20%, so the SGLD portfolio, the convex CVaR benchmark and equal weight all reduced to the same monthly-rebalanced equal-weight book. From January 2020 to July 2024, that book returned 42.69%, with a Sharpe of 0.64 (Sortino 0.84) and volatility of 14.82%. Maximum drawdown was -28.62%, and Calmar was 0.29. These figures tell us nothing about SGLD's allocation ability. We also filled at the close instead of the intended next session's open. Our implementation is at fault.

Removing the cap would still leave a separate gap between the theory and our data. Daily returns have serial dependence, and the equity sleeves are correlated. The paper assumes i.i.d. observations, and its diagonal-covariance Gaussians never test those conditions.

The probability result earns its place

The structural lemmas are a genuine advance in probability theory. They establish linear growth, convexity at infinity and a one-sided Lipschitz condition for a discontinuous gradient without a density assumption. Extending the argument to SCAD-penalized least squares shows that it reaches beyond this application. The portfolio case remains incomplete. I would change my view if SGLD beat a scenario LP on held-out CVaR at N in the hundreds, with E[max_i |X_i|] reported alongside N.

Our backtest stops at 2024-07-01, and everything after that date is deliberately left untouched so the same strategy can be checked out of sample later.

How our backtest worked

The steps the code we ran actually executed, from its strategy card. Ours, not the paper's — it is one automated implementation of the idea, not the authors' own.

Require SPY, QQQ, IWM, TLT and GLD; use that scenario-column order.
At each completed month-end close:
  Build 504 aligned daily joint losses x[t,i] = -(close[t,i]/close[t-1,i]-1).
  Include the decision day's completed return; never impute missing returns.
  Evaluate all 27 (gamma, lambda, beta) combinations using 12 completed
  chronological monthly validation intervals, each with its own full history.
  Simulate uncapped candidate portfolios with next-open fills, drifting holdings
  and the specified self-financing validation cost model.
  Select minimum pooled daily net-loss CVaR95; break exact ties by turnover,
  then ascending (gamma, lambda, beta).
  Refit from theta = 0 on the current 504 scenarios for 100,000 updates:
    a = softmax(w); G = a'x; I = 1{G >= eta}
    H_eta = 1 - 20*I + 2*gamma*eta
    H_wj = 20*I*a_j*(x_j-G) + 2*gamma*w_j
    theta <- theta - lambda*H + sqrt(2*lambda/beta)*Normal(0,I)
  Resample whole joint rows and independent Gaussian noise each update.
  Save terminal uncapped weights and eta; do not choose best iterates or seeds.
  Save matched uncapped convex-CVaR and equal-weight research comparisons.
  Construct executable target = 20% per ETF for every method.
At the following session's adjusted open, as specified:
  Skip all synchronized fills if any required open is invalid or capital fails.
  Otherwise solve the self-financing rebalance and hold quantities until next fill.
  Allow weights to drift; flag missing marks rather than invent returns.
Use equal-weight fallback when required estimation history or optimization fails;
label failed optimization unoptimized. Missing required instruments fail the run.

The specification requires next-session-open fills, while the supplied platform execution metadata describes MOC fills. The realized execution convention requires blotter reconciliation; the pseudocode describes the specified research procedure, not verified fill timing.