{
  "key": "f-toxic-fill",
  "approach": "Wrap the incumbent and classify a previous-step side fill as toxic when that side’s competitor best quote changed or an expected queued order was fully consumed. After classification, suppress only the incumbent’s new PlaceOrder actions on that side within k ticks of the competitor quote for m steps.",
  "tried": "Two tuning variants on seeds 310000–310199: active spreads {1,2,3,4}, k=1, m=2 gave -18.581643 ± 2.662529; active spread {1}, k=1, m=1 gave -0.537629 ± 0.329594. The latter was frozen.",
  "next": "Do not promote this overlay: the complete holdout difference is negative and far below twice its standard error.",
  "spreads_acted": [
    1
  ],
  "off_equals_n": true,
  "code": "from collections import defaultdict\n\nfrom orderbook_pm_challenge.strategy import BaseStrategy\nfrom orderbook_pm_challenge.types import CancelAll, CancelOrder, PlaceOrder, Side\n\n\n# These constants are replaced only while selecting one of the two tuning variants.\nACTIVE_SPREADS = frozenset((1,))\nTOXIC_K = 1\nTOXIC_M = 1\n\n\nclass Strategy(BaseStrategy):\n    \"\"\"Suppress newly quoted near-touch orders briefly after a toxic fill.\"\"\"\n\n    def __init__(self, enabled=True):\n        self._n = _N()\n        self._enabled = enabled\n        self._active = None\n        self._previous_quote = None\n        self._expected = ()\n        self._blocked_until = {Side.BUY: 0, Side.SELL: 0}\n\n    @staticmethod\n    def _spread(state):\n        bid, ask = state.competitor_best_bid_ticks, state.competitor_best_ask_ticks\n        if bid is None or ask is None:\n            return None\n        return max(1, (ask - bid + 1) // 2)\n\n    @staticmethod\n    def _quantities(orders):\n        result = defaultdict(float)\n        for order in orders:\n            quantity = getattr(order, \"remaining_quantity\", None)\n            if quantity is None:\n                quantity = order.quantity\n            result[(order.side, order.price_ticks)] += quantity\n        return result\n\n    def _whole_order_filled(self, state, side):\n        old = self._quantities(self._expected)\n        new = self._quantities(state.own_orders)\n        for (old_side, price), quantity in old.items():\n            if old_side is side and new[(side, price)] + 1e-9 < quantity:\n                # FIFO makes a loss at least as large as one queued order a full fill.\n                return True\n        return False\n\n    def _toxic(self, state, side):\n        filled = state.buy_filled_quantity if side is Side.BUY else state.sell_filled_quantity\n        if filled <= 0.0:\n            return False\n        current = state.competitor_best_bid_ticks if side is Side.BUY else state.competitor_best_ask_ticks\n        prior = None if self._previous_quote is None else self._previous_quote[0 if side is Side.BUY else 1]\n        return current != prior or self._whole_order_filled(state, side)\n\n    @staticmethod\n    def _near_quote(action, state):\n        quote = state.competitor_best_bid_ticks if action.side is Side.BUY else state.competitor_best_ask_ticks\n        return quote is not None and abs(action.price_ticks - quote) <= TOXIC_K\n\n    def _remember(self, state, actions):\n        orders = list(state.own_orders)\n        for action in actions:\n            if isinstance(action, CancelAll):\n                orders = []\n            elif isinstance(action, CancelOrder):\n                orders = [order for order in orders if order.order_id != action.order_id]\n            elif isinstance(action, PlaceOrder):\n                orders.append(action)\n        self._expected = tuple(orders)\n        self._previous_quote = (state.competitor_best_bid_ticks, state.competitor_best_ask_ticks)\n\n    def on_step(self, state):\n        actions = self._n.on_step(state)\n        if self._active is None:\n            self._active = self._enabled and self._spread(state) in ACTIVE_SPREADS\n        if not self._active:\n            return actions\n        for side in (Side.BUY, Side.SELL):\n            if self._toxic(state, side):\n                self._blocked_until[side] = max(self._blocked_until[side], state.step + TOXIC_M)\n        kept = [\n            action for action in actions\n            if not (\n                isinstance(action, PlaceOrder)\n                and state.step < self._blocked_until[action.side]\n                and self._near_quote(action, state)\n            )\n        ]\n        self._remember(state, kept)\n        return kept\n",
  "code_sha256": "bc07db5d2bc2068ce1c176373773bca90b4c9eed7e656126265a146bfc8aba5d",
  "assembled_sha256": "f708d8ceb2244cf0ce1231d92750a506b7d913bda6907d602fc0c1bc039f91ae",
  "tuning": {
    "n": 200,
    "mean_diff": -0.5376291733805002,
    "se": 0.32959362826456823
  },
  "paired": {
    "first_seed": 410000,
    "last_seed": 410499,
    "n": 500,
    "complete": true,
    "incumbent_mean": 104.4137531881468,
    "mean_diff": -0.02702767253780022,
    "se": 0.17711691423117318,
    "sum_d": -13.51383626890011,
    "sum_d2": 7827.280373581208,
    "retail_diff": -0.07862376439319982,
    "arb_diff": 0.05159609185000004,
    "failures": 0
  },
  "by_spread": {
    "1": {
      "runs": 115,
      "incumbent_mean": 28.495154459731307,
      "mean_diff": -0.11751161972956618,
      "se": 0.7726094915625336,
      "sum_d": -13.51383626890011,
      "sum_d2": 7827.280373581208,
      "retail_diff": -0.3418424538834775,
      "arb_diff": 0.22433083413043495
    },
    "2": {
      "runs": 116,
      "incumbent_mean": 97.76626247947758,
      "mean_diff": 0,
      "se": 0,
      "sum_d": 0,
      "sum_d2": 0,
      "retail_diff": 0,
      "arb_diff": 0
    },
    "3": {
      "runs": 138,
      "incumbent_mean": 128.4054514027384,
      "mean_diff": 0,
      "se": 0,
      "sum_d": 0,
      "sum_d2": 0,
      "retail_diff": 0,
      "arb_diff": 0
    },
    "4": {
      "runs": 131,
      "incumbent_mean": 151.67248160310686,
      "mean_diff": 0,
      "se": 0,
      "sum_d": 0,
      "sum_d2": 0,
      "retail_diff": 0,
      "arb_diff": 0
    }
  },
  "seconds_per_simulation": 0.6076430224899668
}
