diff --git a/CLAUDE.md b/CLAUDE.md index fdd5ab4..0758e17 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -71,7 +71,7 @@ lorda massima 1,0x**, e nessun livello di capitale cambia il profilo di rischio all'indice pubblico `usde_usdc`): il conto tiene **643 USDE** (**IDONEO** dal 28/08; portati da 500 a 644 il 30/08 su decisione dell'operatore, **quota 31,21%** — e li' si e' fermato: 🚨 **il venue ha un TETTO sull'USDE** e ogni acquisto oltre quel livello e' rifiutato. GATE USDE-01 in §4). Autorita' dei parametri: sezione `usde` di `config/live.json` -(haircut 10%, tetto ALLERTA quota 50%, soglie depeg 0,99/0,95 coi criteri in `_nota_usde`), letta +(haircut 10% — ⚠️ la KB ufficiale dice **5%**, divergenza APERTA e non riparata, non osservabile dal gateway e non vincolante: dettaglio in `_nota_usde` — tetto ALLERTA quota 50%, soglie depeg 0,99/0,95 coi criteri in `_nota_usde`), letta da `src/live/usde.py` — shadow (sizing orario) e `usde_watch` (sorveglianza 12:35 UTC, cron proprio, sotto `monitor_health`) derivano entrambi da li'. ⚠️ Il difetto d'origine: `shadow._equity` leggeva SOLO il conto USDC — la prima conversione avrebbe causato un falso "USCITA DI FONDI −24%" diff --git a/config/live.json b/config/live.json index cf8f557..8d23739 100644 --- a/config/live.json +++ b/config/live.json @@ -10,7 +10,7 @@ "max_data_age_days": 2, "_nota_skh_feed": "Freschezza del feed 5m usato per il segnale SKH01 (2026-07-26). fresh_5m ricade sul feed certificato IN SILENZIO se il fetch pubblico Deribit fallisce, e il certificato si rigenera 1x/giorno: senza controllo la latenza d'uscita di SKH01 passa da ~1h a ~1 giorno senza segnalazione. Sopra soglia book_execute ALLERTA e NON blocca (bloccare fermerebbe anche TP01, nettato sullo stesso strumento, per un guasto di rete). Diario 2026-07-26-t1-esecuzione-skh-live.md.", "skh_feed_max_age_min": 30, - "_nota_usde": "Collaterale USDE a rendimento (test di eligibilita' 2026-08-26: 500 USDE, verdetto entro il 29/08 — diario 2026-08-26-usde-analisi). L'autorita' che LEGGE questa sezione e' src/live/usde.py; la usano shadow._collaterale_usde (equity oraria del book) e scripts/live/usde_watch.py (sorveglianza giornaliera 12:35 UTC). Criteri delle soglie, dichiarati (P6): depeg_warn 0.99 = fuori dalla banda operativa dello spot (~3 bps) e oltre il clamp +-0.5% per fonte dell'indice usde_usdc — a quel prezzo non e' rumore di book; depeg_crit 0.95 = meta' del buffer di haircut (10%) consumata. quota_target 0.70 = la quota DECISA dall'operatore il 2026-08-30 (la decisione di quota che il gate USDE-01 apriva; anticipata di un giorno sul rinvio al 31/08, su richiesta esplicita dell'operatore \"porta in usde tutto il capitale che non viene usato\"). Il 70% NON e' un argmax (M8): e' il massimo compatibile col CUSCINO DI REGOLAMENTO, cioe' il vincolo che r0830_usde_quota non aveva guardato — il P&L e il funding dei perp USDC-lineari si regolano in USDC, non nel collaterale, quindi a quota alta il saldo USDC va negativo alla prima perdita del libro e Deribit lo finanzia a interesse. Il cuscino richiesto e' il disaster-SL sulla massima esposizione lorda: n_asset x frac x disaster_sl_pct = 2 x 0.5 x 0.30 = 30% dell'equity, che lascia esattamente il 70%. quota_max_frac 0.50 = tetto di ALLERTA sulla quota USDE/equity totale (N4: la quota e' l'unica leva contro il rischio emittente, -100% = 25 anni di resa, non recuperabile). Alzato a 0.85 il 2026-08-30 in previsione della quota al 70% e RIMESSO A 0.50 lo stesso giorno: il 70% NON e' raggiungibile. 🚨 venue_cap_frac 0.312 = TETTO DEL VENUE sull'USDE, misurato e NON documentato da Deribit (l'articolo ufficiale 'Yield/reward bearing coins' descrive un Cap ETHENA che diluisce il TASSO a livello di exchange, e nessun limite sulle quantita' detenibili da un conto). Ogni acquisto oltre il tetto e' rifiutato con `not_enough_funds_in_currency` pur avendo $1.400 disponibili: messaggio FUORVIANTE, non c'entrano fondi/taglia/prezzo/liquidita'/cadenza. E' una FRAZIONE DELL'EQUITY TOTALE, non un livello fisso — provato il 31/08 facendo scendere l'equity di $8: il tetto e' sceso con lei (30/08 in [644,18·645,18) con equity $2.063,79 = 31,21-31,26%; 31/08 in [643,18·644,18) con equity $2.055,56 = 31,29-31,34%; i due bracket distano 0,05pp, dentro il rumore dell'equity che oscilla +-$2-8/ora). ⇒ **il tetto SCALA col conto**: la quota resta ~31% e il valore in dollari cresce col capitale, e il 70% di quota_target NON e' raggiungibile ne' ora ne' mai. Il valore 0.312 e' il bordo BASSO dei bracket, scelto per far fallire il piano PRIMA dell'ordine invece che dopo il rifiuto; va ri-sondato se cambia qualcosa sul venue. Con la quota reale al 31% il tetto d'allerta 0.50 e' di nuovo quello giusto e MORDE: allargarlo a 0.85 avrebbe disarmato la guardia per uno scenario che non si e' verificato. Se il tetto del venue si alzera', il criterio per 0.85 e' 'meta' del cuscino di regolamento consumata' (USDC sotto il 15% dell'equity). haircut 0.10 registrato il 26/08 come 'verificato sul venue' (USDC 0%). 🚨 DIVERGENZA APERTA, non riparata (P12: fra due fonti che non concordano, una riparazione silenziosa e' un'invenzione): l'articolo ufficiale 'Cross collateral specifications' (Knowledge Base, aggiornato 2026-02-20) tabula USDe al **5%** — e con lui stETH 7.5%, PAXG 2.5/5%, USDT 2%, USYC 2%, BUIDL 2%, SOL 0/15%, e USDC/BTC/ETH a ZERO. Il 26/08 non ha lasciato traccia di COME fu verificato, e l'articolo e' ANTERIORE a quella data: non si sa quale delle due sia stale. Si TIENE 0.10 perche' e' il lato CONSERVATIVO (sottostima il margine utilizzabile) e perche' l'haircut non e' sul percorso soldi — non entra nel sizing, lo usa solo il report di usde_watch, ed e' gia' misurato che non morde a nessuna quota fino al 90%. Da chiudere leggendo la pagina margini del conto, che e' dove Deribit dice di guardare.", + "_nota_usde": "Collaterale USDE a rendimento (test di eligibilita' 2026-08-26: 500 USDE, verdetto entro il 29/08 — diario 2026-08-26-usde-analisi). L'autorita' che LEGGE questa sezione e' src/live/usde.py; la usano shadow._collaterale_usde (equity oraria del book) e scripts/live/usde_watch.py (sorveglianza giornaliera 12:35 UTC). Criteri delle soglie, dichiarati (P6): depeg_warn 0.99 = fuori dalla banda operativa dello spot (~3 bps) e oltre il clamp +-0.5% per fonte dell'indice usde_usdc — a quel prezzo non e' rumore di book; depeg_crit 0.95 = meta' del buffer di haircut (10%) consumata. quota_target 0.70 = la quota DECISA dall'operatore il 2026-08-30 (la decisione di quota che il gate USDE-01 apriva; anticipata di un giorno sul rinvio al 31/08, su richiesta esplicita dell'operatore \"porta in usde tutto il capitale che non viene usato\"). Il 70% NON e' un argmax (M8): e' il massimo compatibile col CUSCINO DI REGOLAMENTO, cioe' il vincolo che r0830_usde_quota non aveva guardato — il P&L e il funding dei perp USDC-lineari si regolano in USDC, non nel collaterale, quindi a quota alta il saldo USDC va negativo alla prima perdita del libro e Deribit lo finanzia a interesse. Il cuscino richiesto e' il disaster-SL sulla massima esposizione lorda: n_asset x frac x disaster_sl_pct = 2 x 0.5 x 0.30 = 30% dell'equity, che lascia esattamente il 70%. quota_max_frac 0.50 = tetto di ALLERTA sulla quota USDE/equity totale (N4: la quota e' l'unica leva contro il rischio emittente, -100% = 25 anni di resa, non recuperabile). Alzato a 0.85 il 2026-08-30 in previsione della quota al 70% e RIMESSO A 0.50 lo stesso giorno: il 70% NON e' raggiungibile. 🚨 venue_cap_frac 0.312 = TETTO DEL VENUE sull'USDE, misurato e NON documentato da Deribit (l'articolo ufficiale 'Yield/reward bearing coins' descrive un Cap ETHENA che diluisce il TASSO a livello di exchange, e nessun limite sulle quantita' detenibili da un conto). Ogni acquisto oltre il tetto e' rifiutato con `not_enough_funds_in_currency` pur avendo $1.400 disponibili: messaggio FUORVIANTE, non c'entrano fondi/taglia/prezzo/liquidita'/cadenza. E' una FRAZIONE DELL'EQUITY TOTALE, non un livello fisso — provato il 31/08 facendo scendere l'equity di $8: il tetto e' sceso con lei (30/08 in [644,18·645,18) con equity $2.063,79 = 31,21-31,26%; 31/08 in [643,18·644,18) con equity $2.055,56 = 31,29-31,34%; i due bracket distano 0,05pp, dentro il rumore dell'equity che oscilla +-$2-8/ora). ⇒ **il tetto SCALA col conto**: la quota resta ~31% e il valore in dollari cresce col capitale, e il 70% di quota_target NON e' raggiungibile ne' ora ne' mai. Il valore 0.312 e' il bordo BASSO dei bracket, scelto per far fallire il piano PRIMA dell'ordine invece che dopo il rifiuto; va ri-sondato se cambia qualcosa sul venue. Con la quota reale al 31% il tetto d'allerta 0.50 e' di nuovo quello giusto e MORDE: allargarlo a 0.85 avrebbe disarmato la guardia per uno scenario che non si e' verificato. Se il tetto del venue si alzera', il criterio per 0.85 e' 'meta' del cuscino di regolamento consumata' (USDC sotto il 15% dell'equity). haircut 0.10 registrato il 26/08 come 'verificato sul venue' (USDC 0%). 🚨 DIVERGENZA APERTA, non riparata (P12: fra due fonti che non concordano, una riparazione silenziosa e' un'invenzione): l'articolo ufficiale 'Cross collateral specifications' (Knowledge Base, aggiornato 2026-02-20) tabula USDe al **5%** — e il conto e' **X:SM (cross-collateral STANDARD margin)**, dichiarato dall'operatore il 31/08, quindi la colonna da leggere e' `Haircut (X:SM)`, che per USDe vale **5%** come la PM. Il tipo di conto e' corroborato dalla misura indipendente: IM = 2,0000% del nozionale = 1/50 = il `C1=50` (start leverage, tier 1) del nuovo modello di margine per i conti STANDARD annunciato il 2026-08-05 — e con lui stETH 7.5%, PAXG 2.5/5%, USDT 2%, USYC 2%, BUIDL 2%, SOL 0/15%, e USDC/BTC/ETH a ZERO. Il 26/08 non ha lasciato traccia di COME fu verificato, e l'articolo e' ANTERIORE a quella data: non si sa quale delle due sia stale. Si TIENE 0.10 perche' e' il lato CONSERVATIVO (sottostima il margine utilizzabile) e perche' l'haircut non e' sul percorso soldi — non entra nel sizing, lo usa solo il report di usde_watch, ed e' gia' misurato che non morde a nessuna quota fino al 90%. Da chiudere leggendo la pagina margini del conto, che e' dove Deribit dice di guardare.", "usde": { "index_name": "usde_usdc", "haircut": 0.1, diff --git a/docs/diary/2026-08-31b-venue-news-annunci.md b/docs/diary/2026-08-31b-venue-news-annunci.md index ea78777..287d673 100644 --- a/docs/diary/2026-08-31b-venue-news-annunci.md +++ b/docs/diary/2026-08-31b-venue-news-annunci.md @@ -150,3 +150,65 @@ indipendente per lasciarlo stare, dopo il tasso dimezzato e l'esposizione ETH. 📌 **Nessuna delle due fonti documenta un tetto sulle quantità detenibili.** Il ~31,2% sull'USDE resta **misurato e non spiegato** — e ora si sa che non è una svista di lettura: non è scritto da nessuna parte. + +### (d) Tentata la chiusura della divergenza sull'haircut: **non è raggiungibile da qui** + +Deribit dice: «*Haircut rates can be seen on the margin page in your account*». Quella pagina è web +UI, e le credenziali vivono solo dentro il gateway (debito #11). Provato comunque: + +- `account_summary` per la valuta **USD** (la "riga USD" che il doc menziona) → `Invalid currency`; +- parametro **`extended`** (che su Deribit apre i dettagli di margine) → **ignorato**; +- il gateway filtra a **8 campi**: niente `initial_margin`, niente `maintenance_margin`. + +E non è che si sia guardato nel secchio sbagliato — **la contabilità torna esatta senza haircut**: + +``` +USDC equity 1412.281074 available 1400.728093 riservato 11.5530 +USDE equity 643.175691 available 643.175691 riservato 0.0000 +posizioni lorde $577.65 + +riservato in USDC ........... $11.5530 +IM di posizione al 2% ....... $11.5530 +RESIDUO ..................... $-0.0000 +``` + +Un haircut al **5%** chiederebbe **$32,16** accantonati, al **10%** ne chiederebbe **$64,32**: non +ci sono, e il secchio USDE riserva `0.000000`. ⇒ **L'haircut non è osservabile in alcun campo +esposto.** O è applicato solo nella vista cross/USD che il gateway filtra via, o non è applicato al +nostro conto: da qui **le due cose non si distinguono**, e non le si sceglie tirando a indovinare. + +**La divergenza resta APERTA**, ma ora con la ragione misurata invece che supposta. La chiudono due +cose, entrambe dell'operatore: **30 secondi sulla pagina margini** della web UI, oppure delle +**chiavi API Deribit** — che è la decisione già dichiarata nel debito #11, non un refactor. +Nel frattempo **non morde nulla di osservabile**: l'IM è il 2% del nozionale e il valore pieno +dell'USDE resta disponibile, quindi 5% o 10% non cambia una singola cifra operativa. + +📌 **Sottoprodotto non cercato**: $11,5530 / $577,65 = **2,0000% = esattamente 1/50**. È il +`C1 = 50` (start leverage, tier 1) del **nuovo modello di margine SM** annunciato il 05/08 — quello +che `venue_news` ha appena tirato fuori dal feed. **Confermato sul nostro conto senza averlo +cercato**, ed è la prima volta che un annuncio del venue viene verificato contro il conto invece +che creduto. + +### (e) L'operatore dichiara: il conto è **Standard Margin** — due conferme incrociate + +Lo screenshot della pagina margini non è arrivato fin qui (sta sul desktop dell'operatore, non +sulla VPS: il percorso non esiste su questa macchina). Ma il fatto dichiarato — **«è attivo +Standard margin»** — aggancia due cose che erano sospese: + +1. **Quale colonna leggere.** La tabella KB ha `Haircut (X:PM)` e `Haircut (X:SM)`. Il conto è + **X:SM**, quindi vale la seconda — che per USDe dice **5%**, come la PM. La divergenza col + nostro `0.10` resta quindi intatta, ma ora si sa con certezza *quale* numero ufficiale la + contraddice, invece di doverne scegliere uno fra due colonne. +2. **Perché l'IM misurata era esattamente 1/50.** Il nuovo modello di margine del 05/08 si applica, + testuale, ai *«standard margin accounts»*. Il conto è standard margin, e noi abbiamo misurato + IM = **2,0000%** del nozionale = **1/50** = il `C1 = 50` di tier 1. **Le due cose si confermano + a vicenda**: un fatto dichiarato dall'operatore e una misura fatta sul conto senza conoscerlo. + +*Vale la pena notarlo perché è raro: in tutta questa settimana ogni affermazione pubblicata dal +venue si è rivelata falsa per il nostro conto (APR USDC, «all users can buy BUIDL»). Questa è la +prima che il conto conferma.* + +**Cosa manca ancora**, e resta l'unica cosa che chiude la divergenza: il numero di haircut per USDe +**mostrato sulla pagina Standard Margin del conto**. Se dice 5%, la nostra config è stale e il 26/08 +registrò male; se dice 10%, la KB è stale e la config ha ragione. Finché non c'è, si tiene 0.10 — +lato conservativo, fuori dal percorso soldi, e **senza un solo effetto operativo misurabile**.