Skip to main content

BUSINESS.md: eExchange — Business Requirements & Functionality

Audience: product owners, business analysts, and anyone evaluating what eExchange does for the business. For architecture read README.md; for wire-level detail read DESIGN.md.

1. Business Purpose​

  • Give exchange traders a single mobile/desktop surface to place, track, and manage orders on Exchange8 — without a FIX console or terminal.
  • Give exchange operations staff the daily controls they need on the floor: halting a security, busting an erroneous trade, and seeing what surveillance flagged.
  • Let members see the market the way the exchange publishes it: full visible depth, best bid/offer, and the trade tape, live.
  • Keep trader and operations workflows available anywhere (web and mobile-class devices) by building the app on the platform's BFF-backed Flutter shell rather than a desktop-only stack.

2. Business Scope (What the Service Provides)​

CapabilitySurfaceHow it works (business view)
Order blotterBlotter tabLive list of the user's orders keyed by order id, showing quantity, price (or "MKT"), and lifecycle status; updates arrive in real time
Order entryTicket tabSubmit a new order: symbol, buy/sell, quantity, limit price (or market), and time-in-force (Day, IOC, FOK)
Market depth & BBODepth tabBest bid/offer plus the ten nearest price levels on each side of the book, kept live
Trade tapeTape tabStream of executed trades for a security: price, quantity, trade number
Market controlOps tabHalt or resume a security with one action (exchange operations staff)
Trade bustOps tabCancel an executed trade by trade number (privileged action, extra authentication enforced by the backend)
Surveillance alertsOps tabRead-only list of surveillance cases (what was detected, how severe)

What the app does NOT own (business boundary):

ConcernOwning service/surface
Order matching, books of recordExchange8:Gateway / Exchange8:ME
Market data publicationExchange8:MD
Halting rules, market protection logicExchange8:Gateway / market-protection engine
Trade bust/amend business decisionExchange8:Clearing (app only issues the request)
Detecting suspicious behaviorExchange8:Surveillance
Customer, session, feed, and routing administrationSentin8:Dash RFW admin pages
Sign-in, identity, session securitySentin8:Auth + Sentin8:BFF (platform shell)
App listing/publishingapp-listing.json → Sentin8:App

3. Business Capabilities​

Trading (trader persona)​

CapabilityBusiness rule
Submit orderAn order carries its own client order id; resubmitting after a network failure is safe — the exchange never accepts the same order twice for the same id
Order lifecycle visibilityThe blotter shows only live order state as the exchange reports it; rejected orders never appear as working
Price entryBlank limit means market participation; a filled limit means a priced order

Market data (trader persona)​

CapabilityBusiness rule
Depth viewThe ladder always renders from the exchange's own book picture (snapshot first, increments after); a connection gap falls back to the last known picture until it refills
TapePrints appear in execution order, newest first, latest 50 shown

Operations (exchange ops persona)​

CapabilityBusiness rule
Halt/resumeHalting and resuming are explicit operator actions on a named security; the exchange accepts the state change only if the operator's permissions allow it
Bust tradeBusting a trade requires the trade id and passes through backend step-up authentication; the app only forwards the request
AlertsSurveillance cases are read-only in the app; acknowledging/dispositioning happens in the admin surfaces

4. Business Events (Outbound)​

The app emits no platform events of its own — it is a pure client. The business events it triggers (through backend services) are the standard exchange domain outcomes:

  • Order accepted / rejected / filled / cancelled — raised by Exchange8:Gateway / Exchange8:ME when the trader's order is admitted and as it progresses.
  • Trade busted — raised by Exchange8:Clearing when an ops bust succeeds.
  • Instrument state changed (halt/resume) — raised by the gateway when the ops action succeeds.

Inbound (consumed by the app): order lifecycle updates, book depth deltas, and trade prints — all delivered live so business users act on the current state, not a stale picture.

5. Business Rules & Invariants​

  1. Every backend request goes through the exchange BFF; the app cannot and must not reach any exchange service directly.
  2. The exchange (server side), never the app, decides whether a user may perform an action; the app may hide features the user lacks scope for, but the server is the gate.
  3. A retried order submit can never double-execute — duplicate protection is by client order id.
  4. Secrets, session tickets, and credentials never live on the device in the app's keeping.
  5. Rejected business actions are shown to the user as understandable messages, never as silent failure or unexplained screen loss.
  6. The depth ladder and tape always render at most ten levels / fifty prints, keeping the surfaces fast no matter how active the market is.

6. Target-User Roles & Use Cases​

PersonaRoleWhat they do with the app
TraderOrders and market dataWatches the blotter and tape, submits Day/IOC/FOK orders priced or market
Exchange operatorMarket controlHalts/resumes securities during volatile periods
Exchange operator (supervisor)Post-trade correctionBusts an erroneous trade after step-up authentication
Operations analystSurveillance readingReviews alerts raised by surveillance detectors

7. KPIs / Success Criteria​

AreaCriterion
Trading latencyOrder submit reaches the BFF in under one second on an ordinary connection; feedback is inline, never a blank screen
Market data freshnessBlotter, ladder, and tape reflect live state within roughly one second of the event on the exchange
ReliabilityConnection loss degrades to "last known picture" rather than data loss; reconnection refills from snapshots
SecurityNo credentials or tokens retained by the app; privileged actions carry server-side step-up authentication
UsabilityAll five surfaces reachable with one tap from the bottom bar; errors readable inline in place
Business correctnessNever shows a working order that was rejected; never double-executes a retried submit

8. Dependencies & Reliance on Other Services​

DependenceWhy
Sentin8:BFFAll business traffic; grants delegated access, keeps tokens off devices
Sentin8:AuthSign-in and session establishment before any surface is usable
Exchange8:GatewayOrder entry and lifecycle events; instrument halts
Exchange8:METhe matching outcomes the blotter and tape display
Exchange8:MDDepth, BBO, and tape publication
Exchange8:ClearingTrade bust execution
Exchange8:SurveillanceAlert/case supply
Sentin8:AppApp Store listing and distribution contract (app-listing.json)
sdk/flutter/sentin8_flutterShell, theme, and authenticated transport the app composes

9. Acceptance Criteria​

  1. A trader can sign in and reach all five tabs from one shell.
  2. Submitting an order with a symbol, side, quantity, optional limit, and TIF posts the order through the BFF; errors surface inline.
  3. The blotter updates live as orders change state.
  4. The depth ladder shows BBO plus ten levels per side for the instrument, and the tape shows live prints, newest first.
  5. An operator can halt and resume a security; the change is honored server-side under the operator's permissions.
  6. A bust by trade id reaches the backend with step-up authentication enforced by the backend, and its outcome is displayed.
  7. Surveillance cases render with detector and severity.
  8. The e2e UI suite passes with no direct database or backend access — everything through the UI and the BFF proxy.

10. Open Business Questions​

  • Order cancellation and amendment from the blotter: supported by backend surfaces, but the on-screen flow (confirm dialog, history drawer) awaits a UX pass.
  • Advanced order types on the ticket (pegged, iceberg) and a pre-submit risk preview: pending business sign-off on the ticket layout.
  • Whether market-control parity (per-book state wall, market-wide halt) belongs in the app at all or stays a Dash RFW admin surface only.
  • Alert acknowledgement from the app (currently read-only) — needs a business decision on scope for operators on mobile.

Design attribution: exchange8:eexchange and its underlying concepts were designed by Hamid Jahanzad Hamid@Jahanzad.com.