"""r0826_usde_scenari.py — USDE come collaterale su Deribit: cosa compra, cosa rischia, sui NOSTRI numeri. DOMANDA (operatore, 2026-08-26): *"analizziamo usde"* — dopo la chiusura della pista USDC (Italia esclusa da MiCA: i reward USDC li paga Coinbase, che li ha cessati nell'EEA dal 12/2024). FATTI VERIFICATI SUL VENUE (API pubblica, 2026-08-26 — N10): - `public/get_currencies`: USDE `apr: 4.0` (era "fino a 9%" al lancio 03/2025: il tasso e' l'APR settimanale di Ethena meno il 5% di fee Deribit, e comprime coi funding); - spot `USDE_USDC` attivo, spread osservato ~3 bps (0.9999/1.0002), fee spot USDE = 0; - indice `usde_usd` ESISTE: multi-exchange, mediana con clamp ±0,5% per fonte — NON e' il book interno (la causa del $0,65 su Binance il 10/10/2025 fu l'oracle sul PROPRIO book da $8M; sugli altri venue USDe quoto' ~$0,99 e i riscatti funzionarono); - haircut cross-collateral USDE: **10%** (USDC 0%) -> il 90% del valore fa margine; - reward GIORNALIERI (~12:00 UTC) sul minimo di equity USDE della finestra, snapshot ogni 5 min, voce nel Transaction Log -> falsificazione in 24-72h, non in un mese; - eligibilita' PER RESIDENZA, lista non pubblica -> stessa trappola dell'USDC: si verifica SUL CONTO, non sui documenti (lezione di stamattina). RISCHI DICHIARATI (non modellabili con precisione — si dichiarano, non si inventano p): R1 emittente: USDe = dollaro sintetico (basis trade: staking + short perp). Fallimento Ethena = perdita fino al 100% della quota. p NON stimabile — stessa classe del rischio venue accettato il 26/07, ma SI SOMMA a quello (N4: si prezza a parte). R2 marcatura in crash: l'indice mediano protegge dal caso-Binance, ma in un crash sistemico il mark puo' scendere qualche punto proprio quando il libro e' lungo (P10: conta l'accoppiamento, non la marginale). R3 tasso: 9% -> 4% in 17 mesi; nei regimi di funding negativo prolungato -> ~0. R4 regolatorio EU: Ethena GmbH liquidata dopo il no di BaFin; USDe non e' un EMT MiCA (per questo puo' pagare rendimento dove USDC non puo'), ma il perimetro puo' cambiare. NOTA a favore, da misurare se si procede: il rendimento di USDe sale coi funding positivi, cioe' ESATTAMENTE quando il nostro libro (long) li paga (-2,16%/anno misurato): la quota USDE farebbe da parziale sconto sulla tassa di funding, con correlazione POSITIVA. uv run python scripts/research/r0826_usde_scenari.py """ from __future__ import annotations APR_NETTO = 0.04 # apr dall'API oggi (gia' al netto del 5% Deribit) SPREAD_RT = 0.0003 # ~3 bps round-trip osservati sul book (fee spot = 0) HAIRCUT = 0.10 CAPITALI = (2_065.0, 5_065.0, 20_000.0) QUOTE = (0.25, 0.50, 1.00) # frazione dell'equity convertita in USDE DEPEG = (0.01, 0.035, 0.10, 1.00) # scenari di marcatura/perdita sulla quota USDE LEVA_CAP = 1.0 # tetto di leva lorda del libro (config) LEVA_MAX_REALIZZATA = 0.52 def main() -> None: print("=" * 100) print(" USDE su Deribit — aritmetica sui numeri del conto (apr 4,0% · haircut 10% · spread 3 bps)") print("=" * 100) print("\n (1) COSA RENDE, per capitale e quota convertita (netto conversione, primo anno)") print(f" {'equity':>9} {'quota USDE':>11} {'$ in USDE':>10} {'$/anno':>8} " f"{'giorni di spread':>17} {'margine usabile':>16}") print(" " + "-" * 78) for cap in CAPITALI: for q in QUOTE: usde = cap * q resa = usde * APR_NETTO giorni_be = SPREAD_RT / APR_NETTO * 365 margine = (cap - usde * HAIRCUT) / cap print(f" ${cap:>8,.0f} {q:>10.0%} ${usde:>9,.0f} ${resa:>7,.0f} " f"{giorni_be:>16.1f}g {margine:>15.1%}") print(f"\n la conversione si ripaga in ~{SPREAD_RT/APR_NETTO*365:.0f} giorni di rendimento;") print(f" il margine usabile resta sopra il necessario: leva max realizzata " f"{LEVA_MAX_REALIZZATA:.2f}x su tetto {LEVA_CAP:.2f}x -> l'haircut 10% oggi non morde") print(f" (morderebbe a leva > {1/(1-0):.2f}x solo con quota 100%: 0,90x usabile)") print("\n (2) COSA COSTA UNO SCENARIO AVVERSO sulla quota USDE (equity $5.065)") cap = 5_065.0 print(f" {'scenario':>26} {'quota 25%':>12} {'quota 50%':>12} {'quota 100%':>12} " f"{'mesi di resa persi (50%)':>25}") print(" " + "-" * 92) nomi = {0.01: "mark -1% (stress indice)", 0.035: "mark -3,5% (crash forte)", 0.10: "-10% (depeg parziale)", 1.00: "-100% (fallimento Ethena)"} for d in DEPEG: riga = [] for q in QUOTE: perdita = cap * q * d riga.append(f"${perdita:>10,.0f}") mesi = d / APR_NETTO * 12 mesi_s = f"{mesi:,.0f} mesi" if mesi < 240 else f"{mesi/12:,.0f} ANNI" print(f" {nomi[d]:>26} {riga[0]:>12} {riga[1]:>12} {riga[2]:>12} {mesi_s:>25}") print("\n la riga che decide: il -100% non si recupera MAI col rendimento (25 anni di apr") print(" al 4%); percio' la QUOTA e' l'unica leva di controllo vera (N4), non il tasso.") print("\n (3) VERDETTO (runtime)") resa50 = 5_065.0 * 0.50 * APR_NETTO print(f" a $5.065 e quota 50%: ~${resa50:,.0f}/anno — utile ma non decisivo; il valore vero") print(f" arriva col capitale (a $20k e 50%: ${20_000*0.5*APR_NETTO:,.0f}/anno).") print(" PRIMA di qualunque allocazione: il TEST DI ELIGIBILITA' sul conto —") print(" convertire ~$500 USDC->USDE (costo ~$0,08 di spread), tenerli 3 giorni,") print(" guardare il Transaction Log alle ~12:00 UTC: reward giornaliero atteso ~$0,05/g.") print(" Regola dichiarata PRIMA: >=1 voce reward in 3 giorni -> idoneo, si apre la") print(" decisione di quota (con gate); 0 voci -> non idoneo, si riconverte e la pista") print(" si chiude come l'USDC. Costo totale del test: < $0,20.") if __name__ == "__main__": main()