A financial exchange written in Go including complete order book, fix protocol, and market data distribution.
Check out cpp-trader for a C++ version, albeit with less features.
The exchange is designed to allow for easy back-testing of trading strategies. It supports limit and market orders.
There is a very simple sample "algo". The program structure is applicable to many strategies that use an entry and exit price. This can be run in conjunction with the 'marketmaker' sample to test the "algo". Hint: it has a 50/50 chance of being successful EXCEPT the market maker bid/ask spread must be accounted for - which makes it far less than a 50/50 chance of being profitable...
There are two different web interfaces available:
/
uses Go templates and server side rendering/lit
is written in Typescript using Lit and the Rest apiUse npm run build
in the web_lit
directory to build the Lit assets.
It was primarily developed to further my knowledge of Go and test its suitability for high-performance financial applications.
go get github.com/robaho/go-trader
cd go-trader
mkdir bin
go build -o bin ./cmd/...
cd go-trader Run each in a different terminal session. Ensure the correct interface is set in configs/got_settings for the client. bin/exchange bin/marketmaker -symbol IBM bin/client
Configuration:
using marketmaker -bench 75 -proto fix
updates per second 72707, max ups 72707, avg rtt 832us, 10% rtt 595us 99% rtt 5365us
updates per second 90279, max ups 90279, avg rtt 830us, 10% rtt 0us 99% rtt 4515us
updates per second 89215, max ups 90279, avg rtt 840us, 10% rtt 0us 99% rtt 4851us
using marketmaker -bench 250 -proto grpc
updates per second 410094, max ups 414584, avg rtt 609us, 10% rtt 0us 99% rtt 2390us
updates per second 411559, max ups 414584, avg rtt 607us, 10% rtt 0us 99% rtt 2455us
updates per second 412884, max ups 414584, avg rtt 605us, 10% rtt 0us 99% rtt 2270us
The CPUs are saturated on both the client and server.
access full book (use guest/password to login)
localhost:8080/api/book/SYMBOL
localhost:8080/api/stats/SYMBOL