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>
17 KiB
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 daconfig/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_summaryper 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, nientemaintenance_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:
- Quale colonna leggere. La tabella KB ha
Haircut (X:PM)eHaircut (X:SM). Il conto è X:SM, quindi vale la seconda — che per USDe dice 5%, come la PM. La divergenza col nostro0.10resta quindi intatta, ma ora si sa con certezza quale numero ufficiale la contraddice, invece di doverne scegliere uno fra due colonne. - 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 = 50di 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.