At close of business every trading day, the middle office must produce a P&L explain: a complete attribution of the portfolio's change in value to its sources. If the portfolio gained €1.2 million, the desk risk manager needs to know whether that came from yield curve movements, carry accrual, convexity, FX translation, or new trades. Any amount that cannot be attributed to a known factor is the unexplained residual—and it should always be close to zero.
The P&L Explain Framework
P&L attribution decomposes the total mark-to-market change into additive factors. For a fixed income portfolio, the primary components are:
The residual ε arises from higher-order terms, cross-effects, and model approximation. A well-calibrated risk model should keep ε below 5% of total P&L on average; regulators under the FRTB Internal Models Approach require formal P&L attribution tests.
Rate Delta (DV01 P&L)
The dominant component for most fixed income books is rate delta: the sensitivity of the portfolio to parallel yield curve shifts. It is calculated as the product of the portfolio's DV01 (dollar value of a basis point) and the change in rates during the day.
where Δy is the change in yield in basis points and the factor 10,000 converts from per-basis-point to full dollar value. A portfolio with DV01 of €42,000 experiencing a 3.5bp rally would attribute +€147,000 to rate delta.
In practice, the rate delta decomposition is done by key rate duration (KRD) across tenor buckets—typically 3M, 6M, 1Y, 2Y, 3Y, 5Y, 7Y, 10Y, 15Y, 20Y, 30Y—because yield curves rarely move in parallel. A steepening trade that is long the front end and short the back end might show a large positive KRD-2Y P&L and large negative KRD-10Y P&L, netting to a small total.
Carry and Theta
Carry is the income earned simply by holding a position overnight. For a bond, carry equals the coupon accrual minus the repo funding cost minus the passage of time (theta). It is the return you earn if nothing moves.
For a sovereign bond trading near par, daily carry is typically a small but predictable positive number. It becomes the primary P&L driver on quiet trading days with no yield movement.
Convexity Adjustment
The DV01 sensitivity assumes a linear price-yield relationship. In reality, bond prices are convex: for large rate moves, the actual P&L exceeds the linear approximation. The convexity adjustment captures this second-order effect:
For a 10-year bond with convexity of 85 (in years²), a 50bp rate move generates a convexity benefit of approximately €10,625 per €1M face value. This term is always positive for long positions—convexity is a free option for bondholders.
The Unexplained Residual and FRTB PLA Test
The P&L Attribution (PLA) test under FRTB compares the Hypothetical P&L (HPL)—computed from actual end-of-day market data—with the Risk-Theoretical P&L (RTPL), computed from the risk factors in the internal model. A large persistent gap signals that the internal model does not adequately represent the trading book's risks.
Banks are assessed over a 12-month rolling window. If the mean relative difference exceeds 10% or the variance ratio falls outside 0.8–1.2, the desk fails the PLA test and faces a capital surcharge or, in the worst case, must revert to the Standardised Approach for that desk.
HTM vs AFS: Accounting Treatment
Not all fixed income portfolios flow through daily P&L. The accounting classification determines where valuation changes appear:
| Classification | MTM Treatment | Income Statement Impact | Typical Use |
|---|---|---|---|
| Trading Book (FVTPL) | Daily MTM to P&L | Unrealised gains/losses flow through | Proprietary trading, market-making |
| AFS (FVOCI) | MTM to Other Comprehensive Income | Only impairment and realised gains hit P&L | Liquidity buffer, ALM |
| HTM (Amortised Cost) | No MTM — held at amortised cost | Only coupon income and impairment | Core deposit funding, long-term ALM |
The 2023 Silicon Valley Bank collapse illustrated the risk of large HTM portfolios: unrealised losses that were invisible in P&L until forced liquidation. Under IFRS 9, a portfolio reclassification from HTM to AFS triggers immediate recognition of all accumulated OCI—a significant earnings event.
"The unexplained residual is not noise—it is information. It tells you which risk factors your model is missing, which approximations are breaking down, and which trades your system cannot reprice correctly."
DV01 Profile Over Time
Middle Office Workflow
The daily P&L production cycle follows a strict timeline. After the trading day closes, risk systems reprice the entire book using end-of-day market data. The attribution engine then runs each factor one at a time, computing the sensitivity contribution. Results are loaded into the P&L report for trader sign-off before the overnight risk management run begins.
import numpy as np from dataclasses import dataclass @dataclass class BondPosition: notional: float # Face value € dv01: float # € per bp convexity: float # years² coupon_rate: float # annual, decimal repo_rate: float # funding rate, decimal def attribute_pnl(pos: BondPosition, delta_y_bp: float, delta_fx: float = 0.0) -> dict: """Full P&L attribution for a single bond position.""" # Rate delta (first order) rate_pnl = pos.dv01 * delta_y_bp # Convexity (second order) delta_y_dec = delta_y_bp / 10_000 convexity_pnl = 0.5 * pos.convexity * delta_y_dec**2 * pos.notional # Daily carry (coupon accrual minus funding) gross_carry = (pos.coupon_rate / 360) * pos.notional funding_cost = (pos.repo_rate / 360) * pos.notional carry_pnl = gross_carry - funding_cost # FX translation (if non-base currency) fx_pnl = pos.notional * delta_fx total = rate_pnl + convexity_pnl + carry_pnl + fx_pnl return { "rate_delta": rate_pnl, "convexity": convexity_pnl, "carry": carry_pnl, "fx": fx_pnl, "total_attributed": total, }
Implications for Data Infrastructure
A robust P&L attribution system requires several data inputs to arrive with both precision and timeliness: end-of-day yield curves from the market data vendor, repo rate fixings from treasury, trade captures from the front-office system, and FX rates at the precise evaluation time.
Any data quality issue in these inputs propagates directly into the unexplained residual. A common source of phantom residuals is timestamp mismatch: the risk system may reprice bonds at a London close snapshot while the front office books use a New York close. The 5-hour difference in US treasury yields alone can generate tens of basis points of spurious DV01 P&L.