usde: il tetto e' una FRAZIONE dell'equity (~31,2%), non un livello — e ora e' in config
Fonte: articolo ufficiale Deribit "Yield/reward bearing coins" (WebFetch lo prende
403, si legge dall'API Help Center in JSON). Tre correzioni alle conclusioni di
ieri.
1) L'ITALIA e' nella lista delle giurisdizioni escluse dai reward USDC. Lo zero
misurato e' confermato dalla fonte, ma la mia ipotesi MiCA era SBAGLIATA: la
lista contiene Canada e Giappone, non e' il perimetro MiCA. E' policy di
giurisdizione Deribit. M27: una fonte normativa si verifica, non si deduce.
2) La finestra di pagamento USDC e' di DUE SETTIMANE ("within the first two
weeks of the following month"), non tre giorni. Avevo verificato su 8/14 e 3/14
giorni. Rifatto sulle finestre vere: LUGLIO conclusivo (atteso $1,72 contro
un'escursione TOTALE dell'equity di $0,48 in 1-16/08, zero scalini compatibili),
GIUGNO no (il libro opera da meta' mese, rumore della taglia del segnale). La
conclusione non cambia, ma l'evidenza e' UNA finestra piu' la lista ufficiale,
non due: il "172x" del 30/08 era sovra-affermato.
3) IL TETTO NON E' UN LIVELLO, E' UNA FRAZIONE. L'articolo documenta un Cap
ETHENA che diluisce il TASSO a livello di exchange e nessun limite sulle
quantita' detenibili: il muro non aveva base documentale e andava ri-sondato.
Fatto il 31/08 (giorno UTC nuovo -> non e' un limite giornaliero): ieri si
tornava a 644,18, oggi no, con l'equity scesa di $8.
30/08 tetto [644,18 · 645,18) equity $2.063,79 = 31,21-31,26%
31/08 tetto [643,18 · 644,18) equity $2.055,56 = 31,29-31,34%
0,05pp di scarto, dentro il rumore dell'equity (+-$2-8/ora). Candidato pulito
5/16 = 31,25%, ma a questa risoluzione non si distingue da una regola sul
collaterale scontato dell'haircut (~29%): si cita la banda (M25).
=> Il tetto SCALA col conto: la quota resta ~31%, il valore in dollari cresce
col capitale, il 70% non e' raggiungibile ne' ora ne' mai. E, essendo pinnati
al tetto, il rischio emittente resta una frazione COSTANTE del conto.
Cablato (rispondeva a "dove e' scritto il valore del tetto": in tre note di
testo e in nessun posto che il codice leggesse, tanto che usde_convert --quota
0.70 dichiarava "piano valido" per un ordine che il venue rifiuta):
- config/live.json usde.venue_cap_frac 0.312 + venue_cap_misurato
- src/live/usde.py lo porta nei default (unica autorita', P1)
- usde_convert.piano() rifiuta il bersaglio sopra il tetto PRIMA di sparare
e stampa il massimo raggiungibile. Verificato su entrambi i rami.
Anche: l'USDe ha un fee Deribit del 5% mai nominato prima. Il nostro misurato
(~4,5%/anno) e' gia' netto: e' l'unico numero da citare.
Stato: USDE 643,175691 (31,29%, al tetto), USDC $1.412,40, totale $2.055,57.
Suite: 795 passati.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
+3
-1
@@ -10,11 +10,13 @@
|
||||
"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. 🚨 TETTO DEL VENUE SULL'USDE, misurato il 2026-08-30 e non documentato da nessuna parte: il conto si e' fermato a 644.175691 USDE (31,21% del totale) e ogni acquisto oltre quel livello viene rifiutato con `not_enough_funds_in_currency` AVENDO $1.408 disponibili. Provato a saldo neutro, quattro ordini di fila: BUY 20 rifiutato, SELL 20 accettato, BUY 20 riaccettato, BUY 5 rifiutato — e' un TETTO SUL LIVELLO, non un problema di taglia, prezzo, liquidita' o cadenza. La formula del tetto non e' leggibile da qui (`get_currencies` non espone un cap; il gateway non espone ne' il book ne' available_withdrawal_funds). 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 verificato sul venue il 26/08 (USDC 0%): il 90% dell'USDE fa margine.",
|
||||
"_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 verificato sul venue il 26/08 (USDC 0%): il 90% dell'USDE fa margine.",
|
||||
"usde": {
|
||||
"index_name": "usde_usdc",
|
||||
"haircut": 0.1,
|
||||
"quota_target": 0.7,
|
||||
"venue_cap_frac": 0.312,
|
||||
"venue_cap_misurato": "2026-08-31",
|
||||
"quota_max_frac": 0.5,
|
||||
"depeg_warn": 0.99,
|
||||
"depeg_crit": 0.95
|
||||
|
||||
@@ -211,3 +211,101 @@ sporca si riconosce invece di essere mediata dentro. Etichetta PULITA le finestr
|
||||
flat, dove il Δ USDC **è** l'interesse, e ne stampa l'APR implicita accanto a quella attesa.
|
||||
Serve a sorvegliare che lo zero resti zero (o che cambi, se l'idoneità cambia): l'inizio di
|
||||
settembre è il prossimo confine di mese, ed è già strumentato.
|
||||
|
||||
---
|
||||
|
||||
# APPENDICE 2 (2026-08-31) — la fonte ufficiale: **due correzioni alle mie conclusioni**
|
||||
|
||||
L'operatore ha passato l'articolo `support.deribit.com/.../Yield-reward-bearing-coins`. WebFetch lo
|
||||
prende 403 (Cloudflare); si legge dall'**API Help Center** in JSON:
|
||||
`support.deribit.com/api/v2/help_center/en-us/articles/31424939199261.json` → HTTP 200.
|
||||
*Aggiornato dal venue il 2026-08-20.* Contiene tre cose che il progetto non sapeva.
|
||||
|
||||
## 1. L'ITALIA è nella lista degli esclusi dai reward USDC — e non è MiCA
|
||||
|
||||
> «The following jurisdictions are **not eligible** to receive USDC rewards: Austria, Belarus,
|
||||
> Belgium, Bulgaria, Canada, […] **Italy**, Japan, […]»
|
||||
|
||||
Lo zero misurato è **confermato dalla fonte**. Ma l'ipotesi che avevo scritto — MiCA, USDC è un
|
||||
e-money token e USDe no — **è sbagliata**: la lista contiene Canada e Giappone, non è il perimetro
|
||||
MiCA. È policy di giurisdizione di Deribit. *M27: una fonte normativa citata si verifica come un
|
||||
numero — e io l'avevo dedotta invece di leggerla.*
|
||||
|
||||
## 2. La finestra di pagamento è di DUE SETTIMANE, non di tre giorni — il «172×» era sovra-affermato
|
||||
|
||||
> «The monthly USDC rewards payment is then made **within the first two weeks** of the following
|
||||
> month.»
|
||||
|
||||
Avevo verificato su 29/06→08/07 e 31/07→03/08: **8 giorni su 14 e 3 su 14**. Rifatto sulle finestre
|
||||
vere:
|
||||
|
||||
| accredito | finestra vera | letture | escursione TOTALE equity | scalini ≥70% dell'atteso | esito |
|
||||
|---|---|---|---|---|---|
|
||||
| giugno ($0,45) | 01→16/07 | 374 | **$2,74** | 7 | ❌ **NON conclusivo** |
|
||||
| luglio ($1,72) | 01→16/08 | 382 | **$0,48** | **0** | ✅ **conclusivo** |
|
||||
|
||||
Luglio regge da solo: il credito atteso è **3,6× l'intera escursione dell'equity** su due settimane.
|
||||
Giugno no — il libro ha iniziato a operare a metà mese e il rumore ha la taglia del segnale.
|
||||
⇒ La conclusione **non cambia** (una finestra conclusiva + la lista ufficiale), ma l'evidenza è
|
||||
**una** finestra, non due. *Avevo citato la sotto-finestra piatta e chiamato «zero misurato» ciò che
|
||||
la finestra completa non copriva: scegliere la sotto-finestra che fa vedere lo zero è la stessa
|
||||
mossa che il progetto vieta a un backtest.*
|
||||
|
||||
## 3. Il tetto NON è un livello: è una FRAZIONE dell'equity, e scala col conto
|
||||
|
||||
L'articolo documenta un **Cap ETHENA** che diluisce il **tasso** a livello di exchange —
|
||||
`User APR = min(min_exchange_USDe_balance, Ethena Cap) / min_exchange_USDe_balance × Ethena APR` —
|
||||
e **nessun limite sulle quantità detenibili da un conto**. Quindi il muro non aveva base
|
||||
documentale, e andava ri-sondato. Fatto (31/08, giorno UTC nuovo → non è un limite giornaliero):
|
||||
|
||||
```
|
||||
BUY 5 -> not_enough_funds_in_currency USDE 644.175691 (muro ancora li')
|
||||
SELL 10 -> OK USDE 634.175691
|
||||
BUY 10 -> not_enough_funds_in_currency USDE 634.175691 <-- ieri 644,18 passava!
|
||||
BUY 5 -> OK USDE 639.175691
|
||||
BUY 3 -> OK USDE 642.175691
|
||||
BUY 1 -> OK USDE 643.175691
|
||||
BUY 1 -> not_enough_funds_in_currency USDE 643.175691
|
||||
```
|
||||
|
||||
**Ieri si tornava a 644,18 e oggi no**, con l'equity scesa di $8. Il tetto si è mosso con lei:
|
||||
|
||||
| | tetto | equity | frazione |
|
||||
|---|---|---|---|
|
||||
| 30/08 | [644,18 · 645,18) | $2.063,79 | 31,21% – 31,26% |
|
||||
| 31/08 | [643,18 · 644,18) | $2.055,56 | 31,29% – 31,34% |
|
||||
|
||||
I bracket distano **0,05pp**, dentro il rumore dell'equity (±$2-8/ora). Candidato pulito **5/16 =
|
||||
31,25%**, ma con questa risoluzione non si distingue da una regola sul collaterale scontato
|
||||
dell'haircut (~29%): **non si sceglie quella che conviene, si cita la banda** (M25).
|
||||
|
||||
⇒ **Il tetto SCALA col conto.** La quota resta ~31% per sempre, il valore in dollari cresce col
|
||||
capitale, e il 70% non è raggiungibile né ora né mai. Conseguenza che ieri non avevo visto: essendo
|
||||
pinnati al tetto, **il rischio emittente resta una frazione COSTANTE del conto** — non si diluisce
|
||||
crescendo, a meno di vendere apposta.
|
||||
|
||||
## 4. E l'USDe ha un fee del 5% che non avevamo mai nominato
|
||||
|
||||
> «Deribit Fee: A percentage deducted from the reward before distribution (**currently 5%**)»
|
||||
> · reward su **minima equity 00:00→24:00 UTC**, distribuiti **~12:00 UTC**, «visible inside
|
||||
> Transaction Log» (che il gateway non espone: da lì il metodo per delta).
|
||||
|
||||
Il nostro **misurato** (~4,5%/anno) è già netto del fee: è quello che arriva sul conto, ed è
|
||||
l'unico numero da citare. La `apr` di `get_currencies` (4,1071%) è un listino, non un incasso —
|
||||
la stessa confusione che mi era costata la §6.
|
||||
|
||||
## 5. Cablato, così il tetto smette di vivere in prosa
|
||||
|
||||
Alla domanda dell'operatore «dove è scritto il valore del tetto» la risposta era: **in tre note di
|
||||
testo e in nessun posto che il codice legga**, tanto che `usde_convert --quota 0.70` dichiarava
|
||||
«piano valido» per un ordine che il venue avrebbe rifiutato. Ora:
|
||||
|
||||
- `config/live.json` → `usde.venue_cap_frac` **0.312** (bordo BASSO dei bracket: fa fallire il
|
||||
piano *prima* dell'ordine invece che dopo il rifiuto) + `venue_cap_misurato` con la data;
|
||||
- `src/live/usde.py` lo porta nei default — unica autorità, come tutto il resto della sezione (P1);
|
||||
- `usde_convert.piano()` rifiuta il bersaglio sopra il tetto e stampa il massimo raggiungibile.
|
||||
Verificato: `--quota 0.70` → *«TETTO DEL VENUE: bersaglio $1.438,90 sopra $641,34 (31,2%
|
||||
dell'equity, misurato 2026-08-31)»*, nessun ordine inviato.
|
||||
|
||||
**Stato finale**: USDE **643,175691** (quota **31,29%**, cioè al tetto), USDC $1.412,40,
|
||||
totale $2.055,57.
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
# Giornale di bordo — 2026-08-30
|
||||
|
||||
*Scritto 2026-08-31T00:36:38+00:00. Numeri misurati; nessuna interpretazione automatica.*
|
||||
|
||||
## Mercato
|
||||
|
||||
| | chiusura | 1g | 7g | 30g | RV30 ann. | TSMOM 30/90/180 | DVOL |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| **BTC** | $77,702.00 | -0.69% | -0.06% | +23.66% | 42.3% | ↑ ↑ ↑ (3/3 su) | 37.0 (15° pctl 1a) |
|
||||
| **ETH** | $2,417.45 | -1.66% | -1.89% | +29.87% | 68.1% | ↑ ↑ ↑ (3/3 su) | 51.8 (20° pctl 1a) |
|
||||
|
||||
## Libro
|
||||
|
||||
Equity **$2,047.39** · nozionale lordo $553 · leva lorda 0.27x · barra dati 2026-08-30 · 24 giri
|
||||
|
||||
| | TP01 | SKH01 | target | posizione | azione |
|
||||
|---|---|---|---|---|---|
|
||||
| **BTC** | +0.463 | flat | $+355 | $+348 | BUY $+8 |
|
||||
| **ETH** | +0.278 | flat | $+214 | $+205 | BUY $+9 |
|
||||
|
||||
## P&L
|
||||
|
||||
- giorno: **$-9.48** di equity (24 letture)
|
||||
- realizzato: -0.08 netto su 2 round-trip chiusi · 5 fill · fee 0.0164
|
||||
- cumulato dall'arming: **$+1,449.33** di equity — di cui $+1,399.39 versati/prelevati -> trading **$+49.94**
|
||||
|
||||
## Salute
|
||||
|
||||
- giri di `book_execute`: 24/24
|
||||
- eta' feed SKH all'ultimo giro: 0 min
|
||||
|
||||
## Lettura
|
||||
|
||||
*Generata da regole dichiarate in `src/live/journal.py` — combina i numeri qui sopra e nient'altro. L'id fra parentesi quadre dice quale regola ha parlato. Non e' un giudizio: quello sta nella Nota.*
|
||||
|
||||
- `[stato]` A mercato su BTC $+348 (TP01 +0.463, SKH01 flat) e ETH $+205 (TP01 +0.278, SKH01 flat).
|
||||
- `[leva]` Leva lorda **0.27x** su un tetto di 1.00x (`max_notional_per_asset_frac` 0.50 x 2 asset, letto da `config/live.json`): margine 0.73x.
|
||||
- `[pnl]` Equity $-9.48 con 5 fill e 2 round-trip chiusi (realizzato $-0.08 netto).
|
||||
- `[drawdown]` 📌 Equity **-1.26%** sotto il picco ($2,073.59). ⚠️ e' un DD su letture ORARIE, non sul minimo intra-giorno.
|
||||
- `[vol]` BTC: implicita 37.0 contro realizzata 30g 42.3 (sotto); DVOL al 15° pctl di un anno; IV-rank espandente 0.06 sotto la soglia 0.30 del gate di VRP01 (sleeve fermo).
|
||||
- `[vol]` ETH: implicita 51.8 contro realizzata 30g 68.1 (sotto); DVOL al 20° pctl di un anno; IV-rank espandente 0.13 sotto la soglia 0.30 del gate di VRP01 (sleeve fermo).
|
||||
- `[evidenza]` 📌 Campione a oggi: **68 giorni, 26 round-trip**. A questa taglia il P&L non distingue l'edge dalla fortuna — il criterio di morte del libro (`edge_watch`) lavora su una finestra di 36 mesi.
|
||||
|
||||
## Analisi (agente)
|
||||
|
||||
*Scritta da `claude-opus-5` il 2026-08-31T00:37:31+00:00. Prosa di un modello: puo' sbagliare, e non e' una misura. Controllo sui numeri: **ok**.*
|
||||
|
||||
Il fatto nuovo non è la perdita ma la sua composizione: $-9.48 di equity contro $-0.08 di realizzato su 2 round-trip. Quasi tutto è mark-to-market su due long in una giornata con BTC -0.69% ed ETH -1.66%; una lettura altrettanto compatibile è che il libro stia semplicemente respirando col beta dei due asset, senza che il segnale abbia detto nulla. È il terzo segno meno da quando l'elenco comincia il 20/08, dopo il 22/08 ($-9.00) e il 28/08 ($-17.87). Insolito è invece il conto dei fill: cinque, con fee 0.0164, per spostare $+8 su BTC e $+9 su ETH, contro l'uno o due dei giorni scorsi. Vale un'occhiata umana a quale giro li abbia generati.
|
||||
|
||||
La posizione ETH scende da $+216 a $+205 mentre BTC sale da $+344 a $+348: se a muoverla sia il segnale TP01 o il prezzo non è separabile da questa pagina.
|
||||
|
||||
L'anomalia di mercato sta nella vol: +23.66% a 30 giorni su BTC e +29.87% su ETH, con DVOL al 15° e al 20° percentile dell'anno e implicita sotto la realizzata su entrambi. Il rally è arrivato senza che le opzioni lo prezzassero.
|
||||
|
||||
Il trading resta $+49.94 su 68 giorni e 26 round-trip: troppo poco per essere altro che rumore.
|
||||
|
||||
## Nota
|
||||
|
||||
*(vuota — campo dell'operatore)*
|
||||
@@ -16,6 +16,12 @@ LE GUARDIE (tutte BLOCCANTI, tutte dichiarate qui):
|
||||
0.98 e' esattamente il momento in cui NON si compra, e uno a 1.02 non esiste (si clampa a 1.0).
|
||||
* quota bersaglio in [0, QUOTA_HARD_MAX] — il gate USDE-01 dice "mai 100%: R1 emittente non
|
||||
recuperabile". Il tetto e' HARD e non si passa da riga di comando.
|
||||
* TETTO DEL VENUE (`usde.venue_cap_frac`). Deribit rifiuta gli acquisti oltre una frazione
|
||||
dell'equity totale — ~31,2%, MISURATA il 30-31/08 e non documentata da nessuna parte, col
|
||||
messaggio fuorviante `not_enough_funds_in_currency`. E' una frazione, non un livello: fatta
|
||||
scendere l'equity di $8, il tetto e' sceso con lei. Senza questa guardia il piano si dichiara
|
||||
VALIDO e poi il venue lo rifiuta a raffica — che e' esattamente il giro di venti minuti costato
|
||||
il 30/08. Il valore vive in config, non qui (P1: il bersaglio si deriva, non si ridichiara).
|
||||
* CUSCINO DI REGOLAMENTO. Il P&L e il funding dei perp USDC-lineari si regolano in USDC, non nel
|
||||
collaterale: a quota alta il saldo USDC va negativo alla prima perdita del libro e Deribit lo
|
||||
finanzia a interesse. Il margine NON e' il vincolo (r0830_usde_quota: l'haircut non morde fino
|
||||
@@ -140,6 +146,9 @@ def piano(eq_usdc: float, eq_usde: float, px: float, quota_target: float,
|
||||
# dal lato del cuscino di regolamento. Sul lato vendita il difetto va nello stesso verso.
|
||||
amount = float(math.floor(abs(delta_usd) / (px_ord or px)))
|
||||
|
||||
cfg = U.cfg()
|
||||
cap_frac = float(cfg.get("venue_cap_frac") or 0)
|
||||
cap_usd = cap_frac * equity_tot if cap_frac else None
|
||||
cuscino, come = cuscino_richiesto_usd(equity_tot)
|
||||
usdc_dopo = eq_usdc - delta_usd
|
||||
motivi = []
|
||||
@@ -156,10 +165,16 @@ def piano(eq_usdc: float, eq_usde: float, px: float, quota_target: float,
|
||||
motivi.append(f"gia' a bersaglio ({quota_ora:.1%} vs {quota_target:.0%}, toll {TOLL:.1%})")
|
||||
if abs(delta_usd) < MIN_ORDER_USD:
|
||||
motivi.append(f"delta ${abs(delta_usd):,.2f} sotto il minimo ${MIN_ORDER_USD:,.2f}")
|
||||
if cap_usd is not None and val_target > cap_usd + EPS_CUSCINO:
|
||||
motivi.append(
|
||||
f"TETTO DEL VENUE: bersaglio ${val_target:,.2f} sopra ${cap_usd:,.2f} "
|
||||
f"({cap_frac:.1%} dell'equity, misurato {cfg.get('venue_cap_misurato')}). "
|
||||
f"Massimo raggiungibile: quota {cap_frac:.1%}")
|
||||
if usdc_dopo < cuscino - EPS_CUSCINO:
|
||||
motivi.append(f"cuscino di regolamento: USDC dopo ${usdc_dopo:,.2f} < ${cuscino:,.2f} richiesti ({come})")
|
||||
|
||||
return {"quota_ora": quota_ora, "quota_target": quota_target, "val_usde": val_usde,
|
||||
return {"cap_usd": cap_usd, "cap_frac": cap_frac,
|
||||
"quota_ora": quota_ora, "quota_target": quota_target, "val_usde": val_usde,
|
||||
"equity_tot": equity_tot, "delta_usd": delta_usd, "side": side, "amount": amount,
|
||||
"px": px, "px_ordine": px_ord, "usdc_dopo": usdc_dopo, "cuscino": cuscino,
|
||||
"cuscino_come": come, "ok": not motivi, "motivi": motivi}
|
||||
@@ -201,7 +216,8 @@ def main() -> int:
|
||||
f" -> ordine @ {p['px_ordine']}, banda [{PX_MIN}, {PX_MAX}]")
|
||||
print(f" equity : USDC ${eq_usdc:,.2f} + USDE {eq_usde:,.4f} (${val_usde:,.2f})"
|
||||
f" = ${equity_tot:,.2f}")
|
||||
print(f" quota : {p['quota_ora']:.1%} -> {p['quota_target']:.0%}")
|
||||
print(f" quota : {p['quota_ora']:.1%} -> {p['quota_target']:.0%}"
|
||||
+ (f" · tetto venue {p['cap_frac']:.1%} = ${p['cap_usd']:,.2f}" if p.get("cap_usd") else ""))
|
||||
print(f" ordine : {p['side'].upper()} {p['amount']:,.2f} USDE_USDC @ limit {p['px_ordine']:.4f}"
|
||||
f" (${abs(p['delta_usd']):,.2f})")
|
||||
slack = p["usdc_dopo"] - p["cuscino"]
|
||||
|
||||
@@ -32,6 +32,8 @@ _DEFAULTS = {
|
||||
"index_name": "usde_usdc",
|
||||
"haircut": 0.10,
|
||||
"quota_max_frac": 0.50,
|
||||
"venue_cap_frac": 0.312, # tetto MISURATO del venue sulla quota USDE (non documentato)
|
||||
"venue_cap_misurato": "2026-08-31",
|
||||
"depeg_warn": 0.99,
|
||||
"depeg_crit": 0.95,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user