Skip to content
FinObservatory
Model methodsYield curvesactive

Treasury yield-curve factors

Treasury CMT par-curve level, short-minus-long slope, and curvature factors from a fixed-decay Diebold-Li fit.

Registry slug:
yield-curve-factors
Visible surface:
/rates/factors

Data and implementation

Vintage

9,151 observations from 1990-01-02 through 2026-07-31, measured 2026-08-30

Data tables

  • data/parquet/ust_curve_factors.parquet

Engine

  • engine/finweave_engine/curves/nelson_siegel.py
  • engine/finweave_engine/curves/diebold_li.py

Producer

scripts/build/build_curve_factors.py

Outputs

  • data/parquet/ust_curve_factors.parquet

Source: U.S. Department of the Treasury, Daily Treasury Par Yield Curve Rates

Method

The producer fits the three-factor Nelson-Siegel functional form directly to the U.S. Treasury CMT par-yield tenors available on each trading date. The coefficients therefore describe the fitted par curve, not a bootstrapped zero-coupon curve.

The published factor time series uses one fixed decay constant for every date, following the Diebold-Li identification strategy. In the engine's time-constant convention it is derived so the curvature loading peaks at 2.5 years.

A free-decay fit is stored beside the fixed-decay fit as a per-date fit-quality diagnostic. Its decay parameter and coefficients can move across weakly identified basins, so it is not the published time-series reading.

Methodology evidence

Path and linesEvidence
engine/finweave_engine/curves/nelson_siegel.py:13-55Defines the factor loadings and records the required par-yield interpretation caveat.
engine/finweave_engine/curves/diebold_li.py:17-45Explains why the published time series fixes the decay constant and how the 30-month curvature target is mapped into years.
scripts/build/build_curve_factors.py:348-364States the producer's row, sign, loading, fit-quality, and correlation validation checks.
src/app/rates/factors/page.tsx:546-619Presents the loading convention, fixed-decay construction, fitting procedure, units, and coverage on the visible model page.

Equations

Nelson-Siegel yield formy(tau) = beta0 + beta1 * ((1 - exp(-x)) / x) + beta2 * ((1 - exp(-x)) / x - exp(-x)), x = tau / lambda
Decay convention maplambda_years = 1 / (12 * lambda_DL)

Validation

  • The output contains 9,151 rows from 1990-01-02 through 2026-07-31, remeasured from the parquet on 2026-08-30.
  • The producer checks output coverage against the source curve dates, re-derives the short-minus-long sign convention, checks the fixed loading peak, and requires the fixed-factor correlations with observed par-yield benchmarks to clear documented thresholds.
  • The visible page rebuilds fitted curves from stored coefficients and compares their residual root mean squared errors with the stored diagnostics.

Limitations

  • Treasury CMT observations are par yields. These are par-curve level, slope, and curvature factors, not spot, zero-coupon, discount-curve, or forward-rate factors.
  • The fixed-decay fit gives comparable factors through time at the cost of a somewhat worse per-date fit than the free-decay diagnostic.
  • The functional form is a descriptive fit to Treasury's published tenors. No par-to-spot bootstrap is performed.

References

Metadata endpoint

PathMethodReturnsExample
/api/methods/[slug]GETRegistry metadata, implementation paths, measured vintage, methodology evidence, validation, and limitations. No model observations or parquet contents./api/methods/yield-curve-factors
Last verified 2026-08-30