# Dumb Trader Side-only execution strategy. ## Best Used When - Hermes or the operator wants a simple one-sided executor - trend data should be ignored for now - the market direction is already decided elsewhere ## Avoid When - you want the strategy to infer direction on its own - you need adaptive trend following ## How It Works - The strategy acts only on the configured `trade_side`. - `buy` and `sell` place orders on that side only when the live balance-aware sizing step returns a usable amount that also clears the venue minimum. - `both` does not invent direction and therefore holds. - `entry_offset_pct` sets the limit price offset for new entries. - `cooldown_ticks` pauses the next few ticks after a successful order. - If the live balance refresh fails, the strategy now holds for that tick instead of reusing a stale balance snapshot. ## Parameters - `trade_side`: Allowed side selection. `buy` and `sell` make it one-sided; `both` means the strategy will hold. - `entry_offset_pct`: Limit-price offset used for new entries. Buy orders are placed above the last price, sell orders below it. - `order_notional_quote`: Target quote notional per order. - `max_order_notional_quote`: Optional hard cap on quote notional per order. - `dust_collect`: Lets the shared sizing helper consume leftover size more aggressively when a venue minimum would otherwise strand a small remainder. - `cooldown_ticks`: Number of ticks to wait after a successful order before the strategy can act again. - `debug_orders`: Enables order-placement debug logging. ## Hermes Policy Mapping - Hermes controls whether this side-only trader is active. - Hermes may set the quote notional and offsets. - `apply_policy()` records the derived values but does not rewrite the config. ## Notes - This strategy is intentionally dumb for now. - It ignores trend inputs. - It still uses live fee rates for sizing. - If the account cannot afford an order within the configured size limits, the strategy holds instead of falling back to the requested notional. - A failed account-info refresh is treated as an unsafe state, so restart-time stale balances will not drive another order. ## Useful Example ```json { "trade_side": "buy", "entry_offset_pct": 0.0035, "order_notional_quote": 25, "max_order_notional_quote": 40, "dust_collect": true, "cooldown_ticks": 3, "debug_orders": false } ``` This is a practical long-only setup. It keeps buying on the configured side, uses a modest entry offset, and avoids oversized last orders.