Metadata-Version: 2.1
Name: roboquant
Version: 0.2.0
Summary: A fast algo-trading platform
Author-email: roboquant team <info@roboquant.org>
Project-URL: Homepage, https://roboquant.org
Project-URL: Repository, https://github.com/neurallayer/roboquant.py.git
Project-URL: Issues, https://github.com/neurallayer/roboquant.py/issues
Keywords: trading,investment,finance,crypto,stocks,exchange,forex
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Topic :: Office/Business :: Financial
Classifier: Topic :: Office/Business :: Financial :: Investment
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy >=1.25.2
Requires-Dist: prettytable ~=3.9.0
Requires-Dist: websocket-client ~=1.7.0
Requires-Dist: requests >=2.31.0
Provides-Extra: all
Requires-Dist: roboquant[ibkr,torch,yahoo] ; extra == 'all'
Provides-Extra: ibkr
Requires-Dist: nautilus-ibapi ~=10.19.2 ; extra == 'ibkr'
Provides-Extra: torch
Requires-Dist: torch >=2.1.0 ; extra == 'torch'
Requires-Dist: tensorboard >=2.15.2 ; extra == 'torch'
Provides-Extra: yahoo
Requires-Dist: yfinance ~=0.2.36 ; extra == 'yahoo'


# ![roboquant logo](https://github.com/neurallayer/roboquant.py/raw/main/docs/roboquant_header.png)

![PyPI - Version](https://img.shields.io/pypi/v/roboquant)
![PyPI - License](https://img.shields.io/pypi/l/roboquant)
![PyPI - Python Version](https://img.shields.io/pypi/pyversions/roboquant)
![PyPI - Status](https://img.shields.io/pypi/status/roboquant)
[![discord](https://img.shields.io/discord/954650958300856340?label=discord)](https://discord.com/channels/954650958300856340/954650958300856343)

Roboquant is an open-source algorithmic trading platform. It is flexible, user-friendly and completely free to use. It is designed for anyone serious about algo-trading. 

So whether you are a beginning retail trader or an established trading firm, roboquant can help you to develop robust and fully automated trading strategies. You can find out more at [roboquant.org](https://roboquant.org).

## Usage
The following code snippet shows the steps required to run a full back-test on a number of stocks.

```python
from roboquant import *

feed = YahooFeed("TSLA", "AMZN", "IBM")
strategy = EMACrossover()
roboquant = Roboquant(strategy)
tracker = StandardTracker()

roboquant.run(feed, tracker)
print(tracker)
```

## Install
Roboquant can be installed like most other Python packages, using for example pip or conda. Just make sure you have Python version 3.10 or higher installed.

```shell
python3 -m pip install --upgrade roboquant
```

The core of roboquant tries to limit the dependencies. But you can install roboquant including one or more of the optional dependencies if you need certain functionality:

```shell
# market data from Yahoo Finance using the YahooFeed
python3 -m pip install --upgrade roboquant[yahoo]

# PyTorch based strategies using RNNStrategy
python3 -m pip install --upgrade roboquant[torch]

# Integration with Interactive Brokers using IBKRBroker
python3 -m pip install --upgrade roboquant[ibkr]

# Install all dependencies
python3 -m pip install --upgrade roboquant[all]
```

## Building from source
Although this first step isn't required, it is recommended to create a virtual environment. Go to directory where you have downloaded the source code and run the following commands:

```shell
python3 -m venv .venv
source .venv/bin/activate
```

You should now be in the virtual environment. Ready to install the required packages and build/install roboquant:

```shell
pip install -r requirements.txt
python -m build
pip install .
```

Some other useful commands:

```shell
# run the unit tests
python -m unittest discover -s tests/unit 

# validate the code
flake8 roboquant tests
```

## Kotlin version
Next to this Python version of `roboquant`, there is also a Kotlin version available. Both (will) share a similar API, just the used computer language is different.

Which one to use, depends very much on personal preference, skills and use-case.
