48 $basis = FinancialConstants::BASIS_DAYS_PER_YEAR_NASD
53 $basis = ($basis ===
null)
54 ? FinancialConstants::BASIS_DAYS_PER_YEAR_NASD
64 return $e->getMessage();
67 $daysPerYear = Helpers::daysPerYear(DateTimeExcel\
DateParts::year($settlement), $basis);
68 if (is_string($daysPerYear)) {
73 if ($basis === FinancialConstants::BASIS_DAYS_PER_YEAR_ACTUAL) {
74 return abs((
float) DateTimeExcel\
Days::between($prev, $settlement));
111 $basis = FinancialConstants::BASIS_DAYS_PER_YEAR_NASD
116 $basis = ($basis ===
null)
117 ? FinancialConstants::BASIS_DAYS_PER_YEAR_NASD
127 return $e->getMessage();
131 case FinancialConstants::BASIS_DAYS_PER_YEAR_365:
133 return 365 / $frequency;
134 case FinancialConstants::BASIS_DAYS_PER_YEAR_ACTUAL:
136 if ($frequency == FinancialConstants::FREQUENCY_ANNUAL) {
137 $daysPerYear = Helpers::daysPerYear(DateTimeExcel\
DateParts::year($settlement), $basis);
139 return $daysPerYear / $frequency;
144 return $next - $prev;
147 return 360 / $frequency;
182 $basis = FinancialConstants::BASIS_DAYS_PER_YEAR_NASD
187 $basis = ($basis ===
null)
188 ? FinancialConstants::BASIS_DAYS_PER_YEAR_NASD
198 return $e->getMessage();
201 $daysPerYear = Helpers::daysPerYear(DateTimeExcel\
DateParts::year($settlement), $basis);
204 if ($basis === FinancialConstants::BASIS_DAYS_PER_YEAR_NASD) {
205 $settlementDate = Date::excelToDateTimeObject($settlement);
206 $settlementEoM = Helpers::isLastDayOfMonth($settlementDate);
207 if ($settlementEoM) {
247 $basis = FinancialConstants::BASIS_DAYS_PER_YEAR_NASD
252 $basis = ($basis ===
null)
253 ? FinancialConstants::BASIS_DAYS_PER_YEAR_NASD
263 return $e->getMessage();
301 $basis = FinancialConstants::BASIS_DAYS_PER_YEAR_NASD
306 $basis = ($basis ===
null)
307 ? FinancialConstants::BASIS_DAYS_PER_YEAR_NASD
317 return $e->getMessage();
323 FinancialConstants::BASIS_DAYS_PER_YEAR_NASD
326 return (
int) ceil((
float) $yearsBetweenSettlementAndMaturity * $frequency);
361 $basis = FinancialConstants::BASIS_DAYS_PER_YEAR_NASD
366 $basis = ($basis ===
null)
367 ? FinancialConstants::BASIS_DAYS_PER_YEAR_NASD
377 return $e->getMessage();
386 $result->modify(
"$plusOrMinus $months months");
387 $daysInMonth = (int)
$result->format(
't');
388 $result->setDate((
int)
$result->format(
'Y'), (int)
$result->format(
'm'), $lastDayFlag ? $daysInMonth : min($day, $daysInMonth));
391 private static function couponFirstPeriodDate(
float $settlement,
float $maturity,
int $frequency,
bool $next): float
393 $months = 12 / $frequency;
395 $result = Date::excelToDateTimeObject($maturity);
396 $day = (int)
$result->format(
'd');
397 $lastDayFlag = Helpers::isLastDayOfMonth(
$result);
399 while ($settlement < Date::PHPToExcel(
$result)) {
402 if ($next ===
true) {
406 return (
float) Date::PHPToExcel(
$result);
411 if ($settlement >= $maturity) {
An exception for terminatinating execution or to throw for unit testing.
static year($dateValue)
YEAR.
static between($endDate, $startDate)
DAYS.
static fraction($startDate, $endDate, $method=0)
YEARFRAC.
static couponFirstPeriodDate(float $settlement, float $maturity, int $frequency, bool $next)
static COUPDAYS( $settlement, $maturity, $frequency, $basis=FinancialConstants::BASIS_DAYS_PER_YEAR_NASD)
COUPDAYS.
static COUPNUM( $settlement, $maturity, $frequency, $basis=FinancialConstants::BASIS_DAYS_PER_YEAR_NASD)
COUPNUM.
static COUPNCD( $settlement, $maturity, $frequency, $basis=FinancialConstants::BASIS_DAYS_PER_YEAR_NASD)
COUPNCD.
static monthsDiff(DateTime $result, int $months, string $plusOrMinus, int $day, bool $lastDayFlag)
static COUPDAYSNC( $settlement, $maturity, $frequency, $basis=FinancialConstants::BASIS_DAYS_PER_YEAR_NASD)
COUPDAYSNC.
const PERIOD_DATE_PREVIOUS
static COUPDAYBS( $settlement, $maturity, $frequency, $basis=FinancialConstants::BASIS_DAYS_PER_YEAR_NASD)
COUPDAYBS.
static COUPPCD( $settlement, $maturity, $frequency, $basis=FinancialConstants::BASIS_DAYS_PER_YEAR_NASD)
COUPPCD.
static validateCouponPeriod(float $settlement, float $maturity)
static validateBasis($basis)
static validateMaturityDate($maturity)
static validateSettlementDate($settlement)
static validateFrequency($frequency)
static flattenSingleValue($value='')
Convert an array to a single scalar value by extracting the first element.