TL;DR — the decision rule
Both funds hold the same asset (senior AAA CLO tranches, floating SOFR + spread, ~30%+ subordination, <0.1% historical default) and earn the same ~4% real carry at a rising NAV. They differ on the wrapper, not the asset — and the wrapper is the whole risk. JAAA caps theft behind a 4-of-9 Safe + 48h timelock and discloses its 22 CUSIPs against SEC EDGAR; STAC’s mint/burn/seize/pause/upgrade all sit on un-timelocked single Securitize keys with no protocol-layer backstop and no public holdings disclosure. On capital quality the two move in opposite directions: STAC is concentrating — Grove is now 99.8% of it as everyone else redeemed out — while JAAA is de-concentrating, its Grove anchor having redeemed ~$618M of its own seed (98% → 35% of the ETH leg) as a real, diversified open base grew ~17× into the gap. Net: at equal size JAAA is the safer wrapper today (custody + governance + transparency + a broadening holder base), and the binding constraint for either is the same — a curator-gated, off-chain-settled redemption beside one allocator: Grove, the Sky USDS allocator, is verified on-chain as the anchor of both funds (Ethena is a second in STAC), so both sit downstream of USDS/sUSDS redemption risk. Size against that anchor’s flows, not headline AUM.
Question
We now hold evals for two tokenized AAA-CLO funds — Securitize STAC and Janus Henderson / Anemoy JAAA. They are the closest peers in the book: same asset class, same BVI-fund-plus-tokenized-share structure, same curator-gated redemption shape. The recurring questions when either comes up for sizing are (a) which wrapper concentrates more risk, (b) how durable is the capital beside us, and (c) what the carry actually is net of cost. This study answers all three with side-by-side data so neither eval has to repeat it, and so a sizing decision on one can reference the other.
Methodology
Data sources & how to reproduce
- On-chain series (
data/stac-onchain-series.csv,data/jaaa-onchain-series.csv) — pulled withcastagainst an archive node at ~monthly blocks 2025-11 → 2026-06. STAC token0x51c2…210fc(totalSupply, GrovebalanceOf); JAAA Centrifuge ETH-Hub vault0x4880…780B(totalAssets,convertToAssets(1e6)= pricePerShare) and JAAA share token0x5a0F…cf64(GrovebalanceOf, to separate the anchor from open float). Reproduce:scripts/pull-onchain.sh(needs$ETH_RPC_URL). - Grove identity & USDS trace —
0x491e…a44eresolves to Grove’s ALMProxy: its current MainnetController0xfd9d…a9f5→ AllocatorVault0x2651…withilk = ALLOCATOR-BLOOM-A(Grove’s Sky allocator name), funded by drawing USDS in the Skyvat(ilks(ALLOCATOR-BLOOM-A)→ ~$2.65B drawn). The same ALMProxy holds both STAC and JAAA. All reads inpull-onchain.sh. - Charts —
scripts/build-charts.pyrenders the SVGs from the CSVs. - Static spec / governance / fee / transparency data — from the two evals (each on-chain-verified at its review date) and their cited sources (rwa.xyz, BNY/Securitize/Centrifuge/Particula, SEC EDGAR). STAC’s NAV is off-chain (token exposes no NAV getter), so its NAV series is inception ($1,000, 2025-10-30) + current ($1,021, rwa.xyz 2026-06-24) only.
- Assumptions: “open float” = non-anchor holders. For STAC:
totalSupply − Grove. For JAAA: ETH-legtotalAssets − (Grove's JAAA balance × pricePerShare)— Grove’s Ethereum JAAA holding is subtracted, not just its Avalanche tranche (correcting an earlier draft that treated the whole ETH leg as open float). STAC $ figures use NAV ≈ $1,021/token; JAAA uses on-chain pricePerShare.
Findings
1. Same asset, same carry — different wrapper
| Securitize STAC | Janus Henderson / Anemoy JAAA | |
|---|---|---|
| Asset | Senior AAA US CLO tranches | Senior AAA US CLO tranches |
| Issuer / fund | Securitize AAA CLO Tokenized Fund, Ltd (BVI) | Anemoy Capital SPC (BVI, FSC Professional Fund) |
| Adviser / manager | Securitize Capital LLC | Anemoy Asset Management |
| Sub-advisor (credit book) | BNY Investments / Insight | Janus Henderson Investors US LLC |
| Custodian | BNY (Bank of New York Mellon) | StoneX Securities |
| Auditor | WithumSmith+Brown (annual) | MHA Cayman (annual) |
| Administrator | Securitize Fund Services | Trident Trust (Cayman) |
| Token / standard | DS-Protocol ERC-20 (UUPS proxy), 6 dec | ERC-7540 async vault share, 6 dec |
| Issuance rails | Securitize (proprietary) | Centrifuge v3 (Hub-and-Spoke, 6 chains) |
| Chains | Ethereum + Solana | Ethereum (Hub) + 5 spokes |
| Inception | 2025-10-30 (~8 months) | mid-2025 (~12 months) |
| Independent rating | none | Particula AAA (Nov-2025; assume paid) |
Identical economic engine; the differences are all in how the share is issued, governed, and disclosed.
2. Governance & key-compromise — STAC is strictly more centralized
| STAC | JAAA | |
|---|---|---|
| Admin structure | Single bare MASTER EOA + ISSUER keys | Single pool-manager EOA (flow) + protocol Safe (upgrades) |
| Timelock | none | 48h Root timelock on upgrades |
| Multisig | none | 4-of-9 Centrifuge Protocol Safe |
| Funds threshold (theft / unbacked mint / burn) | 1 key — ISSUER mints/burns; MASTER seizes/upgrades | 4-of-9 + 48h (or a multi-DVN bridge compromise) |
| Liveness threshold (freeze / NAV distortion / forced exit) | 1 key (MASTER) | 1 key (pool-manager EOA) |
| Single point of failure | Yes — both tiers | Liveness only; theft needs 4-of-9 |
| Upgrade path | UUPS, MASTER-gated, instant | Behind 48h Root timelock |
| Audits | DS-Protocol (issuer-level) | 19 V3 reviews (Cantina/Spearbit, Sherlock, …) |
The eval claims here were re-confirmed in a Tenderly mainnet-fork simulation (2026-06-24): impersonating STAC’s real MASTER/ISSUER EOAs, pause(), burn(holder,…), and issueTokens(…) each succeeded with no signature, no timelock, no second signer. JAAA’s theft path provably requires the 4-of-9 Safe to clear the 48h Root delay.
3. Capital retention & anchor concentration — STAC concentrating, JAAA diversifying
How to read this. Both funds are dominated by one holder that doesn’t trade day-to-day — the anchor, which in both cases is Grove, the Sky ecosystem’s USDS credit allocator (verified on-chain — Finding 6). This chart is the anchor’s share of each fund’s Ethereum leg over time. A rising line means everyone else is leaving and the fund is collapsing into its anchor; a falling line means the opposite — other investors are arriving, or the anchor itself is exiting. It’s a concentration gauge, not a measure of withdrawable liquidity (exit is a gated off-chain queue either way — see the Transparency & exit table; and a co-redeeming anchor actually worsens your liquidity by forcing CLO sales into that same queue).
The two funds are moving in opposite directions:
- STAC is concentrating into its anchor. Grove held ~94% of the fund at its Dec-2025 peak and 99.8% today — because the non-Grove float bled from
6,180 STAC ($6.3M) to198 ($0.2M), a −97% exit. STAC is now effectively a single-holder fund. (Total supply only fell −6%, because Grove’s flat 100,000 tokens mask the near-total exit of everyone else.) - JAAA is de-concentrating — the finding a single-fund eval misses. Grove’s share of the ETH leg fell 98% → 35% because Grove (Sky) redeemed ~$618M of its own ~$1B seed ($748M → $130M of JAAA on Ethereum), not because open investors fled. Meanwhile JAAA’s genuine open float grew ~17×, from ~$14M to ~$241M — real diversified demand arriving as the anchor left.
| Retention metric | STAC | JAAA |
|---|---|---|
| Holders | 5 | 15 |
| Grove anchor share (ETH leg) | 99.8%, rising (from 94%) | 35%, falling (from 98%) |
| Open (non-anchor) float, peak → now | ~$6.3M → ~$0.2M (−97%) | |
| Grove (anchor) position | $100M, flat | $748M → $130M ETH (−83%) + $250M Avalanche |
| Other anchor | Ethena $250M (Solana) | — |
| Direction | concentrating into anchor | diversifying away from it |
| Crisis track record | none (8 mo, untested) | absorbed Grove’s ~$618M exit at a rising NAV, no markdown |
A snapshot of where the money sits today shows the shared anchor and the divergence:
STAC is ~100% two anchors (Grove + Ethena); JAAA is ~60% Grove + ~40% open — and that 40% is the fast-growing diversified base. The decisive point is the navy block: Grove/Sky anchors both funds — ~$102M in STAC and ~$380M in JAAA ($130M Ethereum verified + a ~$250M Avalanche tranche, eval-sourced). So the pair is not diversification — holding both stacks correlated Grove/Sky exposure through one decision-maker, and (Finding 6) downstream of USDS itself.
4. NAV accrual — real carry, never marked down
Both NAVs rose monotonically across the entire window — including through JAAA’s −82% drawdown — confirming the capital flight in Finding 3 was redemptions, not losses. JAAA’s pricePerShare is on-chain and daily; STAC’s NAV is off-chain (no on-chain getter; an announced Chronicle Proof-of-Asset feed is unverified), so only the inception/current endpoints are observable. The two lines start at different levels only because JAAA launched ~3 months earlier (its NAV had already accrued to 1.015 by the time STAC was born).
To compare the yield itself, the next chart rebases both to 0% at their own first reading — so the slope is the realized return, regardless of when each launched:
Over a comparable ~7–8-month window JAAA realized +2.31% (≈4.0% annualized) vs STAC’s +2.10% (≈3.2% annualized) — JAAA’s carry is modestly higher and steeper. Both are real AAA-CLO coupon (SOFR + spread), not emissions. (These are realized historical returns, not forward yields; STAC’s is a two-point off-chain line, JAAA’s a daily on-chain curve, so treat the STAC slope as an average, not a path.)
5. Cost — STAC is cheaper to hold, dearer to exit
There are only two fee types that actually bite. The expense ratio is the all-in annual drag — it already bundles the management fee (STAC’s 0.30% management is a component of its 0.40% all-in; JAAA’s 0.50% is its all-in the same way), plus admin/custody/audit. Both funds charge 0% performance and 0% subscription, so there’s no separate management-fee bar to add — the expense ratio is the comparable, and STAC’s (0.40%) undercuts JAAA’s (0.50%). The second charge is the exit toll: STAC’s 2.00% redemption fee vs JAAA’s none. So STAC is cheaper to hold but materially more expensive to exit — at a ~3–4% gross carry, a single round-trip in STAC inside ~6 months is net-negative on the redemption fee alone.
| Fee | STAC | JAAA |
|---|---|---|
| Expense ratio (annual, all-in) | 0.40% (incl. 0.30% mgmt) | 0.50% |
| Performance fee | 0% | 0% |
| Subscription fee | 0% | 0% |
| Redemption fee | 2.00% | 0% |
6. The shared anchor, traced — Grove is the Sky USDS allocator, and it anchors both funds
The most important finding, now verified end-to-end on-chain (block 25,388,574):
Sky USDS → AllocatorVault
0x2651…(ilk=ALLOCATOR-BLOOM-A— “Bloom” is Grove’s Sky allocator name) → MainnetController0xfd9d…a9f5→ Grove ALMProxy0x491e…a44e→ holds 100,000 STAC ($102M) + 124.8M JAAA ($130M) on Ethereum.
- One on-chain entity anchors both funds. The same ALMProxy is the 99.8% holder of STAC’s ETH leg and a 35% holder of JAAA’s — ~$232M across the two on Ethereum (plus the ~$250M Avalanche JAAA tranche). The cross-fund concentration is now a verified fact, not a press inference.
- It’s Sky USDS reserve capital. Grove has drawn ~$2.65B of USDS (against a $3.16B ceiling) via the Sky
vatunder ilkALLOCATOR-BLOOM-A. The CLO carry it earns flows into Sky’s reserve income — part of what funds the Sky Savings Rate paid to sUSDS holders. - The reflexive loop. Because the anchor is Sky’s USDS book, a USDS/sUSDS stress event (savings-rate cut, depeg scare, mass sUSDS redemptions) can force Grove to pull reserve capital — i.e. redeem from STAC/JAAA — driving CLO liquidation through the same gated, off-chain queue any NOCA position exits through. So both funds aren’t just anchor-concentrated; they are downstream of USDS stability itself. This is the concrete upstream trigger for the “reflexive co-redeemer” risk both evals flag.
7. Transparency & exit mechanics
| STAC | JAAA | |
|---|---|---|
| On-chain NAV | none (off-chain; Chronicle PoA unverified) | daily on-chain (pricePerShare) |
| Proof-of-reserve | none | none (annual audit only) |
| Holdings disclosure | none public | 22 CUSIPs via IPFS; 18 cross-checked to SEC EDGAR |
| Subscription | instant on-chain USDC→STAC swap | ERC-7540 async requestDeposit |
| Redemption | daily request, off-chain T+2/T+3 (not guaranteed) | async requestRedeem → manual approveRedeems, T+3 |
| On-demand pool | GP-discretion; ~$1k USDC (unfunded) | none |
| Secondary market | none (KYC-gated) | none (KYC-gated); is Aave Horizon collateral |
| Defensible size (per eval) | $10M (provisional) | $15M |
Decision framework
- At equal size, prefer JAAA on wrapper safety. Same asset and carry, but JAAA caps theft behind a 4-of-9 Safe + 48h timelock, publishes on-chain NAV, and discloses holdings to SEC EDGAR; STAC concentrates mint/burn/seize/pause/upgrade on un-timelocked single keys with no public holdings and no on-chain NAV. The credit is equivalent; the custody/governance/transparency gap is the deciding factor.
- Size either against the anchor, not headline AUM — and know the anchor is Sky/USDS. The dominant holder of both funds is Grove, the Sky USDS allocator (verified on-chain, Finding 6) — so STAC and JAAA are not diversifying exposures; holding both stacks correlated Grove/Sky risk, and both are downstream of USDS/sUSDS redemption pressure (a USDS stress event is the concrete trigger that forces Grove to redeem and clog the exit queue). But note the divergence: STAC is collapsing into Grove (99.8%), while JAAA’s Grove is exiting (→35%) as a diversified open base replaces it — STAC’s concentration is rising, JAAA’s falling. STAC adds Ethena ($250M Solana) as a second anchor. Treat the curator-gated RWA bucket as one correlated position; watch Grove’s flows (and USDS) as the leading indicator.
- Price STAC’s 2% redemption fee into any horizon under ~1 year — it erases roughly half a year of carry on a round-trip.
- Pre-enroll the KYC allowlist before depositing in either — neither can be added during a crisis.
This framework stops applying when: STAC hardens its keys (adds a timelock/multisig — re-rate immediately) or ships a verifiable on-chain NAV/PoR (the Chronicle feed going live and readable); JAAA’s recovery reverses (open float rolls back toward the March trough); or the shared Grove/Sky anchor materially exits either fund. Any of these → re-run.
Caveats
- JAAA’s Avalanche Grove tranche + spokes are eval-sourced (2026-06-04), not re-verified this run. Only the Ethereum Hub was pulled on-chain; the ~$635M cross-chain total assumes the $250M Avalanche Grove tranche is unchanged. If Grove has also unwound there, JAAA’s total and its cross-chain Grove share are lower than shown.
- STAC’s NAV and its Solana/Ethena leg are off-chain / non-EVM — from rwa.xyz and press, not independently verified on-chain. STAC’s retention read rests on the Ethereum leg.
- “Open float” excludes Grove but not every non-natural holder. For JAAA, open float = ETH leg − Grove’s verified balance; it still includes the Aave Horizon aToken (~$17M, a leveraged loop, not a natural investor), so the truly diversified base is modestly smaller than the ~$241M shown. STAC open float = total supply − Grove (clean).
- Smallest fact that would falsify the core call: STAC adding an on-chain timelock/multisig over its MASTER/ISSUER keys would collapse the governance gap behind “prefer JAAA.” Next-most-useful follow-up: re-verify the Avalanche Grove tranche on its own chain to pin JAAA’s true cross-chain Grove share, and confirm the USDS→Grove→CLO carry actually accrues to the sUSDS rate (vs. being retained at the Star level).