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

Tail elasticity determines when local utility optimizers can trade

Černý and Ruf prove an integrability test; our five-ETF stand-in cannot test it.

2026-10-15 · 6 min read · Utility-based portfolio allocation · US ETFs

Reviewing: On integrability of local utility maximizing strategies · Aleš Černý and Johannes Ruf · Read it on arxiv

Our backtest of this idea

Our automated quick test, not the paper's

Rolling Joint-Return Log-Utility Allocation with Cash

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

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

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.

This is not a replication of the paper

  • Daily bars do not identify the continuous-time semimartingale characteristics or establish stochastic-integral integrability. The backtest tests a discrete-time, constrained utility-allocation analogue, not the paper's integrability theorem.

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

Jan 2020Total 34.1%Jul 2024
Sharpe
0.80
Total Return
34.1%
Max Drawdown
-15.2%
CAGR
6.8%
Volatility
9.5%
Beta vs SPY
0.30
Trades
3,455

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.

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.

For each trading date t:
  Validate the five-ETF universe and assemble the last complete,
  date-aligned window of adjusted close-to-close return vectors ending at t.
  If the window is incomplete or optimization fails, retain actual holdings and cash.
  Otherwise maximize mean(log(1 + w · r)) over those joint scenarios,
  requiring 1 + w · r &gt; 0 for every scenario,
  0 &lt;= each ETF weight &lt;= 0.20, and sum(weights) &lt;= 1.
  Set cash weight = 1 - sum(weights).
  At t+1's adjusted open, mark existing holdings and trade toward the target,
  funding purchases and costs from sales and cash; skip the entire rebalance
  if any required adjusted open is missing.

The equal-weight and fixed-weight comparators use the same executable dates and accounting rules; their trades are not part of the strategy portfolio.