- What is bettingtool?
- Supported Online Sports Betting Sites
- Installation Instructions
- Running bettingtool
- Testing
- Community and Contributing
- Directory Structure
- Licensing
bettingtool is an open source odds analysis system. It follows an event processing architecture to perform the following tasks:
- Extract the odds for different types of bets in a game from online sports betting sites.
- Emit the odds so that event processors can analyze and produce outcomes.
- Consume the odds and process them using a multi-objective genetic algorithm to search for an arbitrage opportunity.
- Emit the arbitrage opportunity when it is found by an event processor.
- Consume the arbitrage opportunities and loads them on a dashboard for real-time monitoring.
Currently, bettingtool supports data extraction for the following online betting sites:
- Caliente.
Support for more online sports betting sites coming soon.
Docker Compose:
docker-compose build
docker-compose up
Manual installation:
- Install RabbitMQ (extractor, processor, web app server, pythontools): https://www.rabbitmq.com/download.html
- Install Redis (extractor): https://redis.io/download
- Install Python 3 (extractor, processor, pythontools): https://www.python.org/downloads/
- Install pipenv (extractor, processor, pythontools): https://pipenv-fork.readthedocs.io/en/latest/install.html#installing-pipenv
- Install NodeJs and NPM (web app server): https://nodejs.org/es/
To start the bettingtool components you will need to have the following processes running:
- Local redis instance listening on port 6379 (default).
- Local rabbitmq server instance listening on port 5672 (default).
Start the extractor:
python -m extractor.sample.main
Start the processor:
python -m processor.sample.main
Start the server:
- Install dependencies first:
npm install
- On a terminal:
npm run webpack
- On a different terminal:
npm start
Start the dashboard:
npm install
ng serve
Currently, bettingtool supports basic unit tests for several components such as the extractor, processor, and pythontools. You can run them using pytest framework (https://docs.pytest.org/en/stable/getting-started.html).
Steps:
- From the root directory of any component mentioned in the above section, cd to the "tests" folder.
- Run the pytest command.
The goal is to support both unit and integration testing for all the components involved in the system.
Contributions are welcome. Check out the Contribution Guide.
├── dashboard # UI for monitoring the events produced by the processor.
├── extractor # Process manager for the web crawlers.
├── processor # Process manager for the processing enginges.
├── pythontools # Common logic for the extractor and the processor.
├── server # Http server for pushing real-time data to the UI.
The code in this project is released under the MIT License.