Why the Greeks Don't Add Up to Your P&L
The Greeks never sum exactly to your option P&L. Here is the Taylor expansion they come from, the cross terms inside the leftover, and why path matters.
The Greeks do not add up to your P&L, and no amount of careful bookkeeping will make them. Delta, gamma, theta and vega are the leading terms of a Taylor expansion of the option price, and an expansion that stops after four terms leaves a remainder. Every honest attribution carries a residual line, and the skill worth having is knowing which Greek hides inside it.
Why the Greeks don't add up to your P&L
Start with what an attribution claims. Over a short interval, the change in an option's value is approximated by four products: delta times the change in spot, one half gamma times the change in spot squared, theta times elapsed time, and vega times the change in implied volatility. That identity is exact only in the limit of an infinitesimal step. For a real trading day it is an approximation, and the error has structure worth naming. If the Greeks are new, the option Greeks explained covers each one first.
Four things sit outside those four terms.
- Vanna, the cross term between spot and volatility: the change in delta for a one point change in implied volatility, identically the change in vega for a one dollar move in spot.
- Volga, the volatility of volatility term. A constant vega misprices a large volatility move, since vega is itself a function of volatility. Vomma is the same quantity under its other name.
- Path dependence. Gamma P&L accumulates against the squared moves along the way, and two paths with the same endpoints accrue different amounts.
- Discretization. The Greeks being multiplied are a snapshot from one instant, and they drift through the interval under attribution.
What a step by step attribution looks like
Attribution is bookkeeping, and the shape of the ledger is worth seeing before the arguments about it. One row per interval. Yesterday's delta and gamma on the left, since those are the numbers a desk actually held when the interval began. Then the delta term, the curvature term, the theta line and the vega line. Then the actual change in the mark. Then whatever is left.
A hypothetical row, purely for the arithmetic. Yesterday a call marked 4.20 with a delta of 0.55 and a gamma of 0.04 per dollar squared. Spot rises 3 dollars and the call marks 6.10 today, a change of 1.90. The delta term is 0.55 times 3, or 1.65. The curvature term is one half times 0.04 times 9, or 0.18. Those two account for 1.83 of the 1.90, and 0.07 is left for theta, vega and every cross term combined.
Stopping a trace after delta and gamma is a discipline rather than a shortcut, since it sizes exactly what two Greeks miss. Run the row for every session a position stays open and the leftover becomes a time series of its own. Its level matters less than its behaviour. A leftover that stays a small, sign flipping fraction of the explained terms is the truncation error the expansion predicts. A leftover that grows with the size of the volatility move is a vega line waiting to be added.
Does the order you attribute in change the answer?
It does, and the gap between two orders is the cross term. Take a hypothetical position, purely for the arithmetic: delta 0.50, vega 0.12 per volatility point, vanna 0.03 per point per dollar. Spot rises 2 dollars and implied volatility rises 1 point over the same interval.
Spot first, at the starting volatility: 0.50 times 2 is 1.00. The volatility move then uses the vega the spot move left behind, 0.12 plus 0.03 times 2, for a volatility line of 0.18.
Volatility first: 0.12 times 1 is 0.12. The spot move then runs at a delta of 0.50 plus 0.03 times 1, so 0.53 times 2, or 1.06.
Both orders total 1.18. The splits differ by 0.06, exactly vanna times the spot move times the volatility move. No order is neutral. Any additive decomposition parks that interaction somewhere, and the defensible choices are to give it its own line or to split it evenly and disclose the convention.
What the leftover looks like when implied volatility moves
The size of the leftover is not a constant. It tracks the terms the attribution left out, and for most listed options the largest omitted term is vega. On a quiet step, where implied volatility barely travels, delta and gamma capture nearly all of the change in the mark and the leftover is close to a rounding line. On a step where implied volatility travels a point or more, the vega contribution can exceed the delta contribution outright, and an attribution missing it reports a leftover comparable in size to the move it was meant to explain.
That is a measurement anyone can run on their own positions, and it is worth running before a residual line gets trusted. Compute the leftover for every one session step, bucket the steps by the absolute change in implied volatility, then report the average absolute leftover as a share of the average absolute change in the mark. Scaling it that way keeps the comparison honest across contracts carrying very different premium, and it answers the question that actually matters: how much of the move did the report fail to explain. Implied volatility is an input to the mark rather than a commentary on it, and every point it travels has to land on some line.
Vanna, where delta hides a volatility bet
Hold moneyness and tenor fixed, change nothing but implied volatility, and the delta of an out of the money call still moves. A higher volatility input widens the distribution of terminal prices and lifts the probability weight sitting beyond the strike, which the model reports as a larger delta. Gamma at that same strike flattens as the input rises, with the curvature spread across a wider range of spot. Vanna is the first of those two sensitivities and the volatility of volatility term named earlier is the second.
Nothing in that paragraph requires spot to move at all. A delta marked at yesterday's volatility is already stale, a point the Greeks over time develops further, and it is why option vega and delta cannot be attributed as independent lines. The hedge that was flat yesterday is not flat this morning, and no part of that drift belongs on the spot line.
Why gamma P&L depends on the path
Gamma P&L cannot be recovered from a start point and an end point. A delta hedged position accrues one half gamma times the square of each move, summed over every rehedge. Square the sum instead of summing the squares and the two numbers disagree. The panel runs both aggregations month by month on the S&P 500 ETF, over the same set of daily moves.
| month | month_label | path_move_pct | net_move_pct |
|---|---|---|---|
| 2025-07 | Jul 2025 | 1.96 | 2.3 |
| 2025-08 | Aug 2025 | 3.4 | 2.09 |
| 2025-09 | Sep 2025 | 2.12 | 3.25 |
| 2025-10 | Oct 2025 | 4.08 | 2.44 |
| 2025-11 | Nov 2025 | 4.1 | 0.28 |
| 2025-12 | Dec 2025 | 2.41 | 0.19 |
| 2026-01 | Jan 2026 | 2.84 | 1.5 |
| 2026-02 | Feb 2026 | 3.58 | 0.8 |
| 2026-03 | Mar 2026 | 5.38 | 5.19 |
| 2026-04 | Apr 2026 | 3.96 | 10.07 |
| 2026-05 | May 2026 | 2.92 | 5.17 |
| 2026-06 | Jun 2026 | 4.99 | 1.17 |
The exact SQL behind every number
WITH
daily AS
(
SELECT
date,
toFloat64(any(close)) AS close_px
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
AND date >= '2025-06-20'
AND date < '2026-07-01'
GROUP BY date
),
seq AS
(
SELECT *, row_number() OVER (ORDER BY date) AS n
FROM daily
),
steps AS
(
SELECT
toStartOfMonth(b.date) AS m,
b.close_px / a.close_px - 1 AS ret
FROM seq AS a
INNER JOIN seq AS b ON b.n = a.n + 1
WHERE b.date >= '2025-07-01'
)
SELECT
formatDateTime(m, '%Y-%m') AS month,
formatDateTime(m, '%b %Y') AS month_label,
round(100 * sqrt(sum(pow(ret, 2))), 2) AS path_move_pct,
round(100 * abs(sum(ret)), 2) AS net_move_pct
FROM steps
GROUP BY m
ORDER BY mAcross the 12 months, Jun 2026 came to 4.99% of root sum square motion against a net move of 1.17%. The first month in the window, Jul 2025, printed 1.96% and 2.3%. Both columns come out of the same closing prices. The net move does not pin the root sum square, and the root sum square is what gamma accrues against. Option gamma measures the curvature. The path decides how much of it reaches the P&L.
A P&L attribution recipe that survives an audit
- Revalue sequentially. Start from yesterday's close and yesterday's inputs, move one input, revalue the position, record the difference, keep the new input, move the next. The order is arbitrary, which is why it goes in writing and stays fixed.
- Keep the residual as its own named line. Not spread across the Greeks, not rounded away. The residual is data.
- Attribute time first, then spot, then the volatility surface, then rates and dividends. Time is the only input that moves on its own, and putting it first keeps theta clean.
- Track the residual against the explained terms. A residual holding a small fraction of their sum is the discretization error anyone would expect. One growing faster than the terms is a model or data problem rather than a market one: a stale surface, a wrong dividend, a snapped mid that was never tradable, a sign error in a cross Greek.
The daily test that names the Greek you are missing
A delta hedged position's daily P&L tracks one half gamma times realized variance, minus theta. Hedge the delta, hold the position, and compare the two. A small, random gap means the attribution is close to complete. A gap that moves with implied volatility points at the vega and volga lines or at a stale surface. A gap that moves with spot while the book is hedged points at vanna, with delta drifting as volatility changes. A gap scaling with the size of the move rather than its square points at the gamma mark. The mechanics sit in delta hedging. An isolated residual is diagnostic.
How this panel is built
- Delta is per one dollar of spot and gamma per dollar squared. Volatility changes are quoted in volatility points, where one point is one percentage point of annualized volatility.
- The path panel reports the root of the summed squared daily moves, which sits on the same scale as the net move, rather than raw variance.
- The attribution and ordering walkthroughs use round hypothetical figures chosen for legible arithmetic. They are not drawn from any contract.
FAQ
Why don't the option Greeks add up to my P&L?
The Greeks are the leading terms of a Taylor expansion, and a truncated expansion leaves a remainder. Delta and gamma cover the spot move. Theta and vega cover elapsed time and the volatility move. Cross terms such as vanna and volga, third order spot terms, and the path taken inside the interval all land in the residual.
What is vanna in P&L attribution?
Vanna is the cross sensitivity between spot and implied volatility: the change in delta for a one point change in volatility, and equivalently the change in vega for a one dollar move in spot. In an additive attribution its size equals the difference between attributing the spot move first and attributing the volatility move first.
Can P&L be decomposed exactly by risk factor?
No exact additive decomposition exists for a nonlinear position. Sequential revaluation gives an exact total with an arbitrary split between factors, while a Taylor expansion gives an interpretable split with an inexact total. Desks pick one convention, publish the residual as a line, and monitor its size.
What does a growing unexplained P&L line indicate?
A residual that stays proportional to the explained terms is ordinary truncation and discretization error. One growing faster than the terms points at the inputs or the model: a stale volatility surface, a missed dividend or corporate action, a mismarked strike, or a cross Greek that never made it into the report.
Why does gamma P&L depend on the path?
Gamma P&L accrues against the square of each move between rehedges, and squares do not telescope. Two paths that start and end at the same price can accumulate very different sums of squared moves, so a position with the same opening and closing delta can finish the month with very different gamma P&L.
The panel here carries the SQL that produced it, so the month by month comparison is reproducible line by line. To run a full attribution over a position of your own, ask for it in plain English on the Strasmore terminal.