{
  "sources": [
    {
      "url": "https://raw.githubusercontent.com/danrobinson/prediction-market-challenge/b244530ee2a6247b5f930830eeca9dd950da0e7e/docs/orderbook_prediction_market_challenge.md",
      "quote": "The arbitrageur knows `p_t` and sends marketable flow only.\n\n- buy every resting ask with `ask_price < p_t`"
    },
    {
      "url": "https://raw.githubusercontent.com/danrobinson/prediction-market-challenge/b244530ee2a6247b5f930830eeca9dd950da0e7e/orderbook_pm_challenge/process.py",
      "quote": "        diffusion_move = self._rng.gauss(0.0, self.config.diffusion_sigma)\n        jump_count = _sample_poisson(self._rng, self.config.jump_intensity)"
    },
    {
      "url": "https://raw.githubusercontent.com/danrobinson/prediction-market-challenge/b244530ee2a6247b5f930830eeca9dd950da0e7e/orderbook_pm_challenge/engine.py",
      "quote": "                process.step()\n                probability = process.current_true_probability()\n\n                step_fills = []\n                step_fills.extend(market.execute_arbitrage(probability=probability, step=step))"
    },
    {
      "url": "https://api.imdnotdead.fun/artifacts/ecbc9087b4f238fc1b5b0d52f55af073f676c038bfb6756172b1e51480ac1741",
      "quote": "# probes: tiny orders that the arbitrageur removes when p crosses them"
    },
    {
      "url": "https://raw.githubusercontent.com/danrobinson/prediction-market-challenge/b244530ee2a6247b5f930830eeca9dd950da0e7e/orderbook_pm_challenge/market.py",
      "quote": "            best_ask = self._best_order(Side.SELL)\n            if best_ask is None or best_ask.price >= probability - EPSILON:\n                break\n            fills.extend(self._execute_buy_quantity(best_ask.remaining_quantity, aggressor=ARB, step=step))"
    },
    {
      "url": "https://raw.githubusercontent.com/danrobinson/prediction-market-challenge/b244530ee2a6247b5f930830eeca9dd950da0e7e/orderbook_pm_challenge/results.py",
      "quote": "    def mean_edge(self) -> float:\n        successes = [result.total_edge for result in self.simulation_results if not result.failed]\n        return sum(successes) / len(successes) if successes else 0.0"
    }
  ]
}
