ricerca: USDE come collaterale a rendimento — analisi da candidato + test di eligibilita' pre-registrato
Verificato sul venue: apr 4.0 (netto fee), spot USDE_USDC spread ~3bps fee zero, haircut 10% (non morde al nostro profilo di leva), indice usde_usd multi-exchange con mediana+clamp (la differenza strutturale dal caso Binance 10/10/2025). Rischi dichiarati R1-R4, p non stimabile -> la leva di controllo e' la QUOTA (N4). Aritmetica: a $5k/quota 50% ~$101/anno; -100% = 25 anni di resa, non si recupera. Pre-registrato il test di eligibilita' (~$500, 3 giorni, regola dichiarata prima). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01B9UyJLHzR7EJzxR3iQ3RN1
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
"""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()
|
||||
Reference in New Issue
Block a user