How signals are calculated

All indicators are computed by deterministic code, never by an AI model. Every rule is versioned; a signal records the exact version and parameters used.

20-day range breakout / breakdown

On the latest completed session t, compare the close with the highest high (breakout) or lowest low (breakdown) of sessions t−20 … t−1. Session t is excluded from the range.

Relative volume

Volume on completed session t divided by the arithmetic mean volume of sessions t−20 … t−1. Triggers at ≥ 2.0× (v1). Partial-day volume is never used; incomplete bars are excluded rather than scaled.

20/50 moving-average cross

Simple moving averages of close. A bullish cross is SMA20 ≤ SMA50 at t−1 and SMA20 > SMA50 at t; bearish is the reverse.

RSI threshold cross

14-period Wilder RSI (first average is a simple mean of 14 changes, then Wilder smoothing). Up-cross: RSI < 30 at t−1 and ≥ 30 at t. Down-cross: RSI > 70 at t−1 and ≤ 70 at t.

News & earnings context

Headlines from the previous 14 days and the next scheduled earnings date are attached as evidence. They do not trigger signals on their own.

Criteria met

Each signal lists its primary trigger plus two confirmation checks (for example trend versus the 50-session average and relative volume). “2 of 3 criteria met” describes alignment with the rule. It is not a probability of profit or an AI confidence score.

Suppression and deduplication

  • Signals are suppressed when data is invalid (non-positive prices, high below low, unsorted dates), insufficient (too few completed sessions) or stale (latest bar more than the configured number of sessions behind the expected session).
  • One signal per instrument, rule version and session. A rule that already fired for the same stock in the previous five sessions is not re-emitted.
  • Signals are immutable. Corrections are stored separately and keep the original values.

Backtests and forward results

  • A signal on session t can only be entered at the open of session t+1. Rules only see bars up to t.
  • Fees and slippage are applied on entry and exit. Prices use one consistent adjustment factor for splits and dividends.
  • The universe is the current instrument list, so delisted stocks are missing and results carry survivorship bias.
  • Forward signal outcomes are measured from the next session open to the close 5 and 20 sessions later, and only once those bars exist.