AlgoTrader helps to bring quantitative ideas to life and automates the process of investing in financial instruments listed on various exchanges around the world. The team behind AlgoTrader has developed a platform using Java, Spring, Hibernate, Esper (CEP), QuickFix / J, ActiveMQ, HTML 5 and React JS, which allows executing complex, quantitative trading strategies on Equities, Forex, Crypto and Derivatives markets.
We interviewed Marek Zganiacz, who as a team lead of AlgoTrader’s team in Ciklum’s Wrocław Financial Services competence centre had been working with AlgoTrader from the very beginning. He went from developer to team leader and shared his insights on the industry in conversation with us.
I assume many programmers do not realize how complex the algorithms that stand behind AlgoTrader are. Can you tell us about them?
AlgoTrader is a platform on which clients can execute their investment strategies written in Java or Python. The strategies themselves are the intellectual property of the clients, so I cannot provide you with more details. I can only say that some of them go far beyond the standard techniques described in popular technical analysis books. They not only use current market data but also, for example, original statistical models from systems such as R or MatLab.
Does AlgoTrader target individual or rather institutional investors?
AlgoTrader targets corporate or institutional clients such as hedge funds, broker, prop shops or banks.
We already know what AlgoTrader is. Tell us, how did your adventure with this company begin?
To begin with, in the case of AlgoTrader there is no feeling of being a cog. When I joined in January 2018, I was one of the first employees in Poland. All other team members were working in Zurich, together with the owner.
Do you mean Andy Flury, whom we talked to a few weeks ago?
Yes, Andy since then has moved from active application development to business development, product promotion, and taking care of expanding into new markets. In 2018, we developed very dynamically, and we continue to do so. Now, our Wrocław team doesn’t fit at one small conference table anymore. It is very interesting to observe how fast the team is growing.
You’re a team leader. How did you get there? I assume there were a few factors that influenced it.
Little by little I was gaining knowledge on different topics and I didn’t try to specialize in one field. Before I came to Ciklum, I was a team lead and analyst in one person – it was a jump in at the deep end for me. We successfully tackled the project, but there was a lot of stress and many management meetings. After that, I have worked in other projects and other companies for a few years. There I tried to join teams with leaders that I appreciated, and who had a lot of experience. I observed them, their working style, and, over time, my understanding of the role got better and better, and I myself gained confidence in making decisions.
Let’s move on to discovering the specifics of AlgoTrader for the programmers who will read this interview. What is, from your perspective, the biggest challenge in the development of this type of product?
Surely the fact that AlgoTrader serves as a facade for various financial brokers. Some of them, which are more stable on the market, have a mature API, so you can be sure that what is written in their specifications will work properly. When it comes to this new cryptocurrency market, the brokers representing these exchanges are not yet as standardized as those coming from traditional markets. This is very troublesome.
Let’s look at the challenges you face. Is the question of low latency or performance one of them?
AlgoTrader certainly does not try to be the fastest on the market in order placement. Rather, it is addressed to those traders who count their daily orders in tens instead of thousands. We do not compete with companies that are used by traders like the ones described in the famous book “Flash Boys”.
So you are not betting on a fragmented market and on investors who deal strictly with day trading and invest small amounts of capital, but we are talking about a much larger volume of transactions. How do you take care of their safety?
We sell the product in a “box”, in the sense that whoever buys the AlgoTrader product, can use AlgoTrader on-premise. Every customer can run AlgoTrader in their own data-centre. The most important thing is that only the customer has access to it, so there is no possibility of a data breach, which can disclose their strategies, order flow or private keys, in regards to institutional-scale crypto trading.
What is the biggest challenge for you at the moment? Where do you need support from other developers?
We want to introduce new user interfaces, reporting tools and strategy visualization tools. We are working on the visualization of order book aggregated from different stock exchanges, store data in distributed memory to improve clustered simulations, support new languages etc. In all these areas we need the support of talented programmers.
Do you need support in creating systems that are supposed to make money for your customers? Can you tell us more about it?
In addition to the development of our platform, we also offer our clients advisory and professional development capacities for bringing their quantitative trading ideas to life. So the client orders two things: he buys a product and orders the service of writing such a strategy in Java, based on his idea. We help them to refine the strategy, implement it and test it on a specific market.
Within the concept of strategy, some solutions make you use e.g. technical analysis and various trend indicators: oscillators, indicators, based on which you determine the appropriate indications?
A strategy can be considered as a function of the market data stream and configuration parameters, it outputs the buy and sell signals. This logic of such function can be to calculate different indicators or whatever. Most often it is the use of some indicators, but not only.
I assume that if you write such strategies on order, you often do them for big clients. What is the process of its creation?
When a client comes to us with an outline of the strategy, we help him to work out the boundary points we see. He explains, for example, that at the beginning of the stock exchange opening he did not predict how the strategy would behave, or how it would behave if there would be no liquidity in the financial instrument. After these few sessions, we refine the description of the strategy and then proceed to its implementation in Java or Python. Later, we simulate the strategy output on historical market data to check whether it allows the client to earn money, and fine-tune certain parameters. The last phase is to test it in real-time, on real money, typically an amount that a client is not afraid to lose. Then we hand it over to the client and he starts making money on it.
Markets are so dynamic, constantly changing, and probably every strategy needs to be revised over time, because it becomes a bit outdated, ineffective, and so on.
Strategies become obsolete because the market situation changes. Also, the strategy might be ineffective, although it worked very well according to historical data, actually it doesn’t perform so well anymore. This can happen for several reasons.
The key is probably to understand at the right moment that something needs to be changed in this strategy or switched from strategy A to strategy B. Can we sum it up like this?
Yes, AlgoTrader implements the possibility of launching multiple strategies at the same time, comparing them, reporting on them and moving the money to the one that behaves better.
Work in your team is not only about programming, but also about the business part. I suspect that many of the people who enter this sphere are bitten by the investing bug. Is that what is happening?
The willingness to invest and the interest in financial markets are very important in working in our AlgoTrader team, especially on the back end. It allows us to solve the various problems we encounter much faster, more efficiently.
What does AlgoTrader’s team look like? What kind of teams has it been divided into? What do they do?
We were divided into two sub-teams. In each of them, there are people from Zurich, AlgoTrader’s headquarters, and Ciklum Wrocław working together. The important thing is that we move smoothly between the two teams, but for a while, each of us stays in either the blue or the red group. According to a predetermined core principle, the tasks are assigned to their members.
What is the cooperation between the AlgoTrader team in Zurich and the Ciklum team in Poland?
Let me just underline that we are not divided into a Zurich team and Wrocław team, but into the blue and red team. In each of them, there are people from both Zurich and Wrocław. As part of the team, we help solve problems according to given tasks. We review each other’s code, we help to test the solutions we implement. There’s no big difference if someone we want to talk to is at Ciklum in Wrocław or at AlgoTrader in Zurich, the only difference is that we need to video call Zurich, but that’s ad hoc, without any barriers like scheduled meetings, mails etc. So we really make one strong team.
Let’s focus on your role as a team leader: How would you describe it?
I see my role as someone who connects the dots. So I take part in all the meetings, I try to have my headphones off while sitting in my room to know more or less what everyone is doing in Zurich and Wrocław. I help solve problems, I keep an eye on unnecessary duplication of work because the tasks go to both backlog and sprint. Ideas for change often overlap, and my role is to help detect it.
Let’s look at the challenges that lie ahead for those who join the team in Poland. What does the onboarding process look like?
On the first day when a new person comes to us, of course, we don’t let them into the office if they haven’t brought cake. This is a prerequisite.
Apple pie, cheesecake, or a poppy-seed cake?
Many of us go to the gym, so it’s cheesecake.
And after the cheesecake…
We help you to run the development environment, i.e. install and run the entire application and allow you to click on it a little bit, run some strategy. It takes one or two days. Then we organize a kind of formal training for a few people, where for couple of hours we talk about architecture, what we are working on and leave time for questions. After such an introduction, we try to throw the person in at the deep end in a controlled way, i.e. we move to a practical task. Some kind of a relatively simple bug or relatively simple functionality, which we have in the backlog, and assist them in the implementation. We believe that this is the best way to get on board.
After a few weeks in Wrocław, we plan an intense exchange with Zurich for each new person so that they can get to know the rest of the team. Work, talk. After this, we decide that this new person is already prepared.
The first question that came to my mind was the question about Zurich: is the city impressive?
Of course, it is a completely different city than Wrocław. I was surprised that it was incredibly clean. Once during a Zurich trip before the start of my engagement, a piece of paper fell out of my pocket, I was afraid that the police would catch me soon. Of course, I came back and picked it up right away, because it was almost shining and howling on the walkway. It was the only tiny trash lying there on the sidewalk. And of course the Alps, the mountains, all this made a huge impression on me.
Does every candidate need to know how to invest?
No, he or she doesn’t. Of course, it is a plus, but at the beginning, it is enough to know what a bond is, what the Forex market is, and so on. You can learn the rest on the job. Besides, we have a lot of people who were traders or simply have been working in finance for many years and at any time are ready to explain, direct or indicate the materials from which the subject can be easily learned. We also organize internal training.
How does the interview look like?
In the beginning, there is an initial interview with AlgoTrader’s Zurich based CTO, our operations officer and me. Then the candidate is given a task to solve: either a backend task related to integration with some kind of market adapter or writing an investment strategy. On the frontend, the task is to create a simple application. These stages are followed by familiarization with a part of the team. If everyone gives the green light, this person is hired.
Finally, can you tell us what is AlgoTrader going to do shortly?
We recently released version 5.0 and 5.1, with a long list of new features, such as the ability to write strategies in Python. We have 3 more releases planned, consisting of both new functionalities and improvements to the existing ones.
Marek Zganiacz has over 11 years of experience in designing, building and maintaining corporate systems. He holds a Master’s degree in computer science. Before joining Ciklum, he worked on many commercial systems in a large investment bank and was the chief programmer, team leader and analyst.