Our own prices, checked before they count
The platform takes every price from our own price engine and from nothing else. The engine collects market data from more than one source, builds the firm's own bid and ask, and streams them to the platform. Before a price can fill an order or judge a rule, the platform's price guard checks it.
- Our own bid and ask
The price engine combines more than one market data source into the bid and ask the firm trades on. If all its sources go quiet, or they disagree, it halts that pair rather than publish a doubtful price.
It streams prices to the platform over one connection for all seven pairs, with a snapshot to start from after every reconnect.
- Not tied to one data provider
The platform only ever talks to our price engine. Data providers behind it can be swapped without the platform noticing: nothing in the trading engine depends on where a price came from.
- The browser never sees it
Traders' browsers get prices from the platform's own stream. They never connect to the price engine and never see its credentials.
The price guard
Every price passes through the guard before it is used. If a price is in doubt, trading on that pair stops.
| What arrives | What the guard does |
|---|---|
| A crossed or zero price | Drops it |
| A sudden jump from the last price | Holds it until the next prices confirm it. A confirmed move counts from the moment it is confirmed, never back-dated |
| A price re-sent after a reconnect | Treats it as stale, never as a new move |
| No new price for 5 seconds | Marks the pair stale. Heartbeats on the connection don't keep a price fresh |
| A pair marked closed or halted | Stops trading on that pair at once, with the reason on screen |
| A price outside FX market hours | Nothing fills. Market hours are Sunday 17:00 to Friday 17:00 New York time |
| A price that passes | Gives it a sequence number and an ID, and records it before any account uses it |
When in doubt, trading stops
If a pair an account holds has no usable price, the account can't be valued properly. Until a fresh price arrives:
- orders that add risk are refused, and Buy and Sell are switched off on screen;
- rule checks pause, and passes and payouts wait;
- a close on that pair is refused rather than filled at an old price.
The first fresh price is the one everything is judged on. After a restart, prices recorded before it are never traded on.

More instruments and more price sources are on the roadmap.
