TraderX is a Sample Trading Application, designed to be a distributed reference application in the financial services domain which can serve as a starting point for experimentation with various techniques and other open source projects. It is designed to be simple and accessible to developers of all backgrounds, with minimal pre-assumptions, and it can serve as a starting point for educational and experimentation purposes.
It is designed to be runnable from any developer workstation with minimal assumptions other than Node, Java and Python runtimes. The libraries and toolkits it uses are meant to be as vanilla as possible, to preserve its approachability by developers of all levels.
It contains Java, NodeJS, Python, .NET components that communicate over REST APIs and messaging systems and are able to showcase a wide range of technical challenges to solve.
More detailed information about this project can be found in the website which is generated
from the code under the docs directory of this project.
Learn more about the project - including a brief demo, in the Keynote Demo session that was presented at the Open Source in Finance Forum 2023
The project consists of multiple moving parts, and you can see how things hang together by reviewing the architecture and sequence diagrams located in the docs directory.
| Component | Tech Stack | Description |
|---|---|---|
| docs | markdown | Architecture and Flow Diagrams are here! |
| database | java/h2 | A simple self-contained SQL database |
| reference-data | node/nestjs | REST service (off a flat file) for querying ticker symbols |
| trade-feed | node/socketio | Message bus used for trade flows, as well as streaming to the GUI |
| people-service | .Net core | Service for looking up users, for account mangement |
| account-service | java/spring | Service for querying and validating accounts |
| position-service | java/spring | Position service for looking up positions and trades by the blotter |
| trade-service | java/spring | Service for submitting trade/order requests for further processing |
| trade-processor | java/spring | Trade Feed consumer which processes trade/orders |
| web-front-end | html/angular or react | Interactive UI for executing trades and viewing blotter. Note: the AngularJS GUI was an initial contribution and contains account management capabilities. The React GUI was contributed during a hack day and may not work for managing accounts, but it does work for executing trades and viewing the blotter |
git clone https://github.com/finos/traderX.gitQuick start with Docker Compose:
cd traderX
docker compose upWebUI available at http://localhost:8080
Other run options:
- Docker Compose (easiest)
- Kubernetes with Tilt
- Manual run (each service individually)
- Corporate environments (custom artifact repos)
📖 Full Build & Run Guide - detailed instructions for all methods.
A great way to interact with the TraderX community is to attend the bi-weekly Friday TraderX meetings. Email help@finos.org to be added to the meeting invite directly, or find the meeting in the FINOS Community Calendar.
- Fork it (https://github.com/finos/traderx/fork)
- Create your feature branch (
git checkout -b feature/fooBar) - Read our contribution guidelines and Community Code of Conduct
- Commit your changes (
git commit -am 'Add some fooBar') - Push to the branch (
git push origin feature/fooBar) - Create a new Pull Request
NOTE: Commits and pull requests to FINOS repositories will only be accepted from those contributors with an active, executed Individual Contributor License Agreement (ICLA) with FINOS OR who are covered under an existing and active Corporate Contribution License Agreement (CCLA) executed with FINOS. Commits from individuals not covered under an ICLA or CCLA will be flagged and blocked by the FINOS Clabot tool. Please note that some CCLAs require individuals/employees to be explicitly named on the CCLA.
Need an ICLA? Unsure if you are covered under an existing CCLA? Email help@finos.org
Copyright 2023 UBS, FINOS, Morgan Stanley
Distributed under the Apache License, Version 2.0.
SPDX-License-Identifier: Apache-2.0
