{
  "sources": [
    {
      "url": "https://api.imdnotdead.fun/artifacts/7322427b95805d2d17d6c2a78be725cf814b2ef29eccd042492708915f12ca0f",
      "quote": "df2817ba4ec233a456eb45909faa4a706efe0fabd1734a908fe52545f4d07577"
    },
    {
      "url": "https://api.imdnotdead.fun/artifacts/7322427b95805d2d17d6c2a78be725cf814b2ef29eccd042492708915f12ca0f",
      "quote": "Family 0 changes fee lambda only; family 1 also changes fee size; family 2 adds bounded fee-dependent missing-own-flow correction (inverse survival, capped at 2x)."
    },
    {
      "url": "https://api.imdnotdead.fun/artifacts/33f54e81f3372088e9eced52c0174f310ac348af98ef5727b73785c088679194",
      "quote": "cd9bdb45ab0537ad25c4fd90ca8618898cef6386de3df65f192eaef65fbca245"
    },
    {
      "url": "https://api.imdnotdead.fun/artifacts/33f54e81f3372088e9eced52c0174f310ac348af98ef5727b73785c088679194",
      "quote": "def decomposition(r,initial_fee=.0004):"
    },
    {
      "url": "https://raw.githubusercontent.com/benedictbrady/amm-challenge/6b6921f8d463314aa7c96234e1be25a25245f704/amm_competition/competition/match.py",
      "quote": "        for i in range(self.n_simulations):\n            rng = np.random.default_rng(seed=i)"
    },
    {
      "url": "https://raw.githubusercontent.com/benedictbrady/amm-challenge/6b6921f8d463314aa7c96234e1be25a25245f704/amm_competition/evm/compiler.py",
      "quote": "                    \"optimizer\": {\n                        \"enabled\": True,\n                        \"runs\": 200,\n                    },\n                    \"viaIR\": True,\n                    \"evmVersion\": \"paris\","
    },
    {
      "url": "https://raw.githubusercontent.com/benedictbrady/amm-challenge/6b6921f8d463314aa7c96234e1be25a25245f704/amm_sim_rs/src/simulation/engine.rs",
      "quote": "        // Initialize retail trader with different seed\n        let mut retail_trader = RetailTrader::new(\n            self.config.retail_arrival_rate,\n            self.config.retail_mean_size,\n            self.config.retail_size_sigma,\n            self.config.retail_buy_prob,\n            Some(seed + 1),\n        );"
    },
    {
      "url": "https://raw.githubusercontent.com/benedictbrady/amm-challenge/6b6921f8d463314aa7c96234e1be25a25245f704/amm_sim_rs/src/amm/cfmm.rs",
      "quote": "        // Update reserves - fees go to separate bucket, not into liquidity\n        let net_x = amount_x - fee_amount;\n        self.reserve_x += net_x;\n        self.accumulated_fees_x += fee_amount;\n        self.reserve_y -= y_out;"
    },
    {
      "url": "https://raw.githubusercontent.com/benedictbrady/amm-challenge/6b6921f8d463314aa7c96234e1be25a25245f704/amm_sim_rs/src/market/arbitrageur.rs",
      "quote": "/// Uses closed-form solutions for constant product AMMs.\n/// For reserves (x, y), k=xy, fee f (fee-on-input), \u03b3 = 1 - f, and fair price p (Y per X):\n/// - Buy X from AMM (AMM sells X): \u0394x_out = x - sqrt(k / (\u03b3\u00b7p)) (profit-maximizing)\n/// - Sell X to AMM (AMM buys X): \u0394x_in = (sqrt(k\u00b7\u03b3 / p) - x) / \u03b3 (profit-maximizing, \u0394x_in is gross input)"
    },
    {
      "url": "https://raw.githubusercontent.com/ChengHua926/amm-challenge/d34a5199c59a4c44d5336a25f1436b4ae1f21104/contracts/src/Strategy.sol",
      "quote": "contract Strategy is AMMStrategyBase {"
    }
  ]
}
