Event-driven

Signal providers and alerting

A signal is only as good as the tick it was computed on. Polling finds the crossing late and sometimes never. TickerLayer streams every update and every market-state change, so your rule engine reacts to the event a trader sees.

Why TickerLayer

Built for this, not adapted to it

  • Trigger on the tick

    Updates arrive as they happen, on a socket a busy day cannot push aside.

  • Know when the market is away

    Halt and resume events, session phases and holiday calendars keep rules honest.

  • Backfill the gap

    One aggregate call returns the bars a restart missed; the previous-bar endpoint knows what has settled.

On one key

The calls behind it

Stream
forex.trades · commodities.quotes · stocks.status
Phase
GET /markets/status?symbol=US:AAPL
Backfill
GET /stocks/agg/US:AAPL/1/minute/{from}/{to}
Settled
GET /forex/agg/EURUSD/prev?interval=5m
Prices and market-state events together
{
  "action": "subscribe",
  "channels": ["stocks.trades", "stocks.status"],
  "symbols": ["US:NVDA", "US:TSLA", "US:AMD"]
}

Customer story

The signal service that stopped firing late

Forex and commodities alerts computed on the live tick, kept quiet when a market is paused.

  • Every tick

    reaches the rule engine as it happens

  • Reserved seat

    on the stream through every release

  • As it trades

    the feed, never tuned to flatter a strategy

Read the full story

Frequently asked questions

How many symbols can one socket carry?

Plans define connections and subscriptions per key, and each key keeps a reserved slot so a reconnect after a release always finds room.

Do I get the reason for a halt?

Yes, as a documented TickerLayer reason code, never a raw tape code.

What if my process misses events?

Aggregates fill the gap for the interval you compute on, and the previous-bar endpoint tells you the last candle that is safe to treat as final.

Start with 3,000 free requests

No card, no sales call. Build first, pick a plan when it ships.

Other use cases