29th JUly 2022 / anthony cheung

DO YOU NEED CODING SKILLS FOR TRADING?

A slight change up in this week's episode, as I'm joined by Milandeep Bassi, who is the Fintech products lead and full stack DevOps engineer at Amplify.

You might be wondering what the hell is that?! So in this episode, we talk about the following:

- What do you learn in computer science
- The type of characteristics that make a successful programmer
- Creating and testing trading algos
- The different roles and requirements within a quant trading team
- Machine learning and A.I. in finance
- Which coding languages are best to learn to get started

Don't worry, I still cover the usual round-up of what's been going on in global markets this week, from the Fed hike and technical US recession to the latest earnings from the tech titans.

Daily newsletter
Take a Finance Accelerator simulation

Connect with Anthony
Connect with Milan
Transcript:

We sat down with Milandeep Bassi - a key member of our Technology Team - who’s helped design and deliver some of our most advanced quant-related training to the likes of Citadel to get his valuable insight on the subject.

Milandeep Bassie: Profile and background

Milandeep discovered Amplify in 2018 when his father encouraged him to become a trader. From there on out he was set on the dream of a career in finance. Starting out as an intern he began the program with Amplify for three weeks, back when the our programs were held in person.

He is passionate about programming, especially Java and Python, and after transitioning through many different roles, he’s now a full-stack DevOps engineer. He also now does networking in addition to programming. His current title is Fintech Product Lead and he creates quantum and algorithmic trading products.

We discussed whether he would have been able to achieve what he did without the knowledge of computer science and whether you need coding skills to become a trader.

Here is what he had to say:

Could you have done what you’re doing now without having studied computer science?

No, I don’t think so. I never touched code until I was 18 and a lot of people have this misconception that if they don't do my programming A level, for example, their career goes out the window. So at A level, I was primarily into economics. That was my strong subject but at the last minute, I decided to switch my degree from Accounting and Finance to computer science because I didn't get the results I wanted.

 To get to where I am now, I needed my degree because a lot of what I learned centered around probability and statistics, and most importantly problem solving, which in my opinion, is the most valuable thing. At the end of the day, you’ll know how to look at a task and break it down and go from there. That’s not something you can just learn online.

With a degree, you just learn structured thinking and you’re taught how to problem solve. You need to be able to look at the task and know that X-Y-Z needs to go in this order. And the problem with our jobs, when you're in your engineering, it needs to happen now. I don't have a week. I can't say to the manager, I'll be back in a week. I'm going to go and see what this button does. I need to look at it and say off the top of my head, this will take me a few days maybe, or a couple of hours.

I've seen in the past with some people who are still learning, when asked a simple question, they get focused on the end result rather than how they're going to get to the end result. So by structured thinking, I mean I need to be able to quickly say, I need A, B and C completed before I can do whatever I need.

Is there a way to improve or change that way of thinking?

This is where the business analyst role comes in. One of the luckiest opportunities I had when doing my placement year with Amplify, was that short time I was a business analyst and my main job was to talk to someone like yourself and say, what do you need to be done? And then I need to convert that into what I know the engineers would need. And being that kind of middle-man translator, whether that be one or two sentences to maybe a whole paragraph detailing what needs to be done is what builds that skill. To do this at home, you should do your own research and detailing each step along the way - start from the beginning and don’t cheat!

So in terms of computer science as a subject, what is the difference between having good algorithm skills vs good programming skills?

This is one of those things where when I got to uni, I thought things were approached in broadly the same way but with slight differences. But what I found with my friend, he went to Loughborough, and the way they taught his degree and the way he's come out at the end of the three years is if you had a question about algorithms or more of a mathematical problem, I would say you can ask me, but it might take me a bit longer than him!

Likewise, when it comes to programming, if you asked me to complete a task, I'll get the code written and working quicker than he does. And the reason for that is he had more mathematical modules, so he learned more about the theory and the key understandings behind computer science. For example, what makes things tick? and execution time - there's a whole bunch of formulas behind how fast something is and how you calculate it.

But I had, maybe two terms of these lessons, and I know in my final year, I didn't touch a single bit of maths. My primary modules were around information security. So I have a lot of knowledge in terms of being very safe on the internet, and hacking and things like that, whereas he was offered more algorithmic stuff, so his knowledge on that stuff varies. That's one of those things when you're 18 and you pick a uni, you don't know how they're going to teach. And it just happened to be raw.

Holloway taught a lot more programming. So he’s come to me in the past and when it comes to writing code, he'll pose a question like can I do this in Python? Can I do this in java? Even though on paper we're the same person in terms of our degree and what we achieved, I'm better at that while he's better at the algorithm side of things. That's the tricky part if you’re looking for talent - one person could be absolutely rubbish at algorithms, which is not going to go down well at a place like Citadel.

So what's most common, then? Is it that most people are specialized in an area like that rather than a generalist?

In a typical team in somewhere like Citadel, you have multiple different specialists. From a top-level breakdown, they tend to split people into investment and trading. They still take computer science degrees, but these might be people who are on the front desk of any trading job. And they'll be good at risk management and actually reacting to markets at the same time. And then another role is quantitative research.

Quant research is pretty straightforward. It's going to be someone who creates these algorithms and researches them and finds all the discrepancies in the market through statistical analysis and models. So this might be someone who's really good at maths. As I said, they'll still have the same background. They know how to program.

They did computer science, and then you'll have software engineers, and then software engineers are those who can program and kind of create the systems for the other two to use, perhaps. And then you can see everyone would have the same background almost, but they've split them into three groups. I would tell my friend, for example, if he understood finance a bit more, you go for a quantitative research role because you'd excel there. Personally, I'd probably be split between software engineering and investment and trading. I'd have to try both out. But other people who program more than anything, I'd say go do software engineering.

Investment and trading is a hard one to find because you need someone who can program, manage the risk and understand the finance and react to things like you would as a trader, because you're basically managing live code.

So when we’re talking about these elite level financial institutions - what's been your experience and interactions with people interning and working there - especially on the quant side?

Some of their CVs are ridiculous! From my cohort at uni, I couldn't pick someone and say, he/she has the skills for these companies. I don't know where they find these people! The talent and the way they come across is so impressive. You look at them and you think of your average geek and you'd expect them to work in like a FAANG or a more stereotypical job, and then you speak to them and you realize these guys have immense knowledge about finance already at such a young age.

That's why it's such a lucrative role, you're looking for a needle in a haystack. I was looking at Masters recently and It's very hard to find a degree where they'll teach you computer science and apply it to a finance background. Computational finance, for example, Is taught widely, but there are only a few places where it is actually taught well. That's the tricky part, I can go for a masters in computer science but it doesn't mean I'm going to get this job at Citadel because I need that specific kind of angle and that's very hard to find.

Let's talk about what you’ve got cooking in the background because I know you’ve been early on the crypto NFTs or algorithms you’re working on?

NFT and crypto: I've kind of left behind. I burnt myself out on that. It was last year around March, when I had my crypto hype back. I was like, I'm going to hold this for the next ten years. Then just suddenly, out of nowhere one evening, I woke up and I was like, I should sell my Ethereum. I don't know why, but I looked at the price and I'd been watching this for a couple of days and It wasn’t moving. Since I sold it, I haven't touched it since. It's quite funny because I remember I just woke up randomly in the middle of the night and decided to get rid of this. My hype has just disappeared during my sleep!

Have you run any models over the crypto data and what has that told you?

I had a few algos which were primarily technical, and the reason being is I don't want to go into the fundamental side of Algos, because with fundamental analysis, in terms of news, I can't compete in speed. Like the oil release, for example, I could probably get the number as fast as you can read it, but they’re working in nanoseconds.

Most of the models/ strategies I've developed this year looked good on paper but unfortunately, I developed them this year so when I let them out, I was expecting them to do things, and they just failed. That's the hard part. I've been working on algorithms now for four years, technically on and off, but you need to keep trying because and even when it does click, it might work for a week and then the market has changed and then it'll stop working even though you'd think, oh, it's the same strategy and that's where you get frustrated, you get annoyed, you feel like I've wasted my time, almost countless hours of coding and you're like, I'm just going to shelve it.

I have a folder that has a lot of code in it and different strategies over the years. And the problem is one of them might be working now and I don't know because there are so many now, so it makes sense as to why they have these massive teams. Because you need people to go back and look at these strategies and say, okay, it used to work but what's slightly changed? It's hard to do that alone.

When analysing the past to predict future behaviour, how do you consider the different context and conditions of the time?

When it comes to analyzing the future , this is when you throw in machine learning. Machine learning is a buzzword and it gets thrown around. Does everything have machine learning these days? Apparently. But you want to take your data and basically extrapolate it into thousands and hundreds and thousands of different outcomes.
You want to take the data and predict a million possibilities that could happen. Then the hardest part, in my opinion, is ranking them. How do you look at these million possibilities and say, this is the best one or this is the worst one? If you can crack that, that's how you make the money. And I haven't cracked that yet. The problem is you might Google it and you're like, oh no, there's an answer there, but it's on Google. The answer is not going to work. It's like anything, if you want to make a good algo, even, it needs to be your own and that will be your edge.

 It's just like trading. Every trader might have their own edge. The same thing applies here, is I can Google it and I can tell you, oh yeah, let's apply this model to it. But if it's on Google, that's not going to be the one that works. And there's a reason it's publicly available, I'm sure, Citadel has stuff that would rank these models, and that's where the value is.

Are we in the infancy of AI and Machine Learning in your opinion?

Yes we're still in the infancy. If you look at Nvidia, their graphics cards are just now enabling computations for the average joe.

As we progress, graphics cards are focused less on gaming and more on performance and focus. As time goes by and the computational power trickles down to your average Joe, this is when machine learning will be more widely beneficial. For example, the iPhones have a dedicated chip for machine learning.

 Sometimes machine learning is misunderstood because there are different ways and different levels. You could slap on the machine learning label despite having the smallest amount of machine learning, which might just say, aunt likes coffee, someone else likes coffee. That's a trend. Is that all machine learning is? It's like, okay, five people like coffee now, and they all live in one area. There must be good coffee or something there. But that's not the machine learning that you think of in your head.

It's the same with AI because at the end of the day, it's an oversimplification, but it's just a bunch of conditional statements at the end of the day in terms of decision making. So I could make a robot and you could ask it, say, five questions. It'll make decisions. That's an AI. You asked it five different questions, and it made a choice. Then if you try to do other stuff, it will say it's not implemented yet.

How do you counteract the designer's influence on these systems?

I understand these systems can grow out and then design their own pathways, but the core architecture has to come from, like you, for example, and you will have some degree of biases now. So how do people address where's that conversation at the moment? Because I know it's a big one. that's the tricky one If I make an algorithm as I said, I will have a bias because one way is, and you might think another way is.

That's why most of the time when you see these people making AI that there are rules kind of in place, not officially in place, but like, guidelines that an ethical programmer would adhere to it in terms of. You don't want to make an AI that just hates everyone. I’ve seen the AI that hates everyone.

If you're a massive company and you're working on AI, you'd have a team because you'd want to make it as neutral as possible. That's unfortunately the thing. Like, you're basically just taking someone's brain, copying it, but making it unbiased. And that sounds so hard to do because even from a trading perspective, I have to make an algorithm that I might flint off to, say, hitting my stop loss. Let's say I hit five trades in a row on my stop loss. This algorithm needs to hit those five stops and keep going at the same rate it did the first trade. ? It needs to be unaware rather than I might be like, oh, if my Algo hits five stop losses, I want it to now use a tighter spread that's putting my bias into the program, and then it might make the Algor worse, essentially. Whereas I should be taking it as the Algor has no emotion.

Every trade is to be the same trade, Regardless of the previous results. I got two things that I read recently. One was just trying to recall the details, but it was Namura who put out a note about they were using AI for ESG scoring. And I get that because then there was basically more about just these monumental data sets and it was generating certain pattern recognition that could then identify trends that a human would never be able to see.

That then similar to the other example I had when I started using Twitter for markets. This was a long time ago, over a decade ago. And back then it was like not the well-recognized source of information that it is today. And there were lots of pop-up companies coming out and they'd have software aggregation tools that would then pick out on the hose pipe and alert them, a team of analysts that would basically then add the human layer of the million, tweets the machines, punching out 500 important ones.

There's always the human element there, almost like the pilot. It's almost like being in a super sophisticated aircraft where the plane can kind of fly itself, but the human still needs to sit in it to a certain extent because of the what-if scenario or is this actually the decision for the context and things like that? So yeah, that's how I've seen it develop in my career and that's why I was still reading with the mirror as well the other day.

Well, there are other websites that already do this, but I was like, I want my own one that does it for me. And it was just scraped. It is for every new post coming into Wall Street bets and just say, analyse the sentiment because you have natural language processing, which is basically you look at a text and you compare it to a dictionary or a library collection of words that will say the word bad is negative. If I said the stock is good, that's a positive sentence. So I'd look at a headline on Red and it might say, like, everyone uses the dollar sign, for example, just to make it easier.

So I say okay, in this text, look for the dollar. What's the ticker after the dollar? It might be like dollar AMD. Then what is the rest of the sentence? And then from that, I'd give it a score saying, okay, that's a very positive one. And then I'd add to a counter saying, this was mentioned once in the last 24 hours. It run constantly all day reading these posts, and all I'd get at the end of the day, still manually. I made a web panel for it, like an admin panel. I log on and say, this ticket was mentioned X amount of times.

This is how many were positive. This is how many were negative. I can click on it and view all the different things. And the reason being is, back then, I was like, okay, yeah, who's next? I want to know. Over the next couple of days, there might be something that was mentioned maybe four times, and then as it starts climbing and trending you're like, yeah, that's the next one. And I hopefully hop on it early. The problem I ran into was, like I said, as a one-man job, I didn't have the power to run this thing and the data leaving my computer on 24/7, for example, just scraping data and analyzing it.

Managing data

And then I had so much data, I just didn't know what to do with it myself because it becomes too much. That's when big firms would have these different teams, where I need someone who is a data scientist, essentially and takes my data and says, am I analyzing the correct way? Because I did it from a very simple point of view.

As I said, there is a way more intense way of ranking things. And the problem I ran into was that this is the one that still bugs me today because I couldn't fix it, was what happens if you don't put a dollar sign? Or when Wall Street bets kind of clocked that people were checking on Reddit and running these algos, and they started using code. For example, instead of GME? They'd write something else.

How do I get my alcohol to pick up these ones? Because it might say that GM was mentioned five times when actually it might be 500 because they're using their own code. And then problems ran into, okay, well, if someone puts two spaces between the letters G and M and E, so the permutations start building out, and that's where you need that maintenance. Yeah, that's where machine learning you want your algorithm to get smarter, to say, okay, look, someone wrote GME with one space yesterday, but now they're writing it with two. It needs to correlate that to the same I was doing it manually.

I had a text file where I would add tickers. So if I saw something already, I'd be like, okay, people are typing it like this. I'd add it to the text file, and then my program would start looking at it. that's not sustainable. So that's another one of my many shelf projects. I can say I've been there and I tried it.

Conclusion: Do you need coding skills for trading?

You might learn your programming language and go into your job and you might not use it, but you're preparing for a worst-case scenario where let's say in six years, we don't know what the landscape will be like. But if you already know how to code and maybe have all I ask of people is just have a basic understanding. So when you're talking to an engineer, you don't feel lost, perhaps. And what I kind of preach to our interns, and just anyone I meet is to learn a little bit. And you never know at your job, you might come up with an idea. You don't have to code the idea. Just coming up with the idea could lead to you revolutionizing a company. .

But if you didn't know how to think from if you don't know what can code do for you, how will you come up with these ideas?

We're always pushing forward, as a race. But that's my point, go learn to program. I never use programming for the next two, or three years. I'm just preparing you and kind of giving you the opportunity to say this is clear because people come up to me all the time. For me to do anyways on my own, or you're talking a couple of million in terms of development for your little idea. If you had a better understanding of programming, maybe you might come up with a different idea and things like that.

Which coding languages are best to learn to get started

I actually started with Java, even though I don't use Java anymore. I spent a whole, maybe a year and a half at Uni learning that, and I did JavaScript and Python and C and everything. And when it comes to learning a programming language, I always recommend Python. It's not the fastest C is hands down, the better one for finance, but it's the easiest to get into. You download you go to the Python website, it's like Python.org. You download the thing, you open up a notepad, you write code, and it just works. When it comes to Java and things, there are a lot more steps involved. The last thing you want for someone who wants to get into programming is having issues installing the language and getting it running.

I just want to point people to this place and say, look, download this. You get this little notepad window, write your code and crack on.

I say Python, but the one thing I always emphasize is regardless of what language you start with, you just want to learn the fundamentals. So things like variables, data types, data structures, writing simple conditionals, for example, and then loops and things like that. Once you understand these concepts, when you go and pick up another language, all you need to learn is how to write it.

I always say to people, that it's the same as English UK and English American. It's the same thing at the end of the day. But they say aluminum and aluminium and by the end of the day, you can understand it. And my point is, if you learn Python, going on to your question of how much, do you need to know, I always say to people about I'd say 50 hours would probably make you very not very good. You'd get a good understanding of programming.

So for example, let's just say with Will, I'd say when we started this whole quantum shenanigan, as a firm, we'll need very minimal code and kind of wouldn't be able to look at maybe three or four lines and understand what's going on. He's been doing the Sims with me. And I remember once we were going to go to the States. we got denied. We went to have lunch and I sat down with Will and maybe spend about two or 3 hours of me just reading line by line each thing in our quantum program and explaining to him how this works and things like that.

And then kind of Will's understanding is improved to the point where he was even saying to me he could run the SIM almost even though he's not an engineer. And I would probably say I've spent maybe 20 to 30 hours with him just looking at the code. I've got to the point where with our quantum anyways, that Will almost sometimes answers the questions without even coming to me.

So in terms of learning, I'd say go for Python. Just the ease of getting into things. And then about 50 hours, I'd say. So 50 hours. I'm just thinking about the maths there.
The easiest way to learn to program is, to go do your code academies, and your different courses online. Don't pay for anything ever in terms of like, 1520 quid to learn Python, because you can Google how to learn Python. Engineers have helped each other out. All the resources are online. Basically, pick a topic that you want to do. Don't just go in with the idea of I'm going to learn to program and then follow the course.

I'd say, okay, I want to build, let's just say, a very simple text analysis bar. You give it a sentence, and it'll tell you if it's bad or good. That sounds horrendous and really hard, . Say, for example, you would do it and it sounds really difficult. Then break that down. ? Okay. I need to get my Piping code to read text. That's now one substance on its own? Okay, want to read the text from a text file.

And all I would say is just do that little bit by bit, like Lego. Going to start with one little piece and just start building it up. The next thing you know, you'll have your Lego Bugatti or something made. But start with that, and then you Google, okay, how do I read a text file in Python? Internet's amazing. Everything's there. And you start from that, and the next thing you know is you've done. That is the next task. Now, how do I score this test? How do I determine if this test is bad or good?

Then you go down a rabbit hole of that, and then that's the best way to program because you're not doing it for the sake of I'm sitting down to learn something. . I'm doing this because I want to achieve something, but at the same time, I'm going to learn from scratch. And that's the biggest difference, between myself and many programmers; I spend a lot of time outside of work, just writing random stuff.

And Like I said, I've got hundreds of scrapped projects and just shelves, but I learned something doing all of them. That's what kind of builds you up into being a good programmer, almost. And it's just like finance.
market-maker-on-phone

Your Daily Markets Newsletter

Academic knowledge is not enough, you need to know what's happening in markets today!

From analysis on the latest news to insights across Wall Street and career tips to help you secure your future role in finance.