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.