{
  "sources": [
    {
      "url": "https://raw.githubusercontent.com/benedictbrady/amm-challenge/6b6921f8d463314aa7c96234e1be25a25245f704/amm_competition/competition/config.py",
      "quote": "BASELINE_SETTINGS = BaselineSimulationSettings(\n    n_simulations=1000,\n    n_steps=10000,\n    initial_price=100.0,\n    initial_x=100.0,\n    initial_y=10000.0,\n    gbm_mu=0.0,\n    gbm_dt=1.0,\n    retail_buy_prob=0.5,\n    retail_size_sigma=1.2,\n)\n\n\nBASELINE_VARIANCE = HyperparameterVariance(\n    retail_mean_size_min=19.0,\n    retail_mean_size_max=21.0,\n    vary_retail_mean_size=True,\n    "
    },
    {
      "url": "https://raw.githubusercontent.com/benedictbrady/amm-challenge/6b6921f8d463314aa7c96234e1be25a25245f704/amm_competition/competition/match.py",
      "quote": "            rng = np.random.default_rng(seed=i)\n\n            retail_mean_size = (\n                rng.uniform(self.variance.retail_mean_size_min, self.variance.retail_mean_size_max)\n                if self.variance.vary_retail_mean_size\n                else self.base_config.retail_mean_size\n            )\n            retail_arrival_rate = (\n                rng.uniform(self.variance.retail_arrival_rate_min, self.variance.retail_"
    },
    {
      "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\",\n                    \"outputSelection\": {\n                        \"*\": {\n                            \"*\": [\n                                \"abi\",\n                                \"evm.bytecode.object\",\n     "
    },
    {
      "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)\npub struct Arbitrageur;\n\nimpl Arbitrageur {\n   "
    },
    {
      "url": "https://raw.githubusercontent.com/benedictbrady/amm-challenge/6b6921f8d463314aa7c96234e1be25a25245f704/amm_sim_rs/src/simulation/engine.rs",
      "quote": "            // 2. Arbitrageur extracts profit from each AMM\n            for amm in amms.iter_mut() {\n                if let Some(arb_result) = arbitrageur.execute_arb(amm, fair_price, t as u64) {\n                    *arb_volume_y.get_mut(&arb_result.amm_name).unwrap() += arb_result.amount_y;\n                    let entry = edges.entry(arb_result.amm_name).or_insert(0.0);\n                    // AMM edge is the negative of arbitrageur profit at true price\n                    *e"
    },
    {
      "url": "https://raw.githubusercontent.com/benedictbrady/amm-challenge/6b6921f8d463314aa7c96234e1be25a25245f704/amm_sim_rs/src/amm/cfmm.rs",
      "quote": "//! Implements Uniswap V3/V4-style fee model where fees are collected\n//! into separate buckets rather than being reinvested into liquidity.\n//! This means fees count toward PnL but don't inflate the k constant.\n\nuse crate::e"
    },
    {
      "url": "https://raw.githubusercontent.com/benedictbrady/amm-challenge/6b6921f8d463314aa7c96234e1be25a25245f704/contracts/src/AMMStrategyBase.sol",
      "quote": "    /// @notice Fixed storage array - strategies can only use these 32 slots\n    /// @dev This provides 1KB of persistent storage per strategy\n    /// @dev Slot access is validated at t"
    },
    {
      "url": "https://api.imdnotdead.fun/artifacts/c33720874aa1285e9dc766540b8a90410118a8e8b840d949ea0dcc211bdb27c1",
      "quote": "\"code\": \"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.24;\\n\\nimport {AMMStrategyBase} from \\\"./AMMStrategyBase.sol\\\";\\nimport {TradeInfo} from \\\"./IAMMStrategy.sol\\\";\\n\\ncontract Strategy is AMMStrategyBase {\\n    uint256 constant ELAPSED_CAP = 8;\\n    uint256 constant SIGNAL_THRESHOLD = WAD / 650;\\n    uint256 constant DIR_DECAY = 750000000000000000;\\n    uint256 constant ACT_DECAY = 530"
    },
    {
      "url": "https://raw.githubusercontent.com/ChengHua926/amm-challenge/d34a5199c59a4c44d5336a25f1436b4ae1f21104/contracts/src/Strategy.sol",
      "quote": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.24;\n\nimport {AMMStrategyBase} from \"./AMMStrategyBase.sol\";\nimport {TradeInfo} from \"./IAMMStrategy.sol\";\n\ncontract Strategy is AMMStrategyBase {\n    uint256 constant ELAPSED_CAP = 8;\n    uint256 constant SIGNAL_THRESHOLD = WAD / 650;\n    uint256 constant DIR_DECAY = 750000000000000000;\n    uint256 constant ACT_DECAY = 530000000000000000;\n    ui"
    },
    {
      "url": "https://raw.githubusercontent.com/benedictbrady/amm-challenge/6b6921f8d463314aa7c96234e1be25a25245f704/amm_competition/competition/config.py",
      "quote": "BASELINE_VARIANCE = HyperparameterVariance(\n    retail_mean_size_min=19.0,\n    retail_mean_size_max=21.0,\n    vary_retail_mean_size=True,\n    retail_arrival_rate_min=0.6,\n    retail_arrival_rate_max=1.0,\n    vary_retail_arrival_rate=True,\n    gbm_sigma_min=0.000882,\n    gbm_sigma_max=0.001008,\n    vary_gbm_sigma=True,\n)\n\ndef _midpoint(min_val: float, max_val: float) -> float:\n    return (min_val + max_val) / 2\n\n\ndef baseline_nominal_sigma() -> float:\n    return _midpoint(BASE"
    },
    {
      "url": "https://raw.githubusercontent.com/benedictbrady/amm-challenge/6b6921f8d463314aa7c96234e1be25a25245f704/amm_sim_rs/src/simulation/engine.rs",
      "quote": "        // Initialize price process\n        let mut price_process = GBMPriceProcess::new(\n            self.config.initial_price,\n            self.config.gbm_mu,\n            self.config.gbm_sigma,\n            self.config.gbm_dt,\n            Some(seed),\n        );\n\n        // 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.confi"
    }
  ]
}