Coder Social home page Coder Social logo

giulange / mendel-framework Goto Github PK

View Code? Open in Web Editor NEW

This project forked from darwinex/mendel-framework

0.0 0.0 0.0 176 KB

Dαrwinex Alpha Team's Open Source R&D Pipeline for DARWIN Portfolio Management: The Mendel Framework, in Python 3 (www.darwinex.com)

License: BSD 3-Clause "New" or "Revised" License

Python 97.67% Dockerfile 1.88% Shell 0.45%

mendel-framework's Introduction

Documentation

Dαrwinex Mendel Framework for DARWIN Portfolio Management

This is the Dαrwinex Mendel Framework for DARWIN Portfolio Management in Python.

Inspired by Gregor Mendel (https://en.wikipedia.org/wiki/Gregor_Mendel), the Mendel framework was created to manage quantitatively and dynamically, portfolios of DARWINS, as well as for applying quantitative R&D for generating investment decisions.

So, based on an asset universe of DARWINs, we will need to select those that meet certain criteria.

A workflow example would be:

1) Live/batch request of DARWIN universe data. For example, apply a filter to get DARWINs with certain returns threshold for the last 3 months.

2) This data will be passed to the DModel component. The DModel component will hold the allocation algorithm together with any other auxiliary computation methods.

3) The final calculations/allocations will then be passed to the DStrategy component to accomplish the trading, scheduling and etc.

The framework

DAssetUniverse: it will get DARWIN quote data or just other DARWIN available data fields such as investment attributes.

DModel: it will have the neccesary allocation algorithm so that you can input DARWIN data and calculate the final weights.

DStrategy: will be used to instantiate and launch other components and use the final allocations of the DModel, together with the neccesary constraints associated, to create a whole developed portfolio management strategy.

Explanations

The best way to understand how to use the framework is watching the dedicated playlist in our Youtube Channel while looking at the source code in this repository.

There is an actual working implementation so that you can try it out; you will need to dig in a bit into the code to see which DARWINs are considered to trade and which is the model to use. THERE IS NO GUARANTEE that the example strategy will yield profits, but it covers many implementation details and it is worth trying it to see how it performs and get accustomed to the framework in a DEMO environment/account.

Apart from that, we will give you essential steps to get it working right away with the actual provided example:

1) You will need to provide new tokens on the APICredentials.json file that is inside the /D-Strategy1 folder. This is neccesary in order to start the D-Refresher component and get automatic requests of the access and refresh tokens. For that, just go into the platform and request new tokens in the DARWIN API tab.

Once done that, the back-end will handle getting new access tokens using the refresh token via the DRefresher component.

2) After the initial credentials set-up, you will need to provide the accountID in the initialization of the DStrategy class.

BEAR IN MIND that the code in this project will execute in the accountID that you provide in the instantiation of the DStrategy class, so watch out very carefully which accountID do you use to avoid wrong executions.

3) Regarding Docker, as it is a complex framework and comprises many different functionalities, the best way to get going is to look for some tutorials on the internet or directly visit: Docker main website, apart from the tutorials that are in the Darwinex Youtube Channel that walkthrough this specific implementation.

In this case, the Docker images for this project are hosted on the Darwinex Alpha Team Public Docker Hub repository as examples.

In case that you want to implement this for your own accounts, the best way would be to create a dedicated Docker Hub account with your DStrategy image hosted there (you have one private repository for free) and use the DBaseImage and the DRefresher from the Darwinex Alpha Team Public Docker Hub repository or just build your own.

4) The Mendel Framework has functionality built-in to send Telegram messages via a Telegram Bot. For that matter, you will need to build your own bot and use its specific token. The tutorial for that is in the dedicated playlist of our Youtube Channel as detailed above. You can just comment the lines associated to it and re-create the images if you don't want to use it directly.

5) Afterwards, just execute the below steps. Depending on your actual environment, you will need to install some tools or not.

Example execution and installation walkthrough

Once that you have developed/modified all the neccesary scripts within the Mendel Framework, this would be the steps to run the docker services on a Linux machine:

Install Docker on a Linux machine:

sudo apt-get update && sudo apt-get remove docker docker-engine docker.io

sudo apt install docker.io

sudo systemctl start docker && sudo systemctl enable docker

Run the following line in a terminal to check the installation:

sudo docker run hello-world

Install docker-compose on a Linux machine:

sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

Run the following line in a terminal to check the installation:

docker-compose --version

(Install git) and download git repo to the root home folder:

sudo apt install git-all && git clone https://github.com/darwinex/mendel-framework.git

Ensure that the .sh scripts are executable. In Linux:

chmod +x /root/mendel-framework/D-Strategy1/*.sh
chmod +x /root/mendel-framework/D-Refresher/*.sh

Also, you will have to download the Docker images from the Docker Hub repository.

This will pull the images that are defined in the docker-compose of that specific directory:

cd /root/mendel-framework/dockerComposes/ && docker-compose pull

Edit your crontab file (crontab -e) with something like the following contents.

For this to work, you will need to have the exact path on your server/computer and have downloaded the repository.

If you want to just execute it right away, you can run the commands without cron for the strategy. In the case of the DRefresher, it should be executed once every 30 minute to refresh the access credentials.

# Execute at 20:58 previous to 21:00 close:
58 20 * * 1-5 /usr/local/bin/docker-compose -f "/root/mendel-framework/dockerComposes/docker-compose.yml" up -d dstrategy1

# Execute at minute 30 on every day-of-week to refresh tokens:
*/30 * * * * /usr/local/bin/docker-compose -f "/root/mendel-framework/dockerComposes/docker-compose.yml" up -d drefresher

Documentation

You can find the complete DARWIN API documentation here. You will be able to understand the different exposed enpoints as well has play around with them to understand the returned JSON messages, whether they result in a succesfull request-response attempt or no.

Other helpful links:

Discussion

The Darwinex API Community Forum is one of the places to discuss Darwinex API and anything related to it like the Mendel Framework.

Furthermore, you can join the Darwinex Collective Slack for Q&A, debug and more.

Disclaimer

The software is provided on the conditions of the BSD license that you can find inside the package.

The αlpha's time has begun!

Author:Darwinex Alpha Team <[email protected]>

mendel-framework's People

Contributors

eriz11 avatar integracore2 avatar darwinex avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.