RtBot
A low latency, high efficiency, incremental analytical engine.
- site: https://rtbot.dev
- repo: https://github.com/rtbot-dev/rtbot
What is?
RtBot
is a framework, written in c++, to process streams of numerical data
in real time and to derive analytics from it with the lowest latency possible.
You can use it to detect anomalies, local peaks or to simply continuously transform
your data in real time, efficiently.
RtBot
have been designed as an extensible dsp framework, where the building blocks
are called operators and data flows through them according to the defined connections.
Programs are written declaratively in plain json
(or yaml
), which are essentially
definitions of a graph of operators with special input and output nodes.
Use cases
If you need a digital signal processing (dsp) multiplatform framework which can trigger signals on
certain events happening on the input numerical stream then RtBot
is for you.
Some use cases would be:
- Digital signal processing
- Low latency event detection
- Algorithmic trading
How to effectively use it
RtBot
has been designed to work effectively accross different phases of software
development, from the exploration over historical data to the production deployment
on a web app or into a micro-controller. As such, it can drastically reduce the cost
of producing software essentially due to the lack of translation phase.
This is perhaps one of the main reasons to adopt it.
Develop an RtBot
program means finding the right operators, their configuration and how they
are connected, such that they produce the result you want as the data comes in. A common
workflow would be to use the python
library to develop an RtBot
program using historical
data, and then, once the program is ready, use the JavaScript
version to deploy it into a web
app or the c++
code directly to deploy it into any platform, depending on the needs.
Wrappers
JavaScript
RtBot
code have been compiled into wasm and can be run both in node and the browser.
The published npm
package has TypeScript
support.
To install:
# npm
npm install --save-dev @rtbot-dev/rtbot
# yarn
yarn add @rtbot-dev/rtbot
# pnpm
pnpm add @rtbot-dev/rtbot
A simple example about how to use it in a node program can be found at rtbot-dev/rtbot-example-ts.
A more interesting example can be found at rtbot-dev/rtbot-example-websocket-ts.
Python
The python
wrapper have been designed with a data science public in mind.
Install
The best way to install the python library is to clone the repo and build the wheel. You will need bazel installed first, please follow the instructions for your os in the bazel page.
After cloning the repository build the wheel with:
bazel build //libs/wrappers/python:rtbot_wheel
Once the build finishes, you can install the produced wheel as usual:
# the wheel name will vary according to your os
pip install dist/bin/libs/wrappers/python/rtbot-_VERSION_-py3-none-manylinux2014_x86_64.whl
Another option is to download a pre-compiled version of the wheel from our GitHub releases page. Notice though that we currently support a limited set of os and python version combinations.
Example notebooks
Some example notebooks can be found at the examples/notebook directory.