New Year’s Quant resolutions

20190105 Drums

So this is Christmas / And what have you done? / Another year over / And a new one just begun, as John Lennon once sung. Whilst Christmas is a time to reflect on the past year, the New Year is instead a time to look forward. This may involve New Year’s resolutions, or possibly not. On the personal side, I’ve tried to come up with some New Year’s resolutions and inevitably they resolve around going to the gym more, eating healthily (albeit punctuated with a modicum of burger based nourishment…) etc. Judging by how busy my gym is this week, I suspect I am not the only one, for whom, being healthier is a New Year’s resolution. However, when it comes to my job as a quant, what are my plans for the New Year? What do I want to focus on this year and what do I want to learn in order to get better at my job? I’ve tried to outline a quick shortlist of my “quant resolutions” below (I’ve got many more up in my head too..!)

 

Keep following markets
Quants can often be quite far from the market. When it comes to developing trading strategies, it is so they can eventually be run live on the market. If we sit too far back from the market, it makes it more difficult to understand many concepts, such as liquidity and other more practical aspects of the market.  Somehow, I feel a lot happier, if I know what the market is doing, so I can see that what I’m doing is not in some theoretical vacuum. Observing the market is also a great way to get ideas for trading strategies. We’re only a few days into 2019, and already I’ve got loads of ideas which I want to backtest about the market, in particular after seeing price action around the US employment report and the recent flash crash (and no, I won’t reveal those ideas here, but I suspect you can probably make a guess 😉

 

Learn more Python
I’ve been coding in Python for a few years. However, the more I’ve coded, the more I’ve realised there is to learn! Admittedly, this is something which isn’t really unique to coding. What type of areas in Python do I want to learn more about. One particular area, is exploring libraries further. I’ve got quite a long list of libraries which I want to use more. These include scikit-learn (ML), TensorFlow (ML), modin (parallel pandas), Dask (parallel pandas), xlwings (Python in Excel), numba (GPU/parallel coding), cython (Python/C to machine code) etc. Inevitably, what tends to happen is that I’ll likely gravitate toward libraries which I need to solve a particular problem. I often find that’s the best way to learn about a library, find a practical problem to solve with it first. I’m also thinking about trying to get back into Java, which I used for many years and perhaps learning to code in Julia.

 

More unit tests
I have to admit for much of my career, I didn’t write as many unit tests on my code as I should have done. In recent years, the idea of writing unit testing has become much more commonplace for coders. One thing I’ve realised is that avoiding doing unit tests is basically a false economy, and writing them should be part of the coding process. Writing unit tests makes it check your code behaves as intended and ultimately saves time over the long run. Furthermore, it offers a quick way to check if changes you have made, have broken something elsewhere. In Python, I’ve used pytest to help with my unit tests and I’ve found it fairly easy to use.

 

Bringing transaction cost analysis to more folks
Transaction cost analysis/TCA has become more important with the advent of MiFID II. However, even without regulations, best executions should be very important as a way of improving alpha. I’ve spent a long time looking at this area, in particular developing my Python based FX TCA library. I’m keen to spend the coming year creating new metrics and ideas for TCA (and obviously to find more clients to use my library!)

 

Up in the clouds
One of the biggest buzzwords (aside from machine learning and artificial intelligence) is the cloud. I’ve already used the cloud, although usually this has involved creating a Linux box on the cloud (eg. using Amazon EC2). I want to start using higher level cloud based services for running my code, whether that’s Google’s BigQuery for storing/querying data or AWS Lambda, which is a serverless way of running code or many other cloud services. It will take obviously take time to understand what cloud services are available and how I can use them.

 

Using Linux more
I’ve used Linux a lot for running server side applications. Usually this has involved running Linux on a cloud based box or locally on a virtual machine on top of Windows. However, I’ve never installed it as my primary operating system to use it day to day. I’m thinking that maybe I need to finally try doing this, on a secondary machine (given there are some applications which I need that run natively on Windows, like Excel etc). I think it will be a good way to get more familiar with Linux.

 

Looking for more alternative datasets
I’ve been a fan of looking at alternative datasets for many years, before it became fashionable. For the coming year, I’m keen to explore more alternative datasets and also to see whether machine learning could be useful to extract signals from it. Looking at alternative datasets, can require a bit of an open mind, because the datasets can often require a fair amount of structuring into a more usable format. Despite all the buzz about this area, I still think most people aren’t looking at this enough (particularly in FX space, although I do realise a lot of equities folks have begun at least to think about it).

 

RESTful APIs and web apps
I’ve extensively used RESTful APIs from a client side perspective, usually with nice Python wrappers to get access to market data. However, it’s only recently I’ve started to develop a RESTful API on a server for clients to interact with (using Flask-RESTplus). I’m planning to read about this subject more. The great thing about RESTful APIs is that it provides a nice way for clients to access a server side process, and potentially the client doesn’t need to use the same language as the server. I’m also keen to get more skills when it comes to developing web apps. Over the past 18 months, I’ve been using Flask/Dash to create a web app on top of my FX TCA Python library. Whilst it was tricky to begin with, over time, I have to admit it’s been fun creating a web app as a way to access the backend computation I’ve also coded. I’m keen to get more into this space and combining it with cloud based ways to put into production.

 

Conclusions
I’m not sure whether my “quant” resolutions are the same as mine, but I do hope whatever they are, I’d like to wish you best of luck for 2019! Learning is the best part of being a quant. Life would be boring if we knew it all.