usde_watch: il lettore dei trade spot satura a 50 ordini e attribuisce l'eccesso al reward #2

Closed
opened 2026-09-10 12:54:32 +00:00 by Adriano · 1 comment
Owner

scripts/live/usde_watch.py:185 — _trades_spot_da chiama trade_history(USDE_USDC, limit=50). Con piu' di 50 ordini spot fra due letture (06/09: 54 ordini della sonda r0906) i primi restano fuori dalla somma e la differenza finisce in reward_stimato: la riga del 07/09 12:35Z registra reward 400,08 USDE con n_trades=50 (trades 2.034 contro 2.434 entrati). rendimento() esclude la riga (con_trade=True), quindi l'APR non e' inquinato (3,85% su 13 finestre, identico con e senza); la riga del log e' sbagliata e chi la legge vede un reward falso. Trovato dalla revisione settimanale del 09/09, verificato il 10/09.

scripts/live/usde_watch.py:185 — _trades_spot_da chiama trade_history(USDE_USDC, limit=50). Con piu' di 50 ordini spot fra due letture (06/09: 54 ordini della sonda r0906) i primi restano fuori dalla somma e la differenza finisce in reward_stimato: la riga del 07/09 12:35Z registra reward 400,08 USDE con n_trades=50 (trades 2.034 contro 2.434 entrati). rendimento() esclude la riga (con_trade=True), quindi l'APR non e' inquinato (3,85% su 13 finestre, identico con e senza); la riga del log e' sbagliata e chi la legge vede un reward falso. Trovato dalla revisione settimanale del 09/09, verificato il 10/09.
Adriano added the bug label 2026-09-10 12:54:32 +00:00
Author
Owner

Soluzione

Commit f82f685 (2026-09-10). scripts/live/usde_watch.py: TRADE_LIMIT=1000 (count max di Deribit per get_user_trades_by_instrument) e nuova funzione pura trade_copertura(n_righe, prev_ts, now): la somma dei trade e' NON leggibile (None, con trades_motivo nel record) se la lista e' lunga esattamente il limite (troncata) o se l'ultima lettura e' piu' vecchia della finestra di 24h che il gateway espone (Deribit senza historical restituisce solo le ultime 24h — documentato e misurato), tolleranza 5 min per il cron delle 12:35. Con somma None analizza() non attribuisce il reward (P12). La riga del 07/09 12:35Z in data/live/usde_watch.jsonl e' corretta in loco (54 ordini = 2434 USDE dal registro usde_convert.jsonl, reward 0,080934) con campo correzione e originale conservato; copia pre-fix in usde_watch.jsonl.pre_fix_20260910. Tasso invariato (la riga era esclusa per con_trade): 3,94% su 14 finestre. Test: +5 in tests/test_usde_watch.py, controllo positivo a 54 ordini. Revisione fable: buco di <=5 min dentro la tolleranza dichiarato (D5).

**Soluzione** Commit f82f685 (2026-09-10). scripts/live/usde_watch.py: TRADE_LIMIT=1000 (count max di Deribit per get_user_trades_by_instrument) e nuova funzione pura trade_copertura(n_righe, prev_ts, now): la somma dei trade e' NON leggibile (None, con trades_motivo nel record) se la lista e' lunga esattamente il limite (troncata) o se l'ultima lettura e' piu' vecchia della finestra di 24h che il gateway espone (Deribit senza historical restituisce solo le ultime 24h — documentato e misurato), tolleranza 5 min per il cron delle 12:35. Con somma None analizza() non attribuisce il reward (P12). La riga del 07/09 12:35Z in data/live/usde_watch.jsonl e' corretta in loco (54 ordini = 2434 USDE dal registro usde_convert.jsonl, reward 0,080934) con campo correzione e originale conservato; copia pre-fix in usde_watch.jsonl.pre_fix_20260910. Tasso invariato (la riga era esclusa per con_trade): 3,94% su 14 finestre. Test: +5 in tests/test_usde_watch.py, controllo positivo a 54 ordini. Revisione fable: buco di <=5 min dentro la tolleranza dichiarato (D5).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Adriano/PythagorasGoal#2