FinancePy icon indicating copy to clipboard operation
FinancePy copied to clipboard

Bond Portfolio Object for Strategy Analysis

Open domokane opened this issue 4 years ago • 8 comments

Create object that contains a portfolio of bonds Calculate duration, convexity and price Pricing from discount curve object

domokane avatar Oct 01 '20 19:10 domokane

Hi @domokane is this issue still open? I am currently reading Schreve's book and am interested to actively contribute to FinancePy and strengthen my technical skills.

quantinsights avatar Dec 23 '21 17:12 quantinsights

Yes. You're welcome to to do it. Let me know how it goes. Best D

domokane avatar Dec 24 '21 00:12 domokane

Hi @domokane Is the product.bonds.bond_portfolio.py for this issue? It's not implemented yet. So the goal of this issue is to implement the bond_portfolio.py?

DominicHong avatar Sep 27 '22 08:09 DominicHong

Exactly. If you wish to have a go, be my guest. Ultimate idea would be to have a portfolio object that you can use to analyse multi-bonds for hedging and scenario analysis and curve fitting.

domokane avatar Sep 27 '22 09:09 domokane

I am thinking about a method of computing the profit of a Bond given the inital ytm and final ytm. It should look like this:

def get_profit(self, initial_date, end_date, begin_ytm, end_ytm):

It adds all the cashflow during the period and calculate the simple return and compounded return. Where should I put this method?

DominicHong avatar Oct 05 '22 12:10 DominicHong

I also would like to work on this. But before that someone with more strategic view should implement base bond class and other bonds should inherit from that base. Base bond class should have at least the following attributes "Currency" "Issue Date" "Interest Accrues" - sometimes it can be later or before than issue date "Maturity Date" "Floater Formula" "Security identifier" -- at least ISIN

Then the Portfolio class should have a base currency. If I implement, for example,
if not bondWeights: #calculate the sum of bond dirty prices #calculate weight of each bond #return ndarray bondWights

if in the future there will be multicurrency portfolio, the code will need to change again.

@domokane please let me know if should ignore these challenges and work on portfolio class right away.

sagayev avatar Feb 04 '23 06:02 sagayev

Hi @sagayev, product.bonds.Bond is the base class you want, except for the Security Identifier attribute. However, all types of bonds are implemented individually, not by inheritance. Domokane prefered this way for simplicity. What's Floater Formula by the way?

DominicHong avatar Feb 10 '23 06:02 DominicHong

Hi - I am not against refactoring the code to have a bond base class. I prefered to keep it separate for the specific case of a zero coupon bond. But if the benefits outweigh the cost then I am happy to reconsider.

domokane avatar Feb 10 '23 08:02 domokane