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

The QP decoder carries the Pontryagin portfolio recovery result

KKT residual drops from 2.20e-2 to 1.45e-17 at 100 assets, entirely inside simulated Merton benchmarks.

2026-09-08 · 8 min read · US equities and liquid US ETFs

Reviewing: Scalable Pontryagin-Guided Adjoint-to-Control Recovery for Constrained Dynamic Portfolio Choice · Jaegi Jeon, Jeonggyu Huh, Hyeng Keun Koo et al. · Read it on arxiv

Our backtest of this idea

Our automated quick test, not the paper's

Daily Fixed-Latent Pontryagin-Guided QP Allocation for Top-500 US Stocks

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

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

Run on a different market than the paper

The paper validates its method on simulated generic risky assets rather than a live tradable market. We would allocate across liquid US equities instead; the core mechanism—using estimated conditional return, covariance, and state sensitivities to solve a constrained local portfolio-allocation problem—survives this substitution, but the paper's numerical adjoint and policy-RMSE results do not transfer to US equities.

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

This is not a replication of the paper (3)

  • The paper's continuous-time Brownian-motion model, simulated rollouts, and analytical benchmark adjoints cannot be reproduced exactly from discrete historical equity prices.
  • A full neural direct-policy-optimization and nested antithetic common-random-number adjoint-harvesting implementation would require substantial custom deep-learning and simulation infrastructure. The practical test should use a discrete-time approximation: estimate conditional expected returns and covariances from rolling historical data, optionally train a modest policy model, and solve the constrained quadratic allocation problem at each rebalance.
  • The resulting historical backtest evaluates a discretized constrained-allocation analogue, not the paper's claimed continuous-time adjoint-recovery accuracy.

The figures below measure what we could run, not the paper's own method, so they are not evidence for or against its claim.

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

  • deviation left undescribed by the audit (invalidates: Synthetic Merton and predictable-return numerical error levels; consumption-cap results)
  • deviation left undescribed by the audit (invalidates: Consumption-cap results; any direct claim that historical training reproduces the paper's full objective)
  • deviation left undescribed by the audit (invalidates: Consumption-cap results; direct numerical comparability of trained-policy errors)
  • deviation left undescribed by the audit (invalidates: Historical applicability of a uniform recovered-policy perturbation bound)

12 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 24.7%Jul 2024
Sharpe
0.19
Total Return
24.7%
Max Drawdown
-66.8%
CAGR
5.0%
Volatility
29.0%
Beta vs SPY
1.51
Trades
373,026

The paper's result lives in the decoder. Jeon, Huh, Koo and Lim freeze a neural policy after 1,000 epochs, once its coordinatewise RMSE against the analytical constrained Merton rule has stalled at 1.1190e-2. One local quadratic program at each deployment state cuts that error to 1.374e-4 without further training. Roughly eighty times closer, from one shot with the same network.

Everything else supports that move. The paper develops the inputs required by the QP and the diagnostics used to assess them. Its own conclusion keeps the scope deliberately targeted. The method does not claim dimension-free state complexity or universal dominance over PDE-, BSDE- or PINN-based methods. Remark 3 also concedes that recovery does not improve the policy-distance order. Those limits leave the central contribution intact and make the abstract's emphasis on residual reductions worth examining.

Inside Stage 1b

The problem is continuous-time portfolio and consumption choice under smooth pointwise constraints: no short sales, no borrowing, and a consumption cap C <= m*X. Stage one uses direct policy optimization to train a feasible feedback policy. The network has two layers of width 200 with LeakyReLU activations. Softplus or softmax outputs keep portfolio weights inside the admissible set. Training backpropagates through time over simulated exponential-Euler wealth paths, following the direct-policy-optimization and backpropagation-through-time paradigm of Huh et al. (2025).

Feasibility comes from construction. Yet, as the paper puts it, feasibility "does not imply that the deployed action satisfies the pointwise Pontryagin maximum principle (PMP) and Karush, Kuhn, Tucker (KKT) conditions."

The second pass supplies the new work. The actor is frozen, and its latent output is detached before applying the state-dependent feasible chart. The continuation payoff is differentiated once and twice against the complete wealth-factor state. Detachment removes derivatives through the network while preserving structural state derivatives created by a moving feasible set. With c detached, differentiating C = X*c still produces c.

Conditional Monte Carlo projection maps the raw pathwise sensitivities into the adapted first adjoint and matrix second adjoint. The shifted wealth-row martingale term is estimated separately through nested antithetic common-random-number regression around the algebraic anchor. Stage two feeds this estimated tuple into a generalized Hamiltonian, then solves each state independently. QP-PGDPO uses an exact strongly concave QP over the convex weight set. B-PGDPO instead applies Newton-CG to a log-barrier problem.

There is no value-function grid. Asset count can therefore reach 100 while the Markov state remains small, though every reported figure comes from simulated benchmarks. The constrained Merton cases use r=0.03, gamma=2, T=1.5 and dt=0.075 at n=10 and n=100. A consumption-cap variant covers n=2, 10, 100. The remaining tests use a one-factor affine special case of Liu (2007), followed by a constrained Liu, Kim, Omberg factor model at n=10, 50, 100. Evaluation spans 128 held-out diagnostic states, each with 2,048 to 8,192 continuations. Three training seeds share one market realization. The evaluation seed is 12345.

The decoder earns the result

The budget study gives the clearest account. Policy RMSE is 0.013561 after 250 epochs, 0.011251 after 500, and 0.011190 after 1,000. Meanwhile, the KKT projected-gradient residual levels off at 2.3945e-2. From that same 1,000-epoch checkpoint, the exact QP decoder reaches RMSE 1.374e-4 and pushes the residual down to numerical tolerance.

The headline n=100 no-short-sale table tells the same story. DPO records 1.0852e-2 RMSE and 2.2022e-2 KKT-PG. QP-PGDPO records 2.86e-4 and 1.45e-17. At n=10, the residual moves from 1.9777e-2 to 5.52e-18.

The decoder is the bottleneck.

Two supporting results say more than the headline. First, estimator design carries almost the full burden. Against the exact-policy target, the raw-moment estimate of the wealth-row Brownian coefficient has nRMSE 59.95%. The cap model produces 43.87%. Anchored nested OLS with antithetic common random numbers lowers the respective errors to 0.326% and 1.313%.

Second, the computational graph matters at the point where hedging demand enters. Fixed-latent estimates differ from a graph retaining the actor's state derivatives by 0.108% on the first adjoint and 0.168% on wealth curvature. The discrepancy rises to 40.9% for the mixed wealth-factor block and 62.4% for the shifted term. The authors treat these as graph-to-graph discrepancies, rather than errors measured against truth. That interpretation is right. A reimplementation still has to reckon with a single graph choice that changes the shifted term by 62.4%.

B-PGDPO is much less convincing at n=100. It reduces the KKT residual to 3.571e-4, while policy RMSE moves from 1.0852e-2 to only 9.059e-3. The exact QP reaches 2.86e-4. Barrier bias also has a visible cost. At tolerance 1e-5, 17.19% of the 64 Merton-cap states have negative pointwise Hamiltonian gain relative to raw DPO. Tightening the tolerance to 3e-6 and 1e-6 removes the negative fraction entirely. The mean gap to exact QP then falls to 2.22e-4 and 7.5e-5. The recovery tables use those tighter settings, as does the rest of this review.

Limits of the diagnostics

The authors describe the scope with unusual care, so it should be read as stated. Their gain and gap columns are "conditional local generalized-Hamiltonian diagnostics under the common estimated adjoint input; they are not direct estimates of global expected-utility improvement." Remark 3 adds that recovery generally leaves the policy-distance order unchanged. Both the reference control and recovered risky weights remain order-root-eps_ref from their targets. Only the integrated local QP value loss is order eps_ref. The headline result therefore concerns local stationarity and distance to a closed-form policy.

Closed-form availability also determines the accuracy targets. Evidence becomes thinner where the paper tests the input motivating the shifted-adjoint construction. Under the canonical predictable-return calibration, the mean shift norm is 6.25e-4, beside a mean standard error of 7.53e-4. The hedging-relevant calibration gives 4.33e-3 against 5.65e-3. Mean SNR is 0.92 and 0.79. The paper states: "Thus the residual is not resolved above its Monte Carlo uncertainty in either exact-policy experiment, while ZX is recovered below 1% nRMSE." It declines to infer a zero-shift identity, reasonably. Still, in those two calibrations, the case for carrying a nonzero shifted term through the procedure depends on a quantity indistinguishable from noise.

The hedging ablation gives the factor input its clearest support. Removing the intertemporal hedging component in the hedging-relevant calibration shifts the policy by RMSE 5.465e-2. That is about 6.5 times the full-input decoded RMSE of 8.429e-3.

The paper also discloses why its baseline results should not be read as a ranking. In the Liu, Kim, Omberg factor benchmark at n=100, the hPINN-style baseline posts mean KKT-PG 3.78e-2, compared with DPO's 2.470e-2, and gain -8.63e-3. In the supplementary affine-factor benchmark at dY=3, the full procedure runs for 5.016 minutes, versus 74.9 minutes for the hPINN-style baseline. Architectures, objectives and tuning budgets differ, the authors say, while the QP solver is neither batched nor optimized.

Our 500-name US adaptation

We could not reproduce the paper's measurement exercise. Discrete historical equity prices offer no counterpart to the continuous-time Brownian model and its analytical benchmark adjoints. On real data, the nested antithetic adjoint-harvesting stack therefore has no target against which its accuracy can be scored.

We built a discrete-time analogue using liquid US equities in place of the paper's generic simulated risky assets. The universe comprises annual top-500 large caps from 2020-01-01 to 2024-07-01, with daily close rebalancing based on information available through the previous day. Next-day excess returns come from a pooled ridge forecast with penalty 1.0, refitted monthly. Risk comes from a 756-day Ledoit-Wolf covariance, subject to a full-rank Cholesky requirement. A terminal-CRRA policy at gamma 2 over 378 daily steps provides the feasible fallback.

The constrained QP chooses long-only weights under a 2% cap per name, a 25% sector cap and 100% gross exposure. Costs are 5 bps for each unit of one-way turnover, including the cash leg, plus $0.004 per share. This exercise is an adaptation rather than a replication and cannot test the paper's claim. That claim concerns adjoint accuracy against closed-form policies, and our market has no closed-form policy. The substituted version retains the central mechanism: an estimated conditional return, a covariance matrix and second-order state sensitivities enter a constrained local allocation problem. The paper's adjoint accuracy and policy-RMSE findings do not carry over to US equities.

Our results over 2020-01-01 to 2024-07-01 were total return 24.71%, Sharpe 0.19, Sortino 0.24, Calmar 0.08, maximum drawdown -66.84% and volatility 29.05%. A Sharpe of 0.19 paired with a 66.84% drawdown is weak. We report it as the outcome of one automated pass. The paper gives no returns, Sharpe or turnover figures of its own, so comparison is impossible. Its 2.86e-4 policy RMSE and 1.45e-17 residual belong to its simulated universe.

Two choices limit what can be inferred from our returns. Slippage is modelled at zero. The mandate also fixes much of the risk profile before optimization begins. A long-only book with a 2% name cap and 100% gross exposure stays close to constrained long equity with residual cash. Most of the observed beta and volatility comes from that constraint set.

When the QP inputs failed curvature or stationarity checks, we reverted to the feasible policy target. The unrecovered allocator therefore traded part of the period. Our weak result is evidence about this one automated pass, especially the ridge forecast and daily-surrogate adjoints. It does not amount to a verdict on the authors' recovery step. We have previously discussed how an edge measured in a synthetic environment contracts when real friction appears (the LLM execution gain and order-book depth). Neither their experiment nor ours answers that question here.

Can it survive a cost model?

The portable design is useful: estimate conditional returns and covariance, add a second-order curvature term, then let a constrained QP respect the complete feasible polyhedron instead of relying on projection or softmax. The paper makes a concrete deployment claim. Sensitivities should feed a decoder in place of sending the network's own feasible output directly to market. Testing that claim is cheap.

Implementation risk starts with turnover. The risky-weight block of the generalized Hamiltonian includes no turnover term. When the QP decodes each state at daily frequency, yesterday's holdings receive no preference. Its reported diagnostics cover policy RMSE, KKT projected-gradient residual, Hamiltonian gain and gap to exact QP. None prices a change in positions.

State dimension imposes another limit. The tests use dY values of 0, 1, 3, 5, and the conclusion disclaims dimension-free state complexity. The decoder does run in a constrained model lacking a closed form. Appendix G.3 gives constrained Liu, Kim, Omberg recovery results at n=10, 50, 100. Mean KKT-PG is 2.4702e-2 for DPO, 2.006e-3 for B-PGDPO and 5.74e-17 for QP-PGDPO. Independent-bank shift replication errors are 5.81e-4, 8.03e-4 and 6.65e-4.

Those runs receive validation from self-consistent KKT residuals and replication across Brownian banks alone. An external target combined with a proportional cost term inside the Hamiltonian would change my view. Until such evidence appears, the paper offers a good numerical result for local stationarity in a simulated 100-asset orthant, a description the authors themselves accept.

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.

At each calendar-year formation:
  1. Select the 500 highest-capitalization non-ADR STOCK records for that year.
  2. Hold membership fixed until the next annual formation.

Walk forward by trading day t:
  1. Use data observed through t-1 to build features and rolling return/state histories.
  2. Monthly, fit a pooled ridge model for next-day excess returns using only targets fully observed by t-1.
  3. Estimate the joint return/state covariance over up to 756 days; apply window-specific Ledoit-Wolf shrinkage and require a full-rank Cholesky factorization.
  4. Generate the feasible unrecovered DPO target from the trained terminal-CRRA policy.
  5. Harvest fixed-latent first- and second-order OL-BPTT sensitivities from 378-step daily surrogate rollouts.
  6. Estimate the shifted-input diffusion term by unregularized residual OLS; require a nonsingular design.
  7. Form annual-clock QP inputs g and Q = -x^2 P_XX Sigma_annual.
  8. If P_XX &lt; 0, Sigma_annual is strictly positive definite, inputs are finite, and the solver passes stationarity checks, solve:
       maximize g'pi - 0.5 pi'Q pi
       subject to 0 &lt;= pi_i &lt;= 2%, sector weights &lt;= 25%, and sum(pi) &lt;= 100%.
     Otherwise retain the feasible unrecovered DPO target and record the failure reason.
  9. At the eligible close, trade toward the selected target using the observed close. Skip an affected order when its close is unavailable; do not fabricate or forward-fill execution prices.
 10. Recompute actual holdings after skipped orders and track realized constraints separately from target constraints.
 11. Charge 5 bps per unit of one-way turnover, where turnover includes the cash leg.