| Crates.io | convex-spreads |
| lib.rs | convex-spreads |
| version | 0.10.1 |
| created_at | 2025-12-07 13:06:21.730842+00 |
| updated_at | 2025-12-07 17:28:24.157183+00 |
| description | Spread analytics for the Convex fixed income analytics library |
| homepage | |
| repository | https://github.com/sujitn/convex |
| max_upload_size | |
| id | 1971568 |
| size | 231,179 |
Spread analytics for the Convex fixed income analytics library.
convex-spreads provides comprehensive spread calculation capabilities:
Add this to your Cargo.toml:
[dependencies]
convex-spreads = "0.1"
use convex_spreads::GSpread;
use convex_bonds::FixedRateBond;
use convex_curves::DiscountCurve;
let g_spread = GSpread::calculate(
&bond,
dec!(105.5), // Clean price
settlement,
&treasury_curve,
)?;
println!("G-Spread: {:.1} bps", g_spread.as_bps());
use convex_spreads::ZSpread;
let z_spread = ZSpread::calculate(
&bond,
dec!(105.5),
settlement,
&spot_curve,
)?;
println!("Z-Spread: {:.1} bps", z_spread.as_bps());
use convex_spreads::asw::{AssetSwapSpread, AswMethod};
// Par-par asset swap
let asw_par = AssetSwapSpread::calculate(
&bond,
dec!(105.5),
settlement,
&discount_curve,
AswMethod::ParPar,
)?;
// Proceeds asset swap
let asw_proceeds = AssetSwapSpread::calculate(
&bond,
dec!(105.5),
settlement,
&discount_curve,
AswMethod::Proceeds,
)?;
use convex_spreads::DiscountMargin;
use convex_bonds::floating::FloatingRateNote;
let dm = DiscountMargin::calculate(
&frn,
dec!(99.75),
settlement,
&forward_curve,
&discount_curve,
)?;
println!("Discount Margin: {:.1} bps", dm.as_bps());
use convex_spreads::OAS;
use convex_bonds::corporate::CallableBond;
let oas = OAS::calculate(
&callable_bond,
dec!(102.5),
settlement,
&curve,
&vol_surface,
tree_steps: 100,
)?;
println!("OAS: {:.1} bps", oas.as_bps());
parallel - Enable parallel spread calculations with RayonThis project is licensed under the MIT License - see the LICENSE file for details.