{"item": "h3", "blocked": null, "files": [{"fork": "giorgoschionas", "branch": "main", "path": "contracts/src/Strategy.sol", "commit": "61ba5df13771e35a9887e51994d3eeb5edc4fade", "sha256": "6fd32f2c52b2460046eb1b7fc133531f62e27404fd8efaa8633907691988a19d", "valid": true, "d32": -211.3095, "oog": 0}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapeintStrategyV6.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "e0b6392c7fb06182c0943aedb9cd2f91b3eb0304c9bc479ad15991e5b901a15d", "valid": true, "d32": -151.5192, "oog": 0}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV10.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "48531320796e8f34c43ab8ff70ea1c1aba7d3f9acc2617ee7d69ee23fbedef97", "valid": true, "d32": -162.1948, "oog": 130101}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV11.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "c283d82d8b347a2d6ae68e3919e45ea0a29d3f95aa3c31b743cb590e6f96edc5", "valid": true, "d32": -162.1948, "oog": 130101}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV12.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "b584a3d214fc34480b21ca047882381377ea2ea56c566258245e666a5af48bca", "valid": true, "d32": -151.0654, "oog": 11}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV13.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "5ebf24dcab47ab4a181205900a1ed06968bb0182e1cb8688c6688b6ab26ecad4", "valid": true, "d32": -162.1915, "oog": 130101}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV14.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "3748c673f4d22fcee93cfa5c7822cf7599280694878cf80b62f268f821a2d42c", "valid": true, "d32": -151.5232, "oog": 0}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV15.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "e124086aadc2e1c2ed7a1341bfdc61bef96dd188f2f5fe07875d693beaaab79f", "valid": true, "d32": -151.7313, "oog": 0}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV16.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "de32575846934efe813528098a0115e629fdbf3511cc5c2da1d90889d516cf38", "valid": true, "d32": -466.2506, "oog": 0}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV17.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "ce89948bbd5a63f603e9f475d0da1407f33477c836ccf4424736cff1270674d1", "valid": true, "d32": -157.6189, "oog": 0}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV18.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "d72aae13001844c0b855afbf751cd26cfbc5bc73b9ba9a75501a5d9085472302", "valid": true, "d32": -151.5232, "oog": 0}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV19.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "adfd6a5a2e32a2e7dbbca3be1c7444c5d58eab701d81cd5d82855c4207402147", "valid": true, "d32": -151.5232, "oog": 0}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV20.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "4e8b2f98fe7533ee01b33e3238f53d00fb13667c0ac72cae79ef0ad8de8c6290", "valid": true, "d32": -151.5232, "oog": 0}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV21.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "11b90510d97cf336c4dc43922a50820c33c723ebc4d3b505a32c43a9c097d15c", "valid": true, "d32": -151.5232, "oog": 0}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV22.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "42b8d89e8ef91e8839107dfc725f0ed152b55502ad55cc5a809a2337693554bd", "valid": true, "d32": -410.7288, "oog": 475466}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV23.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "494d3d2760c60eb7e66b07885d2808221d38877a20514a109b36801f4b632804", "valid": true, "d32": -151.8662, "oog": 0}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV24.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "0a7014df6fce59d6d8eb1082df5b59a53dfcfc9c84eca72fdaed6e594032c14e", "valid": true, "d32": -500.752, "oog": 533460}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV25.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "cccf2169a6ac8b3078cbf9f402a357bb1c438aa895bf2f08b4d44179798def36", "valid": true, "d32": -500.752, "oog": 533460}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV26.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "64cb1d0a5c2fc9691c2ea2c63a637e801ef163adf7c25ed52ecb0351af575399", "valid": true, "d32": -500.752, "oog": 533460}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV27.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "f62ca54e830ae6238a067a0827e39ebc5965f1ac2f9ba1fe798fa19e34d85b8e", "valid": true, "d32": -500.752, "oog": 533460}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV28.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "1840dbdc2894a7d8b97f684063fc2f65da9e4abf5855c4c367d12f6f99556a87", "valid": true, "d32": -500.752, "oog": 533460}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV29.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "f3e317febad35a9294ea6902a1c6e302c10087aef4b1fbde504bf4b1e3d74884", "valid": true, "d32": -151.8662, "oog": 0}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV31.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "9b13b51ddd35dce4fe77c7dc5477f7dc41bca171203dbaf556b0f6087d4826f6", "valid": true, "d32": -500.752, "oog": 533460}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV32.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "c1491456fe71afed0c443173f4fb66dae70243ff9274f0f2706178b55dd3aaed", "valid": true, "d32": -500.752, "oog": 533460}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV33.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "c7d4ec00915307f5a4e26d0ac466a01d49a93ffa72b863cac0485c8db3c0b1f5", "valid": true, "d32": -500.752, "oog": 533460}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV34.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "7cd055c850ae327ab5d3509ef579d3d71d514f5925e1d1785b4fee3d514d37a4", "valid": true, "d32": -2.8743, "oog": 0}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV35.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "b3499f7e7de56d4f5069c83674043c8495a0751e8a140cf5f924e22d1f5a7db7", "valid": true, "d32": -17.0069, "oog": 0}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV36.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "ce63107ce461d95359b7a1dcd3421327e9d1fd5f2f6514f039303ee664caa0c5", "valid": true, "d32": -2.9294, "oog": 0}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV37.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "a5f9878752147ba90a5760fd9aa11d6581f16e6bb6a40f1ca1f6b95cc1203cc2", "valid": true, "d32": -2.9963, "oog": 0}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV38.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "a0513d0900874ed69d15f0a2c088995781c27d615b519a5f165c14dbf26cf883", "valid": true, "d32": -3.5601, "oog": 0}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV39.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "5567ee16c871c753010cfba3c6e1e25173b0b209289735a58ed6d752e15a526e", "valid": true, "d32": -2.909, "oog": 0}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV4.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "0ad2aabaa5db1e9c3f860be704f1693e31382136f34c2d49fc6258e235c80d84", "valid": true, "d32": -157.6113, "oog": 0}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV40.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "88e280c3b2b4eda33ff528e3814d7b5810cf74fc8d3c936e4f89ef2886a3c3bc", "valid": true, "d32": -2.8743, "oog": 0}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV41.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "2987050656354783961e646ed873ecfdb2d4bb3aa5299b0d49d81a1335cb2550", "valid": true, "d32": -3.447, "oog": 0}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV42.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "a7664f72ffef3f889590dd49be6061d82ec2e31488c446952543d3b644e89308", "valid": true, "d32": -20.3195, "oog": 0}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV43.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "508c9a449ea20119590ec0e058b4d635251a826796c9125a5384eed198a070ab", "valid": true, "d32": -2.8725, "oog": 0}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV44.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "40fdf409559e312e76c3e471d919d70ebd194aa353da87d40752d0556510ba0a", "valid": true, "d32": -2.9771, "oog": 0}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV45.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "139f529ac6dbfe48cf51930052ee9818df2931493fe97704643b263a53ca06cf", "valid": true, "d32": -2.91, "oog": 0}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV46.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "7cd60d2ce108889d6ad242c56027ad6cc6e23918234e549ad3e9d3d841449cea", "valid": true, "d32": -10.4976, "oog": 0}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV47.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "50946c29e7d3683a31b1e25e35b35c1bdcd501ddbc7aa69624a65c73c7a98b86", "valid": true, "d32": -3.4778, "oog": 0}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV48.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "bcf389d8c4ae886c08c2fae7f051f19178e655372c05b36c55e7aa1339c0e45d", "valid": true, "d32": -3.1195, "oog": 0}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV49.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "076c571a09b0d020464c5ffd04741e8b0fde11d6a84da0d9974e1a428c194261", "valid": true, "d32": -2.9043, "oog": 0}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV5.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "076bfe56e582393bf120d63188f35116fe6d877e97b94d15886d86bae868f918", "valid": true, "d32": -157.6113, "oog": 0}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV7.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "fd6a6236ae57d964790dc94a6e3048cda1268d748be860c64ba6d34ebb97283a", "valid": true, "d32": -151.5192, "oog": 0}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV8.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "5c00968196c7ba7f1439280771e3ae138f1f3caa1d91c37934d179f3a888f5ea", "valid": true, "d32": -152.8703, "oog": 11}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/SapientStrategyV9.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "7ac7360fa24bcf54b55730707b6dc6d186b2cb2f0d003e1fb21dd47284b99558", "valid": true, "d32": -151.5153, "oog": 11}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/VanillaStrategy.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "64b62042f06d3b48d61c1387c0b6f08b0c291c9d2419a0ca65a5fc1d1cc19f96", "valid": true, "d32": -189.7804, "oog": 0}, {"fork": "maxnorm", "branch": "main", "path": "contracts/src/refs/YQStrategy.sol", "commit": "ee285c088f214145a743bee69628e2a780267492", "sha256": "28dd08eecff2748c812c9ab2e267cc62a59f9af4eadd911e228e0f05d2ad36f2", "valid": true, "d32": -2.8743, "oog": 0}], "top3": [{"sha256": "508c9a449ea20119590ec0e058b4d635251a826796c9125a5384eed198a070ab", "url": "https://github.com/maxnorm/amm-challenge/blob/ee285c088f214145a743bee69628e2a780267492/contracts/src/SapientStrategyV43.sol", "mechanism": "Not analysed in depth for lack of time. It is one of maxnorm's 'SapientStrategy' iterations, which the commit message says were derived from a 'YQ reference' strategy (contracts/src/refs/YQStrategy.sol in the fork); on the 32 seeds it is within 0.002 of YQ (-2.8725 vs -2.8743). No fee-rule element beating RS2 was found: it loses about 2.7 edge per seed to RS2.", "seeds": "901000..901255", "paired": {"n": 256, "mean_diff": -2.730271945093559, "se": 0.07757488914538758, "worst": [{"seed": 901156, "d": -9.29750342327577}, {"seed": 901180, "d": -8.009583494556182}, {"seed": 901133, "d": -5.57204877715094}, {"seed": 901204, "d": -5.372957274346618}, {"seed": 901048, "d": -5.306158381597811}]}, "retail_edge_delta": {"mean": -1.8374852500739687, "se": 0.09032116755199045}, "arb_edge_delta": {"mean": -0.8927866950195917, "se": 0.04572011528718541}, "gas": {"max_ok": 207629, "oog": 0}}, {"sha256": "5567ee16c871c753010cfba3c6e1e25173b0b209289735a58ed6d752e15a526e", "url": "https://github.com/maxnorm/amm-challenge/blob/ee285c088f214145a743bee69628e2a780267492/contracts/src/SapientStrategyV39.sol", "mechanism": "Not analysed in depth for lack of time. It is a maxnorm SapientStrategy version (V39) in the same YQ-derived family, with the same peak gas (185532) as YQ, V34 and V40. It loses about 2.7 edge per seed to RS2 on 256 seeds.", "seeds": "901000..901255", "paired": {"n": 256, "mean_diff": -2.7266192610309474, "se": 0.07659733699462362, "worst": [{"seed": 901156, "d": -9.344678805590092}, {"seed": 901180, "d": -8.020562143629604}, {"seed": 901204, "d": -5.3738665503231005}, {"seed": 901048, "d": -5.321856644108266}, {"seed": 901034, "d": -5.101914942883582}]}, "retail_edge_delta": {"mean": -1.8374637522429487, "se": 0.08914203807181942}, "arb_edge_delta": {"mean": -0.8891555087880016, "se": 0.04553648693461161}, "gas": {"max_ok": 185532, "oog": 0}}, {"sha256": "7cd055c850ae327ab5d3509ef579d3d71d514f5925e1d1785b4fee3d514d37a4", "url": "https://github.com/maxnorm/amm-challenge/blob/ee285c088f214145a743bee69628e2a780267492/contracts/src/SapientStrategyV34.sol", "mechanism": "V34, the version the commit message names ('used YQ reference to improve at v34'). Its 32-seed result matches refs/YQStrategy.sol and V40 to every digit (-2.87433), so it most likely behaves like YQ. It was not run on 256 seeds because time ran out.", "seeds": "900000..900031 only (256-seed run not done: out of time)", "paired": {"n": 32, "mean_diff": -2.8743337699932106, "se": 0.24043747036278731, "worst": [{"seed": 900005, "d": -5.428194593183548}, {"seed": 900022, "d": -5.225871391006194}, {"seed": 900017, "d": -4.878984596833789}, {"seed": 900010, "d": -4.691139704285888}, {"seed": 900025, "d": -4.598732433260352}]}, "retail_edge_delta": {"mean": -2.1086068152217, "se": 0.2979467962339649}, "arb_edge_delta": {"mean": -0.7657269547714985, "se": 0.13111563093234443}, "gas": {"max_ok": 185532, "oog": 0}}], "code": {"source": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.24;\n\nimport {AMMStrategyBase} from \"./AMMStrategyBase.sol\";\nimport {TradeInfo} from \"./IAMMStrategy.sol\";\n\n/// @title Sapient Strategy V43 \u2014 V34 + two-speed pHat\n/// @notice Same as V34 (YQ baseline) plus: pHat_slow (slower EMA). When |pHat - pHat_slow|/pHat_slow > threshold, add a fee term (regime change).\n/// @dev Unique angle 2.7 from docs/2025-02-10-V34-explanation-and-unique-angles.md. One new slot: slots[11] = pHat_slow.\ncontract Strategy is AMMStrategyBase {\n    // --- decay / update constants ---\n    uint256 constant ELAPSED_CAP = 8;\n    uint256 constant SIGNAL_THRESHOLD = WAD / 500; // ~20 bps of reserve\n    uint256 constant DIR_DECAY = 800000000000000000; // 0.80\n    uint256 constant ACT_DECAY = 700000000000000000; // 0.70\n    uint256 constant SIZE_DECAY = 700000000000000000; // 0.70\n    uint256 constant TOX_DECAY = 910000000000000000; // 0.91\n    uint256 constant SIGMA_DECAY = 824000000000000000; // 0.824\n    uint256 constant LAMBDA_DECAY = 990000000000000000; // 0.99\n    uint256 constant SIZE_BLEND_DECAY = 818000000000000000; // 0.818\n    uint256 constant TOX_BLEND_DECAY = 51000000000000000; // 0.051\n    uint256 constant ACT_BLEND_DECAY = 985000000000000000; // 0.985\n    uint256 constant PHAT_ALPHA = 260000000000000000; // 0.26\n    uint256 constant PHAT_ALPHA_RETAIL = 50000000000000000; // 0.05\n    uint256 constant PHAT_SLOW_ALPHA = 50000000000000000; // 0.05 \u2014 slow EMA of fair price\n    uint256 constant DIR_IMPACT_MULT = 2;\n\n    // --- Adaptive Shock Gate ---\n    uint256 constant GATE_SIGMA_MULT = 10 * WAD;\n    uint256 constant MIN_GATE = 30000000000000000; // 0.03 WAD\n\n    // --- Two-speed pHat (angle 2.7): gap = |pHat - pHat_slow|/pHat_slow ---\n    uint256 constant GAP_THRESH = 1e16; // 1% \u2014 add fee only when gap above this\n    uint256 constant GAP_CAP = 1e17; // 10%\n    uint256 constant GAP_COEF = 10 * BPS; // fee per WAD of gap\n\n    // --- Cubic Toxicity ---\n    uint256 constant TOX_CUBIC_COEF = 15000 * BPS;\n\n    // --- Trade-Tox Boost ---\n    uint256 constant TRADE_TOX_BOOST = 2500 * BPS;\n\n    // --- Asymmetric Stale Dir ---\n    uint256 constant STALE_ATTRACT_FRAC = 1124000000000000000; // 1.124\n\n    // --- state caps ---\n    uint256 constant RET_CAP = WAD / 10; // 10%\n    uint256 constant TOX_CAP = WAD / 5; // 20%\n    uint256 constant TRADE_RATIO_CAP = WAD / 5; // 20%\n    uint256 constant LAMBDA_CAP = 5 * WAD; // max 5 trades/step estimate\n    uint256 constant STEP_COUNT_CAP = 64; // guardrail\n\n    // --- fee model constants ---\n    uint256 constant BASE_FEE = 3 * BPS;\n    uint256 constant SIGMA_COEF = 200000000000000000; // 0.20\n    uint256 constant LAMBDA_COEF = 12 * BPS;\n    uint256 constant FLOW_SIZE_COEF = 4842 * BPS;\n    uint256 constant TOX_COEF = 250 * BPS;\n    uint256 constant TOX_QUAD_COEF = 11700 * BPS;\n    uint256 constant ACT_COEF = 91843 * BPS;\n    uint256 constant DIR_COEF = 20 * BPS;\n    uint256 constant DIR_TOX_COEF = 100 * BPS;\n    uint256 constant STALE_DIR_COEF = 6850 * BPS;\n    uint256 constant SIGMA_TOX_COEF = 500 * BPS;\n    uint256 constant TAIL_KNEE = 500 * BPS;\n    uint256 constant TAIL_SLOPE_PROTECT = 930000000000000000; // 0.93\n    uint256 constant TAIL_SLOPE_ATTRACT = 955000000000000000; // 0.955\n\n    // slots[0] = bid fee\n    // slots[1] = ask fee\n    // slots[2] = last timestamp\n    // slots[3] = dirState\n    // slots[4] = actEma\n    // slots[5] = pHat (fast)\n    // slots[6] = sigmaHat\n    // slots[7] = lambdaHat\n    // slots[8] = sizeHat\n    // slots[9] = toxEma\n    // slots[10] = stepTradeCount\n    // slots[11] = pHat_slow\n\n    function afterInitialize(uint256 initialX, uint256 initialY) external override returns (uint256, uint256) {\n        uint256 p0 = initialX > 0 ? wdiv(initialY, initialX) : 100 * WAD;\n        slots[0] = BASE_FEE;\n        slots[1] = BASE_FEE;\n        slots[2] = 0;\n        slots[3] = WAD;\n        slots[4] = 0;\n        slots[5] = p0;\n        slots[6] = 950000000000000;\n        slots[7] = 800000000000000000;\n        slots[8] = 2000000000000000;\n        slots[9] = 0;\n        slots[10] = 0;\n        slots[11] = p0; // pHat_slow = same as pHat initially\n        return (BASE_FEE, BASE_FEE);\n    }\n\n    function afterSwap(TradeInfo calldata trade) external override returns (uint256, uint256) {\n        uint256 prevBidFee = slots[0];\n        uint256 prevAskFee = slots[1];\n        uint256 lastTs = slots[2];\n        uint256 dirState = slots[3];\n        uint256 actEma = slots[4];\n        uint256 pHat = slots[5];\n        uint256 lambdaHat = slots[7];\n        uint256 sizeHat = slots[8];\n        uint256 toxEma = slots[9];\n        uint256 stepTradeCount = slots[10];\n\n        bool isNewStep = trade.timestamp > lastTs;\n        if (isNewStep) {\n            uint256 elapsedRaw = trade.timestamp - lastTs;\n            uint256 elapsed = elapsedRaw > ELAPSED_CAP ? ELAPSED_CAP : elapsedRaw;\n\n            dirState = _decayCentered(dirState, DIR_DECAY, elapsed);\n            actEma = wmul(actEma, _powWad(ACT_DECAY, elapsed));\n            sizeHat = wmul(sizeHat, _powWad(SIZE_DECAY, elapsed));\n            toxEma = wmul(toxEma, _powWad(TOX_DECAY, elapsed));\n\n            if (stepTradeCount > 0 && elapsedRaw > 0) {\n                uint256 lambdaInst = (stepTradeCount * WAD) / elapsedRaw;\n                if (lambdaInst > LAMBDA_CAP) lambdaInst = LAMBDA_CAP;\n                lambdaHat = wmul(lambdaHat, LAMBDA_DECAY) + wmul(lambdaInst, WAD - LAMBDA_DECAY);\n            }\n\n            stepTradeCount = 0;\n        }\n\n        bool firstInStep = stepTradeCount == 0;\n\n        uint256 spot = trade.reserveX > 0 ? wdiv(trade.reserveY, trade.reserveX) : pHat;\n        if (pHat == 0) pHat = spot;\n\n        uint256 feeUsed = trade.isBuy ? prevBidFee : prevAskFee;\n        uint256 gamma = feeUsed < WAD ? WAD - feeUsed : 0;\n        uint256 pImplied;\n        if (gamma == 0) {\n            pImplied = spot;\n        } else {\n            pImplied = trade.isBuy ? wmul(spot, gamma) : wdiv(spot, gamma);\n        }\n\n        uint256 sigmaHat;\n        {\n            sigmaHat = slots[6];\n            uint256 ret = pHat > 0 ? wdiv(absDiff(pImplied, pHat), pHat) : 0;\n            uint256 alpha = firstInStep ? PHAT_ALPHA : PHAT_ALPHA_RETAIL;\n            uint256 adaptiveGate = wmul(sigmaHat, GATE_SIGMA_MULT);\n            if (adaptiveGate < MIN_GATE) adaptiveGate = MIN_GATE;\n            if (ret <= adaptiveGate) {\n                pHat = wmul(pHat, WAD - alpha) + wmul(pImplied, alpha);\n                _updatePhatSlowV43(pImplied);\n            }\n            if (firstInStep) {\n                if (ret > RET_CAP) ret = RET_CAP;\n                sigmaHat = wmul(sigmaHat, SIGMA_DECAY) + wmul(ret, WAD - SIGMA_DECAY);\n            }\n        }\n\n        uint256 tradeRatio = trade.reserveY > 0 ? wdiv(trade.amountY, trade.reserveY) : 0;\n        if (tradeRatio > TRADE_RATIO_CAP) tradeRatio = TRADE_RATIO_CAP;\n\n        if (tradeRatio > SIGNAL_THRESHOLD) {\n            uint256 push = tradeRatio * DIR_IMPACT_MULT;\n            if (push > WAD / 4) push = WAD / 4;\n\n            if (trade.isBuy) {\n                dirState = dirState + push;\n                if (dirState > 2 * WAD) dirState = 2 * WAD;\n            } else {\n                dirState = dirState > push ? dirState - push : 0;\n            }\n\n            actEma = wmul(actEma, ACT_BLEND_DECAY) + wmul(tradeRatio, WAD - ACT_BLEND_DECAY);\n\n            sizeHat = wmul(sizeHat, SIZE_BLEND_DECAY) + wmul(tradeRatio, WAD - SIZE_BLEND_DECAY);\n            if (sizeHat > WAD) sizeHat = WAD;\n        }\n\n        uint256 tox = pHat > 0 ? wdiv(absDiff(spot, pHat), pHat) : 0;\n        if (tox > TOX_CAP) tox = TOX_CAP;\n        toxEma = wmul(toxEma, TOX_BLEND_DECAY) + wmul(tox, WAD - TOX_BLEND_DECAY);\n        uint256 toxSignal = toxEma;\n\n        stepTradeCount = stepTradeCount + 1;\n        if (stepTradeCount > STEP_COUNT_CAP) stepTradeCount = STEP_COUNT_CAP;\n\n        uint256 flowSize = wmul(lambdaHat, sizeHat);\n        uint256 fBase = BASE_FEE + wmul(SIGMA_COEF, sigmaHat) + wmul(LAMBDA_COEF, lambdaHat) + wmul(FLOW_SIZE_COEF, flowSize);\n        uint256 fMid = fBase + wmul(TOX_COEF, toxSignal) + wmul(TOX_QUAD_COEF, wmul(toxSignal, toxSignal)) + wmul(ACT_COEF, actEma);\n\n        fMid = fMid + wmul(SIGMA_TOX_COEF, wmul(sigmaHat, toxSignal));\n\n        {\n            uint256 toxCubed = wmul(toxSignal, wmul(toxSignal, toxSignal));\n            fMid = fMid + wmul(TOX_CUBIC_COEF, toxCubed);\n        }\n\n        if (slots[11] > 0) {\n            uint256 gap = wdiv(absDiff(pHat, slots[11]), slots[11]);\n            if (gap > GAP_CAP) gap = GAP_CAP;\n            if (gap > GAP_THRESH) fMid = fMid + wmul(GAP_COEF, gap);\n        }\n\n        uint256 dirDev;\n        bool sellPressure;\n        if (dirState >= WAD) {\n            dirDev = dirState - WAD;\n            sellPressure = true;\n        } else {\n            dirDev = WAD - dirState;\n            sellPressure = false;\n        }\n\n        uint256 skew = wmul(DIR_COEF, dirDev) + wmul(DIR_TOX_COEF, wmul(dirDev, toxSignal));\n\n        uint256 bidFee;\n        uint256 askFee;\n        if (sellPressure) {\n            bidFee = fMid + skew;\n            askFee = fMid > skew ? fMid - skew : 0;\n        } else {\n            askFee = fMid + skew;\n            bidFee = fMid > skew ? fMid - skew : 0;\n        }\n\n        {\n            uint256 staleShift = wmul(STALE_DIR_COEF, toxSignal);\n            uint256 attractShift = wmul(staleShift, STALE_ATTRACT_FRAC);\n            if (spot >= pHat) {\n                bidFee = bidFee + staleShift;\n                askFee = askFee > attractShift ? askFee - attractShift : 0;\n            } else {\n                askFee = askFee + staleShift;\n                bidFee = bidFee > attractShift ? bidFee - attractShift : 0;\n            }\n        }\n\n        {\n            bool tradeAligned = (trade.isBuy && spot >= pHat) || (!trade.isBuy && spot < pHat);\n            if (tradeAligned) {\n                uint256 tradeBoost = wmul(TRADE_TOX_BOOST, tradeRatio);\n                if (trade.isBuy) {\n                    bidFee = bidFee + tradeBoost;\n                } else {\n                    askFee = askFee + tradeBoost;\n                }\n            }\n        }\n\n        if (sellPressure) {\n            bidFee = clampFee(_compressTailWithSlope(bidFee, TAIL_SLOPE_PROTECT));\n            askFee = clampFee(_compressTailWithSlope(askFee, TAIL_SLOPE_ATTRACT));\n        } else {\n            askFee = clampFee(_compressTailWithSlope(askFee, TAIL_SLOPE_PROTECT));\n            bidFee = clampFee(_compressTailWithSlope(bidFee, TAIL_SLOPE_ATTRACT));\n        }\n\n        slots[0] = bidFee;\n        slots[1] = askFee;\n        slots[2] = trade.timestamp;\n        slots[3] = dirState;\n        slots[4] = actEma;\n        slots[5] = pHat;\n        slots[6] = sigmaHat;\n        slots[7] = lambdaHat;\n        slots[8] = sizeHat;\n        slots[9] = toxEma;\n        slots[10] = stepTradeCount;\n\n        return (bidFee, askFee);\n    }\n\n    function _updatePhatSlowV43(uint256 pImplied) internal {\n        slots[11] = wmul(slots[11], WAD - PHAT_SLOW_ALPHA) + wmul(pImplied, PHAT_SLOW_ALPHA);\n    }\n\n    function _compressTailWithSlope(uint256 fee, uint256 slope) internal pure returns (uint256) {\n        if (fee <= TAIL_KNEE) return fee;\n        return TAIL_KNEE + wmul(fee - TAIL_KNEE, slope);\n    }\n\n    function _powWad(uint256 factor, uint256 exp) internal pure returns (uint256 result) {\n        result = WAD;\n        while (exp > 0) {\n            if (exp & 1 == 1) result = wmul(result, factor);\n            factor = wmul(factor, factor);\n            exp >>= 1;\n        }\n    }\n\n    function _decayCentered(uint256 centered, uint256 decayFactor, uint256 elapsed) internal pure returns (uint256) {\n        uint256 mul = _powWad(decayFactor, elapsed);\n        if (centered >= WAD) {\n            return WAD + wmul(centered - WAD, mul);\n        }\n        uint256 below = wmul(WAD - centered, mul);\n        return below < WAD ? WAD - below : 0;\n    }\n\n    function getName() external pure override returns (string memory) {\n        return \"Sapient v43 - two-speed pHat\";\n    }\n}\n", "sha256": "508c9a449ea20119590ec0e058b4d635251a826796c9125a5384eed198a070ab", "url": "https://github.com/maxnorm/amm-challenge/blob/ee285c088f214145a743bee69628e2a780267492/contracts/src/SapientStrategyV43.sol", "author": "maxnorm (git author of commit ee285c0, 2026-02-11)", "licence": "No LICENSE file on the fork branch head; the fork does not state its own licence"}, "notes": ["giorgoschionas/amm-challenge has one branch (main @61ba5df). One file there defines afterSwap and differs from upstream: contracts/src/Strategy.sol. It is valid and scores d32 -211.3 vs RS2.", "maxnorm/amm-challenge has one branch (main @ee285c0). 47 .sol files there define afterSwap and differ from upstream; that is 50 or fewer, so all were kept. They are SapientStrategyV4..V49 (no V30; V6 is spelled 'Sapeint'), a modified VanillaStrategy.sol and refs/YQStrategy.sol. All 47 come from a single commit, so 'most recently committed' could not order them.", "All 48 candidates passed amm-match validate. None beats RS2: the best d32 is -2.87 (V43). On 256 seeds (901000..901255), V43 is -2.73 and V39 is -2.73, both with 0 OOG. Several versions OOG heavily: V10 has 130101 OOG calls; V25-V29 and V31-V33 have 533460 each; V8 and V9 have 11 each.", "In the 256-seed runs RS2 had 0 OOG. Method: the harness_source of artifact 33f54e81..., with RS2 run once per seed block and cached. Each candidate was run alone against VanillaStrategy. In the gas figures, oog and max_ok are summed over all gas_stats rows for the candidate's run.", "Conclusion: these two forks have no fee rule that beats RS2. maxnorm's best line (the YQ-derived family) is about 2.7-2.9 edge per seed below RS2."]}