{"id":24772522,"url":"https://github.com/robaho/cpp-trader","last_synced_at":"2025-03-23T20:44:59.922Z","repository":{"id":274062174,"uuid":"921341690","full_name":"robaho/cpp-trader","owner":"robaho","description":"A financial exchange in C++ designed for algorithmic trading tests.","archived":false,"fork":false,"pushed_at":"2025-02-03T21:41:12.000Z","size":35,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-03T22:31:00.697Z","etag":null,"topics":["cpp","financial-markets","fix","fix-protocol","trading-strategies"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/robaho.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-23T19:20:48.000Z","updated_at":"2025-02-03T21:41:14.000Z","dependencies_parsed_at":"2025-01-24T17:22:39.230Z","dependency_job_id":"3f8ea073-fed7-4d50-ac9a-966cbde48274","html_url":"https://github.com/robaho/cpp-trader","commit_stats":null,"previous_names":["robaho/cpp-trader"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robaho%2Fcpp-trader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robaho%2Fcpp-trader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robaho%2Fcpp-trader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robaho%2Fcpp-trader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/robaho","download_url":"https://codeload.github.com/robaho/cpp-trader/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245168814,"owners_count":20571799,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","financial-markets","fix","fix-protocol","trading-strategies"],"created_at":"2025-01-29T04:23:13.645Z","updated_at":"2025-03-23T20:44:59.913Z","avatar_url":"https://github.com/robaho.png","language":"C++","readme":"## Summary\n\nThis is a C++ FIX based financial exchange designed for algorithmic testing.\n\n__It is a work in progress and under active development.__\n\nToDo:\n- ~~add market/limit order support including execution reports~~\n- add multicast market data support for books and trades\n- ~~cancel all orders and quotes when session disconnects~~\n- possibly add [Nats](https://github.com/nats-io) messaging integration for trade distribution\n\n## Building\n\nThe project depends on these other [robaho](https://github.com/robaho) projects.\n- [cpp_fixed](https://github.com/robaho/cpp_fixed)\n- [cpp_orderbook](https://github.com/robaho/cpp_orderbook)\n- [cpp_fix_codec](https://github.com/robaho/cpp_fix_codec)\n- [cpp_fix_engine](https://github.com/robaho/cpp_fix_engine)\n\nAll should be cloned and built at the same directory level. The `Makefile` includes and library locations can be changed if they are available in a different location.\n\nThe project builds by default using `make` and CLang. There is a `Makefile.gcc` for building using GCC.\n\nuse `./makeall.sh` to build `cpp-trader` and all dependent projects.\n\n## Testing\n\nuse `bin/cpp-trader` to start the exchange.\n\nuse `cpp_fix_engine/bin/sample_client` or `cpp_fix_engine/massquote.sh` to start quoting against the exchange.\n\nuse `cpp_fix_engine/bin/sample_sendorder` to send a new order and wait for fill or timeout.\n\nuse `kill -USR1 \u003cpid\u003e` where `pid` is the exchange process to dump all of the books.\n\nuse `make run_tests` to run all of the test cases.\n\n## Performance\n\nusing the `cpp_fix_engine` boost fibers branch and\n\nusing `sample_client localhost -bench 75`, more than **165k quotes per second**.\u003csup\u003e1\u003c/sup\u003e\n\n```\nround-trip 834721 quotes, usec per quote 5.99514, quotes per sec 166801\n```\n\nas a comparison, using [go-trader](https://github.com/robaho/go-trader) and the Go fix client, it does about 45k quotes per second.\n\n\u003csup\u003e1\u003c/sup\u003eThese are ping-pong quotes, i.e. send quote, wait for quote ack, send next quote. Streaming quotes are considerably faster.\n\n_Updated network timings coming soon._\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobaho%2Fcpp-trader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobaho%2Fcpp-trader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobaho%2Fcpp-trader/lists"}