programming experience

Discussion in 'Automated Trading' started by ballsofgold, Jan 26, 2009.

  1. I also am a trader (14 years) and a programmer (20+ years). I traded off and on for years to learn to become a trader before trying to automate anything besides some historical testing. Now my strategy is automated.

    I traded options, futures, equities, day trades, position trade, combo option, etc. during the learning years.

    The platform I built myself called TickZOOM is now publicly available.

    Here's my take on your question. Software programming taught in schools or books is very generalized.

    You can study some specialties like how to program video games, how to build websites, how to build financial systems, how to build real time systems, etc.

    But, to my knowledge there's little to no training or books on specifically on building trading systems unless you count those that discuss trading models that you can program.

    Those who know how are often said to be "more secret than the CIA".

    So, the really hard part is that you are totally on your own. It seems that TickZOOM attracts some who will collaborate but that remains to be seen how that pans out.

    If you're serious about it, you just have to hit each technical roadblock and figure a way around it. Some roadblocks can take FAR longer than others to figure out. And you may hit issues the require starting over from the beginning a few times.

    Realistically, it's a ton of work even when you're already an expert programmer.

    So, that means, when you SUCCEED, you will have a huge reason to celebrate!

    Sincerely,
    Wayne
     
    #11     Jan 27, 2009
  2. For portfolio simulation, that is, strategies for more than 1 security, which is pretty much all of them, WL is the only development platform in the country. The caveat is that you can't really trade with it, but your development should begin here. Otherwise, TS is just as good.

    I'm pretty versatile, and I only had two CSC classes in college, though they certainly weren't about trading automation.

    I know Wealth Script, Tradestation's EasyLanguage, E-signal's EFS2 language, which is JAVA, C# in NT, and more recently .NET in WL5.

    I would agree it's easier for a programmer to learn to be a trader, because that's where I started.
     
    #12     Jan 27, 2009
  3. What is WL?

    Hey, with your knowledge of so many languages, I'd love your feedback on what was done with C# for TickZOOM. Many features were added to make it very much like EL and AFL even in C# but with complete time interval freedom and ability chain models and aggregate them so you can trade multiple models per instrument in a portfolio. You can get more details on the site under Usage menu if you have time to critique.

    Well that seems logical to me too.
     
    #13     Jan 27, 2009
  4. I think the answer to the original question depends on what he is looking for.

    I think one need some kind of logic/coding skills to validate many of the ideas for a trading system. While they could pay someone to code each & every idea, that would take more time to figure out how to describe it than to just write it out.

    Other may have different experiences, but it seems that many of the problems people run into with coding a 'trading system' is how to handle errors & issues that arise such as partial fills, broker problems, bad data, etc. etc.

    I have learned a bit of coding & it has helped me quite a bit. I intend to learn a lot more. While I may not be able to write a black box application yet, I am certainly more efficient at developing & testing strategies & ideas than I was before. Besides, just because I know how to code doesn't mean I need to do everything myself. It makes it much easier to evaluate & hire a developer when you have a better understanding of the development process & roadblocks yourself.

    Regards,
    Eric
     
    #14     Jan 27, 2009
  5. So true. So much is lost in communication between non-programmers and programmers! Which often turns out that the program doesn't quite do what the user wants.

    Those are the problems. That's true of any computer system. Something like 80% to 90% of any system is built to handle what we programmers call exception processing.

    Well said! and so true.
     
    #15     Jan 27, 2009
  6. Ballsofgold – There are many areas to touch on in professional programming that have not been made available to retail traders. But one area stands out. Professional programmers are tied to testing. Up to 60% of professional programmers work is often devoted to testing. The professional programmers testing tools in a mainframe (DB2 database) or midsized (Oracle Database) computer shop cost many millions of dollars. When I was a DBA manager I bought several million dollars worth. Here are some examples.

    Line/frame testing tools. Professional programmers have the tools to step through their code one line at a time on the screen and watch as each variable in storage changes in value. In addition these programmers have at their option the ability to take snap shots or set breakpoints when particular conditions occur in their code. Other options include setting how dumps of data will be formatted when conditions are not met. This paragraph cannot do justice to the 100s of other testing functions available. If tools like this were available to retail trading programmers our productivity would be up in the 1000s of percentages.

    Test data generators. Professional programmers have the tools to generate data that matches the conditions they set forward in their programs and testing plan. These programmers validate the effects of data on their programs before going into a live or “production” mode.

    Data mining tools. Professional programmers can mine out their set ups from the pile of stocks. I saw this used in the bank I was at. For example they can determine what kind of breakouts give a 50% probability of a 2 to 1 return. These programmers can develop a model for what a typical stock is that has these charteristics.

    ….I could write all night the list is just too long of what we are missing….
     
    #16     Jan 27, 2009
  7. rosy2

    rosy2

    all these tools are accessible to anyone.

    every language offers a debugger to let you step through code and set breakpoints and see variables change. you can then use a profiler which is also free.

    test data generators can be written with a script or just get old tick data and then run regression tests with one of the Xunit libraries that every language has

    for data mining you can get data and use R or python (parallelized with ipython) . You just have to know what your doing.

    the hard part about trading systems is that they are nondeterministic which makes finding bugs difficult...even with a debugger
     
    #17     Jan 27, 2009

  8. Rosy2: I beg to differ. These tools are not generally available on trading platforms. Platform does not mean we are putting piecemeal clutter together that have no relationship to each other. We are stating a programming language in a unified testing environment that has integrated professional tools.

    Take a case in point TradeStation platform in professional terms:
    - Debugger – They dump variables to a print file?
    - Data mining – You tell me there is no database?
    - Test Data Generators – down load what they give you I guess?
    - Program generations – How do add code to program without destroying it?
    - Baseline testing – How do you set baselines on past testing?
    - Gui testing – How do I set break points?

    For those of you who code in C, C++ or C# you may have some of these tools. But the rest of us who use platforms do not have integrated professional testing environments.
     
    #18     Jan 27, 2009
  9. dc101

    dc101

    ballsofgold,

    As an IT pro, I second everything Rabbitone said. If you’d take my advice, stay away from proprietary languages tied to one trading platform (like TradeStation EL, or similar). Your decision to learn c# is the right one imho. Download Visual C# 2008 Express (free) which is MS software development platform and play with it – that’s the best way to learn c# programming, testing, debugging, etc.

    Majority of the stuff that is supposed to run in OpenQuant or similar c# platforms can be developed, tested, and debugged in Visual C#.

    I'd also recommend trying Ninja Trader (free to use if not trading live) which also uses c#, and has a very powerful yet simple programming model. Much better than OQ imho.

    P.S. I’d stay way from VBA and VB.NET. It may take you slightly longer to learn c#, but it’ll pay off in the long run.

    Just my 2 cents
    Cheers
     
    #19     Jan 27, 2009
  10. Rabbitone - Excellent post. I came up with some new ideas based off of your comments. I agree there is a huge gap between what one could consider a 'professional' development environment & retail one. I don't think that most retail level traders have the budget or understanding to utilize these tools.

    I see the understanding of programming & trading similar to speaking the native language of a country you're visiting. You can wander around & enjoy yourself without speaking the language but there are decreasing marginal benefits to learning the language & becoming more proficient at it.

    The takeaway for me is that I need to build the best systems I can with the tools I have & learn and embrace new tools as they become available.

    Eric
     
    #20     Jan 27, 2009