A trading engine that shows its work, on paper.
Peregrine nets every edge against a fee model you can read and checks each idea with a risk gate. On real books the fees ate the gaps, so it blocked the trades and said why. Paper money only.

Internal to Renkara. Peregrine is a tool Renkara Media Group builds and runs for itself. It is not for sale, and there is nothing to buy or join.
An engine that explains every trade it did not make.
Peregrine streams public quotes, spots prices that are out of line, runs each idea through a risk gate, and trades it on a paper account on the same tick, with no language model anywhere on that path. It runs locally today and trades simulated money only. These are the things it does.
Every market, on one screen
Three venues, no keys
Public top-of-book from Kraken, Coinbase, and Gemini over websockets, with no API keys and no private endpoints. Each venue's state (connecting, live, error, or stopped), update count, and last error are shown, and a lost connection reconnects with capped exponential backoff.
A heatmap of stretch
One tile per market, tinted by how far its mid sits from its own recent mean, in standard deviations. A direction mark carries the same information, so color is never the only signal. A chip per symbol shows the best bid on one venue minus the best ask on another, and says Crossed when it is positive.
- About 48 markets, in dollars only
- Every one of 17 symbols each venue lists, quoted in US dollars only. Tether-quoted markets are left out on purpose: mixing the two assets would invent arbitrage out of the basis between them.
- A synthetic market for demos
- A seeded random walk with its own spread, noise, and lag per venue stands in for the wire when you work offline or run tests. Every screen on this site was captured against a quiet one, where nothing is planted.
Latency you can read
Time from a quote arriving to the engine's verdict is measured on every tick and shown as p50, p99, and max. On live data on November 3, 2026 it measured about 25 µs at p50 and about 1.3 ms at p99.


Illustration, not the Peregrine app, with example prices. A Coinbase quote for SOL/USD arrives and is stamped, which starts the latency clock. The market book scores it against its prior mean, then folds it in. There is no paper position on this market to re-mark. Coinbase's bid of 180.04 over Kraken's ask of 180.00 is a cross-venue gap of 2.22 basis points, which is -62.8 after 40 and 25 basis points of fees, and there is no snapback, so the risk gate blocks the cross-venue idea and says why. The clock stops, and the elapsed time goes into a ring of the last 4,096 ticks that feeds p50, p99, and max. The budget is 100 µs at p50 and 2 ms at p99, and on live data on November 3, 2026 it measured about 25 µs and about 1.3 ms.
Edges net of fees, ideas through a gate
A risk gate with reasons
Every idea is answered PASS with a size, or BLOCK with a reason such as an edge below the minimum after fees, the trade-rate limit, or a halt. Blocked ideas land on the event tape, throttled per strategy and symbol so the tape stays readable.
- Two detectors
- The cross-venue detector compares the best bid on any venue against the best ask on any other. The snapback detector flags a market whose mid sits at least four standard deviations from its own exponentially weighted mean. A quote older than 1.5 seconds by receipt time never forms an idea.
A fee model on the page
Every edge is reported net of the taker fee on each leg. The defaults are 25 basis points a side at Kraken, 40 at Coinbase, and 30 at Gemini, deliberately not the lowest tiers. The Risk page shows them, and says so when a trade only counts after clearing them.


Illustration, not the Peregrine app, with synthetic example prices. Kraken bids 2,300.69 for ETH/USD while Gemini asks 2,300.00, a gap of 3.0 basis points before fees. Peregrine subtracts the taker fee on each leg, 25 basis points at Kraken and 30 at Gemini, 55 for this pair (pairs with Coinbase cost 65 or 70), which leaves a net edge of −52.0 basis points. The risk gate checks in order: not halted, the loss limit not reached, then a net edge of at least 2.0 basis points, which fails, so the idea is blocked and the reason is written to the event tape. The last two checks are never reached. Nothing trades, and the paper account stays at $10,000.00 with 0 fills. A last line notes that on November 3, 2026, real order books crossed by only 1 to 5 basis points.
Limits you can edit
Order size, position per market, gross exposure, daily loss, trades per minute, and minimum net edge are editable from the Risk page and validated, and a change applies to the very next order.
Simulated money, with an off switch
- A paper broker
- Taker fills at the touch, worsened by 2 basis points of slippage and paying the venue's fee. A cross-venue pair realizes on the tick, against inventory assumed to sit on both venues. A snapback opens a position with a target at the mean, a stop at twice the stretch on the other side, and a 120-second time stop.
- Made for a second monitor
- The dashboard updates over a WebSocket up to four times a second however many screens are connected, falls back to polling while the socket is down, and works in light and dark, down to a 375-pixel phone, and on an iPad beside a desk.
Halt and flatten
One button, with a confirmation, stops all trading and closes every open paper position at its mark, with the usual slippage and fee. The engine halts itself when the day's loss (a UTC day) reaches the daily limit, and only a person starts it again, with Resume. Nothing resumes on a timer, and the halt is saved with the account, so a restart does not clear it. The reason shows on a banner and on the tape.


Illustration, not the Peregrine app, with example data. A paper engine is running, with one large Halt and flatten button. A confirmation asks Halt trading and flatten, and a person confirms. Three things happen in order: the risk gate halts with the reason, every open paper position closes (none are open here), and one Halt line goes on the event tape, reading halted: Manual halt from the dashboard followed by the signed-in operator's name, here the fictional Elara Voss. The engine also halts itself at the UTC day's loss limit, with the reason halted: daily loss limit $250 reached. Nothing resumes on a timer: the clock passes 00:00 UTC and the banner still reads Trading halted. Only a person starts it again, with Resume trading.
- A fresh account on request
- The paper account begins with $10,000 and is saved, so a restart picks up where it left off. Reset puts equity back at the starting balance and clears positions, fills, and the equity curve; the saved history stays, and a halt stays on.
From a quote to a verdict, in one tick
Receive
A public quote arrives and is stamped with the time it was received. That stamp starts the latency clock.
Scan
The market book scores the tick against its prior mean, and the scanner looks for a cross-venue gap or a snapback, each net of fees.
Gate
The risk gate answers PASS with a size or BLOCK with a reason. A halted engine blocks everything.
Fill or record
A pass trades on the paper account on the same tick. A block is written to the tape. Either way the elapsed time goes into the latency ring.
Built so everyone can use Peregrine.
Peregrine's dashboard is built on the Renkara design system. A scripted axe-core run covers its two pages in light and dark at phone and desktop widths, and the same run walks the keyboard path to the kill switch. That run found and fixed seven defects before this site was built. Here is what the product supports today and what we have actually checked. We do not claim a WCAG conformance level for the product.
Partly supported
Keyboard operation
Every control is a native link, button, or form field, and the scrolling Markets and event tape regions take focus so a keyboard user can scroll them. In a scripted run, Tab reached Halt and flatten, Enter opened the confirmation dialog, focus moved into it, and Escape closed it with the engine still trading. Every stop in a 40-press Tab walk showed a focus indicator except where focus left the page.
Partly supported
Screen reader landmarks and labels
axe-core, which checks names, labels, roles, and landmark structure, found no violations of any impact on the dashboard, the Risk page, or the halted dashboard. Peregrine has not been tested with a screen reader. The event tape is a labeled log that is not announced live, because it updates several times a second.
Supported
Contrast in light and dark
Text and controls are checked for contrast in both the light and dark themes, including the heatmap tiles at their strongest tint and the event tape's kind chips.
Partly supported
Reduced motion
The tick flash and the live dot stop under the reduced-motion setting. In a scripted run, 54 animations ran on the dashboard with no preference and none with the setting on. Peregrine's own tests do not exercise the setting.
Not yet tested
Text resize and zoom
Resizing text to 200 percent has not been tested.
Supported
Mobile and touch
Both pages fit a 375 pixel and a 320 pixel wide screen with no sideways scrolling of the page. Some controls are smaller than 44 by 44 pixels, including the design system's header buttons and the chart library's attribution link.
Under the hood
| Engine |
|
|---|---|
| Feeds |
|
| Risk and paper trading |
|
| Dashboard |
|
| Operations |
|
| Tests |
|
Questions people ask
Is Peregrine available to other teams?
No. Peregrine is internal to Renkara and is not offered for sale. This site shows what it does and how it is built. Write to fleet@renkara.com with questions.
Does it trade real money?
No. Peregrine has no live broker: none exists in the code, and no setting or route enables one. Everything it trades is simulated. Trading real money would be a separate, explicitly authorized change with its own requirements, review, and tests.
Does it make money?
Nothing on this site says so, and nothing Peregrine shows is evidence of how a strategy would do with real money. On November 3, 2026, live books crossed by 1 to 5 basis points while fees ran 55 to 70 basis points per round trip, depending on the pair of venues, so every cross-venue idea was blocked. A paper account fills at the touch plus a fixed slippage, which is not what a real order meets.
Is this investment advice?
No. It is a description of an engineering tool that trades simulated money. It does not recommend buying or selling anything.
Is it running in production?
No. Peregrine runs locally today and is not deployed, so everything on this site describes that local build.
Is the data in the screenshots real?
No. Every screenshot is a capture of the running dashboard against Peregrine's synthetic market, a seeded random walk with made-up prices, with the planted events turned off so only noise moves. No real venue was reached. Nothing traded, so the account stays at its starting $10,000, and the tape shows the risk gate blocking each idea that the fee model made negative.
Why do the screens show a slower decision time than 25 µs?
The 25 µs figure was measured on live data. The synthetic feed stamps a whole batch of quotes with one arrival time, so the later quotes in a batch look slower than they are. The latency tiles on the screens read what that capture measured.
Does a language model place the orders?
No. There is no language model on the order path, and nothing in Peregrine calls one today. The decision is arithmetic: a fee-adjusted edge, a risk check, and a paper fill.
Does it need exchange accounts or API keys?
No. Every stream is public, and Peregrine holds no venue credentials of any kind.
Questions about this tool?
Write to Renkara Media Group and a person will answer.





