Mainly a toolkit for interacting with other dx libraries. Has tools for serving networks/meshes of strategies, and talking between services.
For now, the more interesting modules are:
- Market data: fetch historical bars and live account updates from external interfaces, such as Interactive Brokers (TWS/Gateway), and get results back. We plan to keep expanding this to other brokers and data sources in the future.
- Portfolios & accounts: keep track of instruments, positions, and account metrics in one place.
- Strategies: run simple strategy logic over your data. Also let you define your strategy code in other languages (such as OCaml and Python), and then run in a performant backbone. For full strategy development and reusable strategy code, look at cadlag.
- Services: register and talk between services with a small request/response layer for now only a built-in HTTP server).
- Python bindings: the same core functionality is exposed to Python via the
dxcore-pyo3crate.
And more in the future!
This is a Rust workspace with two crates: crates/core is the Rust code for the library itself, while crates/pybindings are the Python bindings
Build everything with:
cargo buildSome functionality is behind feature flags (ibkr for Interactive Brokers, strategies for the strategy module). Enable them if you need them:
cargo build --features ibkr,strategiesA few runnable examples live in crates/core/examples:
cargo run --example strategy --features strategiesdxcore works alongside the other Divergex components: dxforge handles orchestration and containerized deployments, while [cadlag](https://github.com/divergex/cadlag] has the actual code for strategies.
This project is licensed under the MIT License. See the LICENSE file for details.