mSOL Multiply Unwind Losses

Kamino + Jupiter Lend · 2026-01-01 → 2026-06-10 · pure Multiply (verified SOL-debt) only · loss vs fair rate · incl. JitoSOL/JupSOL comparison · generated 2026-06-12 · verified pipeline (audit tab)
Pure Multiply Unwinds
461
332 Kamino · 129 Jupiter Lend · SOL-debt verified
mSOL Sold
145,581
→ 198,565 SOL · full route capture incl. DFlow
Total Loss vs Fair
546.9 SOL
$49,035 at hour-of-tx SOL prices
Wavg Loss
27.4 bps
steady-state ≈ 15–25 bps
Multiply Liquidations
13 txs · $56
YTD, 6 borrowers — the structure is safe

Monthly unwind volume (mSOL) vs volume-weighted loss (bps)

Feb 5–6 stress cluster
125.7 SOL ($10,964)
38 of the 461 YTD unwinds, selling 12,855 of the 145,581 mSOL total — 9% of volume, but at ~72 bps wavg it produced 23% of all YTD loss. Same window: ~3,000 liquidations of vanilla mSOL-collateral loans (stablecoin debt) — Multiply liquidations: zero.
Two-regime market
15–25 bps → 60–80 bps
Calm-month exits cost 15–25 bps. In stress windows the cost triples-to-quadruples. The ≥50 bps tail carries 32% of total loss on ~12% of volume.
Whales execute well
12.7 bps
The largest single unwind (8,033 mSOL, May 17) paid only 12.7 bps. Top-20 largest unwinds all landed at 12–36 bps — size alone doesn't cause bad fills; timing does.
Headline by platform
ScopeTxsmSOL soldLoss SOLLoss $Wavg bps
Monthly breakdown (corrected fair rate)
MonthTxsmSOLLoss SOLLoss $SOL pxWavgp90Max

What this measures

Each transaction that repays Kamino/Jupiter Lend debt and swaps mSOL→SOL atomically (the Multiply unwind fingerprint), priced against Marinade's protocol fair rate that day. Loss = what the exiter gave up vs redeeming at fair value — i.e. the price of leaving instantly instead of waiting an epoch.

Leverage framing

Loss bps are per unit of position. Multiply users run 3–10x leverage, so the 70–104 bps stress-window exits observed in February equal roughly 2–10% of the user's equity — months to years of loop carry surrendered in one panic exit. Liquidated users fare worse (penalty on top).

Daily unwind volume (mSOL, bars) and volume-weighted loss (bps, line)

mSOL fair rate (Marinade deposits, 7d-smoothed) vs market rate

Daily transaction count by platform

15 worst days by volume-weighted loss (min 3 txs) — stress-window detector
DateTxsmSOL soldLoss SOLLoss $Wavg bps

Loss distribution — transaction count by bps bucket

Loss distribution — where the loss SOL actually sits

Normal regime
72% of txs
332 of 461 txs (68% of volume) executed at 10–25 bps — routine pool fees + minor slippage.
Tail concentration
32% of loss
The 38 txs above 50 bps (8% of count) carry 176.6 SOL of the 546.9 SOL total loss.
Near-zero anomalies
0 txs < 0 bps
No transaction in the verified pure set beat fair value — the set isn't contaminated by arbitrage flow.
Top 20 largest unwinds
TxDatePlatformmSOLLoss $bps
Top 20 worst executions (≥1 mSOL)
TxDatePlatformmSOLLoss $bps
Multiply liquidations (SOL debt)
13 txs · $56
6 borrowers YTD — 0.23% of mSOL-collateral liqs
Vanilla mSOL-collateral liqs
5,585 txs
stablecoin/other debt · $2.07M debt repaid
Loans actually affected
583 borrowers
avg 9.6 partial liqs each (max 1,003)
Feb wave
3,185 liq txs
all vanilla USD-debt loans caught by the SOL drop
The Multiply structure is safe — empirically
0.23% / $56
SOL-denominated collateral and debt means no liquidation on SOL/USD swings, exactly as designed. Across mSOL, JitoSOL and JupSOL, only 33 liquidation txs YTD (~$820 total) had SOL debt. Multiply positions die by negative carry and voluntary exit — not by liquidation.
Who actually got liquidated
$1.7M USDC debt
The 5,585 vanilla liquidations are loans using mSOL as collateral against stablecoins (USDC, UXD, USDT, PYUSD) — full SOL/USD price exposure. The Feb 5–6 SOL drawdown liquidated these en masse while zero Multiply loops were liquidated.
Counting txs overstates distress
9.6 : 1
Liquidators chip positions away in partial bites — 5,598 transactions collapse to 583 distinct borrowers (one was liquidated 1,003 times). Transaction counts are a poor proxy for affected users.
mSOL-collateral liquidations YTD by debt token (top 6)
Debt tokenLiq txsBorrowersDebt repaid $Type
Monthly: voluntary unwinds vs vanilla-loan liquidations
MonthUnwindsUnwind mSOLLoss SOLLiq txs†Liq debt $

Voluntary unwinds vs vanilla mSOL-collateral liquidations (log scale) — different populations, shown for context

⚠ April liquidation undercount (confirmed data gap)

Flipside's ez_lending_liquidations has a verified 2-day partition gap on Apr 3–4, immediately following the Apr 1–2 spike (9,722 rows). April totals are a floor. March and May were checked day-by-day and are genuinely calm. The unwind dataset is unaffected.

Reading this tab

Liquidation rows are matched on collateral = mSOL; the debt token determines whether a position is Multiply (SOL debt — same-denomination, no USD exposure) or a vanilla loan (stablecoin debt — full SOL/USD exposure). amount_usd = debt repaid by the liquidator at transaction-time prices; collateral seized ≈ debt + 0.3–5% bonus. Liquidations and voluntary unwinds are disjoint populations — liquidation txs are excluded from all unwind statistics.

Methodology — how every number on this board is computed

1 · Identifying unwinds

A transaction counts as a voluntary Multiply unwind when it atomically (a) repays debt on Kamino or Jupiter Lend (solana.defi.ez_lending_repayments), (b) swaps mSOL→SOL in the same transaction, and (c) is not a liquidation (ez_lending_liquidations). Of 1,110 repay+swap candidates YTD, 472 (43%) were liquidations and excluded, leaving 639 voluntary unwinds; each was then classified by the debt token actually repaid (step 6), and only the 461 verified SOL-debt transactions — 97.2% of unwind volume — qualify as pure Multiply and appear on this board. A casual mSOL seller never repays lending debt in the same transaction, so the fingerprint is highly specific.

2 · Measuring swap amounts (route-complete)

Per transaction, mSOL sold and SOL received are summed across all swap legs of the route: pool-level legs from ez_dex_swapsfact_swaps_jupiter_inner (deduped), plus legs reconstructed from raw fact_transactions.inner_instructions for aggregators Flipside doesn't index (e.g. DFlow/Manifest) — SPL transfers grouped by top-level instruction index, counting only indexes containing both mSOL-out and wSOL-in for the user's token accounts. Flash-loan and collateral legs live at other indexes and are excluded by construction. A sanity guardrail requires each transaction's implied execution rate to fall within [1.30, 1.45] SOL/mSOL.

3 · Fair rate

The daily mSOL fair rate is the median of SOL-deposited / mSOL-minted across Marinade deposit transactions (mint authority 3JLP…g6KM), where the protocol mints at the exact redemption rate with zero slippage. The series is smoothed with a 7-day rolling median and forward-filled on 8 of 168 days lacking deposits. It represents what an exiter would receive by waiting an epoch for delayed unstake.

4 · Loss metric

Loss per transaction = mSOL sold × fair rate that day − SOL received; expressed in bps of fair value. This isolates the cost of exiting instantly through DEX liquidity versus redeeming at protocol rate: price impact + pool fees + any mSOL market discount at the moment of exit. All loss math is done in SOL. USD figures value each transaction's loss at the SOL/USD price of its exact hour (solana.price.ez_prices_hourly; 461/461 exact-hour matches).

5 · Liquidations track

Forced liquidations of mSOL-collateral positions come from ez_lending_liquidations. Its amount_usd was verified against on-chain transfers to be the debt repaid by the liquidator (priced at transaction time); collateral actually seized from the borrower ≈ debt + the liquidation bonus (0.3–5%). Liquidations are decomposed by debt token: SOL-debt rows are true Multiply liquidations (13 txs / $56 YTD for mSOL); stablecoin-debt rows are vanilla loans with full SOL/USD exposure. Liquidations are reported as a parallel population, never mixed into voluntary-unwind statistics.

6 · Debt-token classification (purity filter)

Every unwind is classified by the token actually repaid on-chain, in two stages: (1) a WSOL row in ez_lending_repayments confirms SOL-debt directly; (2) transactions missing from that table (mostly Jupiter Lend repays Flipside doesn't index) are verified by parsing the repay leg from raw inner_instructions — net token-balance deltas identify the mint received by the lending program. Across the three LSTs, 2,611 such transactions were verified this way and 87.9% confirmed as SOL-debt. Stable-debt, mixed and unclassifiable transactions are excluded — never assumed — and disclosed below. Final positive-classification coverage by volume: mSOL 97.2%, JitoSOL 99.7%, JupSOL 99.98%.

Data sources

Flipside Crypto Solana share via Hex (Snowflake): defi.ez_lending_repayments / ez_lending_liquidations / ez_dex_swaps / fact_swaps_jupiter_inner; defi.fact_stake_pool_actions + fact_token_mint_actions (fair rate); core.fact_transactions (raw instruction parsing); price.ez_prices_hourly (USD + cross-check). Full reproducible SQL lives in the Hex thread; canonical per-tx table: unwind_loss_v6 (461 verified SOL-debt txs).

Validation — independent checks performed before publication
CheckResultDetail
Largest unwind vs block explorerEXACTThe biggest transaction (8,033.08 mSOL → 11,079.92 SOL, May 17) reconciles with Solscan to the lamport, including aggregator legs absent from Flipside's curated tables.
Instruction-level re-decode (15-tx sample)15/15Five largest, five Feb 5–6 stress, five random small unwinds re-decoded from raw Kamino program instructions — every repay found, all amounts match the curated tables within 0.006%.
Debt-token classification (purity)VERIFIED2,611 transactions lacking curated repay rows were classified by parsing the repay leg from raw inner instructions; 2,296 confirmed SOL-debt, the remainder (stable / mixed / unclassified) excluded from the board and disclosed in the Excluded panel.
Fair rate vs independent market priceAGREESDeposit-derived protocol rate runs a stable +10–30 bps above the DEX market rate across the whole period — exactly mSOL's expected market discount to peg. No anomalous days after smoothing.
Arbitrage contaminationCLEANNo transaction in the verified pure set executed above fair value — the unwind set is not polluted by arb flow.
USD valuationEXACT-HOUREvery transaction priced at its own hour's SOL/USD (no flat-price approximations). SOL ranged $61.59–$146.68 over the period, so SOL and USD figures intentionally don't scale linearly.
Liquidation table completeness1 GAPDay-by-day scan found a 2-day partition gap (Apr 3–4) in ez_lending_liquidations right after the Apr 1–2 spike — April liquidation totals are a floor. March/May low counts verified as genuinely calm. Unwind data unaffected.
Excluded from the pure set — disclosed, never mixed in
Transactions removed by the SOL-debt purity filter (per LST)
LSTClassTxsLST soldLoss SOLLoss $
mSOLstable-debt (curated)723,806.625.53$2,153
mSOLstable-debt (verified)393.30.01$0.78
mSOLmixed (verified)38335.90.87$78
mSOLunclassified / other29129.10.35$32
JitoSOLmixed (verified)51736.70.10$9
JitoSOLstable-debt (verified)30.70.00$0.02
JitoSOLunclassified3959.2−0.14−$14
JupSOLmixed (verified)580.90.70$58
JupSOLunclassified11339.3−0.00−$0.58

Known limitations

  • June is a 10-day partial month.
  • April liquidation totals are a floor (Apr 3–4 source-data gap).
  • LST→LST rotations (mSOL→JupSOL/JitoSOL/bSOL, 4.1% of mSOL-out volume) are excluded by scope — they exit mSOL without realizing SOL.
  • Unique-user counts are not shown: the "swapper" field identifies protocol program accounts, not wallets; borrower-level attribution is future work.
  • 178 mSOL transactions (2.9% of unwind volume) were excluded as stable-debt, mixed, or unclassifiable — they are deleveraging of other loan types against mSOL collateral, not Multiply exits; see the Excluded panel.
  • Individual-day loss_bps carries ~3–5 bps of fair-rate methodology noise; aggregates are robust.

Reading the numbers

Loss bps are per unit of position, and Multiply positions are levered 3–10x — so the 70–104 bps stress-window exits observed in February equal roughly 2–10% of the user's actual equity. Multiply liquidations are empirically negligible (13 txs / $56 YTD for mSOL; 33 txs / ~$820 across all three LSTs) — the SOL-denominated structure prevents them, as designed. The cost channel for loopers is voluntary exit slippage, concentrated in mSOL stress windows; the February liquidation wave hit vanilla stablecoin-debt loans, a different population.

JupSOL unwinds
2,825 txs
586,204 JupSOL · ≈0 bps wavg · $14.9k lost
JitoSOL unwinds
881 txs
223,951 JitoSOL · −4.1 bps · $9.0k gained
mSOL unwinds
461 txs
145,581 mSOL · 27.4 bps · $49.0k lost
Multiply liqs, all 3 LSTs
33 txs · ~$820
negligible everywhere — structure holds

Monthly volume-weighted unwind loss by LST (bps vs own fair rate)

Exit cost is an mSOL-specific problem
27 vs ≈0 bps
mSOL exits cost an order of magnitude more than JitoSOL/JupSOL. Part is baseline definition (mSOL measured vs protocol peg incl. its 10–30 bps market discount; Jito/Jup vs market rate), but the stress-window gap is real and liquidity-driven.
Feb 5–6 was an mSOL event
72 bps vs none
The stress cluster (23% of mSOL YTD loss) has no counterpart in JitoSOL or JupSOL on the same dates — both filled at or below fair. It was an mSOL peg slip in thin mSOL/SOL liquidity, not a market-wide LST event.
The opportunity
exit liquidity
Deeper or protocol-backstopped mSOL→SOL exit liquidity would close the worst LST-vs-LST gap in the data — keeping the spread that currently flows to DEX LPs and arbitrageurs during mSOL stress windows.
Unwind comparison YTD (loss vs each LST's fair rate)
LSTTxsLST soldLoss SOLLoss $Wavg bps
Liquidations YTD: collateral = LST, total vs true Multiply (SOL debt)
LSTAll liq txsDebt repaid $Multiply liq txsMultiply liq $

Methodology note

All cross-LST figures use the pure SOL-debt (verified) sets. JitoSOL and JupSOL use the same unwind fingerprint, route-complete swap measurement and debt-token classification as mSOL. Their fair rate is the daily median market LST/SOL ratio (ez_prices_hourly) — both trade at peg with deep liquidity, so market ≈ protocol rate. mSOL is measured against the Marinade protocol peg, which embeds its market discount; on a like-for-like market-rate basis mSOL's calm-period costs are lower, but the stress-window gap remains. JitoSOL's slightly negative bps = executions marginally beating the daily median oracle (intraday appreciation) — effectively zero cost. Both LSTs received the same DFlow completeness correction as mSOL: all unwinds >100 LST were verified/corrected via raw inner-instruction parsing (111 Jito/Jup txs + 52 mSOL txs corrected); residual from unswept dust txs ≤1% volume / ≤0.1 bps. 6 broken JupSOL route txs failed the rate guardrail and were excluded.

What this means for the original question

Multiply liquidation risk is ≈ zero across all three LSTs — the SOL-denominated structure works as designed. The real user cost is voluntary exit slippage; it is modest in calm markets and concentrates almost entirely in mSOL during stress. The value redistribution flows from panic exiters to DEX LPs and arbitrageurs in the mSOL/SOL pools — a flow Marinade could internalize by providing the exit liquidity itself.