{
  "key": "f-paired-size",
  "mech": "paired sizing from own historical fill fractions",
  "approach": "Blind subclass of N. Estimate each side's per-share next-step fill probability with an EWMA of previous filled quantity / offered quantity. Reallocate N's combined fresh bid/ask shares inversely to those probabilities, including retained exposure in the balance equation. Keep prices and cancellations; gate to genuinely paired fresh quotes, quantize to 0.01, and fall back to N sizes if proposed collateral is unaffordable. Screen only; failures and negative gains reject this implementation.",
  "tried": [
    {
      "mechanism": "one paired sizing overlay",
      "variants": "Three EWMA rates; identical 0.05 prior and spread gate 1..4. No incumbent source inspection. No other mechanisms or seeds tested."
    },
    {
      "incumbent_sha256": "bf0d179f3e47d28819f6fa7e0d25548c2ced43374c216d36460b00a26a26ffae",
      "selection_rule": "Highest all-seed tuning mean difference, including returned partial edge on failures; all variants rejected operationally. This selects a frozen negative control for the required holdout, not a valid strategy promotion."
    },
    {
      "limitations": "Estimated balance is exact only before positivity clamps, collateral fallback, share quantization, and stochastic fill uncertainty. Independent order floors can lose less than one 0.01-share quantum per fresh order versus N total. The collateral guard checks proposed resizes only; falling back to N does not guarantee its actions remain feasible on altered inventory paths. Fill fractions depend on price, queue and size; a single EWMA per side does not condition on these. Failed simulations return partial edge and do not reach 2000 steps; their arithmetic means below are diagnostics, not valid challenge scores. successful_pairs_only is a survivor-biased diagnostic."
    },
    {
      "orchestration": "Serial unmodified pinned simulator, no workers or sandbox. Holdout used chunks of 50 seeds; tuning used a persistent tool session after nohup did not survive the tool boundary. Append-only completed records have unique (seed,strategy). A tuning launcher was interrupted and resumed from completed records; an in-progress unrecorded attempt may have restarted. No failed completed run was rerun."
    }
  ],
  "next": "Reject this overlay and retain N. Do not promote from this screen. Before retesting, solve collateral-feasible paired allocation jointly with retained order reservations and account for the dependence of fill probability on quote price and offered size; use new tuning seeds only with separate authorization.",
  "spreads_acted": [
    1,
    2,
    3,
    4
  ],
  "off_equals_n": {
    "equal": true,
    "seeds": "310000..310009",
    "steps": 20000
  },
  "code": "from dataclasses import replace as _ps_replace\nfrom orderbook_pm_challenge.types import PlaceOrder as _PSPlace, CancelAll as _PSAll, CancelOrder as _PSCancel, Side as _PSSide\nimport math as _ps_math\n\nclass Strategy(_N):\n    # Fill-fraction model: expected filled shares = offered shares * EWMA fraction.\n    paired_enabled = True\n    paired_alpha = 0.05\n    paired_prior = 0.05\n    paired_spreads = (1, 2, 3, 4)\n\n    def on_step(self, state):\n        actions = list(super().on_step(state))\n        if not self.paired_enabled or self.s not in self.paired_spreads:\n            return actions\n        if not hasattr(self, '_ps_rates'):\n            self._ps_rates = [self.paired_prior, self.paired_prior]\n            self._ps_exposure = [0.0, 0.0]\n        for i, filled in enumerate((state.buy_filled_quantity, state.sell_filled_quantity)):\n            exposure = self._ps_exposure[i]\n            if exposure > 0:\n                fraction = min(1.0, max(0.0, filled / exposure))\n                self._ps_rates[i] += self.paired_alpha * (fraction - self._ps_rates[i])\n        # Replay cancellations to distinguish retained exposure from fresh quotes.\n        retained = {o.order_id: o for o in state.own_orders}\n        for a in actions:\n            if isinstance(a, _PSAll):\n                retained.clear()\n            elif isinstance(a, _PSCancel):\n                retained.pop(a.order_id, None)\n        old = [sum(o.remaining_quantity for o in retained.values() if o.side == side)\n               for side in (_PSSide.BUY, _PSSide.SELL)]\n        fresh = [sum(a.quantity for a in actions if isinstance(a, _PSPlace) and a.side == side)\n                 for side in (_PSSide.BUY, _PSSide.SELL)]\n        # Only rebalance genuinely paired fresh quotes; do not create a missing side.\n        if min(fresh) > 0:\n            total = sum(fresh)\n            pb, ps = (max(0.002, p) for p in self._ps_rates)\n            bid = (ps * (total + old[1]) - pb * old[0]) / (pb + ps)\n            # Preserve total fresh size, with one quantum left on either side.\n            bid = min(total - 0.01, max(0.01, bid))\n            targets = [bid, total - bid]\n            proposed = []\n            used = [0.0, 0.0]\n            indices = [[j for j, a in enumerate(actions) if isinstance(a, _PSPlace) and a.side == side]\n                       for side in (_PSSide.BUY, _PSSide.SELL)]\n            for j, a in enumerate(actions):\n                if not isinstance(a, _PSPlace):\n                    proposed.append(a)\n                    continue\n                i = 0 if a.side == _PSSide.BUY else 1\n                q = targets[i] - used[i] if j == indices[i][-1] else a.quantity * targets[i] / fresh[i]\n                q = _ps_math.floor((q + 1e-9) * 100) / 100\n                used[i] += q\n                if q >= 0.01:\n                    proposed.append(_ps_replace(a, quantity=q))\n            # Collateral feasibility is a guard, never a second sizing signal.\n            reserved = sum(o.remaining_quantity * (o.price_ticks / 100 if o.side == _PSSide.BUY else 1 - o.price_ticks / 100)\n                           for o in retained.values())\n            free = max(0.0, state.cash - reserved)\n            available_yes = max(0.0, state.yes_inventory - sum(o.remaining_quantity for o in retained.values() if o.side == _PSSide.SELL))\n            cost = 0.0\n            for a in proposed:\n                if isinstance(a, _PSPlace):\n                    if a.side == _PSSide.BUY:\n                        cost += a.quantity * a.price_ticks / 100\n                    else:\n                        covered = min(available_yes, a.quantity)\n                        available_yes -= covered\n                        cost += (a.quantity - covered) * (1 - a.price_ticks / 100)\n            if cost <= free - 1e-7:\n                actions = proposed\n        self._ps_exposure = [old[i] + sum(a.quantity for a in actions if isinstance(a, _PSPlace) and a.side == side)\n                             for i, side in enumerate((_PSSide.BUY, _PSSide.SELL))]\n        return actions\n",
  "code_sha256": "7620ca65f64f77e47c6119780072497c6dc3f11bf8446af2186ca8627cb0a2c1",
  "assembled_sha256": "a94fd8177d33d8cdf176e0fa036cb80284086f445339e5b6a499c46be2bdc410",
  "tuning": {
    "seeds": "320000..320199",
    "selected": "fast",
    "variants": [
      {
        "name": "fast",
        "alpha": 0.05,
        "prior": 0.05,
        "spreads_acted": [
          1,
          2,
          3,
          4
        ],
        "code_sha256": "7620ca65f64f77e47c6119780072497c6dc3f11bf8446af2186ca8627cb0a2c1",
        "overall": {
          "n": 200,
          "sum_d": -17601.3713363127,
          "sum_d2": 3242674.0051193875,
          "mean_diff": -88.00685668156349,
          "se": 6.523310810685201,
          "incumbent_mean": 98.47071831456549,
          "candidate_mean": 10.463861633002002,
          "retail_diff": -38.638462419132495,
          "arb_diff": -49.368394262441
        },
        "by_spread": {
          "1": {
            "n": 50,
            "sum_d": -1349.7505519276,
            "sum_d2": 213123.61279133428,
            "mean_diff": -26.995011038552,
            "se": 8.492183242343131,
            "incumbent_mean": 25.711261479664,
            "candidate_mean": -1.2837495588879997,
            "retail_diff": -22.523708916452,
            "arb_diff": -4.471302122158
          },
          "2": {
            "n": 50,
            "sum_d": -3223.1596658485,
            "sum_d2": 290649.9738826342,
            "mean_diff": -64.46319331697,
            "se": 5.8160513027094005,
            "incumbent_mean": 61.219908510538,
            "candidate_mean": -3.243284806431999,
            "retail_diff": -11.852903453008,
            "arb_diff": -52.610289863886
          },
          "3": {
            "n": 48,
            "sum_d": -5285.6130735619,
            "sum_d2": 894808.7616312286,
            "mean_diff": -110.11693903253958,
            "se": 11.774574969746553,
            "incumbent_mean": 130.8342429047854,
            "candidate_mean": 20.717303872245836,
            "retail_diff": -49.20657669522917,
            "arb_diff": -60.91036233749792
          },
          "4": {
            "n": 52,
            "sum_d": -7742.848044974699,
            "sum_d2": 1844091.6568141903,
            "mean_diff": -148.90092394182113,
            "se": 16.143848425858977,
            "incumbent_mean": 174.37579815333268,
            "candidate_mean": 25.47487421151154,
            "retail_diff": -70.13358046120192,
            "arb_diff": -78.76734348050192
          }
        },
        "failed_incumbent": 0,
        "failed_candidate": 25,
        "completed_2000_step_pairs": 175
      },
      {
        "name": "medium",
        "alpha": 0.025,
        "prior": 0.05,
        "spreads_acted": [
          1,
          2,
          3,
          4
        ],
        "code_sha256": "60d2539736102dbf558d88d1b1571c492cd1a671cff0fd7126fca8beafcb3f67",
        "overall": {
          "n": 200,
          "sum_d": -18535.0943015773,
          "sum_d2": 3503712.3539862144,
          "mean_diff": -92.6754715078865,
          "se": 6.69876563695913,
          "incumbent_mean": 98.47071831456549,
          "candidate_mean": 5.795246806679001,
          "retail_diff": -42.4989578206685,
          "arb_diff": -50.1765136872725
        },
        "by_spread": {
          "1": {
            "n": 50,
            "sum_d": -1532.2775761176001,
            "sum_d2": 260798.30941688304,
            "mean_diff": -30.645551522352,
            "se": 9.342481818835727,
            "incumbent_mean": 25.711261479664,
            "candidate_mean": -4.934290042688,
            "retail_diff": -25.007101572196003,
            "arb_diff": -5.638449950362001
          },
          "2": {
            "n": 50,
            "sum_d": -3597.7483887073,
            "sum_d2": 424290.8716615507,
            "mean_diff": -71.954967774146,
            "se": 8.216831960456542,
            "incumbent_mean": 61.219908510538,
            "candidate_mean": -10.735059263608001,
            "retail_diff": -18.74549238356,
            "arb_diff": -53.209475390524005
          },
          "3": {
            "n": 48,
            "sum_d": -6179.8969986167,
            "sum_d2": 1298492.1068612528,
            "mean_diff": -128.74785413784792,
            "se": 14.929557252019347,
            "incumbent_mean": 130.8342429047854,
            "candidate_mean": 2.086388766937499,
            "retail_diff": -66.29321133508124,
            "arb_diff": -62.45464280302292
          },
          "4": {
            "n": 52,
            "sum_d": -7225.1713381357,
            "sum_d2": 1520131.0660465278,
            "mean_diff": -138.94560265645578,
            "se": 13.951884568814902,
            "incumbent_mean": 174.37579815333268,
            "candidate_mean": 35.43019549687693,
            "retail_diff": -60.19399465888462,
            "arb_diff": -78.75160799740577
          }
        },
        "failed_incumbent": 0,
        "failed_candidate": 27,
        "completed_2000_step_pairs": 173
      },
      {
        "name": "slow",
        "alpha": 0.01,
        "prior": 0.05,
        "spreads_acted": [
          1,
          2,
          3,
          4
        ],
        "code_sha256": "2407ef63c9103a66d18f87614aca2848e5ea6d5ca00729ff3e30af42f61d3ea5",
        "overall": {
          "n": 200,
          "sum_d": -19818.2779336093,
          "sum_d2": 4361530.154986648,
          "mean_diff": -99.0913896680465,
          "se": 7.761698018060278,
          "incumbent_mean": 98.47071831456549,
          "candidate_mean": -0.6206713534809998,
          "retail_diff": -41.139730653080996,
          "arb_diff": -57.9516590149905
        },
        "by_spread": {
          "1": {
            "n": 50,
            "sum_d": -1371.0876763413,
            "sum_d2": 197066.5927003627,
            "mean_diff": -27.421753526826002,
            "se": 8.067798535828691,
            "incumbent_mean": 25.711261479664,
            "candidate_mean": -1.7104920471619998,
            "retail_diff": -21.015825175857998,
            "arb_diff": -6.405928350984001
          },
          "2": {
            "n": 50,
            "sum_d": -3844.2713745173,
            "sum_d2": 422262.53862167854,
            "mean_diff": -76.885427490346,
            "se": 7.1910968367500585,
            "incumbent_mean": 61.219908510538,
            "candidate_mean": -15.665518979808,
            "retail_diff": -16.101747659254002,
            "arb_diff": -60.783679831042
          },
          "3": {
            "n": 48,
            "sum_d": -6459.3854581729,
            "sum_d2": 1697962.930509023,
            "mean_diff": -134.5705303786021,
            "se": 19.166127075539766,
            "incumbent_mean": 130.8342429047854,
            "candidate_mean": -3.7362874738166667,
            "retail_diff": -62.766355984118746,
            "arb_diff": -71.80417439462501
          },
          "4": {
            "n": 52,
            "sum_d": -8143.5334245778,
            "sum_d2": 2044238.0931555831,
            "mean_diff": -156.60641201111156,
            "se": 17.027488006984893,
            "incumbent_mean": 174.37579815333268,
            "candidate_mean": 17.769386142221155,
            "retail_diff": -64.60158464659423,
            "arb_diff": -92.00482736451538
          }
        },
        "failed_incumbent": 0,
        "failed_candidate": 26,
        "completed_2000_step_pairs": 174
      }
    ],
    "score_valid_for_ranking": false,
    "score_semantics": "Arithmetic total_edge returned by engine, including partial edge from failed runs; unusable as a valid 2000-step score."
  },
  "paired": {
    "seeds": "430000..430499",
    "n": 500,
    "complete": true,
    "missing_seeds": [],
    "overall": {
      "n": 500,
      "sum_d": -44243.0026025803,
      "sum_d2": 9803437.977292811,
      "mean_diff": -88.48600520516061,
      "se": 4.858128085159907,
      "incumbent_mean": 95.54201511346659,
      "candidate_mean": 7.056009908306001,
      "retail_diff": -39.402075841275206,
      "arb_diff": -49.0839293639194
    },
    "by_spread": {
      "1": {
        "n": 131,
        "sum_d": -4040.0242224467,
        "sum_d2": 906940.9855945596,
        "mean_diff": -30.83987956066183,
        "se": 6.777857307879428,
        "incumbent_mean": 38.277936657049615,
        "candidate_mean": 7.438057096387786,
        "retail_diff": -25.241439114346566,
        "arb_diff": -5.598440446300001
      },
      "2": {
        "n": 120,
        "sum_d": -9681.0696630072,
        "sum_d2": 1392737.9389524066,
        "mean_diff": -80.67558052506,
        "se": 6.54499629148749,
        "incumbent_mean": 77.8558643979175,
        "candidate_mean": -2.8197161271425,
        "retail_diff": -24.667672697434167,
        "arb_diff": -56.0079078276225
      },
      "3": {
        "n": 133,
        "sum_d": -15558.9960798994,
        "sum_d2": 4166935.050340116,
        "mean_diff": -116.98493293157443,
        "se": 11.561713262786139,
        "incumbent_mean": 146.55140363646615,
        "candidate_mean": 29.56647070489173,
        "retail_diff": -58.59867804978421,
        "arb_diff": -58.386254881896996
      },
      "4": {
        "n": 116,
        "sum_d": -14962.912637227,
        "sum_d2": 3336824.0024057296,
        "mean_diff": -128.99062618299138,
        "se": 10.269051230714659,
        "incumbent_mean": 120.02204692465259,
        "candidate_mean": -8.968579258338794,
        "retail_diff": -48.626418037455174,
        "arb_diff": -80.36420814558105
      }
    },
    "failed_incumbent": 0,
    "failed_candidate": 56,
    "completed_2000_step_pairs": 444,
    "score_valid_for_ranking": false,
    "successful_pairs_only": {
      "n": 444,
      "sum_d": -33184.1698849958,
      "sum_d2": 5104798.053435596,
      "mean_diff": -74.73912136260314,
      "se": 3.6529330962418696,
      "incumbent_mean": 83.35672045689302,
      "candidate_mean": 8.617599094289865,
      "retail_diff": -20.992741030796175,
      "arb_diff": -53.74638033186914
    },
    "complete_semantics": "Every requested seed has both returned engine results. completed_2000_step_pairs counts pairs without engine failure; failed partial runs are retained in required all-seed arithmetic and explicitly invalid for ranking."
  },
  "failures": {
    "count": 134,
    "tuning": [
      {
        "seed": 320000,
        "strategy": "medium",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320003,
        "strategy": "slow",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320007,
        "strategy": "medium",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320008,
        "strategy": "medium",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320009,
        "strategy": "slow",
        "spread": 2,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320011,
        "strategy": "fast",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320011,
        "strategy": "slow",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320018,
        "strategy": "fast",
        "spread": 2,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320024,
        "strategy": "fast",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320024,
        "strategy": "medium",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320024,
        "strategy": "slow",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320025,
        "strategy": "slow",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320030,
        "strategy": "fast",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320030,
        "strategy": "medium",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320030,
        "strategy": "slow",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320031,
        "strategy": "fast",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320032,
        "strategy": "medium",
        "spread": 1,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320032,
        "strategy": "slow",
        "spread": 1,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320035,
        "strategy": "slow",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320039,
        "strategy": "fast",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320039,
        "strategy": "medium",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320039,
        "strategy": "slow",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320042,
        "strategy": "slow",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320043,
        "strategy": "fast",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320043,
        "strategy": "medium",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320043,
        "strategy": "slow",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320047,
        "strategy": "fast",
        "spread": 1,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320047,
        "strategy": "medium",
        "spread": 1,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320047,
        "strategy": "slow",
        "spread": 1,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320050,
        "strategy": "medium",
        "spread": 1,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320050,
        "strategy": "slow",
        "spread": 1,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320059,
        "strategy": "fast",
        "spread": 2,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320059,
        "strategy": "medium",
        "spread": 2,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320064,
        "strategy": "medium",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320069,
        "strategy": "slow",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320083,
        "strategy": "medium",
        "spread": 2,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320084,
        "strategy": "fast",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320084,
        "strategy": "medium",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320084,
        "strategy": "slow",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320086,
        "strategy": "slow",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320097,
        "strategy": "medium",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320099,
        "strategy": "medium",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320099,
        "strategy": "slow",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320101,
        "strategy": "fast",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320101,
        "strategy": "medium",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320101,
        "strategy": "slow",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320112,
        "strategy": "fast",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320116,
        "strategy": "fast",
        "spread": 1,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320116,
        "strategy": "slow",
        "spread": 1,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320117,
        "strategy": "slow",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320120,
        "strategy": "fast",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320120,
        "strategy": "medium",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320120,
        "strategy": "slow",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320121,
        "strategy": "fast",
        "spread": 1,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320122,
        "strategy": "fast",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320122,
        "strategy": "medium",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320130,
        "strategy": "fast",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320131,
        "strategy": "medium",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320131,
        "strategy": "slow",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320135,
        "strategy": "fast",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320141,
        "strategy": "fast",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320144,
        "strategy": "fast",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320148,
        "strategy": "medium",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320149,
        "strategy": "fast",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320149,
        "strategy": "medium",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320152,
        "strategy": "fast",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320152,
        "strategy": "medium",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320152,
        "strategy": "slow",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320155,
        "strategy": "fast",
        "spread": 1,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320155,
        "strategy": "medium",
        "spread": 1,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320155,
        "strategy": "slow",
        "spread": 1,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320158,
        "strategy": "medium",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320161,
        "strategy": "fast",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320161,
        "strategy": "slow",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320166,
        "strategy": "fast",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320169,
        "strategy": "medium",
        "spread": 2,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320177,
        "strategy": "medium",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 320183,
        "strategy": "slow",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      }
    ],
    "holdout": [
      {
        "seed": 430015,
        "strategy": "fast",
        "spread": 2,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430016,
        "strategy": "fast",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430024,
        "strategy": "fast",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430027,
        "strategy": "fast",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430050,
        "strategy": "fast",
        "spread": 1,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430051,
        "strategy": "fast",
        "spread": 1,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430052,
        "strategy": "fast",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430065,
        "strategy": "fast",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430089,
        "strategy": "fast",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430096,
        "strategy": "fast",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430104,
        "strategy": "fast",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430114,
        "strategy": "fast",
        "spread": 1,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430122,
        "strategy": "fast",
        "spread": 1,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430124,
        "strategy": "fast",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430134,
        "strategy": "fast",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430140,
        "strategy": "fast",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430144,
        "strategy": "fast",
        "spread": 2,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430161,
        "strategy": "fast",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430172,
        "strategy": "fast",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430175,
        "strategy": "fast",
        "spread": 2,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430193,
        "strategy": "fast",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430195,
        "strategy": "fast",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430204,
        "strategy": "fast",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430207,
        "strategy": "fast",
        "spread": 1,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430209,
        "strategy": "fast",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430212,
        "strategy": "fast",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430213,
        "strategy": "fast",
        "spread": 2,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430214,
        "strategy": "fast",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430217,
        "strategy": "fast",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430223,
        "strategy": "fast",
        "spread": 2,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430251,
        "strategy": "fast",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430265,
        "strategy": "fast",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430270,
        "strategy": "fast",
        "spread": 1,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430275,
        "strategy": "fast",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430277,
        "strategy": "fast",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430281,
        "strategy": "fast",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430298,
        "strategy": "fast",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430302,
        "strategy": "fast",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430322,
        "strategy": "fast",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430326,
        "strategy": "fast",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430331,
        "strategy": "fast",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430341,
        "strategy": "fast",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430345,
        "strategy": "fast",
        "spread": 2,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430350,
        "strategy": "fast",
        "spread": 1,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430372,
        "strategy": "fast",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430386,
        "strategy": "fast",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430388,
        "strategy": "fast",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430394,
        "strategy": "fast",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430417,
        "strategy": "fast",
        "spread": 2,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430430,
        "strategy": "fast",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430434,
        "strategy": "fast",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430435,
        "strategy": "fast",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430461,
        "strategy": "fast",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430470,
        "strategy": "fast",
        "spread": 2,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430474,
        "strategy": "fast",
        "spread": 4,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      },
      {
        "seed": 430475,
        "strategy": "fast",
        "spread": 3,
        "error": "orderbook_pm_challenge.market.OrderBookError: Insufficient free cash for order collateral"
      }
    ]
  },
  "check_values": {
    "310000": 17.1160017503,
    "310001": 20.0171113118,
    "310002": 2.3903113616,
    "310003": 241.4847522404
  },
  "python_version": "3.12.3",
  "seconds_per_simulation": 0.2896108043291286
}
