Bonds#

The main Space in the BasicBonds model.

Parameters and References

(In all the sample code below, the global variable Bonds refers to the Bonds space.)

ql#

The QuantLib module.

date_init#

Valuation date as a string in the form of ‘YYYY-MM-DD’.

date_end#

Projection end date as a string in the form of ‘YYYY-MM-DD’.

zero_curve#

Zero curve at the valuation date as a pandas Series indexed with strings indicating various durations. This data is used by riskfree_curve() to create QuantLib’s ZeroCurve object:

>>> Bonds.zero_curve

Duration
1M     0.0004
2M     0.0015
3M     0.0026
6M     0.0057
1Y     0.0091
2Y     0.0136
3Y     0.0161
5Y     0.0182
7Y     0.0192
10Y    0.0194
20Y    0.0231
30Y    0.0225
Name: Rate, dtype: float64

The data is saved as an Excel file named “zero_curve.xlsx” in the model.

bond_data#

Bond data as a pandas DataFrame. By default, a sample table generated by the generate_bond_data.ipynb notebook included in the library:

>>> Bonds.bond_data

         settlement_days  face_value issue_date  ...  tenor coupon_rate z_spread
bond_id                                          ...
1                      0      235000 2017-12-12  ...     1Y        0.07   0.0304
2                      0      324000 2021-11-29  ...     1Y        0.08   0.0304
3                      0      799000 2017-02-03  ...     6M        0.03   0.0155
4                      0      679000 2017-11-19  ...     1Y        0.08   0.0229
5                      0      397000 2018-07-01  ...     6M        0.06   0.0142
                 ...         ...        ...  ...    ...         ...      ...
996                    0      560000 2019-02-16  ...     1Y        0.06   0.0261
997                    0      161000 2020-03-12  ...     6M        0.05   0.0199
998                    0      375000 2019-05-05  ...     1Y        0.03   0.0138
999                    0      498000 2019-02-21  ...     1Y        0.03   0.0230
1000                   0      438000 2019-03-14  ...     1Y        0.06   0.0256

[1000 rows x 8 columns]

The column names and their data types are as follows:

>>> Bonds.bond_data.dtypes

settlement_days             int64
face_value                  int64
issue_date         datetime64[ns]
bond_term                   int64
maturity_date      datetime64[ns]
tenor                      object
coupon_rate               float64
z_spread                  float64
dtype: object

The data is saved as an Excel file named “bond_data.xlsx” in the model.

Cells

cashflows(bond_id)

Returns the cashflows of the selected bond.

cashflows_total()

Returns the aggregated cashflows of the entire bond portfolio.

date_(i)

Date at each projection step

fixed_rate_bond(bond_id)

Returns QuantLib’s FixedRateBond object

market_values()

Returns the market values of the entire bonds

redemptions(bond_id)

Returns cashflows of redemptions

redemptions_total()

Returns all redemption cashflows

riskfree_curve()

Returns ZeroCurve object

schedule(bond_id)

Returns a Schedule object

step_size()

Returns the number of time steps

z_spread_recalc(bond_id)

Calculate Z-spread

cashflows(bond_id)[source]#

Returns the cashflows of the selected bond.

Returns the cashflows of the selected bond as a list. Each element of the list is the total cashflows falling in each projection period defined by date_().

cashflows_total()[source]#

Returns the aggregated cashflows of the entire bond portfolio.

Takes the sum of cashflows() across bond_id and returns as a list the aggregated cashflows of all the bonds in bond_data.

date_(i)[source]#

Date at each projection step

Defines projection time steps by returning QuantLib’s Date object that corresponds to the value of the integer index i. By default, date_(i) starts from the valuation date specified by date_init, and increments annually.

fixed_rate_bond(bond_id)[source]#

Returns QuantLib’s FixedRateBond object

Create QuantLib’s FixedRateBond object representing a bond specified by the given bond ID. The bond object is created from the attributes in bond_data and schedule().

A pricing engine for the bond object is created as a DiscountingBondEngine object from riskfree_curve() and the z_spread attribute in bond_data, and associated with the bond object through a ZeroSpreadedTermStructure object.

redemptions(bond_id)[source]#

Returns cashflows of redemptions

For the specified bond, returns a list of redemptions cashflows. Since the redemption cashflow occurs only once, all but one element are zero.

redemptions_total()[source]#

Returns all redemption cashflows

Returns a list of redemptions of all the bonds in bond_data.

riskfree_curve()[source]#

Returns ZeroCurve object

Creates QuantLib’s ZeroCurve object from zero_curve and returns it. The ZeroCurve object is used by fixed_rate_bond() to construct a discount curve for calculating the market value of the specified bond.

schedule(bond_id)[source]#

Returns a Schedule object

Create QuantLib’s Schedule object for the specified bond and returns it. The returned Schedule object is used to by fixed_rate_bond() to construct FixedRateBond object.

step_size()[source]#

Returns the number of time steps

Calculates the number of time steps from date_end and date_() ren returns it.

z_spread_recalc(bond_id)[source]#

Calculate Z-spread

For the bond specified by bond_id, Calculate the Z-spread of the bond specified by bond_id from the bond’s market value and riskfree_curve(). This is for testing that the calculated Z-spread matches the input in bond_data.

market_values()[source]#

Returns the market values of the entire bonds

Calculates and Returns a list of the market values of fixed_rate_bond() for all bonds input in bond_data.