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

Text distance instead of covariance, ranked in-sample

Gawronsky and Huang turn news-embedding transport distances into a variance certificate. The evidence is a variance percentile.

2026-09-08 · 9 min read · US equities

Reviewing: Portfolio Risk Bounds without Cross-Asset Return Covariances: Distributional Fields from Language-Model Representations · Marcus Gawronsky and Chun-Sung Huang · Read it on arxiv

Our backtest of this idea

Our automated quick test, not the paper's

Prospective Raw-Capital News Wasserstein Certificate Portfolio

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 studies a 52-firm equity panel with unspecified geographic coverage; the implementation would use a liquid US-equity universe instead. The proposed mechanism—constructing long-only risk-minimizing allocations from cross-firm distances between distributions of firm news embeddings—can be applied to US firms, but the paper's reported in-sample variance rankings do not transfer to this universe.

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 allocation depends on maintained, untestable transmission assumptions linking news-embedding separation to latent systematic-exposure separation, including the carrier scale and firm-specific slack. A zero-slack implementation produces an operational rule, but its variance certificate is conditional on those assumptions rather than empirically identified.
  • The exact Qwen3-Embedding-8B representations used in the paper are not specified as a guaranteed platform feature. The backtest should use the embeddings stored in fmp_stock_news and press_releases, or generate embeddings in code from available text; this evaluates an embedding-model substitute rather than an exact replication of the reported representation.
  • News and text coverage begins around 2020, so the paper's 2018-2022 empirical window cannot be reproduced exactly; testing should use a post-2020 sample.

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 (15)

  • deviation left undescribed by the audit (invalidates: paper canonical news-only weights; 12.1% maximum weight; effective N of 23.65; 38 positive holdings; reported in-sample variance and percentile comparisons)
  • deviation left undescribed by the audit (invalidates: 0.72%, 0.69%, 0.89%, and 1.33% news-only percentiles; 28.6%, 28.4%, 25.4%, and 21.1% equal-risk percentiles)
  • deviation left undescribed by the audit (invalidates: paper expanding-cutoff turnover values of 26.8%, 14.5%, 13.2%, and 13.3%)
  • deviation left undescribed by the audit (invalidates: paper standardized news-only allocation; canonical concentration statistics; reported standardized in-sample variance and relative-GMV values)

11 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 44.2%Jul 2024
Sharpe
0.47
Total Return
44.2%
Max Drawdown
-29.9%
CAGR
8.5%
Volatility
21.0%
Beta vs SPY
0.81
Trades
842

What the paper reports for its own strategy

  • In-sample standardized variance percentile of the news-only allocation: 0.69%-1.33% across four prespecified capped reference populations, 2018-2022, no transaction costs stated
  • Standardized in-sample variance 0.357, 8.3% below the equal-risk (inverse-volatility) benchmark and 35.6% above the ex-post long-only sample GMV, same 2018-2022 panel
  • Relative-GMV variance index 135.6 (GMV = 100), full-sample 2018-2022, no cost assumption stated

A long-only portfolio built from nothing but the semantic distance between firms' news articles landed at the 0.89th percentile of in-sample variance against 20,000 capped random portfolios, drawn from the reference population matched to its own effective number of names. Inverse-volatility weighting landed at the 25.4th. The percentile is what makes this paper worth an hour, and it is also the number that needs the most careful handling, because it was measured on the same 2018 to 2022 window that produced the geometry. The authors label it themselves: the rankings are "descriptive and in-sample" and "illustrate the allocation implied by the maintained model rather than forecast out-of-sample performance". Credit them for that. What a manager gets from an illustration of a maintained model is a well-defined allocation rule and a bound that holds if you grant four unidentified restrictions. What the manager does not get is any evidence about variance in a period the geometry has not already seen.

Gawronsky and Huang build this. Take a firm, pull its news articles, encode each one with a frozen language model into a 4,096-coordinate vector, normalise the rows. You now have a cloud of points per firm rather than a single averaged vector. Compare two firms by balanced quadratic optimal transport: the least root-mean-square displacement needed to move one cloud onto the other. That number, W2, is the observed object. Everything else in the paper is machinery for turning it into a statement about risk.

The machinery is a chain of maintained restrictions. A common map carries information states into latent systematic exposures and is assumed antilipschitz with constant L, so two firms whose news distributions are far apart cannot have latent exposures that collapse onto each other. Firm-specific slack radii tau_i allow bounded departures from that common map. All exposures sit under one joint law, which matters because pairwise optimal couplings do not automatically stack into a coherent portfolio. A return bridge then splits each standardised return into a systematic piece carrying the exposure geometry and a residual that is assumed cross-orthogonal. Out of that comes the pairwise floor l_ij = [L^-1 W2(Ci,Cj) - tau_i - tau_j]_+ and a portfolio certificate C(q) = 0.5 * sum_i sum_j q_i q_j l_ij^2, with Var(Rq) <= 1 - C(q).

The authors are direct about what this is. In their words, "the text determines the observed geometry, but it does not identify any of these transmission restrictions." The certificate is an upper bound conditional on L, tau, joint coherence and the return bridge. The paper calls it an upper bound and nothing more.

What the optimiser actually does

Set tau to zero and standardise every asset to unit marginal variance, and the whole apparatus collapses to something you can write on a napkin: maximise q'W2^2 q over the long-only simplex. The rule buys the most semantically dissimilar names it can find, weighted so that every pair it holds contributes q_i q_j W2^2_ij of credit. Corollary 1 says L drops out of the normalised allocation at zero slack, which is why the empirical exercise never has to pin it down. Convexity of the standardised objective holds when the floor matrix is conditionally negative definite. That condition is checkable straight off the distance matrix by Schoenberg's criterion, with no returns and no estimated parameter. The authors report it holds for the matrix they use.

The data: 52 firms (53 with embeddings, WBA dropped for want of returns), 1,207 common daily observations from 2018-03-19 to 2022-12-30, Nasdaq per-symbol news, Qwen3-Embedding-8B via OpenRouter. Balanced transport requires equal cloud sizes, so the common support runs 6, 19, 32, 64 and 128 articles per firm at the successive annual cutoffs.

Six articles per firm in 2018 is very thin.

The resulting portfolio holds 38 of 52 names, effective N of 23.65, largest position 12.1% in AstraZeneca. Standardised variance 0.357 against 0.390 for equal risk weights and 0.264 for the ex post long-only global minimum variance portfolio (GMV): 8.3% below the inverse-vol benchmark, 35.6% above the covariance-informed optimum. Percentiles across the four prespecified Dirichlet-capped reference laws run 0.72%, 0.69%, 0.89% and 1.33%; equal risk weights run 28.6%, 28.4%, 25.4% and 21.1%.

The matched population is the one that carries the argument. Its mean effective N is 24.23 against the candidate's 23.65, so the ranking does not come from comparing a concentrated portfolio against diffuse ones. Push the reference law to alpha = 0.5 with mean effective N of 19.01 and the candidate still ranks 1.33%. The authors then note that market-cap-weighted or factor-tilted reference populations could rank it differently, which is fair and worth remembering: the percentile is defined relative to a chosen population of feasible portfolios, not to anything an investor holds.

One structural point deserves flagging. At the interior optimum, firm-level certificate shares reproduce the portfolio weights exactly, so firm-level attribution tells you nothing. Only the pair layer is informative, and 87.1% of certificate credit is cross-sector. The twelve largest pair contributions all involve AstraZeneca, the largest being AZN-GOOG (Alphabet) at 1.51% of total credit. AstraZeneca's 12.11% sits just under the 12.5% cap of the tightest comparison population, a cap that never bound the allocation itself.

The width ladder goes the wrong way

The representation sensitivity section does not flatter the method. Truncating Qwen3-8B from 4,096 to 64 coordinates improves the in-sample percentile from 0.89 to 0.02 and the relative-GMV index from 135.6 to 128.4, a gain of 7.2 index points. The contrast that clears Holm adjustment is 64 coordinates against 256: -7.796 index points, CI [-10.871, -4.012], Holm p 0.007. A general-purpose 1,024-dimension BGE-large, from BAAI, matches the prespecified model (0.80 versus 0.89, 135.3 versus 135.6). Qwen3-4B at the same 1,024 width is worse by 2.828 index points, CI [1.607, 4.081], Holm p = 0.007. No capacity or family ordering emerges. The authors' own EttaX vintage encoders hold architecture, recipe, tokeniser and token budget fixed and vary only the Wikipedia training snapshot. Under the effective-N reference law calibrated to the primary Qwen3-8B allocation, the three vintages land at 5.44 (V0), 7.27 (V1) and 2.48 (V3). V3's snapshot is dated 1 August 2026, which the paper itself calls "a post-sample negative control rather than a valid point-in-time encoder". No pair satisfies the post-specified equivalence bound of 2.913 index points.

So the geometry that produces the headline is not invariant to the encoder, and the direction of the sensitivity is not monotone in model size. At 64 coordinates the percentile is 0.02 and the relative-GMV index 128.4, against 0.89 and 135.6 at 4,096. I read that as the certificate picking up something coarser than semantic separation. A prespecified width ladder run on a held-out window, with the ordering reproduced, would change my mind.

Core theorems are machine-checked in Lean 4 / mathlib v4.31.0, which is unusual and which I take seriously as a signal about the algebra. It says nothing about the economics, and the appendix says so.

Our adaptation, and what it could not test

Before any of our numbers: the variance certificate rests on the carrier scale L, the slack radii tau_i, joint exposure coherence and the return bridge, none of which are identified by text. A zero-slack build gives an operational rule; the bound attached to it is assumed, not measured. We also could not use the paper's exact Qwen3-Embedding-8B representations, and our news coverage begins around 2020. The paper studies a 52-firm panel whose geographic coverage it never specifies. We ran a liquid US-equity roster instead, so the paper's in-sample variance rankings do not transfer to our universe. Call this an adaptation.

We swapped the universe to a 46-symbol liquid US-equity roster and the encoder to the frozen 320-dimension EttaX V0 snapshot, drawing text from stored news and press releases over a rolling 24-month window with a common cloud capped at 128 documents. The allocator minimises the raw-capital objective CV(x) with 63-session trailing marginal volatilities, a 10% capital cap and L = 1, rebalanced monthly at the close with 10 bps one-way charged on traded notional.

Over 2020-01-01 to 2024-07-01 that book returned 44.25% total with a Sharpe of 0.47 and 21.01% volatility across 842 trades. Those are our figures, from our run, on our substitute universe. The paper reports no returns, no Sharpe and no drawdown at all. Its self-reported performance is the 0.69% to 1.33% variance percentile band and the relative-GMV index of 135.6, on its own 52-firm panel. Both are in-sample, with no cost assumption stated. The two sets of numbers measure different things. A 0.47 Sharpe over a prospective cost-charged window and a 0.89th in-sample variance percentile are not comparable quantities, and we did not recompute the paper's percentile, effective N or GMV index on our universe.

The 21.01% volatility is the figure that matters here, because volatility is the only thing this rule claims to manage. Our book ran a beta of 0.81 to SPY over the same window, which is most of what a 21% annualised figure is made of. Max drawdown was -29.95%, taken through the 2022 sell-off. The paper asserts nothing that this contradicts: it says the reported percentile "is neither a point-in-time test nor an ex-ante guarantee of future realized variance". What is missing from our run is a matched benchmark variance computed the same way, and that is the one comparison that would tell you how much of the 21.01% is the allocator rather than the regime.

Several of our choices point the same way, toward a weaker outcome than the paper's canonical cell. The encoder is the clearest: EttaX V0 ranks at the 5.44th percentile and 140.8 relative GMV in the paper's own ladder, against 0.89 and 135.6 for Qwen3-8B. Our text corpus is different, so every pairwise distance is a different number. The raw-capital objective retains L, so the carrier-invariance corollary does not apply and our weights are a different allocation rather than a rescaling of theirs. Our window shares 2020 through 2022 with theirs and then adds eighteen months they never see. We cannot fully explain the difference, because the gap on the paper's own metric was never measured. This is evidence about our build first.

Before trading it

The honest summary of the paper is the authors': "an unusually low location among feasible allocations, not covariance-free replication of the covariance-informed optimum." The allocation remains 35.6% above the ex post GMV. And the geometry and the evaluation covariance come from the same window. Turnover across expanding cutoffs runs 13.2% to 26.8% one-way with the largest reallocation at the 2018 to 2019 extension rather than 2020, and no cost is charged against it anywhere in the paper.

What would change my mind is a frozen point-in-time build: encoder, corpus and W2 matrix all fixed before the evaluation returns exist, then realised variance against inverse-vol and a rolling-covariance minimum-variance book over the following years. The authors name this as the immediate priority themselves. Until someone runs it, the 0.69% to 1.33% band tells you that maximising weighted transport separation produces a portfolio that happens to have sat low in the in-sample variance distribution of one 52-firm survivor panel. For that panel it is a surprising fact, and a long way short of a risk model.

We have written before about a premium whose legs do not match the instrument that would trade it (the correlation rotation case). This is the adjacent problem: a bound whose economics are assumed rather than identified, with a descriptive ranking standing in for the test.

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 month-end close:
1. Start with the fixed 46-symbol US-equity roster.
2. Retain firms passing the $5 million one-year dollar-volume floor.
3. From the preceding 63 sessions, estimate each firm's daily volatility;
   require at least 42 valid returns and strictly positive finite volatility.
4. Collect point-in-time news and press releases from the preceding 24 months.
   Deduplicate records and exclude unavailable, ambiguous, or invalid documents.
5. Require at least 6 documents per firm and at least 10 eligible firms overall.
6. Encode documents with frozen EttaX V0, normalize each embedding row, and
   deterministically retain a common support of
       m = min(128, minimum eligible-firm document count).
7. For every firm pair, compute balanced quadratic optimal transport using
   squared Euclidean ground costs; persist rooted W2 and square it once when
   constructing the certificate.
8. Set ell_ij = max(W2_ij / L - tau_i - tau_j, 0), with L=1 and tau_i=tau_j=0.
9. For capital weights x, define A = sum_i x_i sigma_i and q_i=x_i sigma_i/A.
   Minimize
       CV(x) = A^2 - 0.5 * sum_i sum_j
               x_i x_j sigma_i sigma_j ell_ij^2
   subject to sum(x)=1, 0 &lt;= x_i &lt;= 0.10, and gross leverage &lt;= 4.
10. Accept only a finite, feasible solution meeting the numerical tolerance and
    the required global-optimality condition. Otherwise retain the prior valid
    fully invested portfolio; defer inception if no valid portfolio exists.
11. Execute the rebalance at the close using market-on-close orders. Charge
    implementation costs to traded notional and skip orders lacking valid
    observed execution data rather than fabricating prices.

Returns and cross-asset covariance are excluded from the primary signal except for each asset's marginal volatility. Equal-weight, inverse-volatility, and rolling-covariance minimum-variance portfolios are separate benchmarks.