Islandflow system reference
From print to alert
A compact anatomy map for the path a market print takes through ingest, the live tape, flow packet construction, smart-money profiling, classifier hits, and alerts.
The pipeline is two paths that meet again
Ingest publishes the live market row. The API can show that row immediately as tape, while compute consumes the signal stream and builds slower, richer derived events from the same traceable print evidence.
-
1
Adapters publish raw market events.
Options prints, option NBBO, equity prints, and equity quotes land on NATS subjects such as
options.prints,options.nbbo, andequities.prints. Each event carriessource_ts,ingest_ts,seq, andtrace_id. -
2
Signal prints become the options tape head.
The options ingest path enriches prints with contract metadata, NBBO side, notional, ETF classification, and
signal_pass. Signal-qualified rows are published tooptions.prints.signal. -
3
Compute clusters print evidence into flow packets.
Compute consumes signal prints and NBBO context, groups nearby activity, derives features, writes
flow_packets, and publishesflow.packets. -
4
Parent events, hits, and alerts preserve the evidence chain.
A flow packet can produce a
SmartMoneyEvent, one or moreClassifierHitEventrows, and anAlertEvent. The resulting alert keepsevidence_refsback to packet and print identifiers.
Prints are the smallest inspectable fact
A print is not yet a theory. It is a timed execution row plus enough enrichment to say whether it deserves live attention and whether it can support later inference.
OptionPrint
option_contract_idThe contract key, parsed into root, expiry, strike, and right when possible.price + sizeThe execution terms used for premium and notional.nbbo_sideWhere the trade printed versus bid, ask, midpoint, missing quote, or stale quote.signal_passWhether the print survives the configured smart-money, balanced, or all mode filter.EquityPrint
underlying_idThe equity symbol or internal underlying identifier.price + sizeThe trade terms used for candles and equity context.offExchangeFlagA direct flag for off-exchange prints before dark inference adds interpretation.trace_idThe stable evidence handle used for joins, drawers, history, and replay.Flow packets are parent evidence, not final conclusions
Compute creates a FlowPacket when activity is strong enough to inspect as a
grouped unit. It stores member print ids, aggregate features, and join-quality metrics
so later events can explain what they used.
Smart-money events turn packet features into profiles
A SmartMoneyEvent is the parent interpretation of a flow packet. It keeps
packet ids and member print ids, then records profile probabilities, direction,
abstention state, and any suppression reasons.
Profiles
Current profile ids include institutional_directional,
retail_whale, event_driven, vol_seller,
arbitrage, and hedge_reactive.
Direction
Direction is normalized as bullish, bearish,
neutral, mixed, or unknown, with profile reasons
kept beside the probability.
Suppression
Special print context, stale quotes, missing NBBO coverage, or cross-like executions can lower confidence or cause an abstained event rather than a confident call.
Classifier hits are named detections with reasons
Classifiers look at packet and smart-money context, then emit hit events with a classifier id, confidence, direction, and explanation strings. They are deliberately narrower than alerts.
| Layer | Primary input | Important fields | What the operator sees |
|---|---|---|---|
FlowPacket |
Signal option prints and quote context | members, features, join_quality |
Grouped flow row, packet drawer, linked member prints |
SmartMoneyEvent |
One flow packet plus event calendar context when available | profile_scores, primary_direction, suppressed_reasons |
Smart-money profile row and profile reasoning |
ClassifierHitEvent |
Derived parent event and packet feature thresholds | classifier_id, confidence, direction, explanations |
Classifier feed row and decorators on linked tape rows |
AlertEvent |
Flow packet plus one or more classifier hits | score, severity, hits, evidence_refs |
Alert row, severity strip, alert context drawer |
Alerts package evidence for action
Alerts do not replace the underlying evidence. They score it, attach severity, and keep enough references for the UI and API to reconstruct the supporting packet and prints.
AlertEvent {
source_ts
ingest_ts
seq
trace_id
score
severity
hits[]
evidence_refs[]
primary_profile_id?
profile_scores?
}
Alert scoring combines packet premium, strongest classifier confidence, and hit count,
then maps the score into low, medium, or high
severity. The important operational detail is that the alert remains reversible:
open it, inspect the hit, inspect the packet, then inspect the print evidence.
Traceability is the contract between live and replay
Every major row carries cursor-friendly time metadata and a trace handle. The live API uses NATS for fresh events, ClickHouse for snapshots and older history, and the same schemas for replay.
Live channels
The terminal subscribes to channels including options, flow,
smart-money, classifier-hits, and alerts. Each
channel can deliver snapshots, events, watermarks, and history cursors.
History tables
Derived rows are persisted as flow_packets,
smart_money_events, classifier_hits, and
alerts. Alert context lookup resolves evidence references across those
tables and the option print store.