rateslib
Python PyPi Conda Licence Status Coverage Code Style

Rateslib is a state-of-the-art fixed income library designed for Python. Its purpose is to provide advanced, flexible and efficient fixed income analysis with a high level, well documented API. Rateslib is not freely licensed, it is copyrightable software provided as below.

Academic or Home Educational Use Commercial Use by Anyone in: Banks, Funds, Accountants, Treasuries
FREE to use and modify.
Not Licenced - Cannot be installed on a corporate machine without permission.
Can purchase a licence extension. $300 per year / per user.
contact: infoLively magic@rateslib.com

Highlights#

Other interface bindings#

Extension websites provide the documentation for using rateslib in other ways than directly with Python.

Excel bindings for rateslib
Rateslib-excel provides Excel bindings to use all of rateslib's functionality in Excel.
Rust codebase for rateslib
Rateslib-rs is the backend codebase for parts of rateslib written in Rust using PyO3.

Curve construction is simple but has huge flexibility#

Multiple interpolation modes are offered by default and the generalised process for curve solving means very specific pricing artefacts can be accurately modelled with the correct formulations. The framework is accessible and requires minimal configuration.

usd_curve = Curve(
    nodes={...},
    convention="act360",
    calendar="nyc",
    interpolation="log_linear",
    id="sofr",
)
solver = Solver(
    curves=[usd_curve],
    instruments=[...],
    weights=[...],
    s=[...],
)

API is designed for users with full documentation#

Although any fixed income library uses complex mathematical processes, the API has been carefully designed to provide a workflow that is very intuitive. In the case of using it for small scale learning items often few parameters and arguments are required. For larger series of curves and more complicated object oriented associations the API signature does not materially change. Best practice is demonstrated in documentation examples.

xcs = XCS(
    effective=dt(2022, 2, 14), termination="15M",
    notional=100e6, float_spread=-10.25,
    spec="eurusd_xcs", curves=[...],
)  # Create a EUR/USD Cross-Ccy Swap

xcs.rate(solver=solver)
<Dual: -14.294203, [...], [...]>

xcs.npv(solver=solver, base="eur")
<Dual: -50,073.295467, [...], [...]>

Wide range of fixed income Instruments available#

The most recent version of rateslib contains the main Instruments that dominate linear fixed income products. The large array of input parameters for these gives scope to fully capture the nuances of these products across sectors and geographic regions, capturing aspects like trading calendars, day count conventions, payment delays, etc. New specifications and calendars are continually being added as users enquire.

A good example is a US Treasury Bond, replicated here with rateslib and the equivalent ticket in Bloomberg for reference point.

In [1]: ust = FixedRateBond(
   ...:     effective=dt(2023, 8, 15), termination=dt(2033, 8, 15),
   ...:     fixed_rate=3.875, spec="ust"
   ...: )  # Create a US-Treasury bond
   ...: 

In [2]: ust.price(ytm=4.0, settlement=dt(2025, 2, 14))
Out[2]: 99.10641380057267

In [3]: ust.duration(ytm=4.0, settlement=dt(2025, 2, 14), metric="risk")
Out[3]: np.float64(7.11053190579773)
US Treasury example using the FixedRateBond class

Minimal dependencies to other Python libraries#

The dependencies are to NumPy, Pandas, and Matplotlib. Rateslib does not have any dependencies to any automatic differentiation libraries, such as PyAudi or JAX, preferring initially to use its own forward mode module.

The test coverage is very high.

Licence#

This library is released under a Creative Commons Attribution, Non-Commercial, No-Derivatives 4.0 International Licence. See here for more details.

Get Started#

Move on to the next page to Get Started