This is what I wrote on another thread on ET http://www.elitetrader.com/vb/showthread.php?s=&threadid=78330&perpage=6&pagenumber=11 Actually our other product, QuantDeveloper, features a "component" strategy development model where you can build a strategy from Entry, Exit, MoneyManager, etc. components. In this model you can develop a strategy playing a lego game, i.e. combining f.ex. SMA entry with Stop exit and ATR money manager. Although this can sound very attractive for a non-programmer, there are problems with this approach: 1. a user still need to program new components (the same in TB) 2. the model is not good for automated strategies where you need to trace order state change between components Thus I think OpenQuant offers the most simple ATS development model where a lot of things happen behind the scene, so that actual strategy programming is very simple.
Interesting - #1 seems like a non-issue - you need to develop code either way. In fact, by not having it in a component, you may need to develop more code as opposed to just being able to plug in a Kelly's Criterion for portfolio management. As to #2, I'm not clear why it would be any easier or more difficult to trace an order. Did the system create a buy order? What size did it create for that order? Is that any easier to determine in a component vs. a non-component system? I always found it a bit strange that there were two ways of developing systems in the original product - but I preferred the component systems as I liked the code isolation.
It's quite common in the ATS strategies that you, for example. would create a limit order in the "Entry" component, adjust position size in the "Money Manager" component (not only ask for order quantity based on risk measures, but scale in or out with Order.Qty += 10; Order.Update() depending on market and portfolio conditions), cancel the order in the "Exit" component and yet look after partial fills in the "Execution Manager" component. Think that you can have another order or two (stop loss or/and take profit) coupled with this order in an OCA group and you will end up in a situation when a plain strategy code is much more easy to maintain than in the (artificial) independent component model. You can take a look at sample strategies from OpenQuant install (we tested most of them with intraday data live on IB in unattended automated mode) and see if it would be easy to split strategy code into several independent components.
It's probably a question to the author of Trade Like a Hedge Fund book who decided that you can trade like a hedge fund without any money management But I think that in order to introduce a simple money management scenario into, for example, OpenQuant slow turtle example you just need to write something like Qty = Portfolio.GetTotalEquity() / ATR[bar]; instead of Qty = 100; We can add an example in OpenQuant install in one of the next releases.
Anton, Is it possible to write portfolio-level constraints within OpenQuant? A Scenario that I'm thinking of is as follows: --Given that I'm trading multiple markets with a single strategy (albeit, with slightly different parameter settings)... --If wanted to set a constraint that would restrict my net long USD exposure, either by equity or notional value, across a portfolio, can this be coded within OpenQuant? --In other words, if the net long USD exposure is constrained to 50% of total equity, then the incremental USD long signal would be rejected at this level and the next trade could only be a USD short. Can this be accomplished in OpenQuant? If not, can it be done in SmartQuant? Otherwise, how might I accomplish this? Thanks, Lou
Hey Anton, Are you legitimately advertising on ET again? Where's the commercial marker in your signature? -kt
So far I am answering technical questions about beta version, in a thread that was started by ET community members. Where have you seen any advertisement?
OpenQuant doesn't send signals but direct orders. I think you can do something like OnBar() { if (myEntryCondition) if (Position.GetValue() / Portfolio.GetPositionValue() < myExposure) SendOrder(...); ... }
Hi EdgeHunter, There are some issues with Opentick historical data/data gaps, but these issues are general to all Opentick client software. The bug mentioned by toe is also now fixed. Apart from that Opentick appears to work well. -- Keith