I've gotten bogged down in bug fixing, there are modules that do the brunt of the work but nothing that works as you want out-of-the-box. Then again I want a near-universal backtester with a GUI (but without complex position management). Obviously something without a frontend is much easier and requires much less time. It is valuable absolutely. The option to implement any feature in days vs being tied to some commercial software which might get unsupported on a whim, there's no comparison. Take Amibroker or MultiCharts, if there's ownership change and say you're relying on CQG data and IB for trading - they can modify their APIs, software authors decide to discontinue support (has happened before) and that's really the end of line. You're out of options. But a simple backtester and a comprehensive one are two radically different sized projects.
Curious to know how many here against rule 2 built their own platform while holding down a full time day job (rule 1).
I guess it depends on how complex such architecture is. I specifically am referring to a simple test/profile harness, for example a python setup to profile and test some ideas before applying such ideas to a full fledged portfolio level backtest with complex oms.
Building one, I can confirm it is a big undertaking, but building on top of existing framework (ninja in our case) helped a lot.
But in this case you can find python frameworks on github to accomplish the task. Really, the goal should be to first find something already built that satisfies your requirements. And if something does not fully satisfy your requirements, can you build an integration with it to get you over the finish line. Rolling your own solution should be a last resort. I have seen plenty of would be algo traders spend years attempting to build their own platform resulting in them never doing any algo trading.
trading and back testing platforms are 2 different animals. But I agree, try to utilise as much as possible of things that already exist, no need to reinvent the wheel.
They don't have to be. One of the tricks is to make things "pluggable" so that strategies are not aware of what context they are running in.