Home > Technical Topics > Automated Trading > Should I avoid not invented here syndrome, or do it myself?

Should I avoid not invented here syndrome, or do it myself?

  1. Here is my situation:

    * Hey, I have an an algo that works great in backtests, let me set it up live!
    * Oh, I need to twist this knob first to make sure I only get completed bars
    * OK, I need to twist that knob to make sure it doesn't crash on missing data
    * Oh... The connection randomly drops, how do I fix it?
    * Oh... I have to REWRITE THE GD CONNECTOR TO THE TRADING PLATFORM

    How much of what you do is avoiding NIH syndrome vs DIY? The value of DIY is that you understand everything, the value of avoiding NIH syndrome is that you get the work of other people.

    I feel as if DIY compounds much better than using other people's code, but in the beginning, your productivity is significantly hampered.

    I could, for example, "fix" the current problem above by using NinjaTrader/MT or any of the other fine automated trading platforms. But then I'd have to deal with their issues instead of my own.

    Any thoughts?
     
  2. Can a platform suit your current and future needs (avoiding NIH)?
    Are you willing and able to invest in DIY code?
    Starting out with DIY from nothing can drain too much resources, but after a while, you may find nothing else really fits your specific requirements.

    People often act like there's only one choice, when you can do both, and probably will need to!
     
  3. The approach I took was incremental building, using as much open source as possible, lifting bits outright or using as template - pysystemtrade was useful here. Now I'm receiving systematically produced trades via email and executing manually. Execution algorithm is in pipeline
     
  4. Thank you for your feedback posters. It's good to know your experience tends towards a healthy mix.

    I think I am hitting upon a mix for sure. It's frustrating thinking the grass is greener when I have years of experience knowing that my code pays dividends well into the future.

    So, let's say I lean more towards DIY. What would you guys use to monitor your trades in real time? Just what's offered by your broker? Or is there a dashboard?
     
  5. Watch out, Ninjatrader has if statements :D
     
  6. Start with mostly commercial/free products and slowly replace them with DIY products whenever you find the current stack is somehow insufficient.

    In general, you want to increase the complexity of your process only when needed. That’s especially true when running a strategy at the beginning of its lifecycle. This way you can check if it works, make tweaks as needed and know that any failures are due to the strategy, not the process
     
  7. This SEEMS logical, but to me, adding a commercial product adds another layer of complexity in that I am dependent on them to be timely with my support and updates.

    Open source is a good in-between but there aren't really very many good open source tools for this that I liked very much, unless you have suggestions.

    My strategy would be live trading if it wasn't for this disconnect issue. It isn't insurmountable, but it'll take a good week to solve correctly. And that really makes me sad because it signalled last night for a YUGE profit :(
     
  8. Well, think of it. It’s your first live strategy, you are still uncertain if it works (and will be uncertain for a while). Most of the work at this stage is figuring out bugs in the process.

    Get something together that will get the job done initially. Maybe not an MVP, but something viable yet imperfect. Since you are a good developer (better than myself, for sure), you can find ways to make swapping components fairly straight forward.

    PS. open source > free but commercial > paid software in this case. There are so many products where the fees (especially if they charge an ongoing fee) are not worth the value that product provides. One of the key things in automated trading is controlling your costs.
     
  9. Yeah, you're right.
     
  10. That’s something that comes with experience. I have seen people over-engineer things and subsequently fail.
     
  11. I didn't mention, but the bug is in an external open source API, not my code. I consciously try to avoid overengineering, but I also try to avoid depending on other people's code. It's a tension.

    So my choices are:

    1. Do I spend a week and fix this?
    2. Do I move on and spend a week finding another system?
     
  12. True/False
    A. Is it something that otherwise fits your needs?
    B. Do you have the skills and the knowledge of the system to fix it without breaking anything else?
    C. Do you know off hand another system that will do what you need?

    If B is False, you know what to do :)
    If A and B are true and C is False, you know what to do
    If all are true, then it’s a question of how much effort you’ve already invested in the current setup vs replacing a component
     
  13. All are true, but I don't think it's about effort invested (that's a sunk cost fallacy, COME ON MAN, WE'RE TRADERS AMIRITE), it's about what will compound better in the long run.

    I spend a week, fix it, and make billions, or spend a week, use someone else's thing and make billions. Either way I make billions but the first way, I have a lot more fun :)

    So alright, I'll spend a week. If I can't fix it, I'll use someone else's thing.
     
  14. As long as you make your billions, you're alright. Don't settle for less though, or you're stuck with no healthcare, no police and no firestation of your own.
     
  15. Another good library for IB: ib_insync on github
     
  16. Haven't even traded live yet and already counting the billions?!?!
     
  17. My god man, take it easy. It's obviously a joke.
     
  18. Why would you use this and not the official API?
     
  19. It is not really, though. Sunk cost assumes that time or money spent does not change your state as an economic agent and only adds material possessions.

    You don’t know what will work in the long run because you have never done this in the long run. However, there is certain value of expertise - if you spent a month integrating a component into a system, you have intimate knowledge of that component that you will have to re-acquire if you install something brand new.

     
  20. Indeed, and that's kind of why I'm erring on the side of remaining with my expertise. My experience with my own systems is that when they are an extension of myself, I am more productive than teams of people (this was a feedback I received while working at the hedge fund - they fired my entire team and got me to do everything)
     
  21. It wraps the official API, imposes an ioloop and allows API to be used in none event driven manner.
     
  22. Fun DIY update of the day: the cleaning lady rebooted my machine while I was out with the dog for a walk. LOL.

    Time to fire up that Linode.
     
  23. Hello nooby_mcnoob

    https://www.speedytradingservers.com/ I use this before and the service is terrific. I also use NinjaTrader and the service is terrific and free. Keep it simple, why build something that is already built and ready for use.
     
  24. It's especially touching that they offer IB TWS as a platform while pushing a latency-reducing solution :)
     
  25. This seems like a good idea.