Betting & trading systems

Exchange-grade software,
built by an operator.

Most developers have never placed a lay bet. They model a wager like a row in a spreadsheet, miss how liability moves when a price does, and learn settlement on your money. I build betting and trading systems because I run them myself — order books, dutching engines, model pipelines, Betfair integrations. You won’t be teaching me the domain.

exchange.ts
const book = await betfair.listMarketBook(marketId);
const fair = 1 / impliedProbability(price); // strip the overround
const stakes = dutch(runners, targetProfit); // 2–4 selections

order.match({ side: 'LAY', price, liability });
// reconcile fills · apply commission
✓ settled · books balanced
Where generic builds break

You shouldn’t have to explain
back and lay.

An AI tool will generate a betting screen in minutes. It won’t tell you why your engine double-settles a dead heat, or why your liability is wrong the moment a runner is withdrawn. The interface was never the hard part.

A bet isn’t a database row Generic builds store a stake and a price and call it done. They miss matched versus unmatched, partial fills, and the way exposure shifts across the whole book in real time.
Settlement is where it bleeds Dead heats, voids, Rule 4 deductions, commission, in-play suspensions. Get one wrong and you pay out money you never owed — quietly, on every market, until someone notices.
Latency creates ghosts Without proper order-state handling you get double matches, drifting prices, and bets that settle twice. The bugs only surface under load — which is exactly when the money is moving.
Capabilities

Systems for people who
move on the price.

End to end, in language you already speak.

Exchanges & matching engines Peer-to-peer order books, back/lay matching, real-time liability and exposure, partial fills, and the full market lifecycle from open to settled.
Dutching & staking tools Opportunity detection across 2–4 runner combinations, stake apportionment to a target profit, overround stripping, and coverage across football, racing and more.
Model & prediction pipelines Data ingest to signals to selections. Fatigue, rest, surface and form turned into back/lay calls — with the bulk-loading architecture to run it at scale, not one query at a time.
Betfair & exchange API integration Market catalogue, streaming prices, place and cancel, and the settlement reconciliation that keeps your books honest when the exchange and your ledger disagree.
Provably-fair & on-chain settlement VRF randomness, commit-reveal, and smart-contract escrow for crypto-native betting and trading products — where users want to verify the outcome, not trust it.
Real-time pricing & low latency Websocket fan-out, in-memory order state, and the plumbing that keeps prices live and consistent when thousands of users are watching the same market move.
Built, not theorised

I’ve already shipped
the hard parts.

These are my own systems. The domain knowledge on this page comes from building them — not from reading about it.

GridTrading

A peer-to-peer betting exchange engine. Back/lay order matching, on-chain settlement with Chainlink VRF and commit-reveal, a deterministic hand evaluator with split-pot handling, and a Monte Carlo equity engine running thousands of simulations per market.

Order matching VRF + commit-reveal Equity engine Solidity

ImpliedProbability · Dutching Pro

Live Betfair dutching tools. Subset-based opportunity detection across 2–4 selections, market coverage spanning football, racing and cricket, and an API documentation system that generates itself from the code.

Betfair API Dutching math Multi-sport coverage Self-documenting API

Tennis lay-model pipeline

A Betfair lay-betting prediction system. Fatigue gap, days since last match, and surface-change signals, built on a bulk-SQL architecture that pre-loads in sets rather than looping a query per match.

Lay model Signal pipeline Bulk SQL

Settlement & exchange plumbing

The unglamorous layer most builds skip: reconciliation between exchange and ledger, commission, void and dead-heat handling, and order state that survives concurrency. The part that decides whether your numbers are real.

Settlement Reconciliation Order state

Building something
on the exchanges?

Tell me what you’re trying to ship — an exchange, a tool, a model, an integration. If it’s in my wheelhouse, and it usually is, you’ll know fast.

Discuss your system →
Speak directly

Skip the sales team.
Talk to a Lead Engineer.

Tell us about your business bottleneck. If we can solve it, you'll know within 24 hours. If we can't, we'll tell you who can.

  • Response within 24 hours, weekdays
  • NDA available before any discussion
  • No obligation, no sales pitch
  • Direct line to senior technical staff
GDPRUK GDPRISO 27001SOC 2

Encrypted in transit. Your data is never sold or used to train AI.