SUPERALGOS PROJECT

A Multi-Project Roadmap With Plenty of Contribution Opportunities

If you are a developer, you’ll be surprised at the many ways you can contribute to Superalgos.

Luis Fernando Molina
Superalgos | Algorithmic Trading

--

Photo by delfi de la Rua on Unsplash

Projects

The codebase is divided into different projects. Each project is a dimension of Superalgos and has a life of its own.

Each project features a Team of people that move it forward.

The Project Leader is in charge of merging updates or new features, and is always recruiting new members, coordinating efforts, and helping with the SA token distribution among Project Contributors.

How do you become a Project Leader?

You create a new project. I’m not talking about an idea, but the actual code implementation. That turns you into the Project Creator, Code Owner and Project Leader all at once.

  • Project Creator: In this role you are the authority over the project and have final decision over it. Once you finish the first iteration, you will naturally want to find a Team Leader that takes care of the project from there on, maintaining and improving it over time. You may change the Project Leader if you believe he/she is not doing a good job or if a better candidate appears.
  • Project Leader: It’s the main maintainer of the code. Project Leaders are also in charge of recruiting Project Team Members to accelerate development of new versions. As a Project Leader you are also the code owner: a Github-related role that means you are the one merging PRs touching the code of the project.
  • Project Contributor: Is any Project Team Member that helps with development related tasks.

Apps

Are projects independent apps?

Not really.

Think of a project as a collection of libraries that have a common goal. For instance, the Machine-Learning Project has the goal to enable machine learning across any of the Superalgos Apps.

Projects make services or features available to all Superalgos Apps. In this context, an App is an abstraction for users. For instance the Superalgos Platform is an App, which in turn has 3 different executable components:

  • a Nodejs process called the Platform Client,
  • the Platform WebApp running the UI inside a browser,
  • and another Nodejs process called the Task Server.

This App — like any of the other apps — utilizes many of the projects described later in this post in a way that — together — provides end users with the illusion that there is a single piece of software.

Which are the current Apps?

  • Superalgos Platform: launched and stable since v1.0.
  • Superalgos Network: in beta stage.
  • Superalgos Social Trading Apps: under development.

Projects Roadmap

Which are the current projects?

There are currently 13 projects in Superalgos:

  1. Foundations: This is a special one, in the sense that it contains all the original code from the phase where everything was a single project.

Pending work:

  • Over time, we are extracting projects out of Foundation, spawning new independent projects just by moving pieces of code out. This is an ongoing effort that will take some time to finish.

2. Visual-Scripting: Here is all the code enabling the Design Space with all the node structures.

3. Data-Mining: This project adds the concept of Data Mines, Sensor Bots, Indicator Bots, and Plotters. It also includes API Maps features, which should be a separate project.

4. Algorithmic-Trading: This project introduces the concepts of Trading Mine, Trading Engine, Trading System, and Trading Bots. Pending work:

  • The project needs to be expanded to support a second type of Trading System Framework. Today the Trading System supports a 4-stages framework: Trigger, Open, Manage and Close. Another framework is required to cover the type of strategies that are always triggered, opened, and under management.

5. Machine-Learning: This project lays down the infrastructure to deal with Learning Mines, Learning Engines, and Learning Systems.

Status:

  • We can already generate ML models. We need these models to be accessible from the trading systems so that we can add predictions to trading strategies.

6. TensorFlow: The goal of this project is to integrate the TensorFlow machine learning library into Superalgos to allow users to design ML models that can be used for predictions in Trading Systems.

7. Ethereum: The goal of this project is to integrate Ethereum into Superalgos, to enable the possibility to data-mine an Ethereum node and use the resulting data in Trading Strategies.

Status:

  • We can already connect to a GETH node and retrieve token balances. We would need to expand the infrastructure to data-mine the node, converting data into indicators that can be consumed by trading strategies.

8. Community-Plugins: This code enables the concept of plugins system-wide. There is a lot of room for improvement here.

9. Social-Bots: This project adds bots that allow us to make announcements and interact from social platforms like Telegram, Discord, Slack, Twitter, etc.

10. Education: This project manages the in-app Docs and interactive Tutorials.

11. Governance: This project enables the Superalgos organization to issue a token, distribute it among contributors, and allow them to vote on how things are done.

12. Network: This project enables the p2p network that will allow trading intelligence to be disseminated around the globe in real-time.

13. Social-Trading: This project enables the apps designed for the mass market to consume the trading intelligence exposed to the p2p network.

14. User-Apps: User Apps are the applications belonging to the Superalgos Ecosystem available to users. These applications are ready to communicate with each other via the P2P Networks.

Projects to be extracted out of other projects

When projects grow too big, like a cell, they split into two different projects. The current situation is that some projects, like Foundations, grew like a tumor without splitting for too long. Many divisions are now overdue.

To the previous list of existing projects, we can add these that need to be taken out of the Foundations and other projects:

  1. Distributed-Tasks: This is all the functionality related to running Tasks at different machines, potentially synchronized by events.
  2. Workspaces: These are all the features related to workspaces in general. There are many desirable improvements at this level, including a new panel to switch between workspaces that looks like the Docs, the possibility to add tags to workspaces so that the list may be filtered, etc.
  3. Charting: The charting capabilities are still inside the Foundations project. Once we extract them, we can upgrade them so that users may open charts on different screens/monitors and still be connected to the Design Space for Visual Debugging.
  4. App-Commands: Today the docs have a command interface both for docs related stuff (like docs.save) and for other stuff (like app.update). This project is about having all app-related commands in their own space, so that this can grow independently of the docs.
  5. App-Schemas: The goal of this project is to provide the needed features to generate and maintain app schema files from the UI. This would open the door for much faster development.
  6. Centralized-Crypto-Exchanges: Today we access only crypto exchanges supported by CCXT, but we don’t need to live with that limitation. By extracting this functionality into it’s own project, it could evolve with time into a flexible model where any crypto exchange could be plugged in.
  7. Data-Storage: Today indicator’s data are saved locally. It would be very interesting if everyone would be sharing their local Data-Storage/Data-Mines folder via IPFS, and a hash-table could be pushed every day to the repository. So that everyone could read all the already calculated indicators from IPFS and actually calculate only the ones not available. Every file fetched from IPFS could be placed at the same place it would be placed by the calculation process, to achieve redundancy. Then we have a network effect: the more people using the system, the more stuff is already calculated and the less users have to calculate themselves, and the more available the data becomes.
  8. API-Maps: Currently living inside the Data-Mining project, this one allows users to design a map of any API and extract data from there. Pending work:
  • Expand the available mapped APIs.
  • Enable the use of authentication, since at the moment, only free APIs can be accessed.

Which are the projects in the pipeline?

These are some of my project ideas, plus a few more I collected from the community:

  1. Portfolio-Management: A Portfolio Manager Bot could supervise any number of Trading Bots, make decisions about the assets to trade, the size of positions, and trigger events to increase or decrease position sizes based on strategic portfolio-balancing considerations.
  2. Trading-Signals: The goal of this project is to build the necessary features to enable any trading bot to send signals via the p2p network to be consumed by others. It also will allow trading bots to received trading signals and act upon them.
  3. Multi-Blockchain-Token: This project is about enabling contributors to receive the SA token at different blockchains. Over time more blockchains would be supported and expand the project into multiple ecosystems.
  4. Crypto-Futures: This project would enable Trading Bots to trade future contract.
  5. Decentralized-Crypto-Exchanges: The goal of this project would be enable trading at decentralized exchanges like Uniswap, PancakeSwap, etc.
  6. Stock-Exchanges: This would provide the infrastructure needed to plug into the world’s stock exchanges.
  7. Stock-Trading: This project would enable Stock Trading in Superalgos. This would include introducing the concept of Broker and any other necessary concepts.
  8. Online-Workspaces: The vision here is to allow multiple users to enter into the same workspace at the same time, over the Internet, and collaborate online on the design and deployment of indicators, plotters and strategies. The path to get there starts with implementing the possibility to undo actions taken at the workspace, and keeping a history of workspace actions locally. On top of that, the infrastructure to share actions over the internet so that they can be applied remotely to all users connected to that online-workspace.
  9. Studies: Today, as per our current definition of Indicator, we have a process that would take data dependencies from other indicators at the same market and exchange, and even at the same time frame, and make some calculations to produce an output that can be further consumed by others. But what if you wanted to use it as input data from other time frames? Or from other markets? Or from other exchanges? Then you would be talking about a Study. This project is about enabling this type of processing with all the conveniences we have today for Indicators.
  10. Trading-Reports: This is about a new tab that consolidates the information of all trading bots available on disk that could facilitate comparing data between sessions. This is what can complement the information seen on the charts, both plotted graphically and in panels.
  11. Smart-Editors: The idea is to replace the current Config, Formula, and Code editors for real editors that you can actually code with. The goal is to create advantages for coding in-app compared to coding on external IDEs.
  12. App-Menus: We need to implement an intelligent app-menu system to complement the menus existing in each node.

This is not an official list of projects. These are just the ones in my head. Superalgos is permissionless, meaning that anyone can come with their own list of projects or apps and implement them, adding to the existing ones.

How To Start Contributing

Make sure you start by watching this Codebase Walkthrough and Discussion video produced by Bret, where we explain how the codebase is organized. It will save you tons of time in understanding the basics.

Also, there are hours of Coding Sessions video material in the YouTube channel.

The easiest way to start contributing is by trying to fix something that is broken, something you don’t like or that you can do better. Then take something bigger. Talk to the existing project leaders, join their Telegram groups and Discord channels. Start sending PRs. You will get noticed.

If you acquainted with a project that you would love to be part of, go for it. Find the project leader and ask him/her how you can help.

Maybe you have enough free time to tackle an entire project? No problem, we have a long queue of projects waiting for someone like you.

There are a lot of SA token rewards distributed every month for developers contributing to the codebase.

If you are a developer willing to join any of the existing projects or start a new one, let me know and I will help you with the onboarding.

--

--