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.