trades.db: ora, prezzo e pos_after veri dei fill dal jsonl #40
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
COSA: trades.db prende i fill da cron_book.log (ts = inizio giro, prezzo a 1 decimale, pos_after NULL). book_executions.jsonl ha dal 2026-08-24T01:07Z ts_utc del fill, prezzo pieno e pos_after. sync arricchisce le righe cron_log col record jsonl corrispondente.
PERCHE: regola 'l'ora e' quella dell'evento' (CLAUDE.md globale); round-trip calcolati su prezzi arrotondati.
NON E': l'unificazione dei parser (TradingBook#11, alla promozione).
FATTO QUANDO: sync abbinato per asset/side/qty/finestra di giro, idempotente, round-trip ricalcolati, test.
ANALISI (passo 1, Opus, 27/09/2026)
ANALISI U12 — gitea:Adriano/PythagorasGoal#39 (bug) + #40 (sviluppo)
CARTELLA: /home/adriano/lavoro/PG-u12 RAMO: lavoro/goldrake-u12 (da main
d34b0a8). Contiene la copia locale dei dati in data/.#39 — pos_after sempre None in book_executions.jsonl (regressione di #23)
FILE: scripts/live/book_execute.py:88-106 (_registra_fill) e ~:325-345 (_run, ramo rebalance)
MODIFICA:
pos_after: float | None = Nonee lo passa a log_event, al posto del None fisso. Aggiornare il docstring.fills = trader.rebalance_signed(...)): leggere newpos SUBITO, in un try.for f in fills: _registra_fill(..., pos_after=...).TEST: in tests/test_book_u2.py, seguendo i trader finti esistenti.
#40 — trades.db arricchito dal jsonl
FILE: scripts/live/trades_db.py::sync, src/live/tradesdb.py
PRIMA leggi come si calcola fill_id (tradesdb.py
:164) e l'INSERT (:338, ON CONFLICT DO NOTHING). Se fill_id dipende da ts_utc o price, l'arricchimento NON deve cambiare fill_id: si aggiornano solo le colonne, la chiave resta.MODIFICA:
arricchitieambigui; in verbose una riga di stampa.VERIFICA SUI DATI (sola lettura, sulla COPIA in data/ della tua cartella, MAI /opt/docker):
TEST: tests/test_tradesdb_arricchisci.py con DB in tmp_path.
NON TOCCARE: il parser di cron_book.log (TradingBook#11), book_execute oltre il punto #39, i dati in /opt/docker/PythagorasGoal.
Suite: SOLO test mirati (tests/test_book_u2.py tests/test_book_live.py tests/test_tradesdb*.py tests/test_trades_db_sync.py tests/test_tradesdb_arricchisci.py). La suite completa la lancia il coordinatore: la VPS ha 7 GB, e con piu' suite in parallelo e' gia' andata in OOM.
COMMIT: "book_execute: pos_after di nuovo nel jsonl, letta subito dopo il rebalance in un try (#39)" e "tradesdb: fill cron_log arricchiti con ora, prezzo e pos_after dal jsonl (#40)".
Soluzione
tradesdb.arricchisci_da_jsonl: righe cron_log dal CUTOFF_TS_VERO abbinate per asset/side/qty e finestra 15 min al record jsonl -> ts_utc, price, pos_after veri, ts_source='jsonl'; ambigui non toccati; idempotente; round-trip ricalcolati dopo. Chiamata da trades_db sync. Produzione: 147 arricchiti, 0 ambigui (backup data/live/trades.db.pre-40-*). Commit bebfa63; porting in TB ed72f92.