Files
PythagorasGoal/docs/diary/2026-08-31b-venue-news-annunci.md
T
Adriano Dal Pastro fd7595e819 margini: haircut 5% (la config aveva torto) — e il conto NON e' cross-collateral
Lo screenshot della pagina margini era su Wasabi (rclone remote wasabi:, bucket
adp-work, cartella _scambio), non sulla VPS: per questo il percorso non esisteva.
Riconciliazione riproducibile in scripts/research/r0831_margini_conto.py (N11).

(a) HAIRCUT = 5%. La pagina non lo espone come numero: si ricava per differenza,
perche' il CROSS conta l'USDE scontato e il SEGREGATO non lo conta affatto.
  S:SM (attivo)  USDC Available 1.400,86  vs  equity 1.412,28 - IM 11,55 = 1.400,73
  X:SM           CROSS Available 2.011,73
  contributo USDE al cross = $610,81 su $643,05  ->  5,0137%
    5% (KB)     atteso $610,89  scarto $ 0,09  TORNA
   10% (nostra) atteso $578,74  scarto $32,06  NON torna
config/live.json: haircut 0.10 -> 0.05. Il 26/08 il 10% fu registrato come
"verificato sul venue" senza traccia di COME, e non lo era.

(b) 🚨 IL CONTO NON E' CROSS-COLLATERAL: modello attivo "Segregated: Standard
Margin" (S:SM). Nella tabella del modello attivo l'USDE NON COMPARE: non fa
margine per i perp USDC-settled del book, e l'haircut oggi non si applica. Il che
spiega a posteriori perche' la misura di stamattina trovava $0,0000 accantonati:
non stavo guardando nel secchio sbagliato, cercavo un parametro che sul nostro
conto non e' in vigore.

NON MORDE: al massimo lordo del libro (1,0x = ~$2.056 di nozionale) l'IM sarebbe
~$41 contro $1.400 di USDC disponibile, 34x di copertura. Nessuna decisione
operativa cambia oggi.

Ma la premessa in CLAUDE.md era falsa, e il modo in cui lo era e' istruttivo:
"l'equity del book e' il TOTALE cross-collateral" metteva due cose sotto un nome
solo. Come RICCHEZZA sommare USDC+USDE e' giusto ed era il punto della riparazione
del 26/08 (evito' il falso "USCITA DI FONDI -24%"); come CAPACITA' DI MARGINE e'
sbagliato, perche' nel modello attivo l'USDE vale zero. Finche' il margine non
morde le due coincidono nell'uso, e infatti non era mai emerso.

Corretta anche la riga di usde_watch che stampava "margine utilizzabile ~$2.013
(haircut 10%)": era falsa due volte insieme. Ora stampa il solo silo USDC e,
accanto, cosa darebbe il cross.

La quota USDE non e' "collaterale diversificato": e' cassa a rendimento FUORI dal
sistema di margine. Passare a X:SM aggiungerebbe $610,87 di margine utilizzabile
ma porta la meccanica cross (collateral fee 0,05%/giorno sul saldo negativo,
ribilanciamento automatico): decisione dell'operatore, oggi non serve.

Ipotesi nuova e non verificata: il tetto del ~31,2% potrebbe dipendere proprio dal
modello segregato. Si saprebbe passando a X:SM e ri-sondando.

Suite: 800 passati.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-31 08:01:21 +00:00

17 KiB
Raw Blame History

2026-08-31 — Fine della Proof of Reserves, e il guardiano che mancava

L'operatore ha passato l'annuncio Deribit to Discontinue Daily Proof of Reserves Publication. La notizia in sé vale poco per noi. Quello che è emerso cercandola vale molto di più.

1. La notizia: frequenza giù, sostanza su, per noi nulla cambia

Dal 1 settembre 2026 la pagina Proof of Reserves sparisce e gli aggiornamenti quotidiani cessano. Al loro posto, sotto il regime VARA di Dubai: audit annuale indipendente delle riserve, audit annuale del bilancio, obbligo di copertura 100% e segregazione degli attivi dei clienti. E: «approximately 90% of client assets have been migrated to Coinbase, which acts as a custodian for Deribit».

Non è un peggioramento netto, ed è importante non raccontarlo come tale. Si perde un segnale ad alta frequenza e debole (una PoR auto-pubblicata prova che gli attivi esistono in un istante, non che coprano le passività, ed è aggirabile attorno allo snapshot) e si guadagna un segnale a bassa frequenza e più forte (audit indipendente obbligatorio invece di pubblicazione volontaria), più un miglioramento sostanziale di custodia: 90% degli attivi presso un custode terzo regolato invece che nei wallet dell'exchange.

Per noi non cambia nulla di operativo, e per una ragione che va detta: la PoR non l'abbiamo mai sorvegliata. Zero occorrenze in tutto il codice. venue_probe legge se il venue risponde, non cosa dichiara. Si perde un segnale che non stavamo usando.

Ho provato a catturare l'ultimo dato prima che la pagina sparisse — è la mossa giusta per un dato non ricostruibile con una scadenza. Rinunciato di proposito: la pagina è una SPA e get_proof_of_reserves non esiste come metodo API («Method not found»), ma soprattutto uno snapshot singolo e auto-riportato non regge lo standard di prova di questo progetto e non permetterebbe comunque di stimare p. Un dato che non cambierebbe una decisione non vale il lavoro per prenderlo.

2. 📌 La conseguenza vera: il riapritore della decisione più grande si è ristretto

La decisione vincolante «100% Deribit fino a $20k» (26/07) ha come riapritori dichiarati: «$20k, o un cambio di piano, o p che diventa stimabile invece che assunto».

Dal 1 settembre il segnale pubblico di solvibilità passa da quotidiano ad annuale. Il terzo riapritore non è formalmente chiuso — un audit indipendente è semmai evidenza più forte — ma diventa praticamente irraggiungibile: da una serie giornaliera si può costruire una stima, da un punto all'anno no. ⇒ In pratica quella decisione è ora gated SOLO dal capitale: si riapre a $20k, o non si riapre. Non cambia la decisione di oggi (fu presa con p esplicitamente assunto, non osservato), ma chiude l'unica uscita non-capitale che aveva.

3. 🚨 Quello che ho trovato cercando: quattro annunci materiali che nessuno leggeva

Il debito #8 dice, testuale: «Resta scoperto il Rulebook vero e proprio: la sonda legge se il venue RISPONDE, non cosa il venue ANNUNCIA». Esiste un feed RSS pubblico (insights.deribit.com/exchange-updates/feed/) con 10 voci. Alla prima lettura:

data annuncio perché ci tocca
27/08 Discontinue Daily Proof of Reserves §1 e §2 di questo diario
14/08 Contract Specifications change for Linear USDC Perpetuals i nostri due strumenti
05/08 New SM Margin Model On Deribit leva per taglia, tiered
31/07 USDC Rewards Available In More Countries tocca una conclusione viva
29/06 New Fee Schedule On Deribit fee_watch esiste per questo

Il caso che decide la questione è il 14/08. Le specifiche dei perpetual USDC sono cambiate il 18/08; l'annuncio è del 14/08. Il codice lo racconta già con onestà: la tabella «non se n'era accorta […] è andata bene per la direzione del cambiamento, non perché ce ne fossimo accorti» — i cambi erano riduzioni (tick BTC 0,5→0,1, ETH 0,05→0,01, min/step ETH 0,001→0,0001) e un valore più grosso resta conforme. check_specs() è nato da quella svista e oggi gira ogni ora. Ma rileva la deriva dopo; il feed l'avrebbe detta quattro giorni prima. Il giorno che Deribit ALZA un minimo, «dopo» significa ordini rifiutati.

Il 31/07 chiude un cerchio aperto ieri: l'espansione delle giurisdizioni idonee ai reward USDC non contiene l'Italia, né alcun paese UE — mentre San Marino e Città del Vaticano (i due microstati europei fuori dall'UE) sono idonei. La lista che avevo letto (aggiornata 20/08) è posteriore all'espansione: la conclusione dello zero USDC è confermata due volte. Il pattern UE-fuori/microstati-dentro suggerisce un driver regolatorio, ma la lista contiene anche Canada e Giappone: non asserisco una causa, il fatto è l'esclusione.

4. Costruito: venue_news.py

Sorveglianza giornaliera del feed, dentro cron_daily.sh accanto a fee_watch (suo parente stretto). Scelte che contano:

  • NON interpreta. Dice «è uscito questo, guardalo». Nessun automatismo su un testo di marketing: P13 — una guardia sui NUMERI non copre il RAGIONAMENTO, e la prosa si legge come opinione di un lettore fallibile. L'unica cosa che classifica è l'urgenza.
  • Le parole-chiave sono DERIVATE, non ridichiarate (P1, il difetto più ricorrente del progetto): gli strumenti vengono da deribit._CONTRACT, la valuta di collaterale da config/live.json. Chi aggiunge un asset al book allarga la sorveglianza senza toccare questo file — ed è esattamente il test che lo blinda.
  • Primo giro semina senza allertare (P9: l'allarme massimo non si spende per un arretrato di 10 voci, o non verrà letto il giorno che è vero).
  • Feed illeggibile → codice 2 e nessun silenzio implicito (P5: «non vedo» non è «niente di nuovo»).

5 test sulle funzioni pure. La rete no: scarica() ritorna None su qualunque errore, ed è quello il contratto.

Cosa NON copre, e va detto: il Rulebook vero e proprio (ADL, perdita socializzata, emergency powers, conti dormienti) non ha un feed. Il debito #8 si restringe, non si chiude.


5. La Knowledge Base risponde a due domande aperte — e corregge due cose mie

L'operatore ha passato anche yield-generating-collateral-usde-buidl-and-more, che non documenta tetti né haircut ma rimanda alla Knowledge Base. Interrogata via API Zendesk (support.deribit.com/api/v2/help_center/articles/search.json), l'articolo giusto è «Cross collateral specifications» (aggiornato 2026-02-20).

(a) 🚨 Il costo del saldo negativo: 0,05% al GIORNO

«While the equity of a currency in an account remains negative, a collateral fee will be charged to that account. This fee is charged daily in the same currency as the negative balance (default = 0.05% per day). The fee is charged based on the amount of time the negative equity is held, down to a granularity of seconds.»

18,25% annuo, cioè 4,3× la resa USDE che si starebbe comprando tenendo meno USDC. Il 30/08 avevo scritto «Deribit lo finanzia a interesse» senza il numero — l'affermazione era giusta e vuota. Con il numero il criterio del cuscino di regolamento smette di essere prudenza e diventa aritmetica: scendere sotto il cuscino per tenere più USDE è 14 punti.

E il ribilanciamento automatico non salva: scatta solo oltre $1.000.000 assoluti o il 100% della cross equity (default tabulati), soglie che a $2k non si toccano mai. Non veniamo ribilanciati: sanguiniamo la fee. La cosa che sembrava un paracadute è, alla nostra taglia, esattamente l'assenza di un paracadute.

(b) 🚨 Haircut USDe: la fonte dice 5%, noi abbiamo registrato 10%

valuta haircut X:PM X:SM
BTC · ETH · USDC
USDT · USYC · BUIDL 2% 2%
PAXG 2,5% 5%
USDe 5% 5%
stETH 7,5% 7,5%
SOL 15%

config/live.json dice haircut: 0.10, e il diario del 26/08 lo dà per «verificato sul venue» senza lasciare traccia di come. L'articolo è anteriore a quella data, quindi non si sa quale delle due sia stale.

Non l'ho riparato (P12: fra due fonti che non concordano, una riparazione silenziosa è un'invenzione; M28: la contraddizione è informazione). Si tiene 0,10 per tre ragioni dichiarate: è il lato conservativo (sottostima il margine utilizzabile), non è sul percorso soldi (non entra nel sizing — lo usa solo il report di usde_watch), ed è già misurato che non morde a nessuna quota fino al 90%. Si chiude leggendo la pagina margini del conto, che è dove Deribit stesso dice di guardare.

(c) Un dato di lato che vale per il futuro

BUIDL ha haircut 2% — sarebbe stato il miglior collaterale a rendimento del listino (contro il 5% dell'USDe), se solo lo si potesse comprare. E stETH 7,5%, il peggiore: terza ragione 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.


6. La pagina margini arriva davvero — e la seconda cosa che dice vale più della prima

Lo screenshot era su Wasabi (rclone remote wasabi:, bucket adp-work, cartella _scambio), non sulla VPS: per questo il percorso non esisteva. Scaricato e letto. Riconciliazione riproducibile in scripts/research/r0831_margini_conto.py (N11).

(a) Haircut = 5%. La nostra config aveva torto.

La pagina non espone l'haircut come numero: si ricava per differenza, perché il modello CROSS conta l'USDE scontato e il SEGREGATO non lo conta affatto.

S:SM (attivo)   USDC Available 1,400.86   ·  USDC equity 1,412.28  IM 11.55 = 1,400.73  (scarto $0.13)
X:SM            CROSS Available 2,011.73
contributo USDE al cross = 2,011.73  (1,412.28 + 0.20  11.55) = $610.81  su $643.05 di valore
  → haircut implicito 5,0137%
     ipotesi  5% (KB)     → atteso $610.89   scarto $ 0.09   ✅
     ipotesi 10% (nostra) → atteso $578.74   scarto $32.06   ❌

config/live.json passa da 0.10 a 0.05. Il 26/08 il 10% fu registrato come «verificato sul venue» senza lasciare traccia di come, e non lo era. Una nota di provenienza che dice «verificato» senza dire con quale lettura non è provenienza: è la stessa parola usata come garanzia.

(b) 🚨 Il conto non è cross-collateral. È Segregated: Standard Margin.

Lo dice la schermata in cima — Current status: Segregated: Standard Margin — e la tabella del modello attivo elenca BTC, ETH, USDC. L'USDE non c'è.

L'USDE non fa margine per i perp USDC-settled del book, e l'haircut oggi non si applica affatto. Il che spiega, a posteriori e in modo pulito, perché la misura di stamattina trovava $0,0000 accantonati: non stavo guardando nel secchio sbagliato, stavo cercando un parametro che sul nostro conto non è in vigore.

NON MORDE, e va detto subito per non allarmare: al massimo lordo del libro (1,0x ≈ $2.056 di nozionale) l'IM sarebbe ~$41 contro $1.400 di USDC disponibile — 34× di copertura. Nessuna decisione operativa cambia oggi.

Ma la premessa scritta in CLAUDE.md era falsa, e il modo in cui era falsa è istruttivo. Diceva: «l'equity del book è il TOTALE cross-collateral». Sono due cose diverse messe sotto un nome solo:

  • come ricchezza, sommare USDC+USDE è giusto — ed era il punto della riparazione del 26/08, che evitò il falso «USCITA DI FONDI 24%» e una vendita indesiderata;
  • come capacità di margine, è sbagliato: nel modello attivo l'USDE vale zero.

Finché il margine non morde le due coincidono nell'uso, e infatti non è mai emerso. Un errore che non ha conseguenze finché una terza cosa resta vera è un debito, non un'assoluzione. Corretto in CLAUDE.md, e corretta anche la riga di usde_watch che stampava «margine utilizzabile ~$2.013 (haircut 10%)»: era falsa due volte insieme.

(c) Come cambia il modo di pensare alla quota USDE

Non è «collaterale diversificato»: è cassa messa da parte a rendimento, fuori dal sistema di margine. Il che rende il tetto del venue al ~31,2% meno una limitazione e più un caso fortunato — tiene automaticamente dentro al 31% la parte di conto che non lavora come margine.

E apre una decisione dell'operatore, non mia: passare a X:SM aggiungerebbe $610,87 di margine utilizzabile, ma porta con sé la meccanica cross — collateral fee 0,05%/giorno sul saldo negativo e ribilanciamento automatico. Oggi non serve (34× di copertura); servirebbe solo a leve che non sono autorizzate.

📌 Ipotesi nuova sul tetto del ~31,2%, non verificata: potrebbe dipendere proprio dal modello segregato. Si saprebbe passando a X:SM e ri-sondando — un esperimento che ora ha un senso, dove prima non si sapeva nemmeno cosa variare.