Back to blog
methodology

How to chart roll yield

11 September 2026 6 min read

Quick answer

Chart roll yield as a time series by taking, on each date, the gap between the front and second futures contract as a percentage of the second contract, then annualizing it by the calendar days between the two expirations. Positive means backwardation and negative means contango, and that convention belongs on the axis because published sources disagree about the sign. The two things that break the chart are annualizing close to expiration, where a tiny gap becomes an enormous rate, and uneven spacing between delivery months, which puts steps in the line that are calendar artifacts rather than market moves.

Roll yield on any given day is the gap between the front futures contract and the next one, taken as a percentage of the next one, then scaled to a year by the calendar days between their expirations. Compute that on every date and you have a line.

The line is genuinely useful and it is also the easiest chart in the futures family to get wrong, because two of its inputs have nothing to do with the market: the sign convention you chose, and the spacing of the contract calendar.

The formula, and the sign you have to declare

Take the front contract price, subtract the second contract price, divide by the second contract price, and multiply by 365 divided by the number of calendar days between the two expirations. Calendar days, not business days, and the same convention every day of the series.

The convention used here is positive when the front sits above the second, which is backwardation and positive carry for a long position, and negative when the front sits below the second, which is contango. That is a choice rather than a law. Published sources flip the sign, quote the reciprocal, or measure from the spot price instead of the front contract, which gives a different number again. None of those is wrong. Leaving the reader to guess is. Put the convention on the axis in words. If the reader needs the shape itself explained, send them to the forward curve chart, which is where contango and backwardation are the subject rather than the input.

One roll, in numbers

The figures here are arithmetic on hypothetical prices rather than market quotations, so they are exact and reproducible rather than current.

A crude-style market in contango: the front contract at 68.00, the second at 68.90, thirty calendar days between the expirations. The gap is 0.90 against the second contract, which is 1.3062 percent, and the sign is negative because the front is below the second. Annualized, that is 15.89 percent negative.

The same market in backwardation, with the front at 72.40 and the second at 70.90, thirty days apart: 2.1157 percent per roll, and 25.74 percent positive annualized.

Neither of those is money anyone banked. They are both statements about the shape of the curve on one day, expressed at an annual rate so that curves with different expiration spacings can be compared. That last clause is where the trouble starts.

Annualizing is where the chart breaks

Take the same contango market a few days before the front contract expires, with the front at 68.00 and the second at 68.10. The gap is now ten cents instead of ninety. If the two expirations are three calendar days apart, the annualized figure is 17.87 percent negative, which is a larger number than the 15.89 percent produced by a gap nine times its size.

The denominator did that, not the market. So the last stretch of every contract's life produces a spike, and a series built naively from whatever the front two contracts are today shows a sawtooth of spikes that is an artifact of the calendar.

There are two fixes and they are not equivalent. You can stop using a contract once it is inside a fixed window of its expiration and roll the calculation to the next pair, which is what most published index methodologies do, and which puts a small step in the line at each roll. Or you can interpolate to a constant maturity and compute the gap between synthetic one-month and two-month points, which gives a smooth line at the cost of plotting a quantity no pair of contracts ever quoted. Both are defensible. Say which one you used.

Uneven contract spacing puts steps in the line

The annualization factor is 365 divided by the days between expirations, so the spacing of the delivery months is baked into every point. The same 0.90 gap measured across contracts 61 days apart annualizes to 7.82 percent negative rather than 15.89 percent. Nothing changed in the market. The line halved because two delivery months happened to be two months apart instead of one.

Energy contracts trade every month, so this stays quiet in crude and natural gas. Metals and agricultural contracts do not, and their series will step at the same points every year. If your chart jumps on a schedule, check the expiration calendar before you write a paragraph about seasonality, in the same spirit as reading a returns heatmap against the calendar rather than against a story.

Roll yield measures the curve, it is not a return you earned

The total return on a long futures position is the move in the price, plus the roll, plus whatever the collateral earns. Roll yield is an estimate of the middle term, and specifically of what that term would contribute if the curve stayed exactly where it is.

The curve does not stay where it is. Between the day you measure and the day you trade, both legs reprice, and the execution is a spread trade with its own bid and offer. A commodity fund's reported roll cost and the roll yield line on your chart will not match, and neither figure is dishonest. They measure different things. Label the axis as a curve measurement and that ambiguity disappears.

The same gap your continuous chart is erasing

This chart and the continuous futures chart are two views of one quantity. Back-adjustment exists to remove the price gap left at each roll so that a long history can be plotted as one line; the roll yield chart plots the thing that was removed. Publishing them side by side answers a question that neither answers alone, which is how an index can track a commodity whose spot price went nowhere and still lose money.

The third member of that set is positioning from the CFTC report, which is who is on each side of the curve you are charting. Curve shape, adjusted price history and positioning make a futures pack that a reader can actually reason from.

Building it in Quadesto

Give Quadesto a table of contract prices with their expiration dates and the roll yield series is computed rather than maintained: the pairing follows the expiration calendar, the annualization uses the actual days between the two contracts in each pair, and the roll window is a setting rather than a spreadsheet convention that lives in one person's head.

[QUADESTO-EMBED: annualized front-to-second roll yield time series with a zero reference line, contango shaded below and backwardation above, a toggle between the raw front-pair calculation and a constant-maturity interpolation, and expiration dates marked on the x-axis]

The toggle is the part worth having live. A reader who can switch between the raw pairing and the constant-maturity version can see for themselves which of the steps in the line are the market and which are the calendar. Start on the free tier and put the chart next to your curve.

Ready to try Quadesto?

Connect your data. AI builds the charts. Embed anywhere.

Get Started Free
roll yieldfuturescontangobackwardationterm structure