{
  "key": "f-age-size-decay",
  "mech": "age size decay",
  "approach": "Blind subclass overlay: call N, then prepend cancellation and same-price half-size repost for each surviving own order with submitted age > A; preserve its ID. N cancellations take precedence. Reposting resets age; partial fills do not reset submitted age. Dust below 0.02 shares is cancelled. Stale-order exposure exists at every spread, so act on s=1..4. Tune A=20,50,100; freeze the highest overall paired tuning mean. Screen only; no promotion.",
  "tried": [
    "A=20",
    "A=50",
    "A=100",
    "Repaired collateral ordering after an initial failed implementation; see failures."
  ],
  "next": "Retain N. Reject this overlay as currently implemented: it loses edge on tuning and has simulation failures. Holdout statistics exclude failed runs and cannot establish full-seed performance. Any repair requires a new, separately authorized screen.",
  "spreads_acted": [
    1,
    2,
    3,
    4
  ],
  "off_equals_n": {
    "passed": true,
    "seeds": [
      310000,
      310009
    ],
    "n": 10,
    "steps_compared": 20000,
    "method": "One unmodified engine trajectory per seed; a wrapper independently calls N and disabled overlay on the identical StepState and asserts action sequence equality each step."
  },
  "code": "from orderbook_pm_challenge.types import CancelAll, CancelOrder, PlaceOrder\n\nclass Strategy(_N):\n    age_limit = 100\n    decay_enabled = True\n    decay_spreads = (1, 2, 3, 4)\n\n    def on_step(self, state):\n        actions = list(super().on_step(state))\n        if not self.decay_enabled or self.s not in self.decay_spreads:\n            return actions\n        # N's cancellations take precedence; preserve its new orders verbatim.\n        if any(isinstance(a, CancelAll) for a in actions):\n            return actions\n        cancelled = {a.order_id for a in actions if isinstance(a, CancelOrder)}\n        decay = []\n        for order in state.own_orders:\n            if order.order_id in cancelled:\n                continue\n            if state.step - order.submitted_step <= self.age_limit:\n                continue\n            decay.append(CancelOrder(order.order_id))\n            # Simulator rounds quantities down to 0.01 shares. Dust is cancelled.\n            if order.remaining_quantity >= 0.02:\n                decay.append(PlaceOrder(order.side, order.price_ticks,\n                                          order.remaining_quantity / 2,\n                                          order.order_id))\n        return decay + actions\n",
  "code_sha256": "dde66133a6c58481c4427c08785f184d92f300d1f105154a0c05ebeeedc525f0",
  "assembled_sha256": "5482d7771f2914d625bfef59cbe08f5d3702221951a4505ab703311a2a8d4a2f",
  "tuning": {
    "seeds": [
      320000,
      320199
    ],
    "selected": 100,
    "selection_rule": "Exclude candidates with any simulation failures when a failure-free candidate exists; then highest overall paired tuning mean. If all fail, fewest failures then highest valid-pair mean. All four spreads remain active.",
    "metric_scope": "Valid completed pairs only; failures excluded and counted separately.",
    "incumbent_sha256": "bf0d179f3e47d28819f6fa7e0d25548c2ced43374c216d36460b00a26a26ffae",
    "variants": [
      {
        "A": 20,
        "spreads_acted": [
          1,
          2,
          3,
          4
        ],
        "failure_count": 5,
        "overall": {
          "n": 195,
          "sum_d": -3060.5938748493,
          "sum_d2": 376823.1909610935,
          "mean_diff": -15.695353204355385,
          "se": 2.948075126076135,
          "incumbent_mean": 96.88684461891948,
          "candidate_mean": 81.1914914145641,
          "retail_diff": -14.71483088826359,
          "arb_diff": -0.9805223160933336
        },
        "by_spread": {
          "1": {
            "n": 48,
            "sum_d": -287.4656291798,
            "sum_d2": 13365.48243130298,
            "mean_diff": -5.9888672745791665,
            "se": 2.271849089513613,
            "incumbent_mean": 18.309331195227085,
            "candidate_mean": 12.320463920647917,
            "retail_diff": -8.293598112897916,
            "arb_diff": 2.3047308383083327
          },
          "2": {
            "n": 48,
            "sum_d": -477.45354771160004,
            "sum_d2": 27190.239256733777,
            "mean_diff": -9.946948910658334,
            "se": 3.153928739522608,
            "incumbent_mean": 58.67277706367292,
            "candidate_mean": 48.72582815301458,
            "retail_diff": -10.080833866812501,
            "arb_diff": 0.13388495609791676
          },
          "3": {
            "n": 48,
            "sum_d": -494.97794252309995,
            "sum_d2": 27668.85065594675,
            "mean_diff": -10.312040469231249,
            "se": 3.1626013061782388,
            "incumbent_mean": 130.8342429047854,
            "candidate_mean": 120.52220243555416,
            "retail_diff": -10.186839087583335,
            "arb_diff": -0.12520138164583336
          },
          "4": {
            "n": 51,
            "sum_d": -1800.6967554348003,
            "sum_d2": 308598.61861711,
            "mean_diff": -35.30777951832942,
            "se": 9.802360952038933,
            "incumbent_mean": 174.85784009475296,
            "candidate_mean": 139.55006057642353,
            "retail_diff": -29.381392391790197,
            "arb_diff": -5.926387126484315
          }
        }
      },
      {
        "A": 50,
        "spreads_acted": [
          1,
          2,
          3,
          4
        ],
        "failure_count": 3,
        "overall": {
          "n": 197,
          "sum_d": -1890.3305692061,
          "sum_d2": 159655.2006082512,
          "mean_diff": -9.595586645716244,
          "se": 1.9144419010400895,
          "incumbent_mean": 95.0680976862604,
          "candidate_mean": 85.47251104054416,
          "retail_diff": -10.25319628538731,
          "arb_diff": 0.657609639676142
        },
        "by_spread": {
          "1": {
            "n": 50,
            "sum_d": -244.8316372273,
            "sum_d2": 11030.600460339694,
            "mean_diff": -4.896632744546,
            "se": 2.003237160666245,
            "incumbent_mean": 25.711261479664,
            "candidate_mean": 20.814628735118,
            "retail_diff": -6.203801674242,
            "arb_diff": 1.3071689297239997
          },
          "2": {
            "n": 49,
            "sum_d": -356.87738891310005,
            "sum_d2": 33291.765692937974,
            "mean_diff": -7.2832120186346945,
            "se": 3.612416701298599,
            "incumbent_mean": 55.226662063222456,
            "candidate_mean": 47.943450044587756,
            "retail_diff": -7.312535577865305,
            "arb_diff": 0.029323559232653104
          },
          "3": {
            "n": 47,
            "sum_d": -321.1543400581,
            "sum_d2": 18747.95124975237,
            "mean_diff": -6.833071065065957,
            "se": 2.7670488108771414,
            "incumbent_mean": 126.1953672890702,
            "candidate_mean": 119.36229622400425,
            "retail_diff": -6.717681469670211,
            "arb_diff": -0.11538959543404234
          },
          "4": {
            "n": 51,
            "sum_d": -967.4672030076,
            "sum_d2": 96584.88320522118,
            "mean_diff": -18.969945157011765,
            "se": 5.538885122582031,
            "incumbent_mean": 172.65810718678236,
            "candidate_mean": 153.68816202977058,
            "retail_diff": -20.30675121802549,
            "arb_diff": 1.3368060610392154
          }
        }
      },
      {
        "A": 100,
        "spreads_acted": [
          1,
          2,
          3,
          4
        ],
        "failure_count": 1,
        "overall": {
          "n": 199,
          "sum_d": -1065.8227872829,
          "sum_d2": 86506.94712729525,
          "mean_diff": -5.355893403431658,
          "se": 1.431998467341354,
          "incumbent_mean": 96.05605130885779,
          "candidate_mean": 90.70015790542612,
          "retail_diff": -5.5091672494708535,
          "arb_diff": 0.15327384603115563
        },
        "by_spread": {
          "1": {
            "n": 50,
            "sum_d": -65.73756236870004,
            "sum_d2": 2120.0593339345046,
            "mean_diff": -1.3147512473740008,
            "se": 0.9110726559460692,
            "incumbent_mean": 25.711261479664,
            "candidate_mean": 24.396510232289998,
            "retail_diff": -1.4686899175360006,
            "arb_diff": 0.15393867016399937
          },
          "2": {
            "n": 50,
            "sum_d": -102.13490227219998,
            "sum_d2": 10621.371347988488,
            "mean_diff": -2.042698045444,
            "se": 2.061576628951483,
            "incumbent_mean": 61.219908510538,
            "candidate_mean": 59.17721046509401,
            "retail_diff": -2.1213819947499983,
            "arb_diff": 0.07868394929600028
          },
          "3": {
            "n": 48,
            "sum_d": -290.30301900719996,
            "sum_d2": 19414.625744839796,
            "mean_diff": -6.047979562649999,
            "se": 2.7977700576737075,
            "incumbent_mean": 130.8342429047854,
            "candidate_mean": 124.78626334213543,
            "retail_diff": -5.973052562966668,
            "arb_diff": -0.07492699969999997
          },
          "4": {
            "n": 51,
            "sum_d": -607.6473036348,
            "sum_d2": 54350.890700532465,
            "mean_diff": -11.914653012447058,
            "se": 4.298243322147115,
            "incumbent_mean": 166.4421970886843,
            "candidate_mean": 154.52754407623726,
            "retail_diff": -12.355179686431372,
            "arb_diff": 0.4405266739764702
          }
        }
      }
    ]
  },
  "paired": {
    "seeds": [
      430000,
      430499
    ],
    "n": 497,
    "complete": false,
    "missing_seeds": [
      430108,
      430185,
      430370
    ],
    "attempted_seeds": 500,
    "metric_scope": "Valid completed pairs only; failed runs are listed in failures and are never scored using partial edge.",
    "overall": {
      "n": 497,
      "sum_d": -2736.2296446821,
      "sum_d2": 354508.40615771565,
      "mean_diff": -5.505492242821127,
      "se": 1.173451404898817,
      "incumbent_mean": 94.5336230959658,
      "candidate_mean": 89.02813085314466,
      "retail_diff": -5.506747498041448,
      "arb_diff": 0.0012552552249493923
    },
    "by_spread": {
      "1": {
        "n": 130,
        "sum_d": -540.1109472671999,
        "sum_d2": 109336.95065359611,
        "mean_diff": -4.154699594363076,
        "se": 2.527050457413877,
        "incumbent_mean": 38.62067971050769,
        "candidate_mean": 34.465980116144614,
        "retail_diff": -3.8203731941876913,
        "arb_diff": -0.33432640018615406
      },
      "2": {
        "n": 120,
        "sum_d": -732.2504307363,
        "sum_d2": 71838.23126034992,
        "mean_diff": -6.1020869228025,
        "se": 2.172046361832731,
        "incumbent_mean": 77.8558643979175,
        "candidate_mean": 71.753777475115,
        "retail_diff": -6.585566904811667,
        "arb_diff": 0.4834799820224997
      },
      "3": {
        "n": 132,
        "sum_d": -396.2269738199999,
        "sum_d2": 37934.79732316672,
        "mean_diff": -3.001719498636363,
        "se": 1.4577366861813705,
        "incumbent_mean": 142.59576088375076,
        "candidate_mean": 139.5940413851144,
        "retail_diff": -3.2892151027984857,
        "arb_diff": 0.28749560416969655
      },
      "4": {
        "n": 115,
        "sum_d": -1067.6412928586,
        "sum_d2": 135398.4269206029,
        "mean_diff": -9.283837329205218,
        "se": 3.0938365296655554,
        "incumbent_mean": 119.97546219064174,
        "candidate_mean": 110.69162486143652,
        "retail_diff": -8.83270060117739,
        "arb_diff": -0.4511367280182612
      }
    }
  },
  "failures": [
    {
      "stage": "discarded_initial_implementation",
      "seed": 320032,
      "variant_age": 20,
      "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral",
      "code_sha256": "e9e515d088c564de6ebd7b6a24157b6b20201a7e6aef1c41d1c5f84ef3106615",
      "resolution": "Attempted resizing surviving old orders before N actions. This did not eliminate later collateral failures. Discarded initial candidate scores; revised implementation evaluated at the same three A settings."
    },
    {
      "stage": "repaired_tuning",
      "seed": 320032,
      "strategy": "20",
      "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral",
      "scored": false
    },
    {
      "stage": "repaired_tuning",
      "seed": 320043,
      "strategy": "50",
      "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral",
      "scored": false
    },
    {
      "stage": "repaired_tuning",
      "seed": 320057,
      "strategy": "20",
      "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral",
      "scored": false
    },
    {
      "stage": "repaired_tuning",
      "seed": 320069,
      "strategy": "50",
      "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral",
      "scored": false
    },
    {
      "stage": "repaired_tuning",
      "seed": 320120,
      "strategy": "100",
      "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral",
      "scored": false
    },
    {
      "stage": "repaired_tuning",
      "seed": 320155,
      "strategy": "20",
      "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral",
      "scored": false
    },
    {
      "stage": "repaired_tuning",
      "seed": 320160,
      "strategy": "50",
      "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral",
      "scored": false
    },
    {
      "stage": "repaired_tuning",
      "seed": 320161,
      "strategy": "20",
      "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral",
      "scored": false
    },
    {
      "stage": "repaired_tuning",
      "seed": 320196,
      "strategy": "20",
      "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral",
      "scored": false
    },
    {
      "stage": "holdout",
      "seed": 430108,
      "strategy": "100",
      "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral",
      "scored": false
    },
    {
      "stage": "holdout",
      "seed": 430185,
      "strategy": "100",
      "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral",
      "scored": false
    },
    {
      "stage": "holdout",
      "seed": 430370,
      "strategy": "100",
      "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral",
      "scored": false
    },
    {
      "stage": "protocol_deviation",
      "error": "Baseline inadvertently re-executed during repair restart, contrary to exactly-once requirement. Identical outputs were not counted twice. No holdout reruns.",
      "seeds": [
        320000
      ]
    },
    {
      "stage": "repair_disclosure",
      "error": "Tuning candidate executions for the discarded buggy source precede repaired-source executions on overlapping tuning seeds. Thus the strict at-most-three-source-variants interpretation and no-repeat protocol were not fully met, although only three age settings were tuned and final paired statistics use one repaired execution per seed/age.",
      "initial_completed_rows": 130,
      "initial_candidate_simulations": 97
    }
  ],
  "check_values": [
    17.1160017503,
    20.0171113118,
    2.3903113616,
    241.4847522404
  ],
  "python_version": "3.12.3",
  "seconds_per_simulation": 0.8966007880314848
}
