cuscino_watch: riacquisto automatico di USDE con isteresi (la quota torna a bersaglio da sola) #7

Closed
opened 2026-09-10 13:57:07 +00:00 by Adriano · 1 comment
Owner

COSA: quarto stato ECCEDENTE in scripts/live/cuscino_watch.py — quando lo slack USDC supera cuscino x riacquisto_frac (0,40) si compra USDE fino alla stessa quota di ripristino della vendita (cuscino x (1+margine 0,20) => quota 0,64). Banda di isteresi [0 ; 0,40] x cuscino con bersaglio unico a 0,20: vendita sotto zero, acquisto sopra 0,40, entrambe verso 0,20. Soglie in config/live.json sezione usde (cuscino_preavviso_frac, cuscino_margine_frac, cuscino_riacquisto_frac), lette da src/live/usde.py: il sorvegliante le DERIVA (P1). quota_target 0,70 in config viene sostituito: a 0,70 lo slack e' zero per costruzione e ogni ora in perdita vende. Stesse guardie della vendita (execution_enabled, depeg_warn: non si compra una stable che sta scivolando, un tentativo ogni 6h, guardie di usde_convert). PERCHE': decisione dell'operatore 10/09 ('crea una strategia per riportarla a quota in autonomia'); chiude il ratchet verso il basso dichiarato in CLAUDE.md §5.17 e automatizza la regola di §1 'dopo un bonifico si rilancia usde_convert' (un versamento alza lo slack di 0,7 x importo e fa scattare il riacquisto da solo). Soglie dichiarate NON ottimizzate (M8): costo di un giro 6 bps sull'importo mosso ($0,2), oscillazione richiede +-$268 di equity USDC (~6% dell'equity, ~25% di mercato a leva 0,26x). CRITERIO DI FATTO: funzioni pure testate (4 stati, ordine delle soglie, scenario bonifico), --secco mostra il piano, CLAUDE.md §1/§5.17 aggiornati, revisione fable.

COSA: quarto stato ECCEDENTE in scripts/live/cuscino_watch.py — quando lo slack USDC supera cuscino x riacquisto_frac (0,40) si compra USDE fino alla stessa quota di ripristino della vendita (cuscino x (1+margine 0,20) => quota 0,64). Banda di isteresi [0 ; 0,40] x cuscino con bersaglio unico a 0,20: vendita sotto zero, acquisto sopra 0,40, entrambe verso 0,20. Soglie in config/live.json sezione usde (cuscino_preavviso_frac, cuscino_margine_frac, cuscino_riacquisto_frac), lette da src/live/usde.py: il sorvegliante le DERIVA (P1). quota_target 0,70 in config viene sostituito: a 0,70 lo slack e' zero per costruzione e ogni ora in perdita vende. Stesse guardie della vendita (execution_enabled, depeg_warn: non si compra una stable che sta scivolando, un tentativo ogni 6h, guardie di usde_convert). PERCHE': decisione dell'operatore 10/09 ('crea una strategia per riportarla a quota in autonomia'); chiude il ratchet verso il basso dichiarato in CLAUDE.md §5.17 e automatizza la regola di §1 'dopo un bonifico si rilancia usde_convert' (un versamento alza lo slack di 0,7 x importo e fa scattare il riacquisto da solo). Soglie dichiarate NON ottimizzate (M8): costo di un giro ~6 bps sull'importo mosso (~$0,2), oscillazione richiede +-$268 di equity USDC (~6% dell'equity, ~25% di mercato a leva 0,26x). CRITERIO DI FATTO: funzioni pure testate (4 stati, ordine delle soglie, scenario bonifico), --secco mostra il piano, CLAUDE.md §1/§5.17 aggiornati, revisione fable.
Adriano added the sviluppo label 2026-09-10 13:57:07 +00:00
Author
Owner

Soluzione

Commit 37d1565 (2026-09-10). scripts/live/cuscino_watch.py: quarto stato ECCEDENTE (slack > 0,40 x cuscino) che COMPRA USDE con usde_convert --quota q* --esegui, stesso bersaglio della vendita da SCOPERTO: q* = usde.quota_ripristino() = 1 - 0,30 x 1,20 = 0,64. Isteresi [0 ; 0,40] x cuscino con bersaglio unico a 0,20: per oscillare servono +-8,6% di equity USDC (~$380), un giro costa ~6 bps sull'importo mosso; un bonifico alza lo slack di 0,7 x importo e sopra ~9% dell'equity fa scattare il riacquisto da solo (automatizza la regola di §1 'dopo un bonifico si rilancia usde_convert'). Le tre frazioni stanno in config/live.json (usde.cuscino_preavviso_frac 0,10 · cuscino_margine_frac 0,20 · cuscino_riacquisto_frac 0,40) lette da src/live/usde.bande_cuscino() che verifica 0 < preavviso < margine < riacquisto; quota_target 0,70 tolto (slack zero per costruzione). Guardie condivise fra i versi (execution_enabled, depeg_warn in entrambi i versi, un tentativo ogni 6h; da ECCEDENTE dopo un fallimento ogni 24h). Trovato al primo giro vero: l'allerta PREAVVISO era andata persa per un '<' nudo in parse_mode HTML — escape nel sink notifier.notify (html.escape su titolo e valori, copre i 45 chiamanti), allerta_errore registrato nel record. Bande fuori ordine => BLIND con motivo. Revisione fable: loop numerico su usde_convert.piano (bonifico +$2.000, perdita -$50, conto tutto USDC): dopo ogni conversione lo stato e' OK, nessuna sequenza vendita->acquisto. Dichiarato in CLAUDE.md §5.17: 0,64 e' una derivazione dell'autore (margine 0,20), non la quota 0,70 decisa il 30/08 — da confermare dall'operatore. Test: tests/test_cuscino_watch.py (24), suite 1070.

**Soluzione** Commit 37d1565 (2026-09-10). scripts/live/cuscino_watch.py: quarto stato ECCEDENTE (slack > 0,40 x cuscino) che COMPRA USDE con usde_convert --quota q* --esegui, stesso bersaglio della vendita da SCOPERTO: q* = usde.quota_ripristino() = 1 - 0,30 x 1,20 = 0,64. Isteresi [0 ; 0,40] x cuscino con bersaglio unico a 0,20: per oscillare servono +-8,6% di equity USDC (~$380), un giro costa ~6 bps sull'importo mosso; un bonifico alza lo slack di 0,7 x importo e sopra ~9% dell'equity fa scattare il riacquisto da solo (automatizza la regola di §1 'dopo un bonifico si rilancia usde_convert'). Le tre frazioni stanno in config/live.json (usde.cuscino_preavviso_frac 0,10 · cuscino_margine_frac 0,20 · cuscino_riacquisto_frac 0,40) lette da src/live/usde.bande_cuscino() che verifica 0 < preavviso < margine < riacquisto; quota_target 0,70 tolto (slack zero per costruzione). Guardie condivise fra i versi (execution_enabled, depeg_warn in entrambi i versi, un tentativo ogni 6h; da ECCEDENTE dopo un fallimento ogni 24h). Trovato al primo giro vero: l'allerta PREAVVISO era andata persa per un '<' nudo in parse_mode HTML — escape nel sink notifier.notify (html.escape su titolo e valori, copre i 45 chiamanti), allerta_errore registrato nel record. Bande fuori ordine => BLIND con motivo. Revisione fable: loop numerico su usde_convert.piano (bonifico +$2.000, perdita -$50, conto tutto USDC): dopo ogni conversione lo stato e' OK, nessuna sequenza vendita->acquisto. Dichiarato in CLAUDE.md §5.17: 0,64 e' una derivazione dell'autore (margine 0,20), non la quota 0,70 decisa il 30/08 — da confermare dall'operatore. Test: tests/test_cuscino_watch.py (24), suite 1070.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Adriano/PythagorasGoal#7