Using executions to update positions and PnLs
Now, we will build a PositionKeeper class that will be responsible for processing executions on a strategy’s orders and computing and tracking positions and PnLs. This component is used by the strategy as well as the risk manager to compute positions and PnLs for different purposes. All the source code for the PositionKeeper class is in the Chapter9/trading/strategy/position_keeper.h file on GitHub. Before we build the PositionKeeper class, which manages positions for all trading instruments, we will need to build a PositionInfo struct, which is also present in the same source file. The PositionInfo struct is the lower-level struct for managing the positions and PnLs for a single trading instrument; we will cover it in more detail in the next few subsections. We discussed the details of this component in Chapter, Designing Our Trading Ecosystem, in the Designing a framework for low-latency C++ trading algorithms section.