Files
PythagorasGoal/docs/diary/2026-08-26-usde-analisi.md
T
Adriano Dal Pastro e5052a690f usde: da patch d'emergenza a struttura — config, modulo unico, sorveglianza
- config/live.json sezione `usde` (unica autorita', P1): indice, haircut 10%,
  tetto allerta quota 50%, soglie depeg 0.99/0.95 coi criteri dichiarati (P6)
- src/live/usde.py: config + catena di prezzo (indice pubblico -> ticker ->
  1.0 dichiarato) + valutazione PURA; shadow._collaterale_usde ora deriva da qui
- scripts/live/usde_watch.py + cron_usde.sh (12:35 UTC, dopo la finestra reward):
  reward per delta netto trade (P12: senza inventare attribuzioni), depeg
  (crit ripetuto, resto a transizione, P9), quota anche per deriva passiva (N4);
  applica il verdetto di eligibilita' pre-registrato (>=1 reward entro 29/08)
- serie data/live/usde_watch.jsonl sotto monitor_health (max 30h, P5: un watch
  fermo non deve leggersi come "va tutto bene"); baseline 14:17Z registrata
- GATE USDE-01 in CLAUDE.md §4; test 775 (+17 in tests/test_usde_watch.py)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01B9UyJLHzR7EJzxR3iQ3RN1
2026-08-26 15:11:44 +00:00

7.0 KiB
Raw Blame History

2026-08-26 — USDE come collaterale a rendimento: analisi da candidato

Domanda dell'operatore: "analizziamo usde" — dopo la chiusura della pista USDC rewards (Italia esclusa da MiCA). Script: scripts/research/r0826_usde_scenari.py (N11).

Verificato SUL VENUE (API pubblica, oggi — N10)

  • apr: 4.0 per USDE (era "fino a 9%" al lancio 03/2025: tasso = APR settimanale Ethena 5% di fee Deribit; comprime coi funding) · reward giornalieri ~12:00 UTC sul minimo di equity USDE, voce nel Transaction Log → falsificazione in 24-72h
  • spot USDE_USDC attivo: spread osservato ~3 bps, fee spot zero
  • haircut cross-collateral 10% (USDC 0%): il 90% fa margine — al nostro profilo di leva (max realizzata 0,52x su tetto 1,0x) non morde
  • indice usde_usd multi-exchange con mediana e clamp ±0,5% — NON il book interno: è la differenza strutturale dal caso Binance del 10/10/2025 ($0,65 dall'oracle sul proprio book da $8M mentre USDe quotava ~$0,99 altrove, riscatti regolari, peg tornato in 8h)
  • eligibilità per residenza, lista non pubblica → si verifica sul CONTO, non sui documenti (la lezione USDC di stamattina)

Rischi dichiarati (p non stimabile → si controlla con la QUOTA, N4)

R1 emittente: basis trade (staking + short perp); fallimento = fino a 100% della quota — si SOMMA al rischio venue accettato il 26/07, non lo sostituisce. R2 marcatura in crash (P10: l'accoppiamento — il mark scende proprio quando il libro è lungo). R3 tasso: 9→4% in 17 mesi; funding negativi prolungati → ~0. R4 regolatorio EU (Ethena GmbH liquidata dopo BaFin; USDe non è EMT MiCA — per questo PUÒ pagare dove USDC non può). 📌 Nota a favore da misurare se si procede: il rendimento USDe sale coi funding positivi, cioè quando il nostro libro long li PAGA (2,16%/anno): sconto parziale correlato sulla tassa di funding.

L'aritmetica (dallo script)

equity quota 50% rende 100% costa note
$2.065 $41/anno $1.032 conversione ripagata in ~3 giorni
$5.065 $101/anno $2.532 scenario post-versamento
$20.000 $400/anno $10.000 dove la posta diventa seria

Mark 1% = 3 mesi di resa · 3,5% = 11 mesi · 100% = 25 anni: non si recupera mai → la leva di controllo è la quota, non il tasso.

PROPOSTA (pre-registrata qui, esito da scrivere sotto)

Test di eligibilità sul conto: convertire ~$500 USDC→USDE (costo <$0,20 totale), tenere 3 giorni, guardare il Transaction Log alle ~12:00 UTC (reward atteso ~$0,05/g). Regola dichiarata PRIMA di vedere l'esito: ≥1 voce reward in 3 giorni → idoneo, e si apre la decisione di quota (con un gate: quota massima, chi la decide, cosa la riapre); 0 voci → non idoneo, si riconverte e la pista si chiude come l'USDC. L'esecuzione è dell'operatore (app: Spot → USDE/USDC) o autorizzata esplicitamente via gateway. Il libro non c'entra: nessun codice del percorso soldi viene toccato dal test.

ESECUZIONE DEL TEST (stesso giorno, 13:04 UTC — autorizzata dall'operatore: "fai test")

Ordine via gateway, limit marcabile con banda di sicurezza sul prezzo (0,995-1,005): 500 USDE @ 1,0003, filled, fee 0 (USDE_USDC-8977542793). Costo totale ~$0,15. Prima finestra utile di reward: ~28/08 12:00 UTC (il calcolo usa il minimo di equity USDE della finestra); verifica finale il 29/08: ≥1 voce reward nel Transaction Log → idoneo; 0 voci → si riconverte e la pista si chiude.

🚨 DIFETTO TROVATO E RIPARATO DURANTE IL TEST — il test valeva gia' per questo. shadow._equity leggeva SOLO il conto USDC: dopo la conversione il book avrebbe visto $1.556 (24,3%) al giro delle 13:47 → falso 💰 "USCITA DI FONDI" e vendita indesiderata di ~$140 di posizioni (i target scalano con l'equity). Riparato in 35 minuti, prima del giro: _collaterale_usde() valuta l'USDE all'indice pubblico usde_usdc (mediana multi-exchange — la lezione Binance 10/10), con tre proprieta' blindate da 6 test nuovi (tests/test_shadow_usde.py): un depeg PASSA nel sizing (mai nascosto), sopra la pari si clampa a 1,0, indice illeggibile → 1,0 dichiarato, mai 0 (contare 0 ricreerebbe il falso 24%: il fallback si sceglie sul danno, P5). Verificato live: equity vista dal book $2.055,88 ("mainnet USDC + USDE 500 @ 0.9999"). Un test da $500 progettato per misurare l'eligibilita' ha scoperto che il book era cieco al cross-collateral: se la prima conversione fosse stata fatta a quota vera, l'errore sarebbe costato caro. I test piccoli esistono per questo.

Esito eligibilita': (da scrivere entro il 29/08)

STRUTTURA (stesso giorno, ~14:20 UTC — "struttura il progetto per gestire subito usde")

La patch d'emergenza delle 13:07 e' diventata struttura di prima classe:

  • config/live.json sezione usde — l'unica autorita' sui parametri (P1): index_name, haircut 0.10, quota_max_frac 0.50 (tetto di ALLERTA — la quota effettiva la decide l'operatore), depeg_warn 0.99 / depeg_crit 0.95 coi criteri dichiarati in _nota_usde (P6: warn = fuori dalla banda spot ~3 bps e oltre il clamp ±0,5% per fonte dell'indice; crit = meta' del buffer di haircut consumata).
  • src/live/usde.py — modulo unico per config, catena di prezzo (indice pubblico → ticker spot → 1,0 dichiarato) e valutazione valuta() PURA. shadow._collaterale_usde ora DERIVA da qui (niente ridichiarazioni); i 6 test di shadow passano invariati.
  • scripts/live/usde_watch.py + cron_usde.sh alle 12:35 UTC (dopo la finestra reward ~12:00, fuori da :00/:25/:47) — sola lettura: (1) reward per DELTA di equity al netto dei trade spot (il gateway non espone il Transaction Log; un delta con trade nel mezzo si dichiara, trade illeggibili → delta NON attribuito, P12); (2) depeg: 🚨 solo sotto crit e ripetuto, ⚠️ warn/quota/BLIND solo alla transizione (P9); (3) quota sul totale, che allerta anche per deriva PASSIVA (il libro perde → la quota sale da sola, N4). Applica il verdetto pre-registrato (≥1 reward entro il 29/08 → IDONEO; zero → riconvertire) invece di lasciarlo a un promemoria. Limite dichiarato: cadenza giornaliera, un depeg intraday puo' sfuggire all'ALLERTA — ma non al SIZING, che legge l'indice a ogni giro orario del book.
  • Serie data/live/usde_watch.jsonl — dentro il perimetro di backup, ts in ms epoch → sorvegliata da monitor_health (max_age 30h, open_labeled=False): un watch fermo spegnerebbe gli allarmi depeg e il silenzio si leggerebbe come "va tutto bene" (P5).
  • Baseline registrata alle 14:17:52Z: 500 USDE @ 1,0000 (indice) = $500,00 · quota 24,3% (tetto 50%) · margine utilizzabile ~$2.008 · verdetto IN_ATTESA. E' la lettura che rende misurabile il delta del 28/08.
  • Test: 775 passati (+17 nuovi in tests/test_usde_watch.py: valutazione condivisa, rilevatore reward, verdetto — incluso che NON anticipa la scadenza del 29/08 —, condizioni di allerta, px=None che non finge un depeg).