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 lines | Evidence |
|---|---|
| engine/finweave_engine/curves/nelson_siegel.py:13-55 | Defines the factor loadings and records the required par-yield interpretation caveat. |
| engine/finweave_engine/curves/diebold_li.py:17-45 | Explains 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-364 | States the producer's row, sign, loading, fit-quality, and correlation validation checks. |
| src/app/rates/factors/page.tsx:546-619 | Presents the loading convention, fixed-decay construction, fitting procedure, units, and coverage on the visible model page. |
Equations
y(tau) = beta0 + beta1 * ((1 - exp(-x)) / x) + beta2 * ((1 - exp(-x)) / x - exp(-x)), x = tau / lambdalambda_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
| Path | Method | Returns | Example |
|---|---|---|---|
| /api/methods/[slug] | GET | Registry metadata, implementation paths, measured vintage, methodology evidence, validation, and limitations. No model observations or parquet contents. | /api/methods/yield-curve-factors |