Change of state

September 8, 2026

Modified: config.js

Added 5 new screening config keys:

| Key | Default | Description | |---|---|---| | cosEnabled | false | Master toggle | | cosThresholdBuy | 5 | Net-buy proxy delta for ABSORPTION | | cosThresholdSell | 5 | Net-sell proxy delta for DISTRIBUTION | | cosThresholdVolume | 500 | Volume delta floor ($) | | cosPriceResponseLimit | 15 | Max price delta % for ABSORPTION |

Modified: tools/screening.js

Integration points:

  1. After threshold filtering — runs detectStateTransition() on every surviving raw pool
  2. DISTRIBUTION rejection — pools with DISTRIBUTION signal are added to filtered_examples and excluded from the candidate list
  3. ABSORPTION boostscoreCandidate() multiplies by 1.25 for ABSORPTION pools
  4. Condensed enrichment — every pool object gains:
    • cos_signal: "ABSORPTION" | "DISTRIBUTION" | "NO_STATE_CHANGE"
    • cos_reason: human-readable explanation
    • cos_delta_net_buy, cos_delta_volume, cos_delta_liquidity: numeric deltas

Modified: README.md

Added full documentation in two places:

  • Custom Changes section — high-level description of the method
  • Config Reference table — all 5 tunable fields with defaults

How to Activate

Add to user-config.json: json { "cosEnabled": true, "cosThresholdBuy": 5, "cosThresholdSell": 5, "cosThresholdVolume": 500, "cosPriceResponseLimit": 15 }

Then switch to the branch: bash cd /path/to/meridian git fetch origin git checkout magersih-cos npm install # if needed npm start


Limitations & Honest Caveats

| Caveat | Why | Mitigation | |---|---|---| | net_buy is a proxy | Discovery API has no raw buy/sell flow | Uses price_change_pct × volume_change_pct composite — catches directional pressure but not true order imbalance | | wallet_quality is a proxy | No labeled smart-wallet database in Meridian | Composite of organic_score + unique_traders + discord_signal — decent for filtering but not KOL-tracking | | Single-snapshot memory | Only stores last state, no historical window | pool-memory.json keeps one snapshot per pool. A longer window (e.g., 3–5 snapshots) would detect slower accumulation but costs more storage | | No on-chain tx graph | True wash-trading / bundle detection requires Helius tx streaming | Proxies catch obvious fakes; sophisticated rings still slip through | | Price delta in %, not absolute | Micro-caps can move 50% on a single trade | cosPriceResponseLimit is configurable — lower it to < 10% for very tight absorption detection on low-caps |


Branch Structure

magersih-cos ← HEAD (CoS detection on top of magersih) magersih ← parent (lowcap screening strategy) main ← upstream

The magersih-cos branch builds on magersih. If you want both low-cap targeting AND state-transition detection, use magersih-cos. If you want only the CoS engine on normal screening, cherry-pick tools/state-transition.js + the screening/config patches onto main.