couponDaysToSet (int sett,
int mat,
Finance::Banking::YearlyFreq freq,
Finance::Banking::YearBasis basis=yb_USA)
Return the number of days from the start of the coupon period to the settlement date.
Excel: COUPDAYBS
Function Documentation
intcouponDaysToSet(
int
sett
int
mat
Finance::Banking::YearlyFreq
freq
Finance::Banking::YearBasis
basis = yb_USA
)
This function computes the number of days from the beginning of the
current coupon period to the settlement. The year basis is taken
into account. This function is equivalent to the Microsoft Excel
function COUPDAYBS.
For a security, the settlement date is the date after issue when
the security is traded to the buyer. The maturity date is the date
at which the security expires.
Example:
#include <stdio.h>#include <codecogs/units/date/date.h>#include <codecogs/units/date/dateymd.h>#include <codecogs/finance/banking/coupondaystoset.h>int main(void){int settDate=Units::Date::date(1998, 1, 25);
int maturityDate=Units::Date::date(1999, 11, 15);
int days=Finance::Banking::couponDaysToSet(settDate,
maturityDate,
Finance::Banking::yf_SemiAnnual,
Finance::Banking::yb_Act);
int y, m, d;
Units::Date::dateYMD(settDate, y, m, d);
printf("settlement=%i/%i/%i\n", y, m, d);
Units::Date::dateYMD(maturityDate, y, m, d);
printf("maturity=%i/%i/%i\n", y, m, d);
printf("days to settlement=%i\n", days);
return0;
}
Output:
settlement=1998/1/25
maturity=1999/11/15
days to settlement=71
Parameters:
sett
The settlement date, expressed as a serial Julian date.
mat
The maturity date of the settlement, expressed as a serial Julian date.
freq
The frequency with which payments are made:
The yearly frequency to be used in financial calculations
Type
Description
yf_Annual
Payments are made annually.
yf_SemiAnnual
Payments are semi-annual (2 per year).
yf_Quarterly
Payments are quarterly (4 per year).
basis
The year basis to use for the calculation:
Type
Value
Description
yb_US
0
US (NASD) 30/360 - As with the European 30/360 (yb_EU, with the additional provision that if the end date occurs on the 31st of a month it is moved to the 1st of the next month if the start date is earlier than the 30th.
yb_Act
1
Uses the exact number of elapsed days between the two dates, as well as the exact length of the year.
yb_Act360
2
Uses the exact number of elapsed days between two dates but assumes the year only have 360 days
yb_Act365
3
Uses the exact number of elapsed days between two dates but assumes the year always has 365 days
yb_EU
4
European 30/360 - Each month is assumed to have 30 days, such that the year has only 360 days. Start and end dates that occur on the 31st of a month become equal to the 30th of the same month.