Release bounds: a per-stretch rule that does not fire on every breath of the spread

What a stretch is, why a threshold gets a release bound, how to set one and how to read it in the rules table.

Short answer

A rule in the Per stretch mode sends one message when its conditions become true and stays quiet until the stretch ends. The release bound is where the stretch ends: not where the threshold stops holding, but where the value has to fall back to for the next fire to count as a new move rather than the same one.

Without it a spread breathing around its threshold — 2.1%, 1.9%, 2.1% — is three stretches and three messages about one thing. With a release at 1.5% it is one.

What a stretch is

A stretch begins when a spread first passes every condition of the rule and lasts as long as the rule considers it "the same one". In the Per stretch mode you get one message per stretch, whatever the spread does inside it.

A stretch used to end the moment any threshold stopped holding. For thresholds like "entry spread ≥ 2%" that works badly: a live spread crosses 2% back and forth many times a minute, and every return counted as a new stretch.

Setting a release bound

  1. In the rule form pick When to send → Per stretch.
  2. Every numeric condition — a floor ("at least") or a cap ("at most") — gets a release at field

on its right.

  1. Type the value the metric has to cross back over for the stretch to end.
The condition "Entry spread (BBO) ≥ 2%" with a release at 1.5% and Per stretch selected

The rules of the field:

will not save the rule without one and says what is missing.

A release is read off a value only

A stretch ends when the value has come back past the release bound. A cycle with no value at all — the book at your size went empty for a second and the spread could not be computed — does not end it: that is not the spread coming back, that is data missing. A pairing that dropped out of the scan says nothing either; its stretch stays on until the pairing is back, and is forgotten with the rest of the state after about an hour away.

Several release bounds

With release bounds on several thresholds the stretch ends as soon as any one of them is crossed. That is the point: the rule fired because every condition held together, so once one of them has let go, the trade the message was about is gone. When everything lines up again, that is a new move and a new message.

Example: "entry ≥ 2%, release at 1.5" and "exit cost ≤ 1%, release at 1.4". Entry falls to 1%, exit cost is still 0.9% — the stretch ended on entry. Waiting for both releases could mean the rule never re-arms at all.

Reading it in the rules table

In the Condition column the threshold carries an outlined release at … badge. A rule with many conditions shows the first three on the line and the rest on hover, release bounds included.

A rules table row: two thresholds, each with its own release

Events and release

An "on event" condition — deposits and withdrawals closing, a delisting announced — has no release bound and shows no field. An event happens at a moment rather than holding, and an event rule already fires once per event.

If something is off

numeric condition, or change the mode.

the same side as the threshold; fix the value.

bound, the stretch goes on. If you want reminders inside a stretch, that is the Throttled mode, not a release bound.