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
This commit is contained in:
@@ -72,3 +72,34 @@ al cross-collateral: se la prima conversione fosse stata fatta a quota vera, l'e
|
||||
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).
|
||||
|
||||
Reference in New Issue
Block a user