Differences Between: [Versions 310 and 403] [Versions 311 and 403] [Versions 39 and 403] [Versions 400 and 403] [Versions 401 and 403]
1 <?php 2 3 namespace PhpOffice\PhpSpreadsheet\Calculation; 4 5 use PhpOffice\PhpSpreadsheet\Calculation\Financial\Amortization; 6 use PhpOffice\PhpSpreadsheet\Calculation\Financial\Coupons; 7 use PhpOffice\PhpSpreadsheet\Calculation\Financial\Depreciation; 8 use PhpOffice\PhpSpreadsheet\Calculation\Financial\Dollar; 9 use PhpOffice\PhpSpreadsheet\Calculation\Financial\InterestRate; 10 use PhpOffice\PhpSpreadsheet\Calculation\Financial\Securities; 11 use PhpOffice\PhpSpreadsheet\Calculation\Financial\TreasuryBill; 12 13 /** 14 * @deprecated 1.18.0 15 */ 16 class Financial 17 { 18 const FINANCIAL_MAX_ITERATIONS = 128; 19 20 const FINANCIAL_PRECISION = 1.0e-08; 21 22 /** 23 * ACCRINT. 24 * 25 * Returns the accrued interest for a security that pays periodic interest. 26 * 27 * Excel Function: 28 * ACCRINT(issue,firstinterest,settlement,rate,par,frequency[,basis][,calc_method]) 29 * 30 * @deprecated 1.18.0 31 * Use the periodic() method in the Financial\Securities\AccruedInterest class instead 32 * @see Securities\AccruedInterest::periodic() 33 * 34 * @param mixed $issue the security's issue date 35 * @param mixed $firstInterest the security's first interest date 36 * @param mixed $settlement The security's settlement date. 37 * The security settlement date is the date after the issue date 38 * when the security is traded to the buyer. 39 * @param mixed $rate the security's annual coupon rate 40 * @param mixed $parValue The security's par value. 41 * If you omit par, ACCRINT uses $1,000. 42 * @param mixed $frequency The number of coupon payments per year. 43 * Valid frequency values are: 44 * 1 Annual 45 * 2 Semi-Annual 46 * 4 Quarterly 47 * @param mixed $basis The type of day count to use. 48 * 0 or omitted US (NASD) 30/360 49 * 1 Actual/actual 50 * 2 Actual/360 51 * 3 Actual/365 52 * 4 European 30/360 53 * @param mixed $calcMethod 54 * If true, use Issue to Settlement 55 * If false, use FirstInterest to Settlement 56 * 57 * @return float|string Result, or a string containing an error 58 */ 59 public static function ACCRINT( 60 $issue, 61 $firstInterest, 62 $settlement, 63 $rate, 64 $parValue = 1000, 65 $frequency = 1, 66 $basis = 0, 67 $calcMethod = true 68 ) { 69 return Securities\AccruedInterest::periodic( 70 $issue, 71 $firstInterest, 72 $settlement, 73 $rate, 74 $parValue, 75 $frequency, 76 $basis, 77 $calcMethod 78 ); 79 } 80 81 /** 82 * ACCRINTM. 83 * 84 * Returns the accrued interest for a security that pays interest at maturity. 85 * 86 * Excel Function: 87 * ACCRINTM(issue,settlement,rate[,par[,basis]]) 88 * 89 * @deprecated 1.18.0 90 * Use the atMaturity() method in the Financial\Securities\AccruedInterest class instead 91 * @see Financial\Securities\AccruedInterest::atMaturity() 92 * 93 * @param mixed $issue The security's issue date 94 * @param mixed $settlement The security's settlement (or maturity) date 95 * @param mixed $rate The security's annual coupon rate 96 * @param mixed $parValue The security's par value. 97 * If you omit par, ACCRINT uses $1,000. 98 * @param mixed $basis The type of day count to use. 99 * 0 or omitted US (NASD) 30/360 100 * 1 Actual/actual 101 * 2 Actual/360 102 * 3 Actual/365 103 * 4 European 30/360 104 * 105 * @return float|string Result, or a string containing an error 106 */ 107 public static function ACCRINTM($issue, $settlement, $rate, $parValue = 1000, $basis = 0) 108 { 109 return Securities\AccruedInterest::atMaturity($issue, $settlement, $rate, $parValue, $basis); 110 } 111 112 /** 113 * AMORDEGRC. 114 * 115 * Returns the depreciation for each accounting period. 116 * This function is provided for the French accounting system. If an asset is purchased in 117 * the middle of the accounting period, the prorated depreciation is taken into account. 118 * The function is similar to AMORLINC, except that a depreciation coefficient is applied in 119 * the calculation depending on the life of the assets. 120 * This function will return the depreciation until the last period of the life of the assets 121 * or until the cumulated value of depreciation is greater than the cost of the assets minus 122 * the salvage value. 123 * 124 * Excel Function: 125 * AMORDEGRC(cost,purchased,firstPeriod,salvage,period,rate[,basis]) 126 * 127 * @deprecated 1.18.0 128 * Use the AMORDEGRC() method in the Financial\Amortization class instead 129 * @see Financial\Amortization::AMORDEGRC() 130 * 131 * @param float $cost The cost of the asset 132 * @param mixed $purchased Date of the purchase of the asset 133 * @param mixed $firstPeriod Date of the end of the first period 134 * @param mixed $salvage The salvage value at the end of the life of the asset 135 * @param float $period The period 136 * @param float $rate Rate of depreciation 137 * @param int $basis The type of day count to use. 138 * 0 or omitted US (NASD) 30/360 139 * 1 Actual/actual 140 * 2 Actual/360 141 * 3 Actual/365 142 * 4 European 30/360 143 * 144 * @return float|string (string containing the error type if there is an error) 145 */ 146 public static function AMORDEGRC($cost, $purchased, $firstPeriod, $salvage, $period, $rate, $basis = 0) 147 { 148 return Amortization::AMORDEGRC($cost, $purchased, $firstPeriod, $salvage, $period, $rate, $basis); 149 } 150 151 /** 152 * AMORLINC. 153 * 154 * Returns the depreciation for each accounting period. 155 * This function is provided for the French accounting system. If an asset is purchased in 156 * the middle of the accounting period, the prorated depreciation is taken into account. 157 * 158 * Excel Function: 159 * AMORLINC(cost,purchased,firstPeriod,salvage,period,rate[,basis]) 160 * 161 * @deprecated 1.18.0 162 * Use the AMORLINC() method in the Financial\Amortization class instead 163 * @see Financial\Amortization::AMORLINC() 164 * 165 * @param float $cost The cost of the asset 166 * @param mixed $purchased Date of the purchase of the asset 167 * @param mixed $firstPeriod Date of the end of the first period 168 * @param mixed $salvage The salvage value at the end of the life of the asset 169 * @param float $period The period 170 * @param float $rate Rate of depreciation 171 * @param int $basis The type of day count to use. 172 * 0 or omitted US (NASD) 30/360 173 * 1 Actual/actual 174 * 2 Actual/360 175 * 3 Actual/365 176 * 4 European 30/360 177 * 178 * @return float|string (string containing the error type if there is an error) 179 */ 180 public static function AMORLINC($cost, $purchased, $firstPeriod, $salvage, $period, $rate, $basis = 0) 181 { 182 return Amortization::AMORLINC($cost, $purchased, $firstPeriod, $salvage, $period, $rate, $basis); 183 } 184 185 /** 186 * COUPDAYBS. 187 * 188 * Returns the number of days from the beginning of the coupon period to the settlement date. 189 * 190 * Excel Function: 191 * COUPDAYBS(settlement,maturity,frequency[,basis]) 192 * 193 * @deprecated 1.18.0 194 * Use the COUPDAYBS() method in the Financial\Coupons class instead 195 * @see Financial\Coupons::COUPDAYBS() 196 * 197 * @param mixed $settlement The security's settlement date. 198 * The security settlement date is the date after the issue 199 * date when the security is traded to the buyer. 200 * @param mixed $maturity The security's maturity date. 201 * The maturity date is the date when the security expires. 202 * @param int $frequency the number of coupon payments per year. 203 * Valid frequency values are: 204 * 1 Annual 205 * 2 Semi-Annual 206 * 4 Quarterly 207 * @param int $basis The type of day count to use. 208 * 0 or omitted US (NASD) 30/360 209 * 1 Actual/actual 210 * 2 Actual/360 211 * 3 Actual/365 212 * 4 European 30/360 213 * 214 * @return float|string 215 */ 216 public static function COUPDAYBS($settlement, $maturity, $frequency, $basis = 0) 217 { 218 return Coupons::COUPDAYBS($settlement, $maturity, $frequency, $basis); 219 } 220 221 /** 222 * COUPDAYS. 223 * 224 * Returns the number of days in the coupon period that contains the settlement date. 225 * 226 * Excel Function: 227 * COUPDAYS(settlement,maturity,frequency[,basis]) 228 * 229 * @deprecated 1.18.0 230 * Use the COUPDAYS() method in the Financial\Coupons class instead 231 * @see Financial\Coupons::COUPDAYS() 232 * 233 * @param mixed $settlement The security's settlement date. 234 * The security settlement date is the date after the issue 235 * date when the security is traded to the buyer. 236 * @param mixed $maturity The security's maturity date. 237 * The maturity date is the date when the security expires. 238 * @param mixed $frequency the number of coupon payments per year. 239 * Valid frequency values are: 240 * 1 Annual 241 * 2 Semi-Annual 242 * 4 Quarterly 243 * @param int $basis The type of day count to use. 244 * 0 or omitted US (NASD) 30/360 245 * 1 Actual/actual 246 * 2 Actual/360 247 * 3 Actual/365 248 * 4 European 30/360 249 * 250 * @return float|string 251 */ 252 public static function COUPDAYS($settlement, $maturity, $frequency, $basis = 0) 253 { 254 return Coupons::COUPDAYS($settlement, $maturity, $frequency, $basis); 255 } 256 257 /** 258 * COUPDAYSNC. 259 * 260 * Returns the number of days from the settlement date to the next coupon date. 261 * 262 * Excel Function: 263 * COUPDAYSNC(settlement,maturity,frequency[,basis]) 264 * 265 * @deprecated 1.18.0 266 * Use the COUPDAYSNC() method in the Financial\Coupons class instead 267 * @see Financial\Coupons::COUPDAYSNC() 268 * 269 * @param mixed $settlement The security's settlement date. 270 * The security settlement date is the date after the issue 271 * date when the security is traded to the buyer. 272 * @param mixed $maturity The security's maturity date. 273 * The maturity date is the date when the security expires. 274 * @param mixed $frequency the number of coupon payments per year. 275 * Valid frequency values are: 276 * 1 Annual 277 * 2 Semi-Annual 278 * 4 Quarterly 279 * @param int $basis The type of day count to use. 280 * 0 or omitted US (NASD) 30/360 281 * 1 Actual/actual 282 * 2 Actual/360 283 * 3 Actual/365 284 * 4 European 30/360 285 * 286 * @return float|string 287 */ 288 public static function COUPDAYSNC($settlement, $maturity, $frequency, $basis = 0) 289 { 290 return Coupons::COUPDAYSNC($settlement, $maturity, $frequency, $basis); 291 } 292 293 /** 294 * COUPNCD. 295 * 296 * Returns the next coupon date after the settlement date. 297 * 298 * Excel Function: 299 * COUPNCD(settlement,maturity,frequency[,basis]) 300 * 301 * @deprecated 1.18.0 302 * Use the COUPNCD() method in the Financial\Coupons class instead 303 * @see Financial\Coupons::COUPNCD() 304 * 305 * @param mixed $settlement The security's settlement date. 306 * The security settlement date is the date after the issue 307 * date when the security is traded to the buyer. 308 * @param mixed $maturity The security's maturity date. 309 * The maturity date is the date when the security expires. 310 * @param mixed $frequency the number of coupon payments per year. 311 * Valid frequency values are: 312 * 1 Annual 313 * 2 Semi-Annual 314 * 4 Quarterly 315 * @param int $basis The type of day count to use. 316 * 0 or omitted US (NASD) 30/360 317 * 1 Actual/actual 318 * 2 Actual/360 319 * 3 Actual/365 320 * 4 European 30/360 321 * 322 * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object, 323 * depending on the value of the ReturnDateType flag 324 */ 325 public static function COUPNCD($settlement, $maturity, $frequency, $basis = 0) 326 { 327 return Coupons::COUPNCD($settlement, $maturity, $frequency, $basis); 328 } 329 330 /** 331 * COUPNUM. 332 * 333 * Returns the number of coupons payable between the settlement date and maturity date, 334 * rounded up to the nearest whole coupon. 335 * 336 * Excel Function: 337 * COUPNUM(settlement,maturity,frequency[,basis]) 338 * 339 * @deprecated 1.18.0 340 * Use the COUPNUM() method in the Financial\Coupons class instead 341 * @see Financial\Coupons::COUPNUM() 342 * 343 * @param mixed $settlement The security's settlement date. 344 * The security settlement date is the date after the issue 345 * date when the security is traded to the buyer. 346 * @param mixed $maturity The security's maturity date. 347 * The maturity date is the date when the security expires. 348 * @param mixed $frequency the number of coupon payments per year. 349 * Valid frequency values are: 350 * 1 Annual 351 * 2 Semi-Annual 352 * 4 Quarterly 353 * @param int $basis The type of day count to use. 354 * 0 or omitted US (NASD) 30/360 355 * 1 Actual/actual 356 * 2 Actual/360 357 * 3 Actual/365 358 * 4 European 30/360 359 * 360 * @return int|string 361 */ 362 public static function COUPNUM($settlement, $maturity, $frequency, $basis = 0) 363 { 364 return Coupons::COUPNUM($settlement, $maturity, $frequency, $basis); 365 } 366 367 /** 368 * COUPPCD. 369 * 370 * Returns the previous coupon date before the settlement date. 371 * 372 * Excel Function: 373 * COUPPCD(settlement,maturity,frequency[,basis]) 374 * 375 * @deprecated 1.18.0 376 * Use the COUPPCD() method in the Financial\Coupons class instead 377 * @see Financial\Coupons::COUPPCD() 378 * 379 * @param mixed $settlement The security's settlement date. 380 * The security settlement date is the date after the issue 381 * date when the security is traded to the buyer. 382 * @param mixed $maturity The security's maturity date. 383 * The maturity date is the date when the security expires. 384 * @param mixed $frequency the number of coupon payments per year. 385 * Valid frequency values are: 386 * 1 Annual 387 * 2 Semi-Annual 388 * 4 Quarterly 389 * @param int $basis The type of day count to use. 390 * 0 or omitted US (NASD) 30/360 391 * 1 Actual/actual 392 * 2 Actual/360 393 * 3 Actual/365 394 * 4 European 30/360 395 * 396 * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object, 397 * depending on the value of the ReturnDateType flag 398 */ 399 public static function COUPPCD($settlement, $maturity, $frequency, $basis = 0) 400 { 401 return Coupons::COUPPCD($settlement, $maturity, $frequency, $basis); 402 } 403 404 /** 405 * CUMIPMT. 406 * 407 * Returns the cumulative interest paid on a loan between the start and end periods. 408 * 409 * Excel Function: 410 * CUMIPMT(rate,nper,pv,start,end[,type]) 411 * 412 * @deprecated 1.18.0 413 * Use the interest() method in the Financial\CashFlow\Constant\Periodic\Cumulative class instead 414 * @see Financial\CashFlow\Constant\Periodic\Cumulative::interest() 415 * 416 * @param float $rate The Interest rate 417 * @param int $nper The total number of payment periods 418 * @param float $pv Present Value 419 * @param int $start The first period in the calculation. 420 * Payment periods are numbered beginning with 1. 421 * @param int $end the last period in the calculation 422 * @param int $type A number 0 or 1 and indicates when payments are due: 423 * 0 or omitted At the end of the period. 424 * 1 At the beginning of the period. 425 * 426 * @return float|string 427 */ 428 public static function CUMIPMT($rate, $nper, $pv, $start, $end, $type = 0) 429 { 430 return Financial\CashFlow\Constant\Periodic\Cumulative::interest($rate, $nper, $pv, $start, $end, $type); 431 } 432 433 /** 434 * CUMPRINC. 435 * 436 * Returns the cumulative principal paid on a loan between the start and end periods. 437 * 438 * Excel Function: 439 * CUMPRINC(rate,nper,pv,start,end[,type]) 440 * 441 * @deprecated 1.18.0 442 * Use the principal() method in the Financial\CashFlow\Constant\Periodic\Cumulative class instead 443 * @see Financial\CashFlow\Constant\Periodic\Cumulative::principal() 444 * 445 * @param float $rate The Interest rate 446 * @param int $nper The total number of payment periods 447 * @param float $pv Present Value 448 * @param int $start The first period in the calculation. 449 * Payment periods are numbered beginning with 1. 450 * @param int $end the last period in the calculation 451 * @param int $type A number 0 or 1 and indicates when payments are due: 452 * 0 or omitted At the end of the period. 453 * 1 At the beginning of the period. 454 * 455 * @return float|string 456 */ 457 public static function CUMPRINC($rate, $nper, $pv, $start, $end, $type = 0) 458 { 459 return Financial\CashFlow\Constant\Periodic\Cumulative::principal($rate, $nper, $pv, $start, $end, $type); 460 } 461 462 /** 463 * DB. 464 * 465 * Returns the depreciation of an asset for a specified period using the 466 * fixed-declining balance method. 467 * This form of depreciation is used if you want to get a higher depreciation value 468 * at the beginning of the depreciation (as opposed to linear depreciation). The 469 * depreciation value is reduced with every depreciation period by the depreciation 470 * already deducted from the initial cost. 471 * 472 * Excel Function: 473 * DB(cost,salvage,life,period[,month]) 474 * 475 * @deprecated 1.18.0 476 * Use the DB() method in the Financial\Depreciation class instead 477 * @see Financial\Depreciation::DB() 478 * 479 * @param float $cost Initial cost of the asset 480 * @param float $salvage Value at the end of the depreciation. 481 * (Sometimes called the salvage value of the asset) 482 * @param int $life Number of periods over which the asset is depreciated. 483 * (Sometimes called the useful life of the asset) 484 * @param int $period The period for which you want to calculate the 485 * depreciation. Period must use the same units as life. 486 * @param int $month Number of months in the first year. If month is omitted, 487 * it defaults to 12. 488 * 489 * @return float|string 490 */ 491 public static function DB($cost, $salvage, $life, $period, $month = 12) 492 { 493 return Depreciation::DB($cost, $salvage, $life, $period, $month); 494 } 495 496 /** 497 * DDB. 498 * 499 * Returns the depreciation of an asset for a specified period using the 500 * double-declining balance method or some other method you specify. 501 * 502 * Excel Function: 503 * DDB(cost,salvage,life,period[,factor]) 504 * 505 * @deprecated 1.18.0 506 * Use the DDB() method in the Financial\Depreciation class instead 507 * @see Financial\Depreciation::DDB() 508 * 509 * @param float $cost Initial cost of the asset 510 * @param float $salvage Value at the end of the depreciation. 511 * (Sometimes called the salvage value of the asset) 512 * @param int $life Number of periods over which the asset is depreciated. 513 * (Sometimes called the useful life of the asset) 514 * @param int $period The period for which you want to calculate the 515 * depreciation. Period must use the same units as life. 516 * @param float $factor The rate at which the balance declines. 517 * If factor is omitted, it is assumed to be 2 (the 518 * double-declining balance method). 519 * 520 * @return float|string 521 */ 522 public static function DDB($cost, $salvage, $life, $period, $factor = 2.0) 523 { 524 return Depreciation::DDB($cost, $salvage, $life, $period, $factor); 525 } 526 527 /** 528 * DISC. 529 * 530 * Returns the discount rate for a security. 531 * 532 * Excel Function: 533 * DISC(settlement,maturity,price,redemption[,basis]) 534 * 535 * @deprecated 1.18.0 536 * Use the discount() method in the Financial\Securities\Rates class instead 537 * @see Financial\Securities\Rates::discount() 538 * 539 * @param mixed $settlement The security's settlement date. 540 * The security settlement date is the date after the issue 541 * date when the security is traded to the buyer. 542 * @param mixed $maturity The security's maturity date. 543 * The maturity date is the date when the security expires. 544 * @param mixed $price The security's price per $100 face value 545 * @param int $redemption The security's redemption value per $100 face value 546 * @param int $basis The type of day count to use. 547 * 0 or omitted US (NASD) 30/360 548 * 1 Actual/actual 549 * 2 Actual/360 550 * 3 Actual/365 551 * 4 European 30/360 552 * 553 * @return float|string 554 */ 555 public static function DISC($settlement, $maturity, $price, $redemption, $basis = 0) 556 { 557 return Financial\Securities\Rates::discount($settlement, $maturity, $price, $redemption, $basis); 558 } 559 560 /** 561 * DOLLARDE. 562 * 563 * Converts a dollar price expressed as an integer part and a fraction 564 * part into a dollar price expressed as a decimal number. 565 * Fractional dollar numbers are sometimes used for security prices. 566 * 567 * Excel Function: 568 * DOLLARDE(fractional_dollar,fraction) 569 * 570 * @deprecated 1.18.0 571 * Use the decimal() method in the Financial\Dollar class instead 572 * @see Financial\Dollar::decimal() 573 * 574 * @param array|float $fractional_dollar Fractional Dollar 575 * @param array|int $fraction Fraction 576 * 577 * @return array|float|string 578 */ 579 public static function DOLLARDE($fractional_dollar = null, $fraction = 0) 580 { 581 return Dollar::decimal($fractional_dollar, $fraction); 582 } 583 584 /** 585 * DOLLARFR. 586 * 587 * Converts a dollar price expressed as a decimal number into a dollar price 588 * expressed as a fraction. 589 * Fractional dollar numbers are sometimes used for security prices. 590 * 591 * Excel Function: 592 * DOLLARFR(decimal_dollar,fraction) 593 * 594 * @deprecated 1.18.0 595 * Use the fractional() method in the Financial\Dollar class instead 596 * @see Financial\Dollar::fractional() 597 * 598 * @param array|float $decimal_dollar Decimal Dollar 599 * @param array|int $fraction Fraction 600 * 601 * @return array|float|string 602 */ 603 public static function DOLLARFR($decimal_dollar = null, $fraction = 0) 604 { 605 return Dollar::fractional($decimal_dollar, $fraction); 606 } 607 608 /** 609 * EFFECT. 610 * 611 * Returns the effective interest rate given the nominal rate and the number of 612 * compounding payments per year. 613 * 614 * Excel Function: 615 * EFFECT(nominal_rate,npery) 616 * 617 * @deprecated 1.18.0 618 * Use the effective() method in the Financial\InterestRate class instead 619 * @see Financial\InterestRate::effective() 620 * 621 * @param float $nominalRate Nominal interest rate 622 * @param int $periodsPerYear Number of compounding payments per year 623 * 624 * @return float|string 625 */ 626 public static function EFFECT($nominalRate = 0, $periodsPerYear = 0) 627 { 628 return Financial\InterestRate::effective($nominalRate, $periodsPerYear); 629 } 630 631 /** 632 * FV. 633 * 634 * Returns the Future Value of a cash flow with constant payments and interest rate (annuities). 635 * 636 * Excel Function: 637 * FV(rate,nper,pmt[,pv[,type]]) 638 * 639 * @deprecated 1.18.0 640 * Use the futureValue() method in the Financial\CashFlow\Constant\Periodic class instead 641 * @see Financial\CashFlow\Constant\Periodic::futureValue() 642 * 643 * @param float $rate The interest rate per period 644 * @param int $nper Total number of payment periods in an annuity 645 * @param float $pmt The payment made each period: it cannot change over the 646 * life of the annuity. Typically, pmt contains principal 647 * and interest but no other fees or taxes. 648 * @param float $pv present Value, or the lump-sum amount that a series of 649 * future payments is worth right now 650 * @param int $type A number 0 or 1 and indicates when payments are due: 651 * 0 or omitted At the end of the period. 652 * 1 At the beginning of the period. 653 * 654 * @return float|string 655 */ 656 public static function FV($rate = 0, $nper = 0, $pmt = 0, $pv = 0, $type = 0) 657 { 658 return Financial\CashFlow\Constant\Periodic::futureValue($rate, $nper, $pmt, $pv, $type); 659 } 660 661 /** 662 * FVSCHEDULE. 663 * 664 * Returns the future value of an initial principal after applying a series of compound interest rates. 665 * Use FVSCHEDULE to calculate the future value of an investment with a variable or adjustable rate. 666 * 667 * Excel Function: 668 * FVSCHEDULE(principal,schedule) 669 * 670 * @deprecated 1.18.0 671 * Use the futureValue() method in the Financial\CashFlow\Single class instead 672 * @see Financial\CashFlow\Single::futureValue() 673 * 674 * @param float $principal the present value 675 * @param float[] $schedule an array of interest rates to apply 676 * 677 * @return float|string 678 */ 679 public static function FVSCHEDULE($principal, $schedule) 680 { 681 return Financial\CashFlow\Single::futureValue($principal, $schedule); 682 } 683 684 /** 685 * INTRATE. 686 * 687 * Returns the interest rate for a fully invested security. 688 * 689 * Excel Function: 690 * INTRATE(settlement,maturity,investment,redemption[,basis]) 691 * 692 * @deprecated 1.18.0 693 * Use the interest() method in the Financial\Securities\Rates class instead 694 * @see Financial\Securities\Rates::interest() 695 * 696 * @param mixed $settlement The security's settlement date. 697 * The security settlement date is the date after the issue date when the security 698 * is traded to the buyer. 699 * @param mixed $maturity The security's maturity date. 700 * The maturity date is the date when the security expires. 701 * @param int $investment the amount invested in the security 702 * @param int $redemption the amount to be received at maturity 703 * @param int $basis The type of day count to use. 704 * 0 or omitted US (NASD) 30/360 705 * 1 Actual/actual 706 * 2 Actual/360 707 * 3 Actual/365 708 * 4 European 30/360 709 * 710 * @return float|string 711 */ 712 public static function INTRATE($settlement, $maturity, $investment, $redemption, $basis = 0) 713 { 714 return Financial\Securities\Rates::interest($settlement, $maturity, $investment, $redemption, $basis); 715 } 716 717 /** 718 * IPMT. 719 * 720 * Returns the interest payment for a given period for an investment based on periodic, constant payments 721 * and a constant interest rate. 722 * 723 * Excel Function: 724 * IPMT(rate,per,nper,pv[,fv][,type]) 725 * 726 * @deprecated 1.18.0 727 * Use the payment() method in the Financial\CashFlow\Constant\Periodic\Interest class instead 728 * @see Financial\CashFlow\Constant\Periodic\Interest::payment() 729 * 730 * @param float $rate Interest rate per period 731 * @param int $per Period for which we want to find the interest 732 * @param int $nper Number of periods 733 * @param float $pv Present Value 734 * @param float $fv Future Value 735 * @param int $type Payment type: 0 = at the end of each period, 1 = at the beginning of each period 736 * 737 * @return float|string 738 */ 739 public static function IPMT($rate, $per, $nper, $pv, $fv = 0, $type = 0) 740 { 741 return Financial\CashFlow\Constant\Periodic\Interest::payment($rate, $per, $nper, $pv, $fv, $type); 742 } 743 744 /** 745 * IRR. 746 * 747 * Returns the internal rate of return for a series of cash flows represented by the numbers in values. 748 * These cash flows do not have to be even, as they would be for an annuity. However, the cash flows must occur 749 * at regular intervals, such as monthly or annually. The internal rate of return is the interest rate received 750 * for an investment consisting of payments (negative values) and income (positive values) that occur at regular 751 * periods. 752 * 753 * Excel Function: 754 * IRR(values[,guess]) 755 * 756 * @deprecated 1.18.0 757 * Use the rate() method in the Financial\CashFlow\Variable\Periodic class instead 758 * @see Financial\CashFlow\Variable\Periodic::rate() 759 * 760 * @param mixed $values An array or a reference to cells that contain numbers for which you want 761 * to calculate the internal rate of return. 762 * Values must contain at least one positive value and one negative value to 763 * calculate the internal rate of return. 764 * @param mixed $guess A number that you guess is close to the result of IRR 765 * 766 * @return float|string 767 */ 768 public static function IRR($values, $guess = 0.1) 769 { 770 return Financial\CashFlow\Variable\Periodic::rate($values, $guess); 771 } 772 773 /** 774 * ISPMT. 775 * 776 * Returns the interest payment for an investment based on an interest rate and a constant payment schedule. 777 * 778 * Excel Function: 779 * =ISPMT(interest_rate, period, number_payments, pv) 780 * 781 * @deprecated 1.18.0 782 * Use the schedulePayment() method in the Financial\CashFlow\Constant\Periodic\Interest class instead 783 * @see Financial\CashFlow\Constant\Periodic\Interest::schedulePayment() 784 * 785 * interest_rate is the interest rate for the investment 786 * 787 * period is the period to calculate the interest rate. It must be betweeen 1 and number_payments. 788 * 789 * number_payments is the number of payments for the annuity 790 * 791 * pv is the loan amount or present value of the payments 792 * 793 * @param array $args 794 * 795 * @return float|string 796 */ 797 public static function ISPMT(...$args) 798 { 799 return Financial\CashFlow\Constant\Periodic\Interest::schedulePayment(...$args); 800 } 801 802 /** 803 * MIRR. 804 * 805 * Returns the modified internal rate of return for a series of periodic cash flows. MIRR considers both 806 * the cost of the investment and the interest received on reinvestment of cash. 807 * 808 * Excel Function: 809 * MIRR(values,finance_rate, reinvestment_rate) 810 * 811 * @deprecated 1.18.0 812 * Use the modifiedRate() method in the Financial\CashFlow\Variable\Periodic class instead 813 * @see Financial\CashFlow\Variable\Periodic::modifiedRate() 814 * 815 * @param mixed $values An array or a reference to cells that contain a series of payments and 816 * income occurring at regular intervals. 817 * Payments are negative value, income is positive values. 818 * @param mixed $finance_rate The interest rate you pay on the money used in the cash flows 819 * @param mixed $reinvestment_rate The interest rate you receive on the cash flows as you reinvest them 820 * 821 * @return float|string Result, or a string containing an error 822 */ 823 public static function MIRR($values, $finance_rate, $reinvestment_rate) 824 { 825 return Financial\CashFlow\Variable\Periodic::modifiedRate($values, $finance_rate, $reinvestment_rate); 826 } 827 828 /** 829 * NOMINAL. 830 * 831 * Returns the nominal interest rate given the effective rate and the number of compounding payments per year. 832 * 833 * Excel Function: 834 * NOMINAL(effect_rate, npery) 835 * 836 * @deprecated 1.18.0 837 * Use the nominal() method in the Financial\InterestRate class instead 838 * @see Financial\InterestRate::nominal() 839 * 840 * @param float $effectiveRate Effective interest rate 841 * @param int $periodsPerYear Number of compounding payments per year 842 * 843 * @return float|string Result, or a string containing an error 844 */ 845 public static function NOMINAL($effectiveRate = 0, $periodsPerYear = 0) 846 { 847 return InterestRate::nominal($effectiveRate, $periodsPerYear); 848 } 849 850 /** 851 * NPER. 852 * 853 * Returns the number of periods for a cash flow with constant periodic payments (annuities), and interest rate. 854 * 855 * @deprecated 1.18.0 856 * Use the periods() method in the Financial\CashFlow\Constant\Periodic class instead 857 * @see Financial\CashFlow\Constant\Periodic::periods() 858 * 859 * @param float $rate Interest rate per period 860 * @param int $pmt Periodic payment (annuity) 861 * @param float $pv Present Value 862 * @param float $fv Future Value 863 * @param int $type Payment type: 0 = at the end of each period, 1 = at the beginning of each period 864 * 865 * @return float|string Result, or a string containing an error 866 */ 867 public static function NPER($rate = 0, $pmt = 0, $pv = 0, $fv = 0, $type = 0) 868 { 869 return Financial\CashFlow\Constant\Periodic::periods($rate, $pmt, $pv, $fv, $type); 870 } 871 872 /** 873 * NPV. 874 * 875 * Returns the Net Present Value of a cash flow series given a discount rate. 876 * 877 * @deprecated 1.18.0 878 * Use the presentValue() method in the Financial\CashFlow\Variable\Periodic class instead 879 * @see Financial\CashFlow\Variable\Periodic::presentValue() 880 * 881 * @param array $args 882 * 883 * @return float 884 */ 885 public static function NPV(...$args) 886 { 887 return Financial\CashFlow\Variable\Periodic::presentValue(...$args); 888 } 889 890 /** 891 * PDURATION. 892 * 893 * Calculates the number of periods required for an investment to reach a specified value. 894 * 895 * @deprecated 1.18.0 896 * Use the periods() method in the Financial\CashFlow\Single class instead 897 * @see Financial\CashFlow\Single::periods() 898 * 899 * @param float $rate Interest rate per period 900 * @param float $pv Present Value 901 * @param float $fv Future Value 902 * 903 * @return float|string Result, or a string containing an error 904 */ 905 public static function PDURATION($rate = 0, $pv = 0, $fv = 0) 906 { 907 return Financial\CashFlow\Single::periods($rate, $pv, $fv); 908 } 909 910 /** 911 * PMT. 912 * 913 * Returns the constant payment (annuity) for a cash flow with a constant interest rate. 914 * 915 * @deprecated 1.18.0 916 * Use the annuity() method in the Financial\CashFlow\Constant\Periodic\Payments class instead 917 * @see Financial\CashFlow\Constant\Periodic\Payments::annuity() 918 * 919 * @param float $rate Interest rate per period 920 * @param int $nper Number of periods 921 * @param float $pv Present Value 922 * @param float $fv Future Value 923 * @param int $type Payment type: 0 = at the end of each period, 1 = at the beginning of each period 924 * 925 * @return float|string Result, or a string containing an error 926 */ 927 public static function PMT($rate = 0, $nper = 0, $pv = 0, $fv = 0, $type = 0) 928 { 929 return Financial\CashFlow\Constant\Periodic\Payments::annuity($rate, $nper, $pv, $fv, $type); 930 } 931 932 /** 933 * PPMT. 934 * 935 * Returns the interest payment for a given period for an investment based on periodic, constant payments 936 * and a constant interest rate. 937 * 938 * @deprecated 1.18.0 939 * Use the interestPayment() method in the Financial\CashFlow\Constant\Periodic\Payments class instead 940 * @see Financial\CashFlow\Constant\Periodic\Payments::interestPayment() 941 * 942 * @param float $rate Interest rate per period 943 * @param int $per Period for which we want to find the interest 944 * @param int $nper Number of periods 945 * @param float $pv Present Value 946 * @param float $fv Future Value 947 * @param int $type Payment type: 0 = at the end of each period, 1 = at the beginning of each period 948 * 949 * @return float|string Result, or a string containing an error 950 */ 951 public static function PPMT($rate, $per, $nper, $pv, $fv = 0, $type = 0) 952 { 953 return Financial\CashFlow\Constant\Periodic\Payments::interestPayment($rate, $per, $nper, $pv, $fv, $type); 954 } 955 956 /** 957 * PRICE. 958 * 959 * Returns the price per $100 face value of a security that pays periodic interest. 960 * 961 * @deprecated 1.18.0 962 * Use the price() method in the Financial\Securities\Price class instead 963 * @see Financial\Securities\Price::price() 964 * 965 * @param mixed $settlement The security's settlement date. 966 * The security settlement date is the date after the issue date when the security 967 * is traded to the buyer. 968 * @param mixed $maturity The security's maturity date. 969 * The maturity date is the date when the security expires. 970 * @param float $rate the security's annual coupon rate 971 * @param float $yield the security's annual yield 972 * @param float $redemption The number of coupon payments per year. 973 * For annual payments, frequency = 1; 974 * for semiannual, frequency = 2; 975 * for quarterly, frequency = 4. 976 * @param int $frequency 977 * @param int $basis The type of day count to use. 978 * 0 or omitted US (NASD) 30/360 979 * 1 Actual/actual 980 * 2 Actual/360 981 * 3 Actual/365 982 * 4 European 30/360 983 * 984 * @return float|string Result, or a string containing an error 985 */ 986 public static function PRICE($settlement, $maturity, $rate, $yield, $redemption, $frequency, $basis = 0) 987 { 988 return Securities\Price::price($settlement, $maturity, $rate, $yield, $redemption, $frequency, $basis); 989 } 990 991 /** 992 * PRICEDISC. 993 * 994 * Returns the price per $100 face value of a discounted security. 995 * 996 * @deprecated 1.18.0 997 * Use the priceDiscounted() method in the Financial\Securities\Price class instead 998 * @see Financial\Securities\Price::priceDiscounted() 999 * 1000 * @param mixed $settlement The security's settlement date. 1001 * The security settlement date is the date after the issue date when the security 1002 * is traded to the buyer. 1003 * @param mixed $maturity The security's maturity date. 1004 * The maturity date is the date when the security expires. 1005 * @param mixed $discount The security's discount rate 1006 * @param int $redemption The security's redemption value per $100 face value 1007 * @param int $basis The type of day count to use. 1008 * 0 or omitted US (NASD) 30/360 1009 * 1 Actual/actual 1010 * 2 Actual/360 1011 * 3 Actual/365 1012 * 4 European 30/360 1013 * 1014 * @return float|string Result, or a string containing an error 1015 */ 1016 public static function PRICEDISC($settlement, $maturity, $discount, $redemption, $basis = 0) 1017 { 1018 return Securities\Price::priceDiscounted($settlement, $maturity, $discount, $redemption, $basis); 1019 } 1020 1021 /** 1022 * PRICEMAT. 1023 * 1024 * Returns the price per $100 face value of a security that pays interest at maturity. 1025 * 1026 * @deprecated 1.18.0 1027 * Use the priceAtMaturity() method in the Financial\Securities\Price class instead 1028 * @see Financial\Securities\Price::priceAtMaturity() 1029 * 1030 * @param mixed $settlement The security's settlement date. 1031 * The security's settlement date is the date after the issue date when the security 1032 * is traded to the buyer. 1033 * @param mixed $maturity The security's maturity date. 1034 * The maturity date is the date when the security expires. 1035 * @param mixed $issue The security's issue date 1036 * @param mixed $rate The security's interest rate at date of issue 1037 * @param mixed $yield The security's annual yield 1038 * @param int $basis The type of day count to use. 1039 * 0 or omitted US (NASD) 30/360 1040 * 1 Actual/actual 1041 * 2 Actual/360 1042 * 3 Actual/365 1043 * 4 European 30/360 1044 * 1045 * @return float|string Result, or a string containing an error 1046 */ 1047 public static function PRICEMAT($settlement, $maturity, $issue, $rate, $yield, $basis = 0) 1048 { 1049 return Securities\Price::priceAtMaturity($settlement, $maturity, $issue, $rate, $yield, $basis); 1050 } 1051 1052 /** 1053 * PV. 1054 * 1055 * Returns the Present Value of a cash flow with constant payments and interest rate (annuities). 1056 * 1057 * @deprecated 1.18.0 1058 * Use the presentValue() method in the Financial\CashFlow\Constant\Periodic class instead 1059 * @see Financial\CashFlow\Constant\Periodic::presentValue() 1060 * 1061 * @param float $rate Interest rate per period 1062 * @param int $nper Number of periods 1063 * @param float $pmt Periodic payment (annuity) 1064 * @param float $fv Future Value 1065 * @param int $type Payment type: 0 = at the end of each period, 1 = at the beginning of each period 1066 * 1067 * @return float|string Result, or a string containing an error 1068 */ 1069 public static function PV($rate = 0, $nper = 0, $pmt = 0, $fv = 0, $type = 0) 1070 { 1071 return Financial\CashFlow\Constant\Periodic::presentValue($rate, $nper, $pmt, $fv, $type); 1072 } 1073 1074 /** 1075 * RATE. 1076 * 1077 * Returns the interest rate per period of an annuity. 1078 * RATE is calculated by iteration and can have zero or more solutions. 1079 * If the successive results of RATE do not converge to within 0.0000001 after 20 iterations, 1080 * RATE returns the #NUM! error value. 1081 * 1082 * Excel Function: 1083 * RATE(nper,pmt,pv[,fv[,type[,guess]]]) 1084 * 1085 * @deprecated 1.18.0 1086 * Use the rate() method in the Financial\CashFlow\Constant\Periodic\Interest class instead 1087 * @see Financial\CashFlow\Constant\Periodic\Interest::rate() 1088 * 1089 * @param mixed $nper The total number of payment periods in an annuity 1090 * @param mixed $pmt The payment made each period and cannot change over the life 1091 * of the annuity. 1092 * Typically, pmt includes principal and interest but no other 1093 * fees or taxes. 1094 * @param mixed $pv The present value - the total amount that a series of future 1095 * payments is worth now 1096 * @param mixed $fv The future value, or a cash balance you want to attain after 1097 * the last payment is made. If fv is omitted, it is assumed 1098 * to be 0 (the future value of a loan, for example, is 0). 1099 * @param mixed $type A number 0 or 1 and indicates when payments are due: 1100 * 0 or omitted At the end of the period. 1101 * 1 At the beginning of the period. 1102 * @param mixed $guess Your guess for what the rate will be. 1103 * If you omit guess, it is assumed to be 10 percent. 1104 * 1105 * @return float|string 1106 */ 1107 public static function RATE($nper, $pmt, $pv, $fv = 0.0, $type = 0, $guess = 0.1) 1108 { 1109 return Financial\CashFlow\Constant\Periodic\Interest::rate($nper, $pmt, $pv, $fv, $type, $guess); 1110 } 1111 1112 /** 1113 * RECEIVED. 1114 * 1115 * Returns the amount received at maturity for a fully invested Security. 1116 * 1117 * @deprecated 1.18.0 1118 * Use the received() method in the Financial\Securities\Price class instead 1119 * @see Financial\Securities\Price::received() 1120 * 1121 * @param mixed $settlement The security's settlement date. 1122 * The security settlement date is the date after the issue date when the security 1123 * is traded to the buyer. 1124 * @param mixed $maturity The security's maturity date. 1125 * The maturity date is the date when the security expires. 1126 * @param mixed $investment The amount invested in the security 1127 * @param mixed $discount The security's discount rate 1128 * @param mixed $basis The type of day count to use. 1129 * 0 or omitted US (NASD) 30/360 1130 * 1 Actual/actual 1131 * 2 Actual/360 1132 * 3 Actual/365 1133 * 4 European 30/360 1134 * 1135 * @return float|string Result, or a string containing an error 1136 */ 1137 public static function RECEIVED($settlement, $maturity, $investment, $discount, $basis = 0) 1138 { 1139 return Financial\Securities\Price::received($settlement, $maturity, $investment, $discount, $basis); 1140 } 1141 1142 /** 1143 * RRI. 1144 * 1145 * Calculates the interest rate required for an investment to grow to a specified future value . 1146 * 1147 * @deprecated 1.18.0 1148 * Use the interestRate() method in the Financial\CashFlow\Single class instead 1149 * @see Financial\CashFlow\Single::interestRate() 1150 * 1151 * @param float $nper The number of periods over which the investment is made 1152 * @param float $pv Present Value 1153 * @param float $fv Future Value 1154 * 1155 * @return float|string Result, or a string containing an error 1156 */ 1157 public static function RRI($nper = 0, $pv = 0, $fv = 0) 1158 { 1159 return Financial\CashFlow\Single::interestRate($nper, $pv, $fv); 1160 } 1161 1162 /** 1163 * SLN. 1164 * 1165 * Returns the straight-line depreciation of an asset for one period 1166 * 1167 * @deprecated 1.18.0 1168 * Use the SLN() method in the Financial\Depreciation class instead 1169 * @see Financial\Depreciation::SLN() 1170 * 1171 * @param mixed $cost Initial cost of the asset 1172 * @param mixed $salvage Value at the end of the depreciation 1173 * @param mixed $life Number of periods over which the asset is depreciated 1174 * 1175 * @return float|string Result, or a string containing an error 1176 */ 1177 public static function SLN($cost, $salvage, $life) 1178 { 1179 return Depreciation::SLN($cost, $salvage, $life); 1180 } 1181 1182 /** 1183 * SYD. 1184 * 1185 * Returns the sum-of-years' digits depreciation of an asset for a specified period. 1186 * 1187 * @deprecated 1.18.0 1188 * Use the SYD() method in the Financial\Depreciation class instead 1189 * @see Financial\Depreciation::SYD() 1190 * 1191 * @param mixed $cost Initial cost of the asset 1192 * @param mixed $salvage Value at the end of the depreciation 1193 * @param mixed $life Number of periods over which the asset is depreciated 1194 * @param mixed $period Period 1195 * 1196 * @return float|string Result, or a string containing an error 1197 */ 1198 public static function SYD($cost, $salvage, $life, $period) 1199 { 1200 return Depreciation::SYD($cost, $salvage, $life, $period); 1201 } 1202 1203 /** 1204 * TBILLEQ. 1205 * 1206 * Returns the bond-equivalent yield for a Treasury bill. 1207 * 1208 * @deprecated 1.18.0 1209 * Use the bondEquivalentYield() method in the Financial\TreasuryBill class instead 1210 * @see Financial\TreasuryBill::bondEquivalentYield() 1211 * 1212 * @param mixed $settlement The Treasury bill's settlement date. 1213 * The Treasury bill's settlement date is the date after the issue date when the 1214 * Treasury bill is traded to the buyer. 1215 * @param mixed $maturity The Treasury bill's maturity date. 1216 * The maturity date is the date when the Treasury bill expires. 1217 * @param mixed $discount The Treasury bill's discount rate 1218 * 1219 * @return float|string Result, or a string containing an error 1220 */ 1221 public static function TBILLEQ($settlement, $maturity, $discount) 1222 { 1223 return TreasuryBill::bondEquivalentYield($settlement, $maturity, $discount); 1224 } 1225 1226 /** 1227 * TBILLPRICE. 1228 * 1229 * Returns the price per $100 face value for a Treasury bill. 1230 * 1231 * @deprecated 1.18.0 1232 * Use the price() method in the Financial\TreasuryBill class instead 1233 * @see Financial\TreasuryBill::price() 1234 * 1235 * @param mixed $settlement The Treasury bill's settlement date. 1236 * The Treasury bill's settlement date is the date after the issue date 1237 * when the Treasury bill is traded to the buyer. 1238 * @param mixed $maturity The Treasury bill's maturity date. 1239 * The maturity date is the date when the Treasury bill expires. 1240 * @param mixed $discount The Treasury bill's discount rate 1241 * 1242 * @return float|string Result, or a string containing an error 1243 */ 1244 public static function TBILLPRICE($settlement, $maturity, $discount) 1245 { 1246 return TreasuryBill::price($settlement, $maturity, $discount); 1247 } 1248 1249 /** 1250 * TBILLYIELD. 1251 * 1252 * Returns the yield for a Treasury bill. 1253 * 1254 * @deprecated 1.18.0 1255 * Use the yield() method in the Financial\TreasuryBill class instead 1256 * @see Financial\TreasuryBill::yield() 1257 * 1258 * @param mixed $settlement The Treasury bill's settlement date. 1259 * The Treasury bill's settlement date is the date after the issue date 1260 * when the Treasury bill is traded to the buyer. 1261 * @param mixed $maturity The Treasury bill's maturity date. 1262 * The maturity date is the date when the Treasury bill expires. 1263 * @param mixed $price The Treasury bill's price per $100 face value 1264 * 1265 * @return float|mixed|string 1266 */ 1267 public static function TBILLYIELD($settlement, $maturity, $price) 1268 { 1269 return TreasuryBill::yield($settlement, $maturity, $price); 1270 } 1271 1272 /** 1273 * XIRR. 1274 * 1275 * Returns the internal rate of return for a schedule of cash flows that is not necessarily periodic. 1276 * 1277 * Excel Function: 1278 * =XIRR(values,dates,guess) 1279 * 1280 * @deprecated 1.18.0 1281 * Use the rate() method in the Financial\CashFlow\Variable\NonPeriodic class instead 1282 * @see Financial\CashFlow\Variable\NonPeriodic::rate() 1283 * 1284 * @param float[] $values A series of cash flow payments 1285 * The series of values must contain at least one positive value & one negative value 1286 * @param mixed[] $dates A series of payment dates 1287 * The first payment date indicates the beginning of the schedule of payments 1288 * All other dates must be later than this date, but they may occur in any order 1289 * @param float $guess An optional guess at the expected answer 1290 * 1291 * @return float|mixed|string 1292 */ 1293 public static function XIRR($values, $dates, $guess = 0.1) 1294 { 1295 return Financial\CashFlow\Variable\NonPeriodic::rate($values, $dates, $guess); 1296 } 1297 1298 /** 1299 * XNPV. 1300 * 1301 * Returns the net present value for a schedule of cash flows that is not necessarily periodic. 1302 * To calculate the net present value for a series of cash flows that is periodic, use the NPV function. 1303 * 1304 * Excel Function: 1305 * =XNPV(rate,values,dates) 1306 * 1307 * @deprecated 1.18.0 1308 * Use the presentValue() method in the Financial\CashFlow\Variable\NonPeriodic class instead 1309 * @see Financial\CashFlow\Variable\NonPeriodic::presentValue() 1310 * 1311 * @param float $rate the discount rate to apply to the cash flows 1312 * @param float[] $values A series of cash flows that corresponds to a schedule of payments in dates. 1313 * The first payment is optional and corresponds to a cost or payment that occurs 1314 * at the beginning of the investment. 1315 * If the first value is a cost or payment, it must be a negative value. 1316 * All succeeding payments are discounted based on a 365-day year. 1317 * The series of values must contain at least one positive value and one negative value. 1318 * @param mixed[] $dates A schedule of payment dates that corresponds to the cash flow payments. 1319 * The first payment date indicates the beginning of the schedule of payments. 1320 * All other dates must be later than this date, but they may occur in any order. 1321 * 1322 * @return float|mixed|string 1323 */ 1324 public static function XNPV($rate, $values, $dates) 1325 { 1326 return Financial\CashFlow\Variable\NonPeriodic::presentValue($rate, $values, $dates); 1327 } 1328 1329 /** 1330 * YIELDDISC. 1331 * 1332 * Returns the annual yield of a security that pays interest at maturity. 1333 * 1334 * @deprecated 1.18.0 1335 * Use the yieldDiscounted() method in the Financial\Securities\Yields class instead 1336 * @see Financial\Securities\Yields::yieldDiscounted() 1337 * 1338 * @param mixed $settlement The security's settlement date. 1339 * The security's settlement date is the date after the issue date when the security 1340 * is traded to the buyer. 1341 * @param mixed $maturity The security's maturity date. 1342 * The maturity date is the date when the security expires. 1343 * @param mixed $price The security's price per $100 face value 1344 * @param int $redemption The security's redemption value per $100 face value 1345 * @param int $basis The type of day count to use. 1346 * 0 or omitted US (NASD) 30/360 1347 * 1 Actual/actual 1348 * 2 Actual/360 1349 * 3 Actual/365 1350 * 4 European 30/360 1351 * 1352 * @return float|string Result, or a string containing an error 1353 */ 1354 public static function YIELDDISC($settlement, $maturity, $price, $redemption, $basis = 0) 1355 { 1356 return Securities\Yields::yieldDiscounted($settlement, $maturity, $price, $redemption, $basis); 1357 } 1358 1359 /** 1360 * YIELDMAT. 1361 * 1362 * Returns the annual yield of a security that pays interest at maturity. 1363 * 1364 * @deprecated 1.18.0 1365 * Use the yieldAtMaturity() method in the Financial\Securities\Yields class instead 1366 * @see Financial\Securities\Yields::yieldAtMaturity() 1367 * 1368 * @param mixed $settlement The security's settlement date. 1369 * The security's settlement date is the date after the issue date when the security 1370 * is traded to the buyer. 1371 * @param mixed $maturity The security's maturity date. 1372 * The maturity date is the date when the security expires. 1373 * @param mixed $issue The security's issue date 1374 * @param mixed $rate The security's interest rate at date of issue 1375 * @param mixed $price The security's price per $100 face value 1376 * @param int $basis The type of day count to use. 1377 * 0 or omitted US (NASD) 30/360 1378 * 1 Actual/actual 1379 * 2 Actual/360 1380 * 3 Actual/365 1381 * 4 European 30/360 1382 * 1383 * @return float|string Result, or a string containing an error 1384 */ 1385 public static function YIELDMAT($settlement, $maturity, $issue, $rate, $price, $basis = 0) 1386 { 1387 return Securities\Yields::yieldAtMaturity($settlement, $maturity, $issue, $rate, $price, $basis); 1388 } 1389 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body