Guru's Verification engine ensures consistency, confidence, and trust in the knowledge your organization shares. Learn more.

How Are Different PnLs Calculated?

Compass Total PnL

Compass as a market maker doesn't take into account open and close positions meaning the price a trade was opened at vs the price it was closed at is not taken into consideration. Instead, it looks at the overall currency balances of the book and produces a mark-to-market PnL of the positions currently held in the book.

PnL is calculated for each tenant profile in Compass, these look at the overall positions in the configured CLIENTS_NET book which nets off the balances between internalised, STPd, and hedged trades, the PnL is essentially the sum of all the currency positions converted into USD.

Echo Total PnL

For Compass-managed accounts, Total PnL in Echo when split by counterparty/instrument/trade etc. is a calculation of PnL from the overall hedge and client positions. A process called riskPath looks to attribute a portion of the book's overall PnL to a trade based on whether the trade opened or closed risk.

As Compass doesn't take into account the open and close portions of a trade, the traditional Open/Close PnL isn't calculated (however this is also available in Echo when connected via MT4). Instead, Total PnL is tracked through the risk path PnLs of each trade through the system, which accounts for the Spread PnL and the Reval PnL.

MT4 profit PnL:

Difference between a clients open and close positions (+spread)

Reval PnL:

  • The reval PnL comes from the equivalent positions in Compass.
  • These are the mark-to-market value of each asset against the dollar
  • These positions are constructed via a covariance matrix hard coded into Compass so they are not the actual positions we hold in each asset through trading with counterparties
  • So unlike MT4 open/close positions, the equivalent positions aren't the exact opposite positions to client positions
  • Compass uses a process called riskPath to attribute the reval PnL to groups of trades and counterparties which is what we see in the total PnL column in echo
  • The reason it is calculated like this is due to the fact the hedgers hedge against portfolio risk rather than 1-1 against client trades
  • We wouldn't necessarily look at total PnL as an indicator for good or bad counterparties

Spread PNl:

The spread taken on a trade i.e. the difference between the fill price and the reference model mid price.

Risk path PnL:

RiskPathPNL = SpreadPNL + RevalPNL

In short, the pnl of a path is the mark-to-market of the basket of currencies that make up the path plus the spread paid or earned on the trades involved.

The pnl of the path is tracked before and after each trade is added to the path.

Configurable PnL Attribution vs Estimation Models

Compass is supplied with a PnL attribution model called Risk Path. The purpose of this algorithm is to apportion credit or blame for the PnL in the system. The value of this algorithm is that, at the end of the day, the total PnL assigned to all client and hedging trades should eventually match the PnL in the trading book.

Compass also supplies configurable PnL estimation models based on more direct yield profile interpretation. These work by producing a time-weighted average PnL of a trade up to a predefined holding period. Unlike Risk Path, these estimation methods are not a closed system. Their total PnL is not expected to match the trading book as it is more an estimation of value (independent of the hedging strategy employed, or whether the trade was brokered, etc.)

Risk Path PnL Attribution

A risk path tracks the impact of adding new risk to the system. It is created when a risk increasing trade enters the system.

It tracks the opening trade and all further trades that are deemed to reduce the risk of the path. It is closed when the risk left over in the path is deemed to be insignificant.

It is stored internally as a basket of currencies e.g. 1000 EUR, -560 USD, +34 CHF, etc.

Trade Allocation to Paths

As trades enter the system they are offered up to existing risk paths for matching i.e. does this trade partially hedge this existing path, if so the proportion of the trade that matches is added to the path.

Allocation occurs based on how a trade reduces the VaR of a path. VaR is measured based on a risk free asset (usually USD).

Each trade's currency positions are evaluated against an existing path's positions using an equivalent position calculator, which is based on the VaR of a portfolio.

The following question is asked:

What proportion of this trade, if at all, does this hedge (reduce the VaR) of the current set of positions within this path?

If it is risk reducing that proportion of the trade is allocated to the path.

Closing Risk Paths

We only close a path when the risk in it is deemed small i.e. the VaR is less than 200 (configurable) and it is expected that its pnl will no longer change meaningfully.

We publish a path when it is closed and all revals of the constituent trades in the path have been complete.

We only know for certain the main PnL's with which we evaluate trades (allocated and adjusted PnL) when a path is closed. This can be quite a long time after the initial trade. Sometimes more than a day.

Prior to that we attribute an interim PnL to the trade which is the mark to market PnL, calculated at each revaluation point in the yield profile.

Allocating Pnl to Trades

The risk increasing trade is allocated the PnL of the path, spread and reval PnL is separated out. This in turn is shared out amongst the full set of trades that interacted with the path during the following adjustment phase.

Adjusting Pnl

For risk decreasing trades we give them an adjusted PnL which is equivalent to the mark-to-market of the trade after a configurable period, this period defaults to 30 seconds. The adjustment is enacted as a transfer of PnL from the risk increasing path.

Immediately closed paths

Where the size of the trade is deemed very small, it is first offered up to existing paths in the usual manner. However, if there is any left over, rather than keeping a path open we will create and close a path immediately for the trade.

When this happens the trade is initially allocated the inception PnL, which sometime later is adjusted to be the 30 second value of the trade (by default).

Once the immediately closed path is closed its positions are transferred to the eternal path in return for the adjusted PnL allocated to the path

You must have Author or Collection Owner permission to create Guru Cards. Contact your team's Guru admins to use this template.