dumb_trader.md 2.5 KB

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

{
  "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.