PluginProbe
wpDataTables – WordPress Data Table, Dynamic Tables & Table Charts Plugin / 6.5.1.7
wpDataTables – WordPress Data Table, Dynamic Tables & Table Charts Plugin v6.5.1.7
6.5.1.7 6.5.1.6 6.5.1.5 6.5.1.4 6.5.1.3 6.5.1.2 6.5.1.1 6.5.0.9 6.5.0.8 6.5.0.7 6.5.0.6 trunk 3.4.2.40 3.4.2.41 3.4.2.42 3.4.2.43 3.4.2.44 3.4.2.45 3.4.2.46 3.4.2.47 3.4.2.48 3.4.2.49 3.4.2.50 6.3.2 6.3.3.1 All 47 releases
wpdatatables / lib / phpoffice / phpspreadsheet / src / PhpSpreadsheet / Calculation / Financial.php

Financial.php in wpDataTables – WordPress Data Table, Dynamic Tables & Table Charts Plugin 6.5.1.7, at lib/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial.php

1,390 lines 60.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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 }
1390