Reason codes
No gap, no card. When a name doesn't clear, GAUGE tells you why in one word. The word is the first gate that failed.
4 min read · Reference · Examples from the sample watchlist
At a glance
| Code | Gate | Fires when | Default |
|---|---|---|---|
| STALE | Feed | Either price is older than the max quote age | 2.0 s |
| CLOSED | Session | The cash market is outside regular hours | 09:30–16:00 ET |
| THIN | Depth | Top of book is below the minimum size | $100k |
| DUST | Net gap | Net after fees, slippage and buffer is below the floor | 2.0 bps |
Gates run feed → session → depth → net. A name with an old price and a tiny gap shows STALE, not DUST. Fix the first failure and the next one may appear.
Feed gate
A price is too old to trust
Both legs have to be fresh at the same moment. If either the cash quote or the chain token price is older than your max quote age, the gap might not exist anymore, so GAUGE stays quiet.
What to do: usually nothing. It clears on the next fresh tick. If a name stays STALE, check Home → System health.
net would have been 3.4 bps, but the price was too old to use
Session gate
The cash market isn't in its session
Stock tokens can keep trading after hours. The cash leg can't be placed live outside regular hours, so GAUGE doesn't emit a card it can't act on.
What to do: wait for 09:30 ET. Cards resume at the open.
the token may still tick; GAUGE waits for the cash market
Depth gate
Not enough size to fill
A wide gap on a thin book usually disappears the moment you trade into it. GAUGE needs at least your minimum depth at the top of the book before it believes the gap.
What to do: treat a big THIN gap as a warning, not a miss. You can lower min depth in Settings → Gates, at your own risk.
the biggest raw gap of the day, and the least fillable
Net gap gate
A gap, but not after costs
The prices differ, but once fees, slippage and your buffer are taken off, what's left is below the floor. This is the most common reason by far.
What to do: nothing. DUST is GAUGE working as intended.
Not a reason code: re-quote fail
A card can pass every gate and still not trade. When you tap Do it, GAUGE re-quotes both legs and runs the gates again. If net has dropped below the floor, the card closes as RE-QUOTE FAIL and nothing is placed.
META · Thu 25 Sep 15:21 · net 4.6 at card → 1.4 at confirm · floor 2.0 → no order
How often each one fires
On a normal session almost every evaluation ends in DUST. That's the point: GAUGE is built to say no.
■ DUST 71%■ THIN 12%■ STALE 9%■ CLOSED 8%illustrative
Reason eventDRAFT
Reasons are streamed like cards, one per name per state change. Field names are drafts.
/// First failing gate wins. Order matters.
pub enum Reason { Stale, Closed, Thin, Dust }
pub fn gate(q: &Quote, r: &Rules) -> Result<(), Reason> {
if q.age_s > r.max_age_s { return Err(Reason::Stale) }
if !q.session.is_rth() { return Err(Reason::Closed) }
if q.depth_usd < r.min_depth_usd { return Err(Reason::Thin) }
if q.net_bps < r.floor_bps { return Err(Reason::Dust) }
Ok(())
}{
"type": "reason",
"sym": "HOOD",
"code": "THIN",
"gate": "depth",
"observed": { "depth_usd": 45000, "gap_bps": 44.8 },
"threshold": { "min_depth_usd": 100000 },
"at": "2026-09-26T12:40:10-04:00"
}