The Events interface (stream: "merged") is FocusAlpha’s conclusion layer. Everything that turns out to be about the same thing — the wire write-ups, the 8-K, our reading of the guidance, the analyst reactions — hangs onto one stable event_id, and you receive one message per revision of that event, not one per article.
Measured on a real replay, an event averages about two pushes: the first arrival, then one more when a materially new label lands. Nine arrivals about one earnings print become three messages, not nine.
Payload
Real output — the second push of an earnings event, where the guidance label arrived:
Fields
trigger.why and trigger.impacts are this system’s reading of the material, not the outlet’s words and not a price forecast. Attribute them to FocusAlpha, never to the publisher. The payload deliberately carries no article text — title, labels, why and the link are the content; the article is one click away.
When a revision fires
- Revision 1 fires on the first arrival and carries facts only, no direction. Most first arrivals have no readable direction yet, and shipping the first outlet’s verdict would mean shipping a verdict the source never gave. The exception is anticipatory labels (
earnings_preview, merger_acquisition_rumour): “this has not happened yet” is the fact, and it is kept.
- A new label fires a revision. A repeat of a known label does not, however many outlets carry it.
- A second value on the same axis does not fire — it lands in
delta.dissent.
- After roughly a day an event stops moving; each family has its own quiet window, after which an arrival opens a new event rather than revising this one.