In this blog I’m going to post the evolution of my trading system and write my thoughts on different topics such as trading algorithms, programming(Python, Java and C/C++), macroeconomics, monetary policies.
My journey began about 9 years ago. That was the moment when I did my first real trade in the market. Since then I went through different stages a trader could go.
First stage. The beginning.
I started by studying “technical analysis”. It was such an interesting approach at that time. Like many others I was in love with RSI, MACD, ADX indicators, to name just a few. But after a lot of struggle and seeing that it doesn’t really works, I started to look for something else. This first period lasted about 2 years.
Second stage. Discretionary macro.
I knew that the other side of the coin was something else: “fundamental analysis“. So I went back to drawing board. After reading different articles, books, forums, I stumbled on a different book. It was The New Market Wizards: Conversations with America’s Top Traders by Jack D. Schwager. What was special about this one? Well, the author was interviewing traders/fund managers. He was not teaching anything, he just tried to put the right question to those who knew. Almost none of them were mentioning anything about technical analysis, instead they were talking about macroeconomics, central banks and geopolitical factors. An idea started to emerge in my head: “Ok, so the markets were not driven by funny indicators like RSI, CCI or MACD. Instead, the market was moving because it was reacting to economic news”. I know, it is a no brainer, but at that time the obvious was not so obvious. The mechanism is simple:
- the economy as a whole is cyclical: expansion, peak, contraction and trough
- the unfolding of each business cycle impacts the financial instruments
- the repricing of the instruments is influencing the economy back, think of it as a sort of closed feedback loop(not perfect although)
I started to read a lot of articles from Bloomberg and subscribed to different macroeconomics reports from investment banks and boutique investment firms which were reporting their interpretation and expectation to macro and central banks policies in respect to the financial markets.
Third stage. Risk management.
Meanwhile I started to realise the importance of “risk management”. The signal generator process(where to invest, enter or exit) was not the most important part of the strategy anymore. Instead, different topics such as maximum draw-down, correlation, volatility, Value at Risk and other goodies were starting to make some noise in my head and lead me to better understand the concept of diversification. I was using Excel to keep track and calculate different risk metrics. After a while I was overwhelmed by manually inputing trades and other information in my Excel sheets. This was the moment when I started to learn how to code because I had to process a lot of informations both for where to invest and risk management part too.
Forth stage. Systematic.
Learning how to write code by myself was not easy. I took a break from any trading and dived in the coding world. Started with Java and then slowly C++ and Python. I managed to get a job at a pure programming firm and then landed a job as a programmer at a bank. After a while, I was able to build my software infrastructure from scratch:
- backtesting software to develop/test/calibrate systematic strategies
- portfolio risk management
- strategy/trade execution
Indeed there are dozens of open source projects for backtesting a strategy but I wanted to build it myself because of the huge flexibility. On the other hand, I try to leverage on different quant libraries as much as possible. Here I’m talking especially about Python.
Fifth stage. Putting all the pieces together.
So here I’m, blending all the previous stages in order to develop a trading strategy. In a nutshell, this is the architecture:
- discretionary analyse of central banks monetary policies and macroeconomics to find possible imbalances in global economies
- find the instruments which are possible to be affected by the above imbalances
- input the above discretionary information via some external variables into the automated systematic algorithms
- let the algorithms open and close trading positions autonomous. the algo knows better when and how much it needs to increase or decrease exposure for every instrument from the portfolio
- from time to time adjust/guide the systematic-algorithm with my discretionary macro view based on the new information
The idea is that the price of an instrument is not going from point A to point B in a straight line. Instead, the path is an almost-random one. Probably it will go in a direction, but we are never sure. Using a systematic approach I can “tell” to the algorithm:
“Alright, this asset probably is going to rise, fall or trade in a range for the next t time steps, so you need to position as efficiently as possible to extract as much profit while at the same time wisely diversify and risk as low as possible.”
I fully believe that this hybrid approach is a sustainable way over the long term.