Reference, method dated July 15, 2026
Advertised APY is a claim. Realized APY is a share price you can read.
Nearly every synthetic dollar publishes a yield number. Fewer publish what a holder actually earned over the last month. This page explains the difference, shows where the two diverge, and walks through recomputing the realized figure yourself from on-chain data. Kerne's own row is in the table, and it has the widest gap.
Two numbers that are easy to confuse.
The advertised APY is whatever a protocol prints on its own site or API. It can be a current rate, a trailing average over some window, a since-inception average, or a forward model. All of these are legitimate to publish as long as the basis is labelled. The number is a statement the protocol chooses to make.
The realized APY is what actually happened to a holder's balance. For the staked, yield-bearing form of most synthetic dollars, which is an ERC-4626 vault, that shows up as growth in the vault's share price: the amount of the underlying asset one share converts to. It settles the vault's own redemptions, it is public, and anyone can read it twice and divide. The number is a record, not a claim.
When someone asks whether a stablecoin's yield is real, this is the question underneath it: does the realized share-price growth match the advertised rate, measured over the same window and the same basis. Usually the honest answer takes one archive RPC call to find.
Where the two diverge, and whether it means anything.
A gap between advertised and realized is not automatically a red flag. It matters why the gap is there. Four causes cover almost every case.
- Funding compression. Most delta-neutral yield comes from perpetual funding, which has cooled through 2026 from its 2024 to 2025 highs. A rate quoted a few weeks ago can simply be higher than what the vault has earned since.
- Since-inception averaging. A protocol that launched during a richer funding regime can advertise a lifetime average that is well above its current rate. Ethena and Neutrl both do this, both label it, and it is context rather than a claim about today.
- Model versus record. Some protocols, Kerne included, publish a modeled or target rate. A model is a projection at assumed leverage and conditions. It is not a history of distributions, and it should never be read as one.
- Window mismatch. A 7 day advertised average and a 30 day realized window are different periods. Subtracting one from the other invents a discrepancy out of a unit mismatch. The honest move is to line up the windows first or state no gap.
A snapshot, so the idea is concrete.
Figures as of July 15, 2026, reproduced from Kerne's Honesty Index. The live, hourly, signed version is at /honesty-index, and the machine-readable feed is at /facts.json. Where a protocol advertises a 7 day average, no gap is stated against the 30 day realized column.
| Protocol | Advertised | Realized (30d, on chain) | Gap |
|---|---|---|---|
Sky sUSDS | 3.60% current rate (governance-set) | 3.60% | 0.0 pp |
Ethena sUSDe | 3.75% current rate | 3.75% | 0.0 pp |
Neutrl sNUSD | 4.30% 30 day average | 4.34% | 0.0 pp |
Cap stcUSD | 5.05% 7 day average | 5.24% | not directly comparable |
Falcon sUSDf | 4.86% 7 day average | 5.15% | not directly comparable |
Kerne skUSD | modeled, low teens model at target leverage | near zero | largest on the board |
Read across the rows and the field is largely honest on this one axis: where the basis is comparable, advertised and realized are close. The exception is the last row, which is ours.
What each row is telling you.
Sky sUSDS
A governance-set savings rate, so advertised and realized line up almost exactly.
Ethena sUSDe
The current rate matches the on-chain realization. Ethena also publishes a since-inception figure near 11%, correctly labelled, which is not current yield.
Neutrl sNUSD
Neutrl labels the basis on every figure it publishes and its 30 day average lands within a few basis points of the on-chain read.
Cap stcUSD
A 7 day advertised average against a 30 day realized window is a different period, so no gap is stated rather than manufacture one from a unit mismatch.
Falcon sUSDf
Same window caveat as Cap. Note one stale marketing line on Falcon's own classic page still promises double digits, contradicted by its own live figure.
Kerne skUSD
Our own row. The advertised number is a model; the realized number derives from a single test distribution and decays toward zero. This is the widest gap listed, and it is ours.
Compute the realized number yourself.
Nothing below needs anyone's permission or API key. For any ERC-4626 vault token, read its own accounting at two blocks and divide.
# Ethena sUSDe, current share price (1 share -> units of USDe) cast call 0x9D39A5DE30e57443BfF2A8307A4256c8797A3497 \ "convertToAssets(uint256)(uint256)" 1000000000000000000 # the same vault, ~30 days earlier, on any archive RPC cast call 0x9D39A5DE30e57443BfF2A8307A4256c8797A3497 \ "convertToAssets(uint256)(uint256)" 1000000000000000000 \ --block <from_block> --rpc-url https://eth.drpc.org # realized growth = to / from ; annualize over the real elapsed seconds
- Do not assume 18 decimals. Read decimals() and asset(). Kerne's own skUSD reports 24 decimals, and a reader who hardcodes 18 computes a meaningless share price.
- Denomination matters. A share price is measured in the underlying asset. If that asset is not at a dollar, share-price growth says nothing about a dollar outcome. This is why a recovering or wound-down token can show a flat non-zero share price while its holders are down in dollar terms.
- Do not annualize a short window and treat it as a rate. A vault younger than the comparison window scales a few days up to a year, which exaggerates in either direction. Kerne's own row is exactly this case, and we flag it.
Kerne runs this computation hourly for a set of synthetic dollars, signs the result, and publishes every block number it used, so you are checking arithmetic inside a stated window rather than re-deriving the window. That board is the Honesty Index.
Where this leaves Kerne.
Kerne publishes a live modeled APY for skUSD at /api/apy. It is a model at target leverage, and it is currently in the low teens while funding is positive. The realized figure, read from skUSD's share price on chain, is near zero: it comes from a single small distribution the deployment registry itself records as a plumbing test, not sustained strategy carry.
That is the largest advertised-to-realized gap on the board Kerne itself built. It is disclosed here for the same reason it leads the Honesty Index: a page about reading yield honestly has to start with its author's own worst number. Kerne is a pre-audit, Genesis-stage protocol, and until it distributes real yield, its model is a projection and nothing more.
Related reading.
The live board: the Honesty Index. The machine-readable feed of every figure on this page: /facts.json. The reserve-transparency axis, a separate question from yield: the reserve transparency scorecard. A head-to-head on the three staked dollars most often compared: skUSD vs sUSDe vs sNUSD. And the diligence checklist for the whole category: the delta-neutral risk checklist.
Snapshot figures age; the method is evergreen. For current numbers, the Honesty Index recomputes hourly. Nothing here is financial advice. Kerne is not affiliated with any other protocol named on this page.