I have been exploring the trade feature for some days.
For me it looked liked the log on how we reached on the the current state of position.
Also i noticed that with the data loaded from example , the trade log was matching with the number specified in the position.
But then i couldn’t find the provision in UI where i can add new trades.
Also i discovered that on selecting a row in the trade section of UI , i am able to change the values and save a trade.
But here changes in the new values are not getting reflected in the value mentioned in the position.
Also in the same dialog window , i noticed a “save as new button” which almost had the functionality of add new trade feature.
My questions are as follows
Why cant we add new trades in the UI.
Why is there no constrain between trade and value specified in the position. Like if i change the quantity in a specific trade , the quantity in the position is not getting change.
There are other methods too (Other than trade) , by which a quantity mentioned in a position can alter. Like spin off. How can we mention these kind of transactions too in the position tab.
Firstly, some background. OpenGamma was really designed initially to be a pure position-based system fed exclusively by an underlying order management system (a traditional trading system like Murex/Sophis/Kondor etc.). During development we realised that actually we often wanted trade-level information such as trade dates, premiums and so on, to allow computation of things like PnL, so we added a simple facility for representing individual transactions as Trades. However, the processing of these trades into positions (a process referred to as ‘netting’) we still intended to be done by a traditional OMS/PMS. This is why there is no automatic updating of positions: the logic would be quite complex, especially when netting out things like FX positions, where different systems can take different approaches.
So, to answer your questions specifically:
We anticipated, and have found that, most users would pull trades directly from an existing OMS/PMS using an automated process. While trade entry is pretty simple for exchange traded instruments, it becomes very complex for OTCs. Although we have built full trade entry systems for some of our customers who required it, this has been done via our Excel plug-in and is not available to open source customers at this time. We do intend to add better trade management to our Web UI and I’ll open a ticket to allow basic manual trade entry from scratch as I agree this is something we should support.
As I said above, we currently rely on a back-end OMS/PMS to do that. In future we may add support for netting, particularly easy for exchange traded instruments.
The way we currently use trades and positions is to use the versioning mechanism to allow state transitions. For example, in the case of a spin off (I’m assuming here you mean when a listed company spins off a new company and you end up with shares in both), you’d have V1 of the position with a single trade to buy e.g. 500 shares in company X, and then have V2 of the position with two trades, one with the same 500 shares in company X and another with e.g. 1000 shares of new spin-off company Y. If you really need more complex OTC trade lifecycle events like terminations, assignments (partial and otherwise) we use extra trade attributes to represent a ‘Deal’ object, which would usually be a model close to the underlying trading system’s representation.
Having said that, we’re planning a redesign of certain aspects of our trade, position, portfolio and security modelling to reflect some of these requirements.