{
  "credit": "Taylor (gtmcknight), github.com/gtmcknight/amm-sim@4812a6382311624e1506aca131ca35c378f930d9 research/solved",
  "mech": "fee-memory: independent bid/ask EMA or dead-band hysteresis after the final LEAN table lookup and before fee_round; no additional observations.",
  "already_present": false,
  "definition": {
    "already_present_where": "Read leanbase.py Policy.on_grid, stalerival.py Policy.on_trade/round_fees, real.py RealPolicy.on_trade/lookup, tellpol.py TellPolicy.on_trade from the pinned LEANBASE reference bundle. They retain prior fees for filtering, router inference and the tell, but return newly looked-up fees without EMA or dead-band hysteresis.",
    "source_artifacts": [
      "https://api.imd.fun/artifacts/a88ff982eba7e078bc6ccb1555b90a211c00c9fd76ec90a62ab13a4074f2c3d0",
      "https://api.imd.fun/artifacts/efb8e653f8fd061cecf3e92b186470c9c96c5188523364b60ed101e9672869aa"
    ],
    "formula": "For each side independently let u be the newly computed unrounded fee and p the previously returned rounded fee. EMA: v=(1-w)*u+w*p. Dead band: v=p if abs(u-p)<h*1e-4, otherwise v=u. Return fee_round(v), including the existing clamp and Vanilla-gamma avoidance. Initialization is unchanged; the first callback uses initialized fees as p.",
    "parameters": {
      "ema_old_weights": [
        0.001,
        0.003,
        0.01,
        0.03,
        0.1,
        0.3
      ],
      "dead_band_bps": [
        0.01,
        0.03,
        0.1,
        0.3,
        1,
        3
      ]
    },
    "state_kept": "Reuse sf[3:5] (the bid/ask fees in force); no additional persistent state. Apply on every callback, without timestamp reset. Final rounded fees update both float and integer fee state used by the tell, router and filter.",
    "method": "12 fixed settings; paired LEAN comparisons on 64000..65023 in cumulative rounds of 128. Drop immediately when mean_diff+3*se<0. SE=sample SD of paired differences (n-1)/sqrt(n). Choose highest cumulative mean among survivors, with settings order breaking ties; if all drop choose the highest observed mean. Freeze before report. Each report condition evaluated once for all 2048 seeds 10000..12047. seeds_positive counts strictly positive per-seed candidate-minus-baseline edge.",
    "baseline_parameters": {
      "LEAN": {
        "a0": 0.35,
        "ainf": 0.35,
        "tau": 2
      },
      "AGE": {
        "a0": 0,
        "ainf": 0.7,
        "tau": 1
      }
    },
    "reproduce": "Decode replica code_zb64 as base64(zlib(tar)); apply patch to fastlean/fastlean.py. Use the reference_zb64 module map from the LEANBASE artifact and Taylor pol_mid.json/qm_k1e-5.json at 4812a6382311624e1506aca131ca35c378f930d9 research/solved. Python 3.12 with numpy 2.2.6, numba 0.61.2, llvmlite 0.44.0. tabs=fastlean.load(amm_dir,memory_mode=mode,memory_param=param,**baseline_parameters); fastlean.run_batch(tabs,range(start,end+1)), default n_steps=10000, weights=None. Baselines use memory_mode=0.",
    "validation": {
      "selection_statistics_and_early_stopping_independently_recomputed": true,
      "report_statistics_independently_recomputed": true,
      "input_hashes_verified": true,
      "original_fastlean_sha256": "d9c758bb280fe24e09c039496f84ab0804173ff70cec24c332f8683f28efa582",
      "patched_fastlean_sha256": "aaf1943382c76ff52c8e1cff1f7c227b4defeffdf09cd549b037e23e0b71bca4",
      "zero_mode_vs_original": {
        "n": 4,
        "seeds": [
          64000,
          64001,
          64002,
          64003
        ],
        "bit_identical": 4
      },
      "cpython_edge_checks": [
        {
          "mode": 0,
          "param": 0,
          "age": false,
          "n": 4,
          "bit_identical": 4,
          "max_abs_diff": 0.0
        },
        {
          "mode": 1,
          "param": 0.03,
          "age": false,
          "n": 4,
          "bit_identical": 4,
          "max_abs_diff": 0.0
        },
        {
          "mode": 2,
          "param": 0.3,
          "age": false,
          "n": 4,
          "bit_identical": 4,
          "max_abs_diff": 0.0
        },
        {
          "mode": 1,
          "param": 0.03,
          "age": true,
          "n": 4,
          "bit_identical": 4,
          "max_abs_diff": 0.0
        },
        {
          "mode": 2,
          "param": 0.3,
          "age": true,
          "n": 4,
          "bit_identical": 4,
          "max_abs_diff": 0.0
        }
      ],
      "chosen_callback_checks": [
        {
          "seed": 64000,
          "age": false,
          "callbacks": 9526,
          "labels_equal": 9526,
          "max_fee_diff_bps": 0.0
        },
        {
          "seed": 64001,
          "age": false,
          "callbacks": 10792,
          "labels_equal": 10792,
          "max_fee_diff_bps": 0.0
        },
        {
          "seed": 64002,
          "age": false,
          "callbacks": 10540,
          "labels_equal": 10540,
          "max_fee_diff_bps": 0.0
        },
        {
          "seed": 64003,
          "age": false,
          "callbacks": 10607,
          "labels_equal": 10607,
          "max_fee_diff_bps": 0.0
        },
        {
          "seed": 64000,
          "age": true,
          "callbacks": 9527,
          "labels_equal": 9527,
          "max_fee_diff_bps": 0.0
        },
        {
          "seed": 64001,
          "age": true,
          "callbacks": 10786,
          "labels_equal": 10786,
          "max_fee_diff_bps": 0.0
        },
        {
          "seed": 64002,
          "age": true,
          "callbacks": 10543,
          "labels_equal": 10543,
          "max_fee_diff_bps": 0.0
        },
        {
          "seed": 64003,
          "age": true,
          "callbacks": 10603,
          "labels_equal": 10603,
          "max_fee_diff_bps": 0.0
        }
      ]
    }
  },
  "settings_tried": [
    {
      "parameters": {
        "family": "ema",
        "mode": 1,
        "param": 0.001
      },
      "n": 1024,
      "mean_diff": -0.00033324248919985866,
      "se": 0.002908415528146304,
      "seeds_positive": 499,
      "dropped_early": false,
      "drop_rule_triggered": false
    },
    {
      "parameters": {
        "family": "ema",
        "mode": 1,
        "param": 0.003
      },
      "n": 1024,
      "mean_diff": -0.008513684216326256,
      "se": 0.003645464605738177,
      "seeds_positive": 469,
      "dropped_early": false,
      "drop_rule_triggered": false
    },
    {
      "parameters": {
        "family": "ema",
        "mode": 1,
        "param": 0.01
      },
      "n": 512,
      "mean_diff": -0.021765057012407385,
      "se": 0.007233572587616507,
      "seeds_positive": 221,
      "dropped_early": true,
      "drop_rule_triggered": true
    },
    {
      "parameters": {
        "family": "ema",
        "mode": 1,
        "param": 0.03
      },
      "n": 128,
      "mean_diff": -0.13645704453628937,
      "se": 0.022589606337339942,
      "seeds_positive": 35,
      "dropped_early": true,
      "drop_rule_triggered": true
    },
    {
      "parameters": {
        "family": "ema",
        "mode": 1,
        "param": 0.1
      },
      "n": 128,
      "mean_diff": -1.418706379859561,
      "se": 0.051333515681710865,
      "seeds_positive": 1,
      "dropped_early": true,
      "drop_rule_triggered": true
    },
    {
      "parameters": {
        "family": "ema",
        "mode": 1,
        "param": 0.3
      },
      "n": 128,
      "mean_diff": -13.035198353672051,
      "se": 0.2680242146451947,
      "seeds_positive": 0,
      "dropped_early": true,
      "drop_rule_triggered": true
    },
    {
      "parameters": {
        "family": "dead_band",
        "mode": 2,
        "param": 0.01
      },
      "n": 1024,
      "mean_diff": -0.0006115027166961884,
      "se": 0.0007744724617887704,
      "seeds_positive": 445,
      "dropped_early": false,
      "drop_rule_triggered": false
    },
    {
      "parameters": {
        "family": "dead_band",
        "mode": 2,
        "param": 0.03
      },
      "n": 1024,
      "mean_diff": -0.00015745968983243985,
      "se": 0.0016973129869118078,
      "seeds_positive": 475,
      "dropped_early": false,
      "drop_rule_triggered": false
    },
    {
      "parameters": {
        "family": "dead_band",
        "mode": 2,
        "param": 0.1
      },
      "n": 1024,
      "mean_diff": -0.0034347028302428306,
      "se": 0.0025060591371160795,
      "seeds_positive": 482,
      "dropped_early": false,
      "drop_rule_triggered": false
    },
    {
      "parameters": {
        "family": "dead_band",
        "mode": 2,
        "param": 0.3
      },
      "n": 1024,
      "mean_diff": -0.008205772367452402,
      "se": 0.003005456833022445,
      "seeds_positive": 464,
      "dropped_early": false,
      "drop_rule_triggered": false
    },
    {
      "parameters": {
        "family": "dead_band",
        "mode": 2,
        "param": 1.0
      },
      "n": 256,
      "mean_diff": -0.03820107456009558,
      "se": 0.008644448131014934,
      "seeds_positive": 99,
      "dropped_early": true,
      "drop_rule_triggered": true
    },
    {
      "parameters": {
        "family": "dead_band",
        "mode": 2,
        "param": 3.0
      },
      "n": 128,
      "mean_diff": -0.43232695840277824,
      "se": 0.023154038914423483,
      "seeds_positive": 6,
      "dropped_early": true,
      "drop_rule_triggered": true
    }
  ],
  "chosen": {
    "mode": 2,
    "param": 0.03,
    "family": "dead_band",
    "selection_index": 7,
    "selection_rule": "Highest cumulative paired mean among survivors; if none survive, highest observed mean among dropped settings.",
    "selection_n": 1024,
    "selection_mean_diff": -0.00015745968983243985,
    "selection_se": 0.0016973129869118078
  },
  "report": {
    "vs_lean": {
      "n": 2048,
      "mean_diff": -0.0006303010545473664,
      "se": 0.0009622144824857604,
      "seeds_positive": 899,
      "seed_start": 10000,
      "seed_end": 12047,
      "baseline_mean": 536.603390956178,
      "candidate_mean": 536.6027606551235,
      "paired_rows_sha256": "a2c3a98b2f07d7ee9c312ce6d9e07d83822b35934e901cd1f33c8ca57196b293"
    },
    "on_age": {
      "n": 2048,
      "mean_diff": -0.00026428233344610863,
      "se": 0.0009421979703227205,
      "seeds_positive": 921,
      "seed_start": 10000,
      "seed_end": 12047,
      "baseline_mean": 536.6231002985178,
      "candidate_mean": 536.6228360161844,
      "paired_rows_sha256": "be181f6b14740e8f0b1b7f599607eb533278fdb52e2c585b60cbeee8e65ba898"
    }
  },
  "promote": false,
  "contract_cost": {
    "storage_words": 0,
    "storage_basis": "Incremental words: reuse existing previous returned bid/ask fee state already required by the tell. Two fee values must be retained if ported to a policy without that state.",
    "gas": {
      "measured": null,
      "estimated_increment_range": [
        100,
        1500
      ],
      "basis": "Engineering estimate only for two simple compare/select operations (dead band) or two fixed-point blends (EMA), with prior fee loads reused and no extra SSTORE. Compiler, signed-difference handling and surrounding code can change this."
    },
    "characters": {
      "measured": null,
      "estimated_increment_range": [
        250,
        900
      ],
      "basis": "Estimated minimal Solidity addition for only the chosen mechanism, excluding this Python experiment and comments; not compiled."
    },
    "runtime_bytes": {
      "measured": null,
      "estimated_increment_range": [
        100,
        500
      ]
    },
    "budget_from_brief": {
      "peak_gas": 208000,
      "gas_limit": 245000,
      "runtime_bytes": 22440,
      "runtime_limit": 24576,
      "source_characters": 47230,
      "source_limit": 50000
    },
    "assessment": "Likely fits the stated 37000 gas, 2136 runtime-byte and 2770 source-character headroom; unverified until a Solidity port is compiled and measured."
  },
  "patch_zb64": "eNq1Vltvq0YQfvevGCUPhuOFAL7H5ciJFKuRTiNVx2oeIstaYLFJuGUXx/W/78yCbRxV6mmrQ6R4Z3YuH7PfzGJZFvCbmKsqFTy3y0On1+tBcKGZz8EauGM2hl79M5934Bqs//nAt4e7p/u77w8UTMUQpwWvRoMX11vdggMZAxc+GHigvC2DPsQBgwHEHAxZ7PJIRBALoSDJIS5kKEwGQ1AlgxGUyTpF/AzG8OeewQQOezBKKT6SYqdACiXkh4A9j5SpcycYhDJPMDE+DlS1uwthXmkEhzwUEYFQSSpINwAEUQm5rihtsKe0HLMgpDowJW9M+EZ0rGt4bLIMMMvTM4PFPUPHdZInGIPXC9DP4lSLMdo+OwywABx/eJLHDCq+Y1iNxjPmetHp/bcM0x/OwCATWSEP66yIxEkoueRZB+b5a1IZIQ+3wl/KncDCRiKGskiT8KDdDYWBVcLgEYGZtx2NQ8Uvzgp8yHi1tdNiY7iOYzvmjDZc2kBJCx4JelOLfRIXL8OVlga1NKql4aXpSIu2o2k87E/ZCHr049Y8Pj5JDNsivz0r6ImQchFH/21RvOHZcizC3ry0iQPo+Wg5I2rSind6pL+GBXKhrtIMQikiLP6SH9JCgrGpsvAtTzbbymRH801SbXeBHRbZzXn7hmeZpZJsPpi4Hh/1J17fdUfeQLhDZ8RD7vbdkPeHYX88iad9J5pqenMZbm9UkX6IyD6h0WRyoIhjYvbDb3fE7EjwCAKeRzM0IP4XaQR7QakBgdIOdVhQqiYQ1okiga+Lelsrmzr4YKAOLB3KhC+6NlrQa6dlzP/GmLeMeWMs0lZC7yIhbvBAGZjDouAm/HL0doU1aBme0F1AOLpzcuf/5E54CZSWqN3jQJJKiLWeRgij4QWnTf5pkzebKqnpGexntNbc5PszpTHqmdEYRZN2NJ2yCfTGrsNc70RaKaqdzIGyUSsbexNukPbwBV9g0gH8s6gDcS8ykETrKJEM3jO/+56t3/AVh/arKvIuox71u/hvnSXRUccd37H7w3oeNEscCj6eALZu76cEvpgvvnM5YXxHZ9ZvfnV1teRBirO/iJuO6qoT7wHxiLBCT5rGVbi11dYE6ytUWwHVrkwFyF2+DjhuYeo3oWwMeCJ3CwPkRUXkNxCLi81iUkeQTk+rRMU01oTRhmm2eCN5ogT8wdOdeJCykEY3yT94muh7y6q9QHsJvCVU1/yMQe8hLR3Ka7SBUfMBteaF5Vdw/3V+yfON6DbsXCLp6JxsfbZFKXKjUHZJb/taJPn5tPFQTbNx+v1Hnd6zk8/TMzrhXWUsX7pPz90VDvzF/Vm1uNeqJ69l5aFKd8PYHdGXyLjvsvMEp28D3aP6qlnTh4GxND93K+mpUWetJq11x/58RE1e2lxKfjBezncoXZ8rvAuqQyl8NND3rNmx6ru07VM3IyJ+dhDxsTlR/nWNQ7SlwpFzWmIvnATsBlMD1ghXDSt+apKjtkUx85OuZvfKvJg9eINgdb6zMzKC5H3rtkvVfGiY9cWvB9NfaTvvmw==",
  "not_done": [
    "No Solidity contract, gas/runtime/source-size certification, OOG test, or leaderboard submission. Cost ranges are unmeasured estimates, not benchmark results.",
    "No engine seeds, QLX5/qt1 paired engine comparisons, 1024-seed engine promotion gate, or pipeline submission. This bounded item tests LEAN and AGE on the supplied fast replica only.",
    "No engine-faithful rounded-reserve correction or proof of engine equivalence; the supplied replica was left unchanged outside the fee-memory insertion and parameter plumbing.",
    "The full P/T/F/G/E certification suite was not run. Included checks are input hashes, disabled-mode edge parity, small CPython edge comparisons and per-callback label/fee parity for the selected mechanism on selection seeds.",
    "Dependencies, raw rows, logs and reference downloads are scratch-only and are not bundled; the deliverable is the compressed patch plus measured summary and source references. Nothing was fabricated."
  ]
}
