book: min_order_usd da config nel report (#35 A7)

book_report costruiva l'ordine con min_usd=5.0 fisso invece di leggere
min_order_usd da config/live.json, come fa gia' scripts/live/book_execute.py
(default 5.0 se assente). Oggi config = 5, nessun cambio di comportamento.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-27 15:17:42 +00:00
parent 52a905d497
commit 829ebc7f98
2 changed files with 14 additions and 1 deletions
+2 -1
View File
@@ -305,6 +305,7 @@ def book_report(offline: bool = False, equity_override: float | None = None,
live_feed: se True usa il feed 5m fresco effimero per SKH01 (src/live/livefeed.fresh_5m) ->
segnale 230m all'ultima barra chiusa, per l'esecuzione reale. Default False (feed certificato,
deterministico: dashboard/test). TP01 resta sul certificato (è giornaliero)."""
cfg = json.loads(CONFIG.read_text()) if CONFIG.exists() else {}
sh = shadow_report(offline=offline, equity_override=equity_override)
equity = sh["equity"]
# registra l'equity reale quando e' leggibile: e' cio' che rende sicuro il cap di
@@ -351,7 +352,7 @@ def book_report(offline: bool = False, equity_override: float | None = None,
net = book_net_target(tp_frac, sign, equity, cap, scala=scala)
cur = float(a_rec["position_usd"])
mark = a_rec["mark"]
order = build_book_order(inst, net, cur, mark, min_usd=5.0)
order = build_book_order(inst, net, cur, mark, min_usd=float(cfg.get("min_order_usd", 5.0)))
if order:
orders.append(order)
assets.append(dict(
+12
View File
@@ -126,3 +126,15 @@ def test_T6_regola_leva_margine_positivo_a_scala_1_25(db, monkeypatch, tmp_path)
r = J.lettura(db, _voce(libro=lb, pnl=_pnl()))
riga = next(x for x in r if x["id"] == "leva")
assert "1.25x" in riga["testo"] and "margine 0.05x" in riga["testo"]
# ---------------------------------------------------------------- A7 (#35): min_order_usd da config
def test_A7_build_book_order_rispetta_min_usd_di_config():
"""book_report legge min_order_usd da config (default 5.0 se assente, come book_execute.py).
Qui si verifica direttamente build_book_order, che e' il punto dove il valore viene usato:
con min_usd=20 un delta di $10 non genera ordine, con min_usd=5 (il default di oggi) si."""
order_stretto = B.build_book_order("BTC_USDC-PERPETUAL", 100.0, 90.0, 50000.0, min_usd=20.0)
assert order_stretto is None # |delta|=10 < 20: sotto soglia col tetto alzato
order_default = B.build_book_order("BTC_USDC-PERPETUAL", 100.0, 90.0, 50000.0, min_usd=5.0)
assert order_default is not None # |delta|=10 >= 5: lo stesso caso, oggi, genera ordine