Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optional redemption argument for amortizing bond constructors #1790

Merged
merged 2 commits into from
Sep 20, 2023
Merged

Optional redemption argument for amortizing bond constructors #1790

merged 2 commits into from
Sep 20, 2023

Conversation

gyansinha
Copy link
Contributor

The amortizing bond constructors have been extended by adding a redemptions vector argument that is passed as an argument to the addRedemptionsToCashflows function. This is a vector with values between 0 and 100 that represents the proportion of principal payments which would be calculated by taking the difference between notionals for each payment period. This allows these functions to be used for pools of loans where a certain proportion of the underlying
loans are subject to defaults and losses.

@coveralls
Copy link

Coverage Status

coverage: 71.911% (-0.001%) from 71.912% when pulling f8da734 on gyansinha:feat-add-redemptions into cd33939 on lballabio:master.

Copy link
Owner

@lballabio lballabio left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, and sorry for the previous difficulties with the CLA—unfortunately we need to be careful with licensing.

I've left a couple of comments.

ql/instruments/bonds/amortizingfloatingratebond.hpp Outdated Show resolved Hide resolved
bool exCouponEndOfMonth = false);
bool exCouponEndOfMonth = false,
const std::vector<Real>& redemptions = { 100.0 },
Natural PaymentLag = 0);
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are already a bunch of default parameters before these ones, so it doesn't matter much, but I think paymentLag is more likely to be passed than redemptions, isn't it? If so, I'd change the order.

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, in what case is the payment lag needed? I've seen it mentioned in swaps but not in bonds so far.

Copy link
Contributor Author

@gyansinha gyansinha Sep 19, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The paymentLag in this situation is probably more appropriately referred to as Delay Days - in US MBS for example, borrowers payments for the accrual period in the prior calendar month are passed through to investors on the 25th of the month. It is this delay that paymentLag is supposed to capture. TBH I don't quite understand the role of the already existing argument in the amortizingFloatingBond constructor?

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixing days? Those would affect the index fixing; for instance, a coupon starting on Wednesday 20 would use as rate the Euribor fixing of Monday 18, 2 days before.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think there is a paymentLag arg in the amortizingFloatingRateBond constructor - that is what I was referring to.

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It was added by this pull request.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, OK - I got my signals crossed with the aborted attempts. So in both cases they act as delay days between the end of the accrual period and when the cashflow is actually received.

@lballabio lballabio added this to the Release 1.32 milestone Sep 20, 2023
@lballabio lballabio merged commit 7e0e5df into lballabio:master Sep 20, 2023
@boring-cyborg
Copy link

boring-cyborg bot commented Sep 20, 2023

Congratulations on your first merged pull request!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants