@@ 1753-1776 (lines=24) @@ | ||
1750 | * |
|
1751 | * @return float |
|
1752 | */ |
|
1753 | public static function PRICEDISC($settlement, $maturity, $discount, $redemption, $basis = 0) |
|
1754 | { |
|
1755 | $settlement = Functions::flattenSingleValue($settlement); |
|
1756 | $maturity = Functions::flattenSingleValue($maturity); |
|
1757 | $discount = (float) Functions::flattenSingleValue($discount); |
|
1758 | $redemption = (float) Functions::flattenSingleValue($redemption); |
|
1759 | $basis = (int) Functions::flattenSingleValue($basis); |
|
1760 | ||
1761 | // Validate |
|
1762 | if ((is_numeric($discount)) && (is_numeric($redemption)) && (is_numeric($basis))) { |
|
1763 | if (($discount <= 0) || ($redemption <= 0)) { |
|
1764 | return Functions::NAN(); |
|
1765 | } |
|
1766 | $daysBetweenSettlementAndMaturity = DateTime::YEARFRAC($settlement, $maturity, $basis); |
|
1767 | if (!is_numeric($daysBetweenSettlementAndMaturity)) { |
|
1768 | // return date error |
|
1769 | return $daysBetweenSettlementAndMaturity; |
|
1770 | } |
|
1771 | ||
1772 | return $redemption * (1 - $discount * $daysBetweenSettlementAndMaturity); |
|
1773 | } |
|
1774 | ||
1775 | return Functions::VALUE(); |
|
1776 | } |
|
1777 | ||
1778 | /** |
|
1779 | * PRICEMAT. |
|
@@ 1990-2013 (lines=24) @@ | ||
1987 | * |
|
1988 | * @return float |
|
1989 | */ |
|
1990 | public static function RECEIVED($settlement, $maturity, $investment, $discount, $basis = 0) |
|
1991 | { |
|
1992 | $settlement = Functions::flattenSingleValue($settlement); |
|
1993 | $maturity = Functions::flattenSingleValue($maturity); |
|
1994 | $investment = (float) Functions::flattenSingleValue($investment); |
|
1995 | $discount = (float) Functions::flattenSingleValue($discount); |
|
1996 | $basis = (int) Functions::flattenSingleValue($basis); |
|
1997 | ||
1998 | // Validate |
|
1999 | if ((is_numeric($investment)) && (is_numeric($discount)) && (is_numeric($basis))) { |
|
2000 | if (($investment <= 0) || ($discount <= 0)) { |
|
2001 | return Functions::NAN(); |
|
2002 | } |
|
2003 | $daysBetweenSettlementAndMaturity = DateTime::YEARFRAC($settlement, $maturity, $basis); |
|
2004 | if (!is_numeric($daysBetweenSettlementAndMaturity)) { |
|
2005 | // return date error |
|
2006 | return $daysBetweenSettlementAndMaturity; |
|
2007 | } |
|
2008 | ||
2009 | return $investment / (1 - ($discount * $daysBetweenSettlementAndMaturity)); |
|
2010 | } |
|
2011 | ||
2012 | return Functions::VALUE(); |
|
2013 | } |
|
2014 | ||
2015 | /** |
|
2016 | * SLN. |