Curve Interpolation Comparison

Version 1.0 · Excel workbook · one zero curve, six interpolation methods

Six interpolation methods applied to the same twelve quoted nodes, side by side, so you can see what your choice of method is actually deciding. Every method is built in open worksheet formulas: the linear forms directly, the natural cubic spline through its own tridiagonal system solved on the sheet, the monotone cubic through its Fritsch-Carlson slope limiter. Five tabs, 1,854 live formulas, no macros, no protected sheets, nothing computed somewhere else and pasted in as a value.

The one number it is built around

Not the zero rate. The forward.

All six methods reproduce all twelve quotes exactly, to zero error, so a node-level reconciliation between two systems using different methods comes back clean. Ask them for the 3.5 year zero rate and they span 3.08 basis points, which is $92,646 of present value on a hundred million and reads as a rounding difference. That is the number people check, and it is why nobody catches this.

Ask them for the three month forward rate starting at one year and they span 49.67 basis points.

Same quotes, same date, same curve, six answers. The range column on the Forwards tab is the whole argument, and it is live: change a node, change the forward period, or point the workbook at your own curve, and watch which methods move and by how much.

What is in it

Twelve quoted nodes you can replace. The default is a SOFR-style zero curve with an inverted front end, a trough around three years and a normal slope after that. It is illustrative and labelled as such on its own face. Overwrite the twelve blue cells with your own quotes and every figure in the workbook follows.

Six methods, each visible. Linear on zero rates, linear on log discount factors, natural cubic spline on zero rates, natural cubic spline on log discount factors, monotone cubic on zero rates, and linear on discount factors. Two of those pairs differ only in which quantity is interpolated, which is the comparison most worth making and the one no library asks you to think about.

The spline solved in front of you. The Solve tab lays out the tridiagonal system one row per node, with columns for the coefficients, the Thomas forward sweep, and the back substitution that produces the second derivatives. Nothing is inverted in a black box. You can read down the column and see the natural boundary condition being imposed.

The monotone limiter, likewise. The Fritsch-Carlson slopes sit below it with the sign test in plain view. Where the secants change direction the node slope is set to zero, which is the entire mechanism that stops a spline overshooting, and on the default curve you can watch it fire at the two year trough and the twenty year peak.

An extrapolation policy switch. Flat holds the interpolated quantity constant past the last node. Extend keeps evaluating the fitted function. On the default curve the fifty year zero rate spans 161 basis points under Flat and 359 under Extend, and under Extend the linear-on-discount-factors method crosses into a negative discount factor at 51.9 years. This is the setting many libraries expose as an undocumented boolean.

A forward scan and a chart. Forty quarterly forward starts under all six methods, with the spread in basis points beside them.

What it does not do

It is not a curve builder. It takes zero rates as given and does not bootstrap them from par swap quotes. If you need the bootstrap, that is what the Fixed vs Float Swap Model does, from thirty-two market quotes to a sixty-five node curve.

One currency, one curve, one compounding convention. Zero rates are annually compounded on act/365 throughout. There is no day count switching, no multi-curve setup, no cross-currency basis and no CSA discounting.

Six methods, not all of them. There is no Nelson-Siegel, no Svensson, no Smith-Wilson and no monotone convex. Those are parametric or shape-preserving families worth knowing about, and they would each need their own workbook to show honestly.

Mid throughout. No bid, no offer, no transaction costs anywhere.

Verification

Every method was checked against an independent implementation written in Python with numpy only, no scipy, with the spline and the slope limiter solved from first principles rather than called from a library. The two implementations share no code. They agree to four decimal places on all six methods at every tenor tested, and on the forward rates that carry the argument.

Three structural checks are visible in the file rather than asserted here. All six methods reproduce all twelve quoted nodes to zero error. The natural spline's second derivatives come out exactly zero at both endpoints, which is what "natural" means and is the difference between a solve that finished and a solve that is right. The monotone slopes come out exactly zero at the two turning points on the default curve. All 1,854 formulas recalculate without error.

One thing worth naming, because building the workbook changed the article that goes with it. The first draft of the article reported a 241 basis point spread at fifty years, taken from the default behaviour of the routines I had written: the linear methods clamped, the fitted ones kept extending. That is what really happens in a library, but it is a mixture of two policies rather than a measurement of one. Putting an explicit switch in the workbook showed the honest numbers are 161 basis points under a uniform Flat policy and 359 under Extend, and showed something better besides: that "flat" is itself ambiguous, because flat in zero-rate space and flat in discount-factor space differ by 161 basis points while both obey the instruction. The article now reports both, and it reports them because the tool was built.

The version number is on the Read Me tab. Check it against the version at the top of this page to see whether your copy is current. The form asks for an email so I know who is using the workbook. There is no mailing list.

Goes with Interpolation Is a Policy Choice Nobody Wrote Down.

Next
Next

Fixed vs Float Swap Model