From 489408cf21ea60ff67ecc0561b6d9ae8b75d66ab Mon Sep 17 00:00:00 2001 From: Thigazhezhilan J Date: Wed, 3 Jun 2026 10:13:25 +0530 Subject: [PATCH] fix: pass equity_symbol to execution so Alpha Shield uses JUNIORBEES _try_execute_sip_paper and _try_execute_sip_live were hardcoding NIFTYBEES.NS regardless of strategy. Added equity_symbol/gold_symbol params to try_execute_sip and propagated from runner using _EQUITY_SYM (_GOLD_SYM). Also fixed JUNIORBEES check in state accounting helpers. Co-Authored-By: Claude Sonnet 4.6 --- .../engine/execution.py | 62 +++++++++++-------- .../engine/runner.py | 2 + 2 files changed, 38 insertions(+), 26 deletions(-) diff --git a/indian_paper_trading_strategy/engine/execution.py b/indian_paper_trading_strategy/engine/execution.py index cc309ed..c41fd93 100644 --- a/indian_paper_trading_strategy/engine/execution.py +++ b/indian_paper_trading_strategy/engine/execution.py @@ -27,20 +27,20 @@ RECONCILIATION_INTERVAL = timedelta( RECONCILIATION_TIMEOUT = timedelta( seconds=int(os.getenv("ORDER_RECONCILIATION_TIMEOUT_SEC", "300")) ) - -def _as_float(value): - if hasattr(value, "item"): - try: - return float(value.item()) - except Exception: - pass - if hasattr(value, "iloc"): - try: - return float(value.iloc[-1]) - except Exception: - pass - return float(value) - + +def _as_float(value): + if hasattr(value, "item"): + try: + return float(value.item()) + except Exception: + pass + if hasattr(value, "iloc"): + try: + return float(value.iloc[-1]) + except Exception: + pass + return float(value) + def _local_tz(): return market_now().tzinfo @@ -88,7 +88,7 @@ def _apply_filled_orders_to_state(state, orders): if filled_qty <= 0: continue symbol = (order.get("symbol") or "").upper() - if symbol.startswith("NIFTYBEES"): + if symbol.startswith("NIFTYBEES") or symbol.startswith("JUNIORBEES"): nifty_filled += filled_qty elif symbol.startswith("GOLDBEES"): gold_filled += filled_qty @@ -284,7 +284,7 @@ def _apply_fill_delta_to_state(state: dict, order_details: dict): nifty_units = 0.0 gold_units = 0.0 - if symbol.startswith("NIFTYBEES"): + if symbol.startswith("NIFTYBEES") or symbol.startswith("JUNIORBEES"): state["nifty_units"] += delta_qty nifty_units = delta_qty elif symbol.startswith("GOLDBEES"): @@ -646,6 +646,8 @@ def _try_execute_sip_paper( gd_w, broker: Broker | None, mode: str | None, + equity_symbol: str = "NIFTYBEES.NS", + gold_symbol: str = "GOLDBEES.NS", ): def _op(cur, _conn): now_ts = _normalize_now(now) @@ -692,7 +694,7 @@ def _try_execute_sip_paper( orders = [ broker.place_order( - "NIFTYBEES.NS", + equity_symbol, "BUY", nifty_qty, sp_price_val, @@ -700,7 +702,7 @@ def _try_execute_sip_paper( logical_time=logical_time, ), broker.place_order( - "GOLDBEES.NS", + gold_symbol, "BUY", gold_qty, gd_price_val, @@ -864,6 +866,8 @@ def _try_execute_sip_live( gd_w, broker: Broker | None, mode: str | None, + equity_symbol: str = "NIFTYBEES.NS", + gold_symbol: str = "GOLDBEES.NS", ): now_ts = _normalize_now(now) if not market_open or broker is None: @@ -911,7 +915,7 @@ def _try_execute_sip_live( if nifty_qty > 0: orders.append( broker.place_order( - "NIFTYBEES.NS", + equity_symbol, "BUY", nifty_qty, sp_price_val, @@ -923,7 +927,7 @@ def _try_execute_sip_live( if gold_qty > 0: orders.append( broker.place_order( - "GOLDBEES.NS", + gold_symbol, "BUY", gold_qty, gd_price_val, @@ -976,14 +980,16 @@ def _try_execute_sip_live( def try_execute_sip( now, market_open, - sip_interval, - sip_amount, - sp_price, - gd_price, - eq_w, + sip_interval, + sip_amount, + sp_price, + gd_price, + eq_w, gd_w, broker: Broker | None = None, mode: str | None = "LIVE", + equity_symbol: str = "NIFTYBEES.NS", + gold_symbol: str = "GOLDBEES.NS", ): if broker is None: return load_state(mode=mode), False @@ -999,6 +1005,8 @@ def try_execute_sip( gd_w, broker, mode, + equity_symbol=equity_symbol, + gold_symbol=gold_symbol, ) return _try_execute_sip_paper( now, @@ -1011,5 +1019,7 @@ def try_execute_sip( gd_w, broker, mode, + equity_symbol=equity_symbol, + gold_symbol=gold_symbol, ) - + diff --git a/indian_paper_trading_strategy/engine/runner.py b/indian_paper_trading_strategy/engine/runner.py index 6495e75..0efeee5 100644 --- a/indian_paper_trading_strategy/engine/runner.py +++ b/indian_paper_trading_strategy/engine/runner.py @@ -644,6 +644,8 @@ def _engine_loop(config, stop_event: threading.Event): gd_w=gd_w, broker=broker, mode=mode, + equity_symbol=_EQUITY_SYM, + gold_symbol=_GOLD_SYM, ) log_event( event="DEBUG_AFTER_TRY_EXECUTE",