MYRMIDONS
ALGORITHMIC STRATEGIES
← HOMEMYRMIDONS // DOCS
[ 03 // MNEMON ]

the market archive.

MNEMON is an independent archive of every Morpho market across eight chains (HyperEVM, Robinhood Chain, Ethereum, Base, Arbitrum, Katana, Monad, Arc). It samples the chains on fixed cadences: market state every 5 minutes, most other feeds every 15 minutes. It stores all data on MYRMIDONS infrastructure. It is not a proxy of the Morpho API. On top of the raw feed, it runs a broken-market classifier, investability rules, event ingestion for flows and liquidations, and an on-chain oracle identity probe.

BROKEN-MARKET CLASSIFIER

FLAGENTER / EXITMEANING
RATE_RATCHETapy@target > 50% / < 25%The IRM has entered a runaway rate. The market is broken, not attractive
PINNED_UTILu ≥ 99.9% for 24h / below 95% for 48hThe market is stuck at full utilization. Lenders cannot withdraw
DUSTsupply < $1kThe market is too small to be meaningful

The pinned flag applies only while a market's supply is below $25k: a deep market at full utilization is an opportunity, not a defect. The ratchet flag applies at any size. A ratcheted market's supply is mostly the phantom interest the runaway rate keeps minting, so depth is the wrong reason to trust it. Classification uses hysteresis: a market enters and exits each flag at different thresholds, so the flags do not oscillate.

LOADING_ARCHIVE…
A market the classifier flags right now, live from the archive: 7d supply APY (gold, left axis) and utilization (right axis). A rate ratchet reads as the APY series going vertical while utilization stays pinned.

INVESTABLE MARKETS

INVESTABLE answers one question: can a lender put money into this market today and get it back? The server checks every market against a set of gates on each new sample. Hard gates veto. Soft gates warn. A hard gate with missing data counts as failed. Each market in the export lists its failed gates, its warnings and the numbers the gates read.

HARD GATERULEWHY IT EXISTS
BROKENthe classifier flag is offA broken market is not a market
IDLEthe market has a collateral tokenIdle markets hold vault cash. They lend nothing
TRACK_RECORDat least 7 days of samples in the archiveThe 7-day gates need 7 days of data. The span counts from the market's first sample: its age where the archive is backfilled (HyperEVM, Arbitrum, Katana), the archive's own age where it is not (Ethereum and Base since 2026-07-27)
EXIT_LIQUIDITYavailable liquidity ≥ $50kA $50k deposit must be able to leave right now
EXIT_REGIMETIME>99% over 7 days ≤ 10%The same measure as the utilization tile's TIME>99%, on MNEMON's 15-minute samples over the last 7 days. A market pinned for a fifth of the week cannot be exited, even when one sample shows liquidity
HIGH_RATEapy@target > 15% fails, < 10% recoversThe IRM doubles the rate about every 5 days at full utilization. 15% means a week of starvation. Not the classifier's RATE_RATCHET, which trips at 50%
ORACLE_OVERPRICEoracle > 2% above the DefiLlama cross fails, < 1% recoversAn oracle that overprices collateral liquidates too late and creates bad debt. Underpricing is a haircut and never fails
BAD_DEBTbad debt socialized in 30 days < 10 bps of supplyLenders already paid for a failed liquidation here. Rounding dust of a few cents stays far below the line
LIQUIDATABLEDEX slippage at the at-risk size ≤ 0.8 × the liquidation bonusIf liquidators cannot sell the collateral at a profit they do not liquidate, and lenders take the loss
UNVERIFIEDa hard gate has no dataA market we cannot check is not shown as investable

The LIQUIDATABLE gate ties the liquidation bonus to how the collateral trades. Morpho Blue pays liquidators with a fixed incentive factor, LIF, set by the market's LLTV: a liquidator repays debt and receives collateral worth LIF times the repaid amount. Once a position's loan-to-value passes 1/LIF, liquidating it no longer pays. At high LLTV both the bonus and the room before that point are small.

LIF = min(1.15, 1 / (0.3 · LLTV + 0.7)) // Morpho Blue liquidation incentive factor

bonus = LIF − 1 // what a liquidator earns per unit of debt repaid

insolvency_drop = 1 − LLTV · LIF // price drop from LLTV to unprofitable liquidation

σ_daily = vol_30d_annualized / √365 // from the archive's hourly prices

cutoff = max(3 · σ_daily, worst observed 1-day drop) // one bad day for this collateral

at_risk_debt = Σ debt where 1 − 1/HF < cutoff // positions a bad day pushes into liquidation

gate slippage(first rung ≥ at_risk_debt) ≤ 0.8 · bonus // Relay quote, refreshed hourly

LLTVLIQUIDATION BONUSDROP TO INSOLVENCY
62.5%12.7%29.6%
77%7.4%17.3%
86%4.4%10.2%
91.5%2.6%6.1%
96.5%1.1%2.5%
Both curves depend on LLTV alone. Gold: the liquidation bonus, the most slippage a liquidator can absorb and still profit. Red: the price drop that takes a position from LLTV to the point where liquidating it no longer pays. The ticks are the LLTVs the Morpho DAO allows.

AT_RISK_DEBT is the debt one bad day would push into liquidation, not into insolvency. Per collateral, a bad day is the larger of three daily standard deviations (30-day window) and the worst one-day drop in the archive's price history. A position at health factor HF is liquidated after a price drop of 1 − 1/HF, so every position whose drop-to-liquidation is smaller than the cutoff counts, and their debt is summed. A high cutoff (a volatile or noisily priced collateral) can pull most of a book into the sum.

LOADING_ARCHIVE…
What three sigma means, on a real market: the normal curve of daily returns implied by the collateral's 30-day volatility, the shaded tail beyond −3σ (about one day in 741 under that model), and the cutoff the gate actually uses. When the cutoff sits further out than 3σ, the collateral has already had a worse day than the normal model expects.

The gate reads the Relay quote at the first ladder rung that covers the at-risk debt. Slippage must stay under 80% of the bonus. No route at that size is zero capacity. A rung with no quote is unverified and fails the gate the same way; the site says so rather than claiming the collateral cannot be sold.

Collateral with no DEX route at any size is redemption-only (tokenized funds, Pendle principal tokens, vault shares). LIQUIDATABLE and ORACLE_OVERPRICE are skipped and REDEMPTION_ONLY_COLLATERAL is warned.

Lender concentration warns and never vetoes: the largest lender of almost every Morpho market is a curated vault, and the archive cannot tell a vault from a whale.

  • ▸LENDER_MAJORITY: one lender holds more than half the supply.
  • ▸LENDER_EXIT_SHOCK: the largest lender cannot exit. The supply that would remain does not cover the debt, so the book would be locked until repayments. The site shows what share of the debt the rest of the book covers.
  • ▸REDEMPTION_ONLY_COLLATERAL: no DEX route at any size, DEX gates skipped.
  • ▸AT_RISK_ABOVE_QUOTE_LADDER: the at-risk debt exceeds the biggest size quoted, so the slippage shown is a lower bound.
  • ▸LLTV_BUFFER_BELOW_CUTOFF: the collateral's bad-day cutoff is larger than the drop from LLTV to insolvency, so one modelled bad day can push a position past the point where liquidating it pays. About 70% of markets trip it, so it stays in the export and off the banner.

Red is immediate. Green needs every hard gate to pass on the newest sample and on one at least an hour older, so a market on a threshold does not blink. Passing now but not an hour ago shows as PENDING.

On the market page every hard gate is a tile in the GATES strip, every time: the gate's name, its verdict, and the reading against the limit. PASS is green, FAIL gold. UNVERIFIED means the gate had no data, which fails it: for LIQUIDATABLE that is a Relay rung with no quote, shown as 'no quote' rather than as a failed sale. SKIPPED marks the two DEX gates on redemption-only collateral. The strip's header counts the failures and shows the debt at risk, the liquidation bonus and the bad-day cutoff the LIQUIDATABLE gate read. Soft flags stack in the alert strip above it, one line each. LENDER_MAJORITY and LLTV_BUFFER_BELOW_CUTOFF are not shown there: most markets trip them.

LOADING_ARCHIVE…
Live from the archive: how many lending markets pass, and which hard gates the non-broken ones fail. One market can fail several gates.

Investable means the market passes these checks on its newest sample. It is a filter, not a recommendation. It knows nothing about your size, your horizon or your view on the collateral. Every threshold above is a choice, written down so you can disagree with it.

WHAT IT TRACKS

  • ▸Market state: rates, utilization, supply and borrow, oracle price. Sampled every 5 minutes.
  • ▸Flows: every Morpho market event (supply, withdraw, borrow, repay, liquidations), whale flows (single events of 5% or more of a market's supply), and per-chain sync cursors.
  • ▸Borrower and lender books: health factors, near-liquidation debt share, lender concentration.
  • ▸Utilization spells: periods at or near full utilization, when lenders may not be able to exit.
  • ▸Oracle deviation: the Morpho oracle against the DefiLlama cross, signed. Above the cross is the lender's risk: collateral bought at market can be borrowed against at the inflated price, and the site flags it. Below the cross is a haircut, borrowers liquidate early and lenders are over-covered, so it is shown but never flagged. Persistent deviation identifies an exchange-rate oracle. A short episode is a depeg.
  • ▸Oracle identity: every oracle and feed contract a market uses, probed once on-chain (the configuration is immutable) — composition, provider, owner status, MODT failover wiring, and how many markets share each feed. Served through the risk API; see the RISK page.
  • ▸Liquidation capacity inputs: DEX route quote ladders and HyperCore book depth, sampled every hour.

DATA // STATIC JSON EXPORT

UNSTABLE // SCHEMA MAY CHANGE. These files exist for the site's own tools. Every file carries a schema_version. Fields can be added or changed without notice. Build on the risk API where possible.

FILECONTENTCADENCE
market_health.jsonLatest state and classifier verdict per market, 7d sparkline15 min
market_flows.jsonPer-market flow windows, whale feed, liquidation feed, per-chain sync15 min
util_spells.jsonNear-full-utilization episodes, trailing 30d15 min
depeg_spells.jsonOracle decoupling episodes, trailing 30d15 min

The files are served from data.myrmidons-strategies.com. Rows are keyed on (chain_id, market_id). The top-level chain_id is null when a file mixes chains. Schema history: v4 added the server-computed investable flag. v5 added per-row chain_id. v6 added per-chain flow sync state. v7 added a per-market oracle identity object (the site reads oracle identity from the risk API instead). v8 computes investable from the gate model and adds investable_reasons, investable_warnings and investable_inputs per market.

$ man mnemon · this page in the terminal