I really need your advice

Discussion in 'Programming' started by Giddiyup, Oct 27, 2011.

  1. Giddiyup


    Hello everyone. Please hear me out.

    I have been a day trader since 1999 I have decided to hang it up (guess I'm getting too old for this line of work) and approaching my 40s, I am a little apprehensive about a change in careers.

    I have ALWAYS wanted to program, and infact in my younger years did some basic stuff with the commodore 64. Ive sometimes regretted not going into that line of work long ago , although trading has been good to me (until recently).

    I am prepared to take 2 years out of my life (possibly 4)to learn programming , go to school, whatever it takes, to get into this field and have a chance at this career. I would really like to apply programming skills to get a job with some firm creating trading algos.

    Do any of you have any advice you can give me, any tips you could offer?
    Would any of you take a few moments of your time to point me towards a direction I should take?

    Thank you very much in advance.
  2. Hello Giddiyup, welcome to ET.

    That post sounds quite, how should I say, sincere. I've done the reverse of what you've done: coding since 99 and trading since not so long ago - or rather making trading systems, but I'm only in my late 20s. It's great that you know exactly what you want to do, and are realistic and prepared to spend enough time to get good at it. With so much trading experience, once you learn programming it will be somewhat easier for you to translate your own actions into computer code. Most system developers hired by companies work with experienced traders which communicate their ideas to the programmer, and in the communication a lot of things get lost. Without the communication breakdown, you on your own could maybe end up creating an automated system that will work quite well.

    Now, it sounds to me like you have 0 experience coding. Here's the deal with programming languages. You may have heard stuff like "true pros use c++". Don't let that confuse you, you won't need c++ for a long time (and it's a difficult language, sometimes even for me still). There is however C# which is much easier, in fact it's almost as easy to use as BASIC (if you remember the early 90s) once you get into it. It takes away a lot of worries, and the .Net platoform which it uses holds your hand (profesionally) on a lot of issues. I use that to this day more than anything else, and most trading systems (apart from microsecond HFTs) developed by small and medium companies and hedge funds use it too.

    Your goal of "get a job with some firm creating trading algos" is doable, but above all what those firms will look for are systems that you have created in the past that have had a track record in real-time (usually with real money) trading. This track record may take time on its own to get developed, however. On the plus side, they won't care so much about your experience as a programmer, as long as your ideas work and you can explain them.

    Unfortunantelly, most coding jobs with .Net languages (VisualBasic, C#, F#, etc) involve boring stuff, creating boring apps and helping people out. I've worked in the game development industry, there are some jobs there too, but that becomes boring after a while also. The good, well paid jobs, come after 5+ years of experience, and maybe a year or two of internships. Maybe you already know that, but I'm just saying.

    Anyway, you're on the right path with your own idea, just let me steer you one bit further. Like I said, your trading experience is very important. You can use it to a great advantage. This means my advice is to you to learn basics of programming, then C#, then everything you can get and need, and start working on some trading systems 1-2 years from now (depends how quick you learn and how hard you're willing to work). Once you learn how to make the computer see exactly what you saw when trading, and react to that information exactly the way you would (or as nearly as possible), you could in theory not have to work ever again - or simply loose your money really quick. That good part sounds like a fairy tale, kinda silly I know, but I've seen some people make it. Better yet, if your trading style doesn't fit, and you want to try out something new, you don't have to wait months to see if it works - you can just change your computerized strategy and backtest it for the recent period!

    There are lots of C# tutorials online, sample code, etc etc. MSDN is the online Microsoft database (ie huge online help file) and you can find examples and tutorials for everything. You will first want to get yourself familiar with Visual Studio, and then go from there. If you find it hard to get the proper information you think you need, some programming courses might do you good, but my personal belief is that we learn best by example and finding our own information (tho everyone's different so I don't know).

    Finally, once you get to grips with a langauge, coding can be fun. At least for me, after all these years. It's constant puzzle solving, it involves a lot of ingenuity and you often have to be inventive and a problem solver. It also requires hard work, and the first lesson you will learn is: when you estimate the time you need to finish something, multiply it by 3 and that's the real amount of time it will take.

    Good luck!
  3. Giddiyup


    Thank you for that amazingly detailed reply.
  4. Giddiyup


    If i may ask, are you programming HFT algos? Using C#?

    I was under the impression that fast executions required c++.
  5. If you want to enter the Algo trading team of an iBank, the current popular language should be C++ or java. Perhaps it's better to check with several job descriptions first.
  6. You're welcome.

    I'm not sure everyone has the same definition of an "HFT", so I can't say. My trading system works on single contracts and for equities it does around 12 round trips on average per day (session hours). Positions are open from 1 to 15 minutes mostly. If that qualifies as an HFT then yes, and yes I'm using C# and Visual Basic.

    Fast executions do require c++, but only when you are colocated and the 1 or 2 milliseconds counts by a lot. For holding periods of more than 30 seconds, it doesn't matter so much. The language c++ could be useful however if you need a large amount of pairs on a single machine (if parallel processing isn't possible or you cannot filter your data through several other machines etc). This means if you are forced to code so that a single machine is watching a huge amount of symbols (ie 5000+ for multipler periods), memory might become an issue, and in that case c++ might allow you to optimize your performance a little bit better. However, that "little bit better" will come at a cost in terms of time needed to code it properly. You see, C# (and the whole of .Net platform) makes things much easier primariliy and above all else by managing your memory. That's why it's called a "Managed" language/platform. In terms of CPU usage and all other compiler-level metrics, for all intents and purposes many benchmarks have been done and C# is about 98.8% as fast as C++. A huge amount of speed will depend on how you optimize your code, and you will need to learn a lot about that before that little 1.2% becomes an issue.

    Also, once you learn C#, and get very good at it, it will take you maybe a month or two to become just as good in C++. In fact, a lot of people (including myself) recommend to people wanting to learn C++ to go for C# first and learn all the concepts about programming. Above all else, you need to learn what "object oriented" means, and how to look at each bit of your code as a separate object that can be plugged and connected easily with others, and also modified and extended if needed. Coding requires a ton of precission, so hopefully, you have a matching mindset.
  7. Giddyup -
    I think you are making a HUGE MISTAKE. I've been in IT and programming for over 25 years. I'm now at 40% of my income of 20 years ago. Why ? There is NO MONEY in this business....it's all gone overseas, and thanks to the lobbiests, there are now literally millions of Indians in this country competing for jobs and contracts. If the Indians don't take your money, there are these places called "agencies" who will gladly take a huge chunk of your income for the "privilege" of placing you at a client site.
    Just look at the growth of Tata, WiPro, HCL, Cognizant, Info Sys and you'll see what I mean. These companies didn't exist 20 years ago.
    There is a good reason they are all prospering.
  8. That's also true. There are heaps of programmers who work for little money, and websites that allow you to hire teams from India that will make applications also at a very low cost. It's generally a low paid job, if you can even find one. The only way to really get a good job is to find your niche and focus on it exclusively and get loads of experience. I was coding 3D engines for the games industry and the low paid coders don't get into that complex stuff so it was a bit easier to find jobs, however still not highly paid. I switched to trading for a reason. Don't focus so much on getting a job, you will probably do better if you made your own automated systems and start out with the cash you would spend on trying to get a job in the first place. Trader turned programmer is the best combination for 2012 onwards.
  9. Exactly Braincell - I am with you on this. Everything is coming together as far as IP reliability, stable data feeds, and FINALLY a half-decent API from IB and others (it could be better of course). This is the way to go....and that is my goal for 2012.
    I am tired of working for peanuts, paying the agencies, and wasting a lot of time trying to get long-term contracts but only garnish tiny 3-4 month contracts which I call "stinkers": high pressure, low pay, no benefits, and usually with unreasonable clients. They even know me by first name at the drug testing center....I've got to be re-tested for EACH NEW CONTRACT ! Now if that doesn't suck, please tell me why not ?

    Despite the B.S. in Washington DC about reducing H1B visas, etc....IT'S TOO LATE...the damage to the profession has been done.
  10. Giddyup,

    Initially learn a scripting language : python or R. Initially avoid Java, C++ and C#. Why : for the sheer pleasure of being able to produce things that work in the real world quickly instead of wasting time on build management. If you get serious about it, you can always jump to one of the more serious languages / environments.

    If you want me to pick just one thing to learn : go for R, because it straddles the worlds of both programming and finance quite well (@see www.quantmod.com). Trust me on this piece of advice. You'll thank me lots later. All the very best! :)
    #10     Oct 28, 2011