Methodology
How Afterbell gets its numbers, what they mean, and where they can be wrong. Afterbell is a monitoring tool. It does not give trading signals or investment advice.
Data sources
Jupiter Price API (DEX price). The USD price Jupiter aggregates from Solana DEX liquidity for each token mint, fetched server-side in one batched request. Jupiter does not publish a timestamp, so Afterbell records when it fetched the price. If the Price API has no price for a mint, Afterbell asks the Jupiter Quote API what selling exactly one token for USDC would return. If both fail, the price is shown as unavailable. No number is ever filled in.
Pyth (reference price). The Pyth Equity.US.<TICKER>/USD feed for the underlying stock. Afterbell applies the feed's exponent (price × 10expo) and keeps its publish time and confidence interval. Since the 2026 Pyth Core upgrade, Pyth's Hermes API needs an API key. When the operator sets one, Afterbell reads Hermes' latest price updates. Without one, it reads the Pyth price-feed accounts on Solana with a plain RPC call. Those accounts are only updated when someone pays to push an update, so they are often old and are then flagged stale.
Underlying quote via Jupiter (fallback reference). Jupiter's price response for tokenized stocks carries a quote for the underlying share with its own update time. Afterbell uses it as the reference only when no Pyth value is fresh, and labels it as such everywhere.
Pyth history (last close and chart). The last official close is the final 1-minute Pyth bar before the regular-session close (4:00 PM ET, or 1:00 PM ET on early-close days), cached per trading day. The detail-page reference chart uses 5-minute bars for 24 hours and hourly bars for 7 days. Both come from the keyed Pyth history API (the keyless Pyth Benchmarks TradingView shim is tried as a fallback). Where a deployment has no Pyth access, Afterbell leaves these figures out and says so, rather than estimating them.
Solana RPC. Mint addresses, decimals, supply and token program are read directly from mainnet-beta. The 23 tokens in the registry were checked against the issuer's public list, on-chain (each must be an initialized SPL mint with the listed decimals) and against Pyth's feed list. Tokens that could not be verified are left out.
Afterbell is independent and is not affiliated with or endorsed by Backed, xStocks, Pyth, Jupiter or any issuer. It uses only their public interfaces.
Formulas
premium % = (token price ÷ reference − 1) × 100
A positive value is a premium (the token trades above the reference) and a negative value is a discount. Afterbell computes it twice: against the latest Pyth reference and against the last official close. Values within ±0.25% are shown in a neutral colour. If either price is missing, the result is “—”, never 0.
implied open = current token price; gap % = (token price ÷ last close − 1) × 100
Shown only while the US market is closed and only when a last close is available. It describes where the token trades right now, relative to the close. It is an estimate derived from the token price, not a forecast and not an official indicative price. The actual open can differ for many reasons.
Session calendar
All times are America/New_York, so daylight-saving changes are handled automatically.
- Pre-market 4:00–9:30 AM on trading days
- Regular 9:30 AM–4:00 PM (1:00 PM on early-close days)
- After-hours 4:00–8:00 PM (1:00–5:00 PM on early-close days)
- Overnight 8:00 PM–4:00 AM when the next day is a trading day (including Sunday night)
- Weekend and Holiday otherwise
NYSE holidays and early closes are hardcoded for 2026–2027:
202610 closed · 2 early close
- Thu, Jan 1New Year's Day
- Mon, Jan 19Martin Luther King Jr. Day
- Mon, Feb 16Washington's Birthday
- Fri, Apr 3Good Friday
- Mon, May 25Memorial Day
- Fri, Jun 19Juneteenth
- Fri, Jul 3Independence Day (observed)
- Mon, Sep 7Labor Day
- Thu, Nov 26Thanksgiving Day
- Fri, Nov 27Day after ThanksgivingEarly close, 1:00 PM ET
- Thu, Dec 24Christmas EveEarly close, 1:00 PM ET
- Fri, Dec 25Christmas Day
202710 closed · 1 early close
- Fri, Jan 1New Year's Day
- Mon, Jan 18Martin Luther King Jr. Day
- Mon, Feb 15Washington's Birthday
- Fri, Mar 26Good Friday
- Mon, May 31Memorial Day
- Fri, Jun 18Juneteenth (observed)
- Mon, Jul 5Independence Day (observed)
- Mon, Sep 6Labor Day
- Thu, Nov 25Thanksgiving Day
- Fri, Nov 26Day after ThanksgivingEarly close, 1:00 PM ET
- Fri, Dec 24Christmas Day (observed)
Unscheduled closures (for example national days of mourning) are not in the calendar and will show the wrong session.
Staleness rules
- During regular hours, a Pyth reference older than 120 seconds is flagged reference stale. The underlying-share quote Jupiter publishes is refreshed every few minutes by design, so it is flagged stale after 10 minutes. Every reference shows its exact age either way.
- Outside regular hours, the stock is not trading, so every reference is marked stale (“market closed”) with its publish time. A reference published more than 10 minutes before the latest close is flagged as from an older session.
- If Jupiter or Pyth fails, the board keeps showing the last good values with a stale banner and their timestamp for up to 5 minutes, then marks the rows unavailable. The browser does the same if it cannot reach Afterbell.
- Rows with Jupiter-reported liquidity under $25,000 are flagged thin liquidity.
- The board API is cached for 5 seconds at the edge and the page polls every 10 seconds, so a value can be up to ~15 seconds older than its source.
Alerts
A scheduler calls Afterbell on a fixed cadence (every minute when the operator configures it, as the design assumes). For each rule it takes the spread against the reference and fires when the threshold is crossed in the chosen direction. After a message, the rule stays quiet for 30 minutes and until the spread returns inside the threshold. Alerts are skipped when the DEX price comes from a cached snapshot, or when the reference is more than 15 minutes old during regular hours (the board flags a Pyth reference as stale after 120 seconds; alerts allow more because the fallback reference updates every few minutes) or comes from an older session. Every alert message shows the reference's publish time and age.
The only server-side state is the alert rules and their last-sent times, stored in Redis and keyed by Telegram chat id. No wallet addresses or personal data are stored. /deletemydata in the bot removes everything for that chat. Telegram links are HMAC-signed, so a modified link is rejected.
Limitations & known failure modes
- Stale feeds. Pyth equity feeds stop at the close. Unsponsored on-chain Pyth accounts can be days or weeks old. Always check the age.
- Thin liquidity. A DEX price can be set by a small trade or a single pool, especially overnight. Large premiums on illiquid tokens often reflect that rather than a real disagreement.
- Corporate actions. Splits, dividends and other actions can change the token-to-share ratio. These Token-2022 mints can apply a UI multiplier, and DEX prices may lag an adjustment, so spreads around such events can be misleading.
- Different instruments. A token is a claim issued by a third party, not the share. Issuer, custody, redemption and regulatory factors can justify a persistent gap.
- Reference choice. Outside regular hours the reference is the last regular-session price. Pre-market, after-hours and overnight share prices are not used.
- Calendar coverage. Only 2026–2027 holidays are known. Other years treat every weekday as a trading day.
- Local history. DEX price history exists only while your browser has Afterbell open (max 2,000 points per token) and is lost if you clear site data.
- Rate limits. Public Jupiter, Pyth and Solana endpoints are rate-limited. Under load, some rows may be briefly unavailable.
- Regional availability. Tokenized stocks are not available to everyone. Afterbell shows data only and makes no offer.
Found a wrong number? Compare with the source breakdown on each token page, which shows every input and its timestamp.