BATTLETICKER

Methodology

How BattleTicker builds numbers

Public pages should be auditable. This is the stack behind quotes, calendars, and recap copy — including the fallbacks when a vendor is quiet.

Quotes

Crypto marks on the battlefield try a WebSocket cascade (Binance, then Coinbase, then Kraken) and fall back to REST plus the site’s /api/quote route. Status text on the HUD is CONNECTING, LIVE (WS), LIVE (REST), or OFFLINE so you can see which path is actually filling the tile. Equity quotes use the quote route and vendor REST. None of those prints are an official exchange last for clearing.

Expected move

/api/expected-move and each /t/SYMBOL page use the nearest listed expiry ATM call mid plus put mid over spot. Details live on the implied move explainer. If the chain is empty, the page keeps the earnings calendar and leaves the box blank.

Earnings window

The weekly calendar mixes vendor earnings dates with market-cap visibility and implied-move size. There is no hard “only 5–10% implied” filter. Weekend crypto mentions on social require a large realized 24h move and are not used as a silent fallback when the equity calendar is empty.

Recaps and sentiment

Recap copy must say whether the realized session move finished inside or outside the stored implied box when both numbers exist. Community sentiment is shown only when the vote is a real reading — a flat 50/50 placeholder is treated as “no reading,” not a crowd view. See recap rules.

What we will not invent

No synthetic quotes, no made-up EPS, no fake insider summaries. If Finnhub, options, or news time out, the page degrades to what it still has. Editorial batch jobs use the same live earnings route; if Gemini is down, the briefing falls back to a template that only restates those facts.