- generate_signals now evaluates sell before buy; buy candidates with a same-cycle sell signal are skipped (resolves silent overwrite of state.signals[ticker]). - Added test_sell_signal_triggers_on_anomaly_path covering _try_anomaly path (previously 0% covered). - Fixed stale test comment referencing deprecated relative spread formula. - _check_buy_hard_gate uses dict.get(..., 0) for defense against partial upstream state. - _compute_buy_confidence clamps screener_norm to >= 0 for future Top-N changes.
7.8 KiB
7.8 KiB