| Scope | Txs | mSOL sold | Loss SOL | Loss $ | Wavg bps |
|---|
| Month | Txs | mSOL | Loss SOL | Loss $ | SOL px | Wavg | p90 | Max |
|---|
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.
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).
| Date | Txs | mSOL sold | Loss SOL | Loss $ | Wavg bps |
|---|
| Tx | Date | Platform | mSOL | Loss $ | bps |
|---|
| Tx | Date | Platform | mSOL | Loss $ | bps |
|---|
| Debt token | Liq txs | Borrowers | Debt repaid $ | Type |
|---|
| Month | Unwinds | Unwind mSOL | Loss SOL | Liq txs† | Liq debt $ |
|---|
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.
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.
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.
Per transaction, mSOL sold and SOL received are summed across all swap legs of the route: pool-level legs from ez_dex_swaps ∪ fact_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.
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.
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).
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.
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%.
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).
| Check | Result | Detail |
|---|---|---|
| Largest unwind vs block explorer | EXACT | The 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/15 | Five 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) | VERIFIED | 2,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 price | AGREES | Deposit-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 contamination | CLEAN | No transaction in the verified pure set executed above fair value — the unwind set is not polluted by arb flow. |
| USD valuation | EXACT-HOUR | Every 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 completeness | 1 GAP | Day-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. |
| LST | Class | Txs | LST sold | Loss SOL | Loss $ |
|---|---|---|---|---|---|
| mSOL | stable-debt (curated) | 72 | 3,806.6 | 25.53 | $2,153 |
| mSOL | stable-debt (verified) | 39 | 3.3 | 0.01 | $0.78 |
| mSOL | mixed (verified) | 38 | 335.9 | 0.87 | $78 |
| mSOL | unclassified / other | 29 | 129.1 | 0.35 | $32 |
| JitoSOL | mixed (verified) | 51 | 736.7 | 0.10 | $9 |
| JitoSOL | stable-debt (verified) | 3 | 0.7 | 0.00 | $0.02 |
| JitoSOL | unclassified | 39 | 59.2 | −0.14 | −$14 |
| JupSOL | mixed (verified) | 5 | 80.9 | 0.70 | $58 |
| JupSOL | unclassified | 113 | 39.3 | −0.00 | −$0.58 |
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.
| LST | Txs | LST sold | Loss SOL | Loss $ | Wavg bps |
|---|
| LST | All liq txs | Debt repaid $ | Multiply liq txs | Multiply liq $ |
|---|
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.
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.