Fintech in practice: how Quadcode develops technology for trading and banking
Hello, I am Aleksandr Ivanov, CTO at Quadcode. We came to Habr to show the Fintech “kitchen”; we’ve been at it for 8 years, so we can already share our experience. In our blog we will talk about architectures, technologies, tools and life hacks.
This post is the first on the list and can be considered an introduction. Below, I will tell you about the structure of our team, about Quadcode products — a platform for trading, banking and internal development, as well as about our first steps towards an IPO.
Our team
The Quadcode team has been working in fintech for eight years. The company’s goal is to create user-friendly fintech tools for B2B clients from all over the world.
In development we are guided by Agile principles, and generally we are inclined to flexible methodologies. They allow us to achieve a balance in the speed and quality of product development, so development is a set of Scrum commands.
Each team is headed by a Team Lead. The teams themselves are grouped into departments working in specific subject areas. For example, there is the Finance Development department, where teams develop financial services for the platform. There is a branch where the product owners are located, whose task is to develop and improve our products. Now we have 280+ experienced (really experienced, everyone has many years of practice) specialists in development. That’s about 24 teams and 12 Product Owners. We rarely take on juniors. But every year it becomes more and more difficult to find experienced professionals, so we are looking more and more in this direction.
Development tasks are lined up based on the product Roadmap. This is a plan for the development of a product with the aim of obtaining certain business indicators. A roadmap is built for each product and can be made for different time periods: six months, a year, three years, etc. From ready-made product roadmaps we build a general plan: when, what features and for what products should be made. A roadmap, as we understand it, is a link between business, product and development.
Every quarter there is an important event in the life of the company — quarterly planning. From the overall timeline, the features that need to be implemented first are highlighted. The result is a blueprint for what we can really do with current resources. We don’t welcome the emergency style, so we learn to catch the zen and find the optimal balance between work and personal life. Every employee can enter and view the company’s roadmap to properly plan and allocate their time to important and interesting tasks.
We work remotely or in the offices in Cyprus, The United Arab Emirates, Australia and The United Kingdom; everyone chooses for themselves.
Technological stack
Our main programming development languages are Golang and C++.Among аdditional technologies on the backend — PHP, Python, NodeJS; on the frontend — JavaScript (ReactJS); in analytics — Python, Scala; and Java for autotests.
The infrastructure in the company is hybrid. We rent our own servers in data centers. We try to use all stateless applications in Kubernetes, if there are no restrictions for this, although this also happens. Kubernetes clusters also predominantly run on our servers. Things that require guaranteed resources, such as loaded databases, we operate on “hardware”. Of course, we also use the cloud where it is useful. For example, in tasks where you need to process a large amount of data to provide a report to the customer. For such tasks, you need to get resources for analysis temporarily, but you don’t need them after you get the result.
For pinpoint purposes, we apply technologies that allow us to solve specific problems. For example, our Desktop application for Windows, Mac and Web is written in C++ and has the same code base. In this case, C++ gives us cross-platform benefits или advantages and excellent graphics rendering performance. However, we hardly ever use C++ for Backend development because it is expensive. Our main development language for Backend is Go. At the same time, we do not use it as a testing tool. For these purposes, we use Java, because it is much more convenient and is already practically an industry standard.
What products the Quadcode team creates
Our flagship product is the trading platform. In seven years of development, the number of platform users has grown from 950,000 to 88 million in 170+ countries.
Since 2020, we have been developing the trading platform as a SaaS solution, on the basis of which anyone can organize their own broker. And we already have our first clients in this area.
In addition, we plan to enter the American and Australian markets. To do this, we are updating the platform taking into account all the technical and legal requirements of these regions.
And now for a brief summary of our products:
SaaS Trading Platform
The team has developed a platform with 99.5% uptime from scratch, on the basis of which the broker has been successfully functioning for more than 7 years.
The platform provides clients for Windows, MacOS, Android, iOS, as well as WEB trader.
On the platform you can trade the following instruments:
Digital options
FX options
CFD
Forex
CFDs on crypto
The main programming language for platform development is Golang. The platform started with a monolithic architecture of the classical stack for its time: PHP+PostgreSQL+Redis+JS.
After 3 years of operation, it was decided to switch to a microservice architecture, as the monolith was no longer flexible and could not provide the necessary development pace. With the migration to a microservice architecture, we also left PHP for Go, and we don’t regret it.
Go is an excellent language that provides good performance with a fairly low entry threshold. For the development of microservices it’s just the perfect candidate.
Since last year our platform has been developing as a SaaS solution. Based on the solution, anyone can organize their own broker without much effort; everything is in a turnkey box: trading service, KYC procedures, billing, support, CRM. In short, everything to get the business off to a quick start. Any new broker can be up in a month. To provide variability in functionality, we develop a flexible system of modules for the SaaS solution.
The Quadcode team provides internal risk management, back office and antifraud services, so the broker doesn’t have to think about all that. As a result, the client gets a fully working cross-platform solution. We also solved the registration and authorization issue. All IT maintenance rests on our shoulders. We help with building a legal structure and much more.
Now we want the platform ecosystem to have the widest possible range of instruments: Forex, CFD and investment products in a user-friendly form. The ideal option is to make the platform suitable for both banks and their customers. We assemble the product puzzle from the smallest details. It’s not a quick process, but so far it’s working out. It’s not going to happen quickly, either legally or technologically.
Examples of the challenges facing the team this year:
Platform configurator. As an example, let’s take the BMW car assembly configurator. You can go to the site and assemble “your” car, that is, choose the color, rims, additional features. We want to make exactly the same functionality, only with the ability to build your own broker right on the site.
Also one of the major projects is the development of our own Margin Forex & MCFD engine.
Elaboration of Prediction Churn. The feature is based on data analysis and predicts the moment when the user decides to leave. Now the Prediction Churn result is 82% reliable. When the system predicts that the user is ready to leave the platform, managers are involved to create a comfortable environment for the trader on the platform. This allows you to extend the period of work with the trader. The further along, the more accurately Prediction Churn will work, and the better we will be able to keep in touch with the user.
Banking
This is our second product. At the heart of the product line is its own licensed provider of financial services, which is registered in the UK. The product provides the following features to B2B and B2C customers:
Remote onboarding for individuals and legal entities.
Access to the account via mobile application and online banking.
Multicurrency accounts in IBAN format.
SEPA, TARGET2 and SWIFT transfers.
Issuance of plastic and virtual cards.
The technology stack is classic: the core of the system runs on JAVA. It also uses PHP+JS to implement administrative management interfaces and web applications.
Near future plans — to complement the product with new local and alternative methods of payment, build additional banking products, build partnership programs, including reward and bonus programs for existing and potential customers. Expanded functionality will allow building an extensive network of channels in order to simplify cross-border payment processing around the world and provide customers with the most comprehensive range of services.
Internal developments
In addition to projects directly tied to profits and clients, we invest in developing our own solutions to provide a comfortable and flexible professional environment for employees to work in.
Among the most interesting ones are the following:
IQ Bus data bus. We practise microservice architecture. In the beginning, when the question arose as to what to choose to provide communication between microservices, we decided to create our own solution — the IQ Bus. It is a data bus that abstracts services from the transport layer and gives them a simple unified protocol to communicate.
Sandbox. In complex multi-component systems, and in our case systems with a large number of services, there is always a problem with testing. It is important to be able to get a reproducible environment for testing, the so-called test beds. At the very beginning of our journey, we created a Sandbox system with which you can build copies of the platform with various configurations. This is a kind of constructor, where you can go, choose what functionality you need, and the build will be created, the necessary microservices will be launched and you can test. It all runs on Docker + Kubernetes.
Central Information System. There is always a need for a tool that can integrate all the systems of the company. It’s not just about development, but also about personnel records management, HR, Finance. Such a system should help find answers to various questions. For example, what kind of team “A” is, what kind of employees it has, who the manager is, what its payroll is, what it did in the last quarter. And then there’s all sorts of individual wants. Finding such a product that has everything in it is quite problematic, and such systems look pretty monstrous. A good example is SAP. We invest in our own development of such a system, which realizes all the needs of various departments and integrates with other systems: Gitlab, task tracker, financial systems (1C).
In lieu of a conclusion
We have come a long way in 2020 to develop a SAAS solution and implement a new banking product, and now there are a few more important goals. The company is using strategic planning, we are moving towards being present in all markets, doubling EBITDA and going for an IPO.
In future Medium articles, we’ll talk in more detail about our approach to development, planning, and working with teams. Instead of a commercial break, here is our Linkedin profile and Facebook. If you still have questions, then write direct to me (Telegram — @wolverinoid).