Trinity
A trading system that runs on our own capital.
Trinity is NSi4's high-frequency arbitrage system. It trades the studio's own money around the clock, so every engineering decision in it has a price.
- Score. Each currency's composite score, beside its three parts: opportunity, executability and market quality.
- Gap frequency. How often the gap between exchanges reached 5, 10, 20 and 30 bps.
- Cycles. Each score is the average of the last day's 23 cycles, across 398 currencies.
01 Problem
In arbitrage, a late decision is a loss.
An arbitrage window opens when the same asset is priced differently on two exchanges, and it closes the moment someone else acts on it.
Acting on it means two orders, not one: a buy on one exchange and a sell on the other, sent together and meant to fill together. If one leg fills and the other does not, the system is left holding a position it never wanted.
So the system has to be fast and careful at once. A slow decision misses the window; a careless one takes the position. Both cost real money.
02 Constraints
No client funds, no maintenance window.
- Capital
- NSi4's own money, never a client's
- Hours
- 24/7/365; the market sets no maintenance window
- Venues
- Three exchanges, each with its own feed format and order API
- Fleet
- Linux hosts in AWS Tokyo, running around the clock
- Risk
- Risk checks run before every order, not after
- Audit
- Every decision recorded with full telemetry
03 What We Built
An arbitrage system built risk-first.
One pipeline from market data to order, with a check before every order and a record of every decision.
Pipeline
- FeedOrder books and trades from three exchanges, parsed as they arrive
- EvaluateBoth books compared on every update
- CheckEach order against its limits and the balances it moves
- SendTwo orders, one per exchange
- RecordEvery decision and its timing
Feeds
Each exchange streams its order book and trades over a WebSocket in its own format. Trinity's parsers for all three allocate no memory on the hot path, so the garbage collector never pauses a decision.
Decision and risk
Every update re-evaluates the pair across both books. An opportunity that passes becomes two orders, one buy and one sell, and each is checked against its limits and the balances it moves before it is sent.
Record and replay
A recorder stores every exchange's order book and trade feed hour by hour, and a batch runner replays a full day of it, pair by pair, to find where the opportunities are.
The trader itself ships the same way: between 13 and 19 April 2026 it went from version 2.8.43 to 2.8.92, forty-nine builds, each one watched against the one before it.
04 Evidence
Measured by Trinity itself.
Every figure on this page comes from Trinity's own counters. Symbols, venues, order sizes and P&L stay private.
- Status. Each transfer between two exchanges, pending until the target confirms the deposit.
- Progress. An estimate of the whole transfer, from sending to arrival.
- Timing. How long the funds took to send, left, and to arrive at the target exchange, right.
Decision trace
Illustration
| Time | Pair | Spread | Risk checks | Action |
|---|---|---|---|---|
| / | all passed | sent | ||
| / | balance check failed | held | ||
| / | all passed | sent |
Every decision is recorded with the checks it passed, so any trade can be traced and reviewed. Times, pairs and spreads are covered.
05 Stack
What it runs on.
- Status
- In production at NSi4 · not for sale or licensing
- Capital
- NSi4's own
- Built with
- .NET 10 · Linux on AWS · SQL Server
Not for sale
Trinity is not a product. The engineering behind it is.
The same studio builds WRS, fromScratch, Tycho, AliveMD and Keyline Studio.