Skip to main content

Installation

pip install bond_pricing

For installation without pulling in scipy as a dependency, see below

The source code is at https://github.com/jrvarma/bond_pricing if you want to go that route.

Overview

This package provides bond pricing functions as well as basic NPV/IRR functions. Bond valuation can be done using an yield to maturity or using a zero yield curve. There is a convenience function to construct a zero yield curve from a few points on the par bond or zero yield curve or from Nelson Siegel parameters.

The documentation is available at https://bond-pricing.readthedocs.io/

The bond valuation functions can be used in two modes:

  • The first mode is similar to spreadsheet bond pricing functions. The settlement date and maturity date are given as dates and the software calculates the time to maturity and to each coupon payment date from these dates. For any daycount other than simple counting of days (ACT/365 in ISDA terminology), this packages relies on the isda_daycounters module that can be downloaded from https://github.com/miradulo/isda_daycounters

  • Maturity can be given in years (the settle parameter is set to None and is assumed to be time 0) and there are no dates at all. This mode is particularly convenient to price par bonds or price other bonds on issue date or coupon dates. For example, finding the price of a 7 year 3.5% coupon bond if the prevailing yield is 3.65% is easier in this mode as the maturity is simply given as 7.0 instead of providing a maturity date and specifying today's date. Using this mode between coupon dates is not so easy as the user has to basically compute the day count and year fraction and provide the maturity as say 6.7 years.

  • Bond Valuation

    • Bond price using YTM (bond_price) or using zero yield curve (zero_curve_bond_price)
    • Accrued interest and dirty bond prices using YTM (bond_price_breakup) or using zero yield curve (zero_curve_bond_price_breakup)
    • Duration using YTM (bond_duration)
    • Yield to maturity (bond_yield).
  • Zero curve construction

    • bootstrap zero yields from par yields (par_yld_to_zero) or vice versa (zero_to_par)
    • compute zero rates from Nelson Siegel parameters (nelson_siegel_zero_rate)
    • construct zero prices from par or zero yields at selected knot points using a cubic spline or assuming a flat yield curve (make_zero_price_fun)
  • Present Value functions

    • Net Present Value (npv)
    • Internal Rate of Return (irr)
    • Duration (duration). These functions allow different compounding frequencies: for example, the cash flows may be monthly while the interest rate is semi-annually compounded. The function equiv_rate converts between different compounding frequencies.
  • Annuity functions

    • Annuity present value (annuity_pv)
    • Future value (annuity_fv)
    • Implied interest rate (annuity_rate)
    • Number of periods to achieve given present value or terminal value (annuity_periods).
    • Periodic instalment to achieve given present value or terminal value (annuity_instalment).
    • Breakup of instalment into principal and interest (annuity_instalment_breakup)

    In these functions also, the cash flow frequency may be different from the compounding frequency.

Reducing Dependencies

This module requires numpy, pandas and scipy. In some environments, installing scipy may be difficult, and only a couple of functions (the newton root finder and CubicSpline interpolation) are actually needed from the huge scipy package. So a provision has been made to avoid scipy with some loss of functionality (the newton root finder is replaced by a less sophisticated root bracketing and bisection algorithm and CubicSpline interpolation is replaced by the much cruder linear interpolation). At run time, the module checks for the availability of scipy and uses the cruder methods (with a suitable warning) if scipy is not available.

To install this package without pulling in scipy as a dependency, do the following:

git clone https://github.com/jrvarma/bond_pricing.git
export no_scipy=1
pip install bond_pricing

Metadata

Release files for bond-pricing 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bond-pricing 1.0.0
File Size Uploaded
bond_pricing-1.0.0.tar.gz 33.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for bond-pricing 1.0.0
File Interpreter ABI Platform
bond_pricing-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 67.4 kB

Release files / bond_pricing-1.0.0.tar.gz

Download URL bond_pricing-1.0.0.tar.gz
Size 33.2 kB
Tags Source
SHA-256 checksum
How to use checksums
3eb195974f619540f005db682c9d7aa46cb4cfb2c8b4e9af0137647a488c4ed8
BLAKE2b-256 checksum
How to use checksums
3ca6aa214dfe76da463f751eeb07e64a9d503d6b8aedfaf342a62fac1f37f081
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.7

Release files / bond_pricing-1.0.0-py3-none-any.whl

Download URL bond_pricing-1.0.0-py3-none-any.whl
Size 34.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a8a5ae52ab1f792cd7e666ff01d64f02b18faa3df3f217034a938eb8d72d69a9
BLAKE2b-256 checksum
How to use checksums
4d491532765de78600cd49a5ee3eaa27f3b917c25c024d7eeabd87247429c33f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.7

Release history Release notifications | RSS feed

1.0.1

2 release files

This release

1.0.0 This release

2 release files

0.7.3

2 release files

0.7.1

2 release files

0.6.4

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page