Jump to content

Connect Leeroopedia MCP: Equip your AI agents to search best practices, build plans, verify code, diagnose failures, and look up hyperparameter defaults.

Implementation:Avhz RustQuant Curve get rate

From Leeroopedia


Knowledge Sources
Domains Numerical_Methods, Interpolation, Fixed_Income
Last Updated 2026-02-07 20:00 GMT

Overview

Concrete tool for querying and interpolating rates from yield curves provided by the RustQuant data crate.

Description

The Curve struct provides several rate query methods. get_rate(date) returns the rate for a date if it exists in the curve nodes, otherwise falls back to the interpolator. get_rate_and_insert(date) additionally caches the interpolated result. Batch methods get_rates() and get_rates_and_insert() handle multiple dates.

The interpolation backend is selected at curve construction time and stored as an Arc<dyn Interpolator<Date, f64>>.

Usage

Call these methods on a constructed Curve object to retrieve rates for any date within the curve's range. The interpolation happens transparently.

Code Reference

Source Location

  • Repository: RustQuant
  • File: crates/RustQuant_data/src/curves.rs
  • Lines: L174-200

Signature

impl Curve {
    pub fn get_rate(&self, date: Date) -> Option<f64>
    pub fn get_rate_and_insert(&mut self, date: Date) -> Option<f64>
    pub fn get_rates(&self, dates: Vec<Date>) -> Vec<Option<f64>>
    pub fn get_rates_and_insert(&mut self, dates: Vec<Date>) -> Vec<Option<f64>>
    pub fn interpolation_method(&self) -> InterpolationMethod
}

Import

use RustQuant::data::Curve;
use time::Date;

I/O Contract

Inputs

Name Type Required Description
self &Curve or &mut Curve Yes The curve to query
date Date Yes The date to retrieve the rate for
dates Vec<Date> Yes (batch) Multiple dates for batch retrieval

Outputs

Name Type Description
get_rate Option<f64> Rate for the date, or None if out of interpolation range
get_rates Vec<Option<f64>> Rates for multiple dates

Usage Examples

Single Rate Query

use RustQuant::data::{Curve, CurveType, InterpolationMethod};
use time::macros::date;

let dates = vec![
    date!(2024 - 01 - 01),
    date!(2025 - 01 - 01),
    date!(2026 - 01 - 01),
];
let rates = vec![0.04, 0.045, 0.05];

let curve = Curve::new(dates, rates, CurveType::Spot, InterpolationMethod::Linear).unwrap();

// Exact match
let rate = curve.get_rate(date!(2025 - 01 - 01));
assert_eq!(rate, Some(0.045));

// Interpolated rate
let rate = curve.get_rate(date!(2024 - 07 - 01));
println!("Interpolated 6M rate: {:?}", rate);

Batch Query with Caching

let mut curve = Curve::new(
    vec![date!(2024 - 01 - 01), date!(2026 - 01 - 01)],
    vec![0.04, 0.05],
    CurveType::Spot,
    InterpolationMethod::Linear,
).unwrap();

let query_dates = vec![
    date!(2024 - 06 - 01),
    date!(2025 - 01 - 01),
    date!(2025 - 06 - 01),
];

// Get rates and add them to the curve nodes
let rates = curve.get_rates_and_insert(query_dates);
println!("Rates: {:?}", rates);

Related Pages

Implements Principle

Requires Environment

Uses Heuristic

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment