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:
+2
-1
@@ -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) ->
|
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,
|
segnale 230m all'ultima barra chiusa, per l'esecuzione reale. Default False (feed certificato,
|
||||||
deterministico: dashboard/test). TP01 resta sul certificato (è giornaliero)."""
|
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)
|
sh = shadow_report(offline=offline, equity_override=equity_override)
|
||||||
equity = sh["equity"]
|
equity = sh["equity"]
|
||||||
# registra l'equity reale quando e' leggibile: e' cio' che rende sicuro il cap di
|
# 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)
|
net = book_net_target(tp_frac, sign, equity, cap, scala=scala)
|
||||||
cur = float(a_rec["position_usd"])
|
cur = float(a_rec["position_usd"])
|
||||||
mark = a_rec["mark"]
|
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:
|
if order:
|
||||||
orders.append(order)
|
orders.append(order)
|
||||||
assets.append(dict(
|
assets.append(dict(
|
||||||
|
|||||||
@@ -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()))
|
r = J.lettura(db, _voce(libro=lb, pnl=_pnl()))
|
||||||
riga = next(x for x in r if x["id"] == "leva")
|
riga = next(x for x in r if x["id"] == "leva")
|
||||||
assert "1.25x" in riga["testo"] and "margine 0.05x" in riga["testo"]
|
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
|
||||||
|
|||||||
Reference in New Issue
Block a user