An allocator that re-solves a utility problem at every instant needs proof that its chosen weights define a trade. Černý and Ruf supply one. When utility has strictly negative curvature at zero and reasonable asymptotic elasticity (RAE) in both tails, finite cumulative local utility forces the pointwise optimum to integrate returns. As the authors put it in their abstract, existence is easy; integrability is the question, and the RAE condition of Kramkov and Schachermayer is the key. Their theorem says nothing about returns. The paper has no data of its own. The 34.14% return and 0.80 Sharpe reported below are ours, from a discrete-time, capped log-utility allocation on daily bars. That run cannot identify continuous-time characteristics or test the theorem.
When do the weights define a trade?
The paper starts with a continuous-time vector of asset returns R, which may include jumps, and applies a concave utility g to portfolio gains. Its local expected utility is the drift rate of the g-variation of the gains process λ•R. The rate combines a curvature term with g applied to each jump; semimartingale characteristics supply the drift b, diffusion c and jump measure F. Maximising that rate over λ at each date produces the local optimizer, the myopic weights familiar from dynamic programming. The question is whether weights chosen this way integrate R when carried through time. This is theoretical work, with no data set or sample period.
Without that integral, the "strategy" has no well-defined P&L. The authors compare (i) finite cumulative local utility, meaning the optimised drift summed over [0, T], with (ii) integrability of the optimizer with respect to R.
First, the optimizer has to exist. It does so when the market is instantaneously arbitrage-free (there is no direction λ in which the portfolio can only move up), g has strictly negative curvature at zero, and g satisfies the Inada condition: its slope is infinite at minus infinity and zero at plus infinity. Even a Lévy process can lose existence when Inada fails. Kallsen's utility g = 1 + x - √(1 + x²) has g''(0) = -1, yet its left slope is only 2. Give it drift 1 and jumps uniform on [-1, 1]: local utility has a supremum of 2 that no weight attains. Above drift 1, the supremum is infinite.
The main theorem links (i) to (ii). In an instantaneously arbitrage-free market with finite local utility, (i) implies (ii) if g''(0) < 0 and g has RAE. The tail test requires x g'(x)/g(x) to remain strictly above 1 at the left end of the domain, unless that domain is bounded below, and strictly below 1 at plus infinity. Boundedness of g above gives the converse, (ii) implies (i). For the linear risk tolerance family indexed by ρ, the left limit is 1 - 1/ρ for ρ < 0 and infinite for ρ ≥ 0; the right limit is 1 - 1/(ρ∨1). Every ρ clears both tests. Černý, Ruf and Schweizer previously had equivalence at ρ = -1 under independent increments. The new paper establishes equivalence for every ρ below 1 without that independence assumption, and the forward implication for every ρ.
Log utility and the missing converse
Log utility falls outside the converse. It is ρ = 1 and unbounded above. In Example 6.1, a compound Poisson market has log-optimal weights that integrate R, while cumulative local utility on [0, 1] is infinite. At weight 1, utility grows like ln(ln(1 + f(t))), where f(t) = exp(e^(1/t)) + 2; the expression is not integrable near zero. A growth-optimal investor can therefore have a tradeable strategy without finite expected log growth. Finite cumulative log utility still implies integrability.
The tail requirement has equally sharp edges. Example 6.2 gives a utility bounded above whose left elasticity tends to exactly 1. At jump n the optimizer is λ = n. Cumulative utility stays finite, but gains run to plus infinity and (ii) fails. This market even has an equivalent martingale measure with square-integrable density, so the failure is not an arbitrage artefact, at least for strategies whose maximal loss is square integrable. Example 6.3 puts the elasticity failure at plus infinity, where the limit is 1; gains then run to minus infinity. Example 6.5 moves to discrete time and leaves the tails intact. Its p-th power penalty, p > 2, makes g''(0) = 0. The optimizer is √(n+1), summed expected utility converges, and squared exposures sum like 1/(n+1), which diverges.
These examples also locate the practical boundary. Examples 6.2, 6.3 and 6.5 pack infinitely many jumps before time 2, at τ_n = 2 - 1/n. In Example 6.1, jump sizes grow without bound as t approaches 0. A book rebalanced once a day holds finitely many finite positions, so its P&L is always defined. The theorem matters when a continuous-time model with jumps supplies optimal weights through its characteristics. The paper's power-utility application is such a case. Černý and Ruf revisit Kallsen and Muhle-Karbe's result for conditionally independent-increment models: once the candidate is a local optimizer, they can drop its solvency and first-order conditions and the standing assumption that it integrates R. Finite cumulative local utility supplies the missing integrability. Condition (b), the finiteness condition (d) and an equivalent local martingale measure remain required. Power-utility allocations in these models get a shorter set of conditions, backed by proof.
What our five-ETF run measured
Daily bars cannot identify continuous-time semimartingale characteristics or establish stochastic-integral integrability. We could not run the paper's optimizer or test its theorem. Our run is a discrete-time, constrained log-utility analogue built from the idea; it bears no evidentiary weight on the paper's claims.
Each day, we maximised average log(1 + w·r) over the trailing 252 sessions of joint close-to-close returns for GLD, IWM, QQQ, SPY and TLT. Every scenario had to leave wealth positive. We used long-only weights, capped each ETF at 20%, and put the remainder in cash at zero return. Targets were calculated after the close and filled at the next adjusted open. Commissions were $0.004 a share, subject to a $1 minimum per order.
From 2020-01-02 to 2024-07-01, the book returned 34.14% after those commissions. Its Sharpe ratio was 0.80, annualised volatility 9.50%, and maximum drawdown -15.16%. Those are our figures; the paper reports no performance to compare them with. The 9.50% volatility reflects the shape of a long-only book allowed to hold cash and barred from putting more than 20% in any name.
With five names capped at 20%, the fully invested corner is the equal-weight portfolio. We have not compared this run with a static equal-weight book or with 126- and 504-day windows. Whether daily re-optimisation improves on leaving the book at that corner remains open.
We charged commissions. We could not measure market impact or overnight-gap risk. Close-to-close returns set the targets, while fills occurred at opens, so the estimated scenario distribution may differ from open-to-open risk.
Curvature and tails on a daily book
The theorem suggests two diagnostics for a discrete book, neither of them a P&L figure. Example 6.5 shows how zero curvature at zero can leave finite cumulative utility alongside a non-integrable optimizer even in discrete time. Our log objective has g''(0) = -1 and avoids that case. The other diagnostic is the tail elasticity of any utility used in place of log. Log passes at both ends, with an infinite left limit and a right limit of 0. A desk using truncated or piecewise utility for drawdown control should calculate x g'(x)/g(x) in both tails before relying on its optimizer. Examples 6.2 and 6.3 show what a limit of exactly 1 can do to the link between finite cumulative local utility and a usable position.
Evidence that the daily empirical optimizer drifts toward unbounded weights as the window shortens would change this assessment. The accumulating-jump pathology would then have a sample-path cousin worth watching. Our 20% cap conceals that question entirely.
Černý and Ruf prove a sufficient condition and show its limits. For log utility, the implication runs one way only (Corollary 4.7 and Example 6.1). Examples 6.2, 6.3 and 6.5 mark the other points where it stops.
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.