# Public repository survey: Paradigm AMM fee challenge Read **2026-11-07 UTC**. Scope: public repositories/write-ups, not a live-board audit. Scores are source claims/committed results; none was reproduced, validated or submitted here. This item does not establish a promotion or paired gain. New leads: shl0k28 first-small-print classifier, happybigmtn boundary inference, and newly public eliizabethzhang contracts. ## Sources table Ranked by main attributable score claim; unequal seeds, counts and versions prevent a like-for-like performance ranking. Dates are pinned commit author dates (UTC); author is repository owner. Full source paths are in each section. Unknown-score rows are unranked. | URL | Author | Date | Score | score_type | Mechanisms (one line) | |---|---|---|---|---|---| | [repo](https://github.com/dipankar/amm-challenge) | dipankar | 2026-05-25 | 526.54 | local, 500 sims | pHat/toxicity/asymmetric SigmaAdaptive | | [repo](https://github.com/ChengHua926/amm-challenge) | ChengHua926 | 2026-04-23 | 525.8062833788406 | local 1,000; params record | pHat; no-cubic current file | | [repo](https://github.com/shl0k28/amm-challenge) | shl0k28 | 2026-02-10 | 525.08 | local 1,000; more runs below | First-small-print arb filter | | [repo](https://github.com/maxnorm/amm-challenge) | maxnorm | 2026-02-11 | 524.63 | local, 1,000 sims, V34 | YQ clone; bandit/dual-horizon variants | | [repo](https://github.com/The-CTra1n/amm-challenge) | The-CTra1n | 2026-02-08 | 522.13 | local, five seed offsets × 99 sims | Regime/toxicity/skew; CMA-ES | | [repo](https://github.com/solosage1/amm-challenge) | solosage1 | 2026-02-13 | 516.69 | local promotion document; 400 sims claimed for +0.15 | BandShield; confidence/inventory variants | | [repo](https://github.com/0zKillua/amm-challenge) | 0zKillua | 2026-02-10 | 502.15 | parent claim; n unknown | Virtual price; side momentum | | [repo](https://github.com/VictorQian03/amm-challenge) | VictorQian03 | 2026-04-01 | 417.8408626958254 | local smoke, 8 sims | Gap/shock/size memories | | [repo](https://github.com/Leoeqs/amm-challenge) | Leoeqs | 2026-02-09 | 380.15 | local, 99 sims; Solidity title claim | Inventory band; 3-step bump | | [repo](https://github.com/Pulkit7070/agmonverse) | Pulkit7070 | 2026-02-13 | 360.91 (AI 30 bps); 392.08 (50 bps baseline) | local; n unlinked | Size tiers; reversed objective | | [repo](https://github.com/eliizabethzhang/market-making-challenge) | eliizabethzhang | 2026-11-02 | not found | unscored; new code | New pHat/Hybrid code | | [repo](https://github.com/happybigmtn/ammchallenge-lab) | happybigmtn | 2026-02-12 | not found for current file | unscored code; filenames are not score evidence | Boundary arb filter; skew | | [repo](https://github.com/crypto-yuvi/amm-challenge) | crypto-yuvi | 2026-02-10 | not found | unscored code | Dual-alpha quadratic feedback | | [repo](https://github.com/alexanderzliu/amm-challenge) | alexanderzliu | 2026-02-11 | not found | unscored code | Opposite-side quadratic spike | | [repo](https://github.com/atvinicius/amm-challenge) | atvinicius | 2026-02-09 | not found | unscored code | pHat; idle discount | | [repo](https://github.com/0xpranav62/amm-challenge) | 0xpranav62 | 2026-02-10 | not found | unscored code | One-slot size/impact/gap EWMA | | [repo](https://github.com/nmrshll-katas/amm-fee-structure) | nmrshll-katas | 2026-06-10 | not found | unscored | Variance/dt sigma/inventory | | [repo](https://github.com/hive-swarm-hub-dev/fork--amm-edge--accelerated-beluga) | hive-swarm-hub-dev | 2026-04-20 | not found | unscored code | Opposite-side size-tier bumps | | [repo](https://github.com/hive-swarm-hub-dev/task--amm-edge) | hive-swarm-hub-dev | 2026-04-19 | not found | starter-only snapshot | Static50 starter | | [repo](https://github.com/0xniki/amm-challenge) | 0xniki | 2026-02-24 | not found | unscored code | Retuned pHat/toxicity model | | [repo](https://github.com/ylintern/ammchallenge) | ylintern | 2026-04-24 | not found | unscored standalone Solidity | Retuned pHat/tail model | | [repo](https://github.com/houseofjiao/amm-challenge) | houseofjiao | 2026-02-12 | not found | unscored code | Retuned pHat/lambda model | | [repo](https://github.com/lumen-dev-a11y/amm-challenge-lab) | lumen-dev-a11y | 2026-03-06 | ~379 (fixed 55 bps only) | local200; fixed55 comment | Fixed55 plus unscored dynamic file | | [repo](https://github.com/alitaslimi/amm-challenge) | alitaslimi | 2026-02-08 | not found | unscored | Size/rapid-fill arb heuristics | | [repo](https://github.com/giorgoschionas/amm-challenge) | giorgoschionas | 2026-03-12 | not found | unscored code | Static25 | | [repo](https://github.com/kmadorin/amm-challenge) | kmadorin | 2026-04-09 | not found | unscored autoresearch starter | Static30 autoresearch starter | | [repo](https://github.com/d2p-finance/d2p-fee-strategies) | d2p-finance | 2026-04-21 | not found | upstream example republished | Symmetric size widening | | [repo](https://github.com/EricForgy/amm-challenge) | EricForgy | 2026-02-10 | not found | interface extension | V2 fixed50 interface starter | | [repo](https://github.com/muttoni/ammvisualizer) | muttoni | 2026-02-15 | not found | visualizer | Fixed30/50; size-widening examples | | [repo](https://github.com/mirrormystic/auto_research_with_council) | mirrormystic | 2026-04-09 | not found | example strategy; README mock score is illustrative | Spot EMAs; asymmetric displacement | | [repo](https://github.com/adrianhihi/vial-paradigm-hackathon) | adrianhihi | 2026-04-09 | not found | harness/proposal, no strategy .sol at snapshot | Research harness; no .sol | Known YQ is not re-reported. Fixed55~379 is qualified with its repository, not ranked as a dynamic result. ## Search coverage and simulator check **Citations:** each section links an exact commit; named paths identify its source files. Mechanisms/parameters come from code, scores from the named README/log/result. Searched GitHub direct forks (74 records), both repository-search pages `amm-challenge fork:true` (180 hits, including unrelated/prop-AMM projects), README searches `AMMStrategyBase`, `"amm-match"`, `"afterSwap(TradeInfo"`, `"ammchallenge.com"`, and web searches for those strings. Fetched default-branch archives and READMEs directly; large strategy collections are grouped by mechanism family with representative code paths. GitHub unauthenticated global code search failed HTTP403/rate limit, limiting completeness. GitLab project search and Codeberg repository search for `amm-challenge` returned empty arrays; web domain searches found no matching solution. This is bounded discovery, not proof of absence. Discovery: [forks](https://api.github.com/repos/benedictbrady/amm-challenge/forks?per_page=100), [GitHub search](https://api.github.com/search/repositories?q=amm-challenge+fork:true&per_page=100), [README search](https://api.github.com/search/repositories?q=AMMStrategyBase+in:readme&per_page=100), [GitLab](https://gitlab.com/api/v4/projects?search=amm-challenge&simple=true&per_page=100), [Codeberg](https://codeberg.org/api/v1/repos/search?q=amm-challenge&limit=50). **Notation:** `isBuy=true` means AMM buys X; bid applies. At an actual arb's old band, fair=`postspot*(1-bid)` for AMM buys, `postspot/(1-ask)` for AMM sells. Retail does not give an exact fair observation. First observed timestamp fill can be retail if no profitable arb occurred. Large retail and small arb are both possible. “BPS coefficients” below mean the integer multiplied by `BPS`, not a flat fee. **Shared state-estimator family (F):** fee-band pseudo-observation → filtered pHat; first-print absolute-return sigma; own-fill count/gap lambda; size/activity/tox EWMAs. Stale spot-minus-pHat and signed size pressure set asymmetric fees; aligned trades can add a size surcharge. No explicit inventory target or definitive arb label unless specified. Store 11 state slots; gap decay is evaluated on returning fills, capped at eight steps. Named variants below specify their different parameters. **Reference facts checked at pinned upstream `6b6921f8d463314aa7c96234e1be25a25245f704`:** 10,000 steps; GBM sigma U[.00088,.00101] per step; arb opportunity checked each step before retail (no trade if no profitable arb), with successful arb leaving the old quoted fee-band edge; Poisson retail lambda U[.6,1], lognormal sizes with sigma1.2 and mean U[19,21]Y; router splits between two AMMs; fees collected outside reserves; 32 slots and 250,000 gas per call. Returned fees apply to the next trade. A returning-fill decay cannot change the fee previously exposed while idle. Reference: [upstream pinned repository](https://github.com/benedictbrady/amm-challenge/tree/6b6921f8d463314aa7c96234e1be25a25245f704), `README.md`, `amm_sim_rs/src/market/arbitrageur.rs`, `amm_sim_rs/src/amm/cfmm.rs`, `amm_sim_rs/src/simulation/engine.rs`, `amm_sim_rs/src/types/config.rs`, `amm_sim_rs/src/evm/strategy.rs`. **Cross-source cautions:** fee reinvestment is wrong here; post-arb spot needs fee correction; retail directions do not alternate; own spot sigma includes retail impact. Initial-price mean reversion is an assumption, not GBM behavior. The inherited “normalizer 250–350” prose and the known 522.13 fixed30 claim are not portable baselines: the normalizer *facing a different strategy* is not a counterfactual fixed30 submission score. No third-party gas or validation result was reproduced. Repository setup/agent commands were ignored, including STATUS, promotion scripts, autoresearch rules and Vial/council runbooks. ## dipankar/amm-challenge [Pinned commit](https://github.com/dipankar/amm-challenge/tree/c588ae6c47fc9af2063c9bb1f2efbeb0dd276dab). **New since the supplied description:** README now names SigmaAdaptive as best, 526.54 over 500 simulations, versus MaxEdgeFinal 410.58 and WinningV5 295.57. Its historical “top ~522.39” context is stale relative to the assignment's board snapshot. `README.md` **Mechanisms:** no hard arb/retail label; first-versus-later accepted price updates, stale-price toxicity, and a trade-direction alignment surcharge. It reconstructs `pImplied = spot*(1-bid)` for AMM buys X and `spot/(1-ask)` for AMM sells X, then filters with alpha .26/.05 and gate `max(10*sigmaHat,.03)`. Bid/ask skew uses directional pressure plus spot-minus-pHat sign; stale attraction multiplier 1.12. No explicit reserve-target inventory control. Normalized Y trade size feeds activity/size EWMAs and aligned-side widening. `contracts/src/SigmaAdaptiveStrategy.sol` **Parameters/timing:** 12 slots; initial fee 3 bps, sigma .00095, lambda .8, size .002. Signal threshold .002; size blend .182, activity .015, toxicity .949; sigma blend .176; direction push `2*ratio`, cap .25. Fee coefficients, in BPS units where written as `*BPS`: lambda 12, flow 5000, toxicity 250/12000/15000 (linear/quadratic/cubic), activity 90000, sigma-tox 500, direction 20/100, stale 7000, aligned boost 2500. Idle decay subtracts absolute .05/.10/.10/.03 per elapsed step from direction/activity/size/tox, capped at eight steps; this differs materially from multiplicative decay. **Code-versus-prose warnings:** `wmul(SIGMA_COEF * BPS, sigmaHat) / WAD` applies another WAD division, effectively zeroing the direct sigma contribution at ordinary magnitudes. `wdiv(stepCount * WAD, elapsed * WAD / WAD)` is over-scaled and clamps the observed rate to 2 for positive counts. Once `firstIn` becomes 1, the sigma update condition remains true on later accepted trades at that timestamp; it is not first-trade-only as the comment says. No paired SE or fresh-seed confirmation is supplied for the headline. ## ChengHua926/amm-challenge [Pinned commit](https://github.com/ChengHua926/amm-challenge/tree/d34a5199c59a4c44d5336a25f1436b4ae1f21104). **Score:** `scratch/results/best_params_baseline.json` reports `n_sims=1000`, submission mean 525.8062833788406 and normalizer mean 359.55757760760014. Its parameters include a cubic coefficient 2.0; current `contracts/src/Strategy.sol` is named `no_cubic` and omits that term. The logged score therefore must not be attached unqualified to the current Solidity file. No official score or paired uncertainty found. `scratch/results/best_params_baseline.json` **Current strategy:** fee-band implied fair price; alpha .27 on first-in-step and .06 thereafter; gate `max(7.2*sigma,.03)`. First-print absolute implied-return EWMA retains .69; direction/size/activity/tox decay across timestamp gaps capped at 8. It uses first-print timing and trade alignment as proxies, not a definitive arb detector. Direction pressure and spot-versus-pHat sign set asymmetric fees; no explicit inventory target in the current file. Trade size updates flow and adds a 3500 BPS coefficient surcharge on aligned trades. Lambda retention .99 with cap 1.82; seed sigma .00095, lambda .8, size .002. `contracts/src/Strategy.sol` **Parameters:** base 4 bps; sigma coefficient .2; lambda 12 BPS; flow 4842 BPS; tox 300/15000 BPS; activity 91843 BPS; direction 20/100 BPS; stale 6850 BPS, attraction 1.05; sigma-tox 500 BPS; knee 600 bps, tail slopes .93/.85. State uses 11 slots. Archived scratch strategies test initial-price inventory bands, opposite-direction skew, post-arb drops, EWMA sigma and graduated size rules. In `dyn_v3_inventory`, the comments say spot>101 means too little X, but the code raises the fee for acquiring X and lowers the fee for selling X: that moves inventory away from the stated target. GBM does not restore price100. `contracts/src/Strategy.sol` `scratch/strategies/dyn_v3_inventory.sol` ## shl0k28/amm-challenge [Pinned commit](https://github.com/shl0k28/amm-challenge/tree/9c4be0b64479ebb41c5cb5dd7082007130a155a2). **Scores:** iteration 55 ranks current `Strategy.sol` first at 525.08 over 1,000 simulations; nearest local alternative is `Strategy_ghost_arbclass.sol` 524.84. Earlier tuning reports 555.89/10, 548.36/25, 538.59/99 and 532.18/500. Earlier-phase online ~514.47 is user-reported, not this final file. No paired SE/holdout proof. `research_log.md` **Detection/fair price:** `likelyArb = firstInStep && tradeRatio <= WAD/360` (about .2778% of Y reserves). Scheduling is a probabilistic clue; it labels small fills arb-like. Only first prints update pHat: fee-band inverse, alpha .34 if likely arb and .12 otherwise; fixed 3% shock gate. Arb-like prints update absolute-return sigma with retention .65; other first prints multiply sigma by .999. Later retail within the same timestamp does not update fair price. `Strategy.sol` **Asymmetry/flow:** directional size pressure plus stale sign; spot>=pHat widens bid and discounts ask, reversed below. No explicit inventory target in the final file. Lambda EWMA uses prior active-step count divided by raw gap, retention .994, cap 5. Size/activity update above `WAD/700` (~14.29 reserve bps; its comment says ~20), ratio cap .2, size blend .20, activity .007. Gap decay capped at 8: direction .85, activity .70, size .60, tox .90 per step. Toxicity blend .90 new/.10 old. **Parameters:** 11 slots; base 3 bps; sigma .2; lambda 12 BPS; flow 5600; tox 200/20000; activity 42000; direction 90/20; stale 6900, all latter coefficients `*BPS`. Tail knee 700 bps, slope .90. Log and archived variants cover carry clocks, first/later-phase fees, hazard regimes, stale taxes, multiscale estimates and rejected inventory/carry additions; these mechanisms are already explored, not fresh ideas. `Strategy.sol` ## maxnorm/amm-challenge [Pinned commit](https://github.com/maxnorm/amm-challenge/tree/ee285c088f214145a743bee69628e2a780267492). **Score/date:** V34 changelog reports 524.63/1,000; V48 dual-horizon result is 524.40. V49's tuning run log leaves its result blank, so V49 is not a demonstrated promotion. Docs say2025-02-10, conflicting with the February2026 snapshot. No official-board score verified. `docs/2025-02-10-Sapient-V34-YQ-baseline-changelog.md` `docs/2025-02-10-Sapient-V48-dual-sigma-lambda-changelog.md` **Mechanisms/parameters:** V34 explicitly identifies itself as the known YQ clone, not a new winning architecture. Its retained constants are alpha .26/.05; sigma retention .824; gate max(10 sigma,.03); direction/activity/size/tox gap factors .8/.7/.7/.91; elapsed cap 8; size blend .182, toxicity .949, activity .015; base 3 bps, sigma .2, lambda 12 BPS, flow 4842, tox 250/11700/15000, activity 91843, direction 20/100, stale 6850, attraction 1.124, sigma-tox 500, aligned boost 2500; knee 500 bps, tails .93/.955. No hard classifier or reserve target in V34; size/direction/stale-price signals control asymmetry. `contracts/src/SapientStrategyV34.sol` **Variants:** V35 imbalance; V36–39 calm/tox-dependent decay; V40 silence; V41 size gate; V42 toxic runs; V43 two-speed pHat; V44 velocity; V45 size-weighted tox; V46 epsilon-greedy multipliers .85/1/1.15/1.3 with fee×Y-notional proxy reward; V47 momentum; V48 dual sigma/lambda (slow retention .95, thresholds1.1/1.2, +2bps); V49 knee450bps, no logged result. V34 prose “knee5bps” conflicts with code500bps. `contracts/src/SapientStrategyV46.sol`, `contracts/src/SapientStrategyV48.sol`, `contracts/src/SapientStrategyV49.sol`. ## The-CTra1n/amm-challenge [Pinned commit](https://github.com/The-CTra1n/amm-challenge/tree/cd1bf7bc269dd22abbde65dd1e10f2df3b49eaf2). **Score:** STATUS's final benchmark lists 536.10, 517.40, 516.30, 529.69, 511.16 at offsets 0/10000/20000/30000/40000, mean 522.13 (495 simulations). Earlier ~516.54 is a previous architecture. “Official runs” here means official local CLI, not board. The CMA objective is mean minus a dispersion penalty; no paired SE provided. `STATUS.md` **Mechanisms:** F, except pHat updates only first-in-step inside a fixed4% gate. Direction/stale asymmetry; no explicit inventory target. `contracts/src/Strategy.sol` **Parameters:** 11 slots; base 3 bps; flow 5600, tox quadratic 11700, activity 53500, stale 6900 (`*BPS`); tox old-weight .150, activity old-weight .9905; gate .04. pHat alpha .22, sigma retention .65; gap factors .8/.7/.7/.8; size blend .35. Knee500bps, slope .90. STATUS name directives ignored. `contracts/src/Strategy.sol` ## solosage1/amm-challenge [Pinned commit](https://github.com/solosage1/amm-challenge/tree/99dc1cfd0963c274df5f2145e8a282a78226fe9e). **Score/provenance:** `CHAMPION_PROMOTION_COMPLETE.md` dated 2026-02-11 claims 516.54→516.69 (+.15), using flow 5600→6800, linear tox 200→180, quadratic 20000→19000 (`*BPS`), with 400-simulation validation asserted. No SE is reported; its “bps” unit for edge is not the challenge's fee-bps unit. Later comments mention ~519.30 promotion thresholds, not verified candidate scores. The reconstruction document describes a prediction needing testing, weaker evidence than the promotion assertion. `CHAMPION_PROMOTION_COMPLETE.md` `ITER6_RECONSTRUCTION_README.md` **Code actually visible:** `ChampionTmp.sol` is a BandShield snapshot with the shl0k28-like first-print/small-size classifier (threshold `WAD/360`), alpha .34/.12, gate .03, sigma retention .65 or .999 decay, 11 slots. Its constants remain flow 5600, tox 200/20000; do not confuse it with the documented reconstruction. `contracts/src/ChampionTmp.sol` **Other implemented attempts:** temporary candidate Solidity files add fast/slow anchors, confidence-scaled pHat, flow–inventory agreement, deadbands, adverse-side-only tox, fee slew limits and more tail forms. `TmpWildcard_v308_candidate.sol` explicitly computes inventory/flow pressure. `contracts/src/TmpWildcard_v308_candidate.sol` **Instruction handling:** promotion/queue/timeout commands were historical data, not executed. `CHAMPION_PROMOTION_COMPLETE.md` ## 0zKillua/amm-challenge [Pinned commit](https://github.com/0zKillua/amm-challenge/tree/5ae0b44ad59cbb359ebbc0de4cf462d3ceec35e4). **Score:** V74/V75 comments identify V73 as 502.15; no simulation count or board provenance accompanies that number, so classify as unverified experimental/local-context claim. Do not rank V75 itself at 502.15; it only cites its parent. `contracts/src/V75Strategy.sol` `contracts/src/V45Strategy.sol` **Representative late family:** V75 stores virtual price, slow price EMA, sigma, separate side momenta and buy/sell size EWMAs (9 slots). No binary classifier in V75. Virtual price is .995 old/.005 postspot plus signed trade-impact shift divided by 33; this is a heuristic anchor, not exact fee-band inversion. Price EMA .98/.02; absolute postspot-return sigma .95/.05. Sigma normalization starts at 6 bps and spans 8 bps. Total base spread 9+8*normalized-sigma bps is split across sides, despite initial fees of 6 bps each. `contracts/src/V75Strategy.sol` **Asymmetry/timing:** virtual-minus-spot deviation coefficient 1500 BPS, cap 120 bps; discounts opposite side by half, floor 1 bps. Momentum is size-proportional, with 1/6 sympathetic contribution and volatility scaling 70–120%; retention .76, or .50 after gap>=3. Volume imbalance retention .90, deadband .10, slope 50 BPS, cap 15 bps. No reserve target in V75; separate inventory strategies exist. Size is normalized amountY/reserveY; staleness adds up to 6 bps when spot/slow-price gap>.5%. **Analysis errors:** `expert_analysis.md` sometimes equates post-arb spot with fair and proposes an unexplained square-root oracle. It asserts the next trade is almost certainly opposite-direction retail and that silence means calm; neither follows from independent retail directions/routing. Claimed +10–20 edge from time decay is a prediction. ## VictorQian03/amm-challenge [Pinned commit](https://github.com/VictorQian03/amm-challenge/tree/d039851267b8f28d9c7123b3d75d81c96413efe4). **Score:** archived `incumbents/smoke.json` contains mean_edge 417.8408626958254; it is LatentStateEWMA on seeds0–7 (8 simulations), not the current strategy. No official score claim. `artifacts/hill_climb_smoke/apr01-audit-smoke/incumbents/smoke.json` **Mechanisms:** current `Strategy.sol` is LatentStateIncumbentGapAwareV3. It uses slow postspot EMA (alpha .0012) rather than an arb-band oracle. Shock=max(normalized X/Y size, postspot jump), with .12/.20 extra size weighting at >4/>10 reserve bps. No arb/retail classifier. Asymmetric same-side pressure gets .16*shock versus .07 opposite; final shock contributions .18/.06; same-side repeat adds 2 bps, stale sign adds 1 bps. No independent inventory target. Sigma is not separately estimated: current price jump and decayed shock/size memory are risk proxies. `contracts/src/Strategy.sol` **Parameters/timing:** base 69 bps; pressure/cooldown/size decay .85/.90/.92 per callback, additional decay at gaps>=2 and >=4; cooldown grows .15*shock; common fee adds .235*cooldown+.088*size-memory. Calm idle gap>=3 discounts 2 bps; favorable side discounts 5 or 3 bps below cooldown thresholds 5 or 7 bps. Uses 8 slots. `contracts/src/Strategy.sol` `contracts/src/candidates/README.md` ## Leoeqs/amm-challenge [Pinned commit](https://github.com/Leoeqs/amm-challenge/tree/bb1df27b74bcafe0abfc3618e89ea80557a220b8). **Score:** AdaptiveStrategy's title reports 380.15/99, not a board result. `contracts/src/AdaptiveStrategy.sol` **Mechanisms/parameters:** no fair-price inference or sigma estimator. Resting fee 26 bps+4 bps per absolute price point from 100, deviation capped at four points. When spot>101 ask gets +50 bps; below 99 bid gets +50. A trade >=4% of either postreserve initiates/extends a 3-step bump: +674 bps to the opposite fee side, +300 to the other, selected anew from the latest direction while in the window. A >=50-step gap clears the bump at the next callback. Inventory response is an initial-price ratio heuristic; size is a hard threshold and there is no soft timing classification. Separate UndercutStrategy is symmetric static 26 bps. Two storage slots. `contracts/src/AdaptiveStrategy.sol` `contracts/src/UndercutStrategy.sol` **Caveat:** fixed-price inventory rules need not track drifting GBM fair price. Fee reset occurs only when afterSwap is called: there is no idle timer callback that changes the fee before the next fill. ## Pulkit7070/agmonverse [Pinned commit](https://github.com/Pulkit7070/agmonverse/tree/2cef8c7a3a064b1821e01c90858162677d0b378f). **Score/error:** README labels 360.91 versus 392.08 as a 7.9% improvement because “Lower edge score = less arbitrageur extraction = better for LPs!” This reverses the fee challenge's objective: higher net edge is better. The README describes 100-simulation evaluation in general, but does not securely tie a count/seed set to that table or prove a board submission. `README.md` **Code:** final `strategies/Strategy.sol` starts at 30 bps, computes `wmul(amountX,amountY)`, then selects symmetric 50/40/30 bps at product thresholds 1e18/1e17. No fair inference, classification, sigma, skew or inventory response. Slot 0 records size, slot 1 is initialized but unused. It resets the quote to the tier after every callback without time decay. `strategies/Strategy.sol` **Extra code defect:** `Strategy_groq.sol` uses raw integers 19/1/20 and multiplier clamp [1,5] inside WAD arithmetic; these are not 19*WAD, etc. Its claimed multiplier interpretation is dimensionally inconsistent and can produce near-zero fees. `strategies/Strategy_groq.sol` ## eliizabethzhang/market-making-challenge [Pinned commit](https://github.com/eliizabethzhang/market-making-challenge/tree/7156ff039f0ecd9ad62328664d997a762cf02cf0). **New finding:** this is no longer README-only at the inspected commit (2026-11-02). `contracts/src/Strategy.sol`, HybridStrategy, HybridStrategy_combo, BroadSearchStrategy and static 30/40/70/80/85/100/150-bps probes are public. README has no attributable score. `contracts/src/Strategy.sol` `contracts/src/HybridStrategy.sol` `contracts/src/BroadSearchStrategy.sol` **Main Strategy:** 15 slot indices (0–14), with direction/activity/size/tox and filtered fee-band pHat; alpha .265 first/.055 later, gate max(9 sigma,.03), sigma retention .76. No hard label is used to gate price updates; consecutive counters are tracked, but they do not feed the main fee equation. Direction plus stale sign sets bid/ask skew, aligned size adds a surcharge; no independent reserve-target inventory response. Gap decay capped at 8 uses .78/.62/.62/.91 direction/activity/size/tox; size/activity/tox retentions .82/.985/.051; lambda .99, capped at 3. `contracts/src/Strategy.sol` **Main parameters:** base 3 bps, sigma .2; lambda 12 BPS; flow 4842; tox 280/13000; activity 91843; direction 20/100; stale 6850, attraction 1.08; sigma-tox 500; aligned boost 3000. Fee cap starts at 500 bps, decreases with sigma (coefficient 2) and bottoms at 200 bps. Tail knee 550 bps is above that cap; tail slopes .925/.875. **Distinct Hybrid:** size classifiers `ratio>1/60` arb, `>1/250` large, bumps 350/100 bps, base/floor/cap 30/10/500 bps, consecutive bump 3, decay 7 bps, multiplicative inventory-flow accumulator and stale anchor. Caution: Hybrid reconstructs pre-reserves with the opposite signs to the fee-kept-aside transition (`postX+amountX` for an AMM buy); its fair-price correction always adds an absolute difference even when the observation is lower. BroadSearch drops the fair-price path but retains flow/inventory skew and those thresholds. Neither is a validated improvement here. `contracts/src/HybridStrategy.sol` ## happybigmtn/ammchallenge-lab [Pinned commit](https://github.com/happybigmtn/ammchallenge-lab/tree/d354d0f32f3ec06ec926ae07165e363996eb37bf). **Score:** no numerical evaluation linked to current `amm_submissions/Strategy.sol` was found in the inspected framework note and committed score files. Filenames such as `Strategy_best_494_60.sol` are not measured results. Framework describes fast/holdout offsets, without paired statistics here. `AMM_CHALLENGE_FRAMEWORK.md` `amm_submissions/Strategy.sol` **Current mechanisms:** only first callback at a new timestamp updates the oracle. With prior pHat and prior side fee, predict postspot at the fee boundary; label arb if actual postspot differs by <=55 bps. Arb label resets pHat exactly to fee-corrected postspot; non-arb uses window 7 spot EMA. Absolute pHat-move volatility EMA window 415 is computed but volatility coefficient is 0 in the fee. Asymmetric stale skew: deadband 18 bps, slope .600, cap 500 bps; toxic-only extra .19*excess-mispricing; base 23 bps+ .18*tradeRatioBps, toxic side at least 32 bps, safe cap disabled (`0` means off), global max 1000 bps. Five slots; no current inventory term; fees recomputed after each fill with no elapsed exponential fee decay. **Other implemented mechanisms:** variants reconstruct pre-reserves using net fee input, test whether pretrade spot lay outside pHat's old fee band, then invert the observed boundary. `PHatSkewBandInv_withInvTry.sol` adds inventory against `sqrt(k0/pHat)`: window 59, volatility window 415, base 25 bps, max 235, skew .480 cap100, inventory slope .80 and cap500 bps. There are phase schedules, first/later-step ramps, fixed asymmetric probes, flow-count/lambda and max-move filters. “Tuned on the official seedset” is not holdout evidence. `amm_submissions/PHatSkewBandInv_withInvTry.sol` ## crypto-yuvi/amm-challenge [Pinned commit](https://github.com/crypto-yuvi/amm-challenge/tree/ac0a5a834be93db2695ff7a638ed0af5763fcadc). **Mechanisms:** FeeStrategy1 classifies `amountY/reserveY>.002705` as arb-like. It tracks both Y/X and X/Y reserve ratios, with separate alpha when price moves toward/away from its own EMA. These are lagged price anchors, not fee-band implied fair prices. Normalized signed displacement from each EMA creates asymmetric fees via `base ± (KP1*error + KP2*error²)`; no separate sigma estimate or reserve-target inventory controller. Trade size switches the filter mode; no timestamp decay/reset. `contracts/src/FeeStrategy1.sol` **Parameters:** four slots; base 28 bps; KP1 6535 BPS, KP2 34244 BPS; arb toward/away alphas .001156/.0119; retail .001150/.0989. Hard size classification is heuristic and does not match a simulator-provided label; retail has a lognormal tail and arb can be small. README supplies no strategy-specific result. `contracts/src/FeeStrategy1.sol` `README.md` ## alexanderzliu/amm-challenge [Pinned commit](https://github.com/alexanderzliu/amm-challenge/tree/e15b10d2193387e14b863342adacf9508821b471). **Mechanisms/parameters:** `my_strategy.sol` (DirContrarian) initializes bid/ask at 24 bps; after each trade computes size `r=amountY/reserveY`, spike `1.25*r + 15*r²`, decays stored fees by 8/9 down to 24 bps, and sets the opposite fee side to max(decayed fee, base+spike). AMM buys X => spike ask, decay bid; AMM sells X => spike bid, decay ask. Two slots. No classifier, fair-price inference, volatility estimate or reserve-imbalance target; size and trade direction alone set asymmetry. No timestamp reset. No attributable score found in its README/code. `my_strategy.sol` ## atvinicius/amm-challenge [Pinned commit](https://github.com/atvinicius/amm-challenge/tree/78752c17e06b3f4b5d304291e29642f13693c2d7). **Mechanisms:** F, but first-in-step pHat only, gate .04, alpha .24, sigma retention .68. Initialize sigma .00095, lambda .8, size .0018. `strategy_submission.sol` **Parameters/timing:** base 2 bps; sigma .16; lambda 10 BPS; flow 6200; tox 280/10800; activity 50000; direction 24/120; stale 6500 (`*BPS`). Signal `WAD/700`; direction push 2; lambda retention .99; size blend .30, tox blend .80, activity .015. Gap decay capped8: .84/.75/.72/.82 direction/activity/size/tox. Idle discount 1 bps per extra missed step, cap6, evaluated only on a returning fill. Knee420 bps, slope .88. ## 0xpranav62/amm-challenge [Pinned commit](https://github.com/0xpranav62/amm-challenge/tree/4e24ad7eba497b263e877ebece7d0288c0ad810c). **Mechanisms:** no arb/retail classifier or fair-price estimate. Reconstructs pretrade reserves using invariant k, computes trade notional, own trade price impact and timestamp gap; three integer EWMAs drive a symmetric fee target. No bid/ask skew or inventory target. Impact is own AMM movement, not hidden fair-price sigma. One packed slot stores fee, size EMA, impact EMA, gap EMA and timestamp. `contracts/src/EdgeMaxxing.sol` **Parameters:** initialize fee70 bps, EMA size8, impact12, gap1. Size/impact retain .85; gap retains .80. Target `75 + floor(emaSize*2/12) + floor(emaImpact*2/14) - emaGap`, minus2 for same-timestamp fill; clamp55–95 bps. Slew +6/−3 bps per trade. Size and impact caps1200, gap255; amounts are quantized to integer Y units. No autonomous elapsed reset; gaps enter the filter. ## nmrshll-katas/amm-fee-structure [Pinned commit](https://github.com/nmrshll-katas/amm-fee-structure/tree/f2ea2c177b41921a6f16960f956ec54e2213fdd7). **Mechanisms:** source files include InventoryAware, VolatilityStrat1/2, Variance, BoostDecay and WidenAfterBigTrades plus parameter templates. VolatilityStrat1 has no arb classifier/fair oracle/asymmetry: variance EWMA .9, per-callback squared reserve-price return divided by timestamp gap when gap>0, sigma=sqrt(variance), symmetric fee 14 bps+2*sigma, initial variance1e-6. Stored price/timestamp still move on same-timestamp callbacks. `contracts/src/VolatilityStrat1.sol` **Inventory/sigma variant:** VolatilityStrat2 averages absolute returns across eight stored reserve prices, with shift/history loops; base20 bps, volatility gain .05, inventory gain .01 times `|X-X0|/X0`. Excess X raises bid and lowers ask, reversed for deficient X; no arb classification or fee-band inference. Eleven slots are used. InventoryAware instead sets symmetric `20bps*(1+5*initial-price-deviation²)`; this is a fixed initial-price anchor, not fair-price inference. Variance uses EWMA alpha .1, fee base5 bps + .01*sigma. `contracts/src/VolatilityStrat2.sol` `contracts/src/InventoryAware.sol` `contracts/src/Variance.sol` **Timing/size:** VolatilityStrat2 is trade-count history, no time decay; explicit trade size is absent there. BoostDecay is the same shock/side-pressure design as VictorQian03's current family (base69, decay .85/.92/.90, alpha .0012, gap thresholds2/4), so is not independent evidence of a new mechanism. WidenAfterBigTrades is the upstream size-threshold example. No score claim beyond generic inherited README context. History loops are worth gas review before reuse; no validate/gas run was performed here. `contracts/src/BoostDecay.sol` ## hive-swarm-hub-dev/fork--amm-edge--accelerated-beluga [Pinned commit](https://github.com/hive-swarm-hub-dev/fork--amm-edge--accelerated-beluga/tree/670cadc5f45c001931d9391e1e60ac3fd58f5042). **Mechanisms/parameters:** `strategy.sol` (AsymCumulD90), 3 slots, initializes both fees29 bps and stores initial spot. Value trade size as max(Y amount, X amount at initial spot, X amount at current spot), inflate2%, take integer `r=floor(value/24Y)` and bump `36*r` bps with hand-tapered tier boundaries (26/35/42/60/95/110/130/152 Y). Bid/ask decay to max(29bps,.90*previous) each fill. AMM buys X adds bump to ask; sells X adds to bid. No explicit arb classifier, fair price filter, sigma or inventory control; notional size and opposite-side response drive it. Timestamp ignored. `strategy.sol` ## hive-swarm-hub-dev/task--amm-edge [Pinned commit](https://github.com/hive-swarm-hub-dev/task--amm-edge/tree/b4a8cf7bf7f67c7afed6861e463f2ab7e4936d6c). **Result:** root strategy.sol is the stock fixed50-bps starter. No detection, fair-price estimate, asymmetry, sigma, inventory, size or timing response, and no attributable result beyond inherited README commentary. The child adds modifications; the parent does not. `strategy.sol` ## 0xniki/amm-challenge [Pinned commit](https://github.com/0xniki/amm-challenge/tree/56ca9d16f1099b42ee498e3af7651187b1971819). **New parameters in `my_strategy.sol` (L9):** alpha .25/.04, gate max(10*sigma,.025), sigma retention .83, gap cap8; direction/activity/size/tox factors .82/.72/.72/.90; lambda .99, size/tox/activity blend .18/.95/.015. Base3 bps; sigma .2; lambda12 BPS; flow4800, tox260/12000/15000, activity90000, direction20/100, stale7000 (attraction1.10), sigma-tox500, boost2500; knee500bps, tails .93/.955. `my_strategy.sol` **Mechanisms:** F; first/later pHat gains, first-fill sigma, stale/directional asymmetry, aligned size boost. ## ylintern/ammchallenge [Pinned commit](https://github.com/ylintern/ammchallenge/tree/52875e202d743b54049844c5833f97f27b3f2330). **Parameters/differences:** `Strategy.sol` (taMole_Reverso_milli) has alpha .265/.05, tox gap factor .895, cubic13300 BPS, protective tail slope .875 instead of .93; other principal constants: base3bps, sigma .2, lambda12 BPS, flow4842, tox250/11700, activity91843, stale6850/attraction1.124, boost2500, knee500bps, attract tail .955, gate max(10 sigma,.03), sigma retention .824. `Strategy.sol` **Mechanisms:** F; standalone Strategy.sol, no README or attributable score at this snapshot. ## houseofjiao/amm-challenge [Pinned commit](https://github.com/houseofjiao/amm-challenge/tree/4f41eb914ca8df491dbb1068256bbf8561638149). **Mechanisms/parameters:** current Strategy has fee-band pHat, first/later alpha .27/.06, gate max(7.2 sigma,.03), first-fill sigma retention .69, direction/size/activity/tox decay .75/.53/.53/.91, cap8. Lambda retention .99, cap1.82; size blend .172, tox .949, activity .015. Base4bps, sigma .2; lambda12 BPS, flow4842, tox300/15000/20000, activity91843, direction20/100, stale6850 with attraction1.05, sigma-tox500, aligned boost3500. Knee600bps, tails .93/.85. `contracts/src/Strategy.sol` **Mechanisms:** F; no score found. Closely related to ChengHua926, but its 525.806 record cannot be assigned to this repository. ## lumen-dev-a11y/amm-challenge-lab [Pinned commit](https://github.com/lumen-dev-a11y/amm-challenge-lab/tree/4eae7bd93693b415d06adabb66d8db1e1975ab0b). **Score qualification:** nested `contracts/src/Strategy.sol` title claims ~379 edge/200 simulations for fixed55. That is a different file from nested `my_strategy.sol` (night_7); no dynamic score found. Fixed55 has none of the requested dynamic mechanisms. `amm-challenge/contracts/src/Strategy.sol` **Dynamic mechanisms:** 11-slot fee-band pHat, alpha .26/.05, gate max(10 sigma,.03), first-fill absolute-return sigma (.824 retention); stale/direction asymmetry; size/activity/lambda/tox EWMAs, capped-gap decay8. No hard classifier or explicit reserve target. It chooses competitive base1bps versus protective base3bps using sigma threshold .0011. Distinct coefficients: flow4779, tox315/12228/13662, activity94855, stale6666, aligned boost2530 (`*BPS`); attraction1.124, knee500, slopes .93/.955. Other base-family factors are direction .8, activity/size .7, tox .91, lambda .99, size blend .182, tox .949, activity .015. `amm-challenge/my_strategy.sol` ## alitaslimi/amm-challenge [Pinned commit](https://github.com/alitaslimi/amm-challenge/tree/d5691537907af9d11679eaf7e3188024b9c0da02). **Mechanisms:** classify arb-like on any of: size>5% Y reserves, consecutive fills within5 steps, reserve-change ratio>5%, or size within10% of previous fill. Arb label adds2 bps symmetrically; otherwise move toward base25bps by −1bps or +.5bps. A retail-labeled AMM buy additionally cuts ask .5bps; AMM sell cuts bid .5bps. Both clamp20–80bps. Eight slots; no fair-price oracle, volatility estimate or reserve-target inventory skew. Raw combined X+Y reserve-change ratios mix token units, so they are not an invariant market measure. `contracts/src/AdaptiveStrategy.sol` Timing only changes detection/count; no elapsed fee reset. Comments incorrectly say lowering ask attracts “sellers” and lowering bid attracts “buyers”: sides are reversed under TradeInfo's AMM perspective. Solidity contract is named `AdaptiveStrategy`, not required `Strategy`; rename/check before submission. ## giorgoschionas/amm-challenge [Pinned commit](https://github.com/giorgoschionas/amm-challenge/tree/61ba5df13771e35a9887e51994d3eeb5edc4fade). **Result:** public Strategy.sol returns `25*BPS` at initialization and every swap; getName says Optimal_25bps, which is a name, not proof of optimality. No detection, fair estimate, skew, volatility, inventory, size response, storage state, decay or reset. `contracts/src/Strategy.sol` ## kmadorin/amm-challenge [Pinned commit](https://github.com/kmadorin/amm-challenge/tree/ec151d5a2da3810a65736d6dbe0519f81219286d). **Result:** `autoresearch/Strategy.sol` returns `30*BPS` both sides; no dynamic mechanisms or state. Baseline for harness variance; “ONE file” edit instruction ignored. `autoresearch/Strategy.sol` ## d2p-finance/d2p-fee-strategies [Pinned commit](https://github.com/d2p-finance/d2p-fee-strategies/tree/7343a28b5f84a1b134df6877337029e41eb9b529). **Result:** EntryPoint.sol copies the upstream example: initialize30bps, if `amountY/reserveY>.05` add10bps; otherwise subtract1bps toward30; return the same fee on both sides and use one slot. It does not infer fair price, estimate sigma or inventory, or explicitly identify arb; size is a widening trigger. Decay is per callback, not elapsed-step, with no independent idle reset. `contracts/src/EntryPoint.sol` ## EricForgy/amm-challenge [Pinned commit](https://github.com/EricForgy/amm-challenge/tree/262bc6c06b40cb7131d33a1e513a421c9aa3d09c). **Result:** introduces AMMStrategyBaseV2, TradeInfoV2 and multi-asset/multi-pool entrypoints. StarterStrategyV2 returns symmetric50bps, including compatibility methods for the original runtime. No classifier, fair oracle, asymmetry, sigma, inventory, size or decay in that starter; no new score. V2 requires a modified interface/runtime; not an original-competition mechanism. `contracts/src/StarterStrategyV2.sol` `README.md` ## muttoni/ammvisualizer [Pinned commit](https://github.com/muttoni/ammvisualizer/tree/b7e564d21ff3f02a9a9a3346da850ba6236144ea). **Result:** README describes a visual companion that mirrors mechanics. Solidity examples are embedded in `lib/strategies/builtins.ts`, not separate strategy .sol files: static30, static50, and base30→+10bps when size>5% of Y reserve, then −1bps per small fill. No oracle/classifier/skew/sigma/inventory; one fee slot for widening, no elapsed timing. No score; visualizer is not the pinned Rust evaluator. `lib/strategies/builtins.ts` `README.md` ## mirrormystic/auto_research_with_council [Pinned commit](https://github.com/mirrormystic/auto_research_with_council/tree/e77a4c750ba0c96d86007dc10d6689cdd8fc2e18). **Code:** `examples/amm-challenge/strategy.sol` (AutoArena_v1), three slots, EMA of absolute spot-price changes alpha .2 and slow spot EMA .05. Base10bps below5 normalized volatility bps, base100bps above40, linear interpolation between. Spot displacement from slow EMA produces integer boost floor(500*relative-displacement), cap30bps; spot above EMA raises ask, lowers bid by up to5bps, reversed below. No explicit arb classifier, fee-band fair inference, reserve-target inventory or direct size response; no timestamp decay. `examples/amm-challenge/strategy.sol` **Caveats:** comment “spot ABOVE average → X is cheap” reverses the ordinary meaning of Y/X and the code's stale-price defense side relative to its anchor. A lagged EMA is not necessarily fair value. README's schematic 412.83 “NEW BEST” is not a measured result for this file. Repository instructions to run a council forever and launch installers were ignored. `examples/amm-challenge/strategy.sol` `README.md` ## adrianhihi/vial-paradigm-hackathon [Pinned commit](https://github.com/adrianhihi/vial-paradigm-hackathon/tree/1e5b6ba0ea8d7c1e9fa1e11fd600f80cd3a7f811). **Result:** README dated April9,2026 describes Adrian and Nicholas's automated-research demo. No strategy .sol is present in the inspected archive; the README gives interface examples and proposed research capsules rather than a scored fee contract. No implemented detection/fair/skew/sigma/inventory/size/timing policy is established. `README.md` **Contradictions:** “above ~35bps ... edge collapses to ~0” and “50bps starter ... below250” are predictions, not consequences of the router; fills also depend on reserves, price and size. Its normalizer “250–350 reference floor” is not a portable score baseline. Run/setup/key-placeholder/submit instructions were ignored. ## Duplicates, unchanged forks and exclusions Unchanged forks below add no strategy beyond inherited fixed50/fixed30/base/interface/tests in the inspected default branch; this says nothing about private work or other branches. No score is inferred from a filename/getName. - **YQ copies:** inspected Strategy.sol and README in `fool1280`, `madisoncarter1234`, `Sub-MesonBrain`, `NeelDaftary`, `Whisker17`, `miquelmalaga`, `NotIshanSingh`, `raahimSal` copies; their HEAD is the known YQ commit `3e9dc7d5a6192c88b562a0f8d9c172ca566ec94d`. Copies do not independently corroborate scores. `0xdatawolf001/amm-challenge-yq` has HEAD `c7918878b8a456815c6eba0602aea4d176c01c11`; its Strategy.sol is byte-identical to YQ. No separate score was found. mohammedalqrini mirror README advertises a zip; GitHub archive returned404. Its download instructions were ignored. - **Upstream-only forks:** the remaining successful direct-fork downloads exposed inherited strategies only (including Edward-Alkimie, hackingdecentralized, dmnkf, acemasterjb, mmsaki, Oxkai, rohanphw, sisyphusSmiling, darrylyeo, jaoz, enriquedlh97, piotrostr, ericli, uniyalabhishek, davidrhodus, horacepan, euler-mab, joeabbey, sneg55, CleanPegasus, adietrichs). No new fee mechanism or independent score was found in them; full discovery list is in the cited forks endpoint. 0xAxiom and mawdbot archives returned404. - **Excluded:** raulvilas (2022 Molecule exercise), LeoTheDev0810 (AMM implementation), mpielvitori (different project), thisstom1 (no relevant selected files), and prop-AMM sequel forks. PVP is an alternate arena: its README's size>5% example returns symmetric40bps else30; actual .sol files are upstream starters, not an official fixed30 score. [PVP source](https://github.com/wanxinwanxin/pvp_amm_challenge/tree/c13aea83c3216cc11dba10feaeb7f86915f33f65). No new public repository was tied to @0xMai/@Ponxter or reproduced the supplied528.40 leader under the requested measurement standard. Board top10 is outside this item. ## Mechanisms not found implemented in the inspected public sources Bounded negative findings, not claims about private competitors. Confidence, dual horizons, phase fees, inventory, bandits and polynomial toxicity already appear above. - A censored Bayesian fair-price posterior that combines exact arb-boundary likelihoods with inequality information from first retail/no-arb observations, instead of collapsing every fill to a noisy point. - Joint inference of retail arrival/size parameters using the fee-dependent probability that an order routes entirely away, correcting own-fill-count selection bias. - Closed-form or fixed-quadrature expected-edge maximization against the fixed30 router under a filtered fair-price distribution, including next-step arb cost rather than a tuned polynomial fee map. - An explicit value-of-information fee policy: temporarily quote to sharpen arb/retail identification, then price the resulting information gain against immediate expected edge loss.