PRICEMAT
Updated 2023-10-06 21:15:29.277000
Syntax
SELECT [westclintech].[wct].[PRICEMAT] (
<@Settlement, datetime,>
,<@Maturity, datetime,>
,<@Issue, datetime,>
,<@Rate, float,>
,<@Yld, float,>
,<@Basis, nvarchar(4000),>)
Description
Use the scalar function PRICEMAT to calculate the price (expressed per 100 par value) of a security that pays interest at maturity. The PRICEMAT formula is:
Where:
{"columns":[{"field":"column 1","width":180},{"field":"column 2","width":30},{"field":"column 3","width":180}],"rows":[{"column 1":"A","column 2":"=","column 3":"Number of days from issue date to settlement date"},{"column 1":"B","column 2":"=","column 3":"Number of days in the year"},{"column 1":"DIM","column 2":"=","column 3":"Number of days from issue date to maturity date"},{"column 1":"DSM","column 2":"=","column 3":"Number of days from settlement date to maturity date"},{"column 1":"P","column 2":"=","column 3":"Price per 100 par value"},{"column 1":"R","column 2":"=","column 3":"Annual interest rate in decimal terms"},{"column 1":"Y","column 2":"=","column 3":"Annual Yield"}]}
Arguments
@Yld
the security’s annual yield. @Yld is an expression of type float or of a type that can be implicitly converted to float.
@Basis
is the type of day count to use. @Basis is an expression of the character string data type category.
{"columns":[{"field":"@Basis","width":313},{"field":"Day count basis","width":277}],"rows":[{"@Basis":"0 , 'BOND'","Day count basis":"US (NASD) 30/360"},{"@Basis":"1 , 'ACTUAL'","Day count basis":"Actual/Actual"},{"@Basis":"2 , 'A360'","Day count basis":"Actual/360"},{"@Basis":"3 , 'A365'","Day count basis":"Actual/365"},{"@Basis":"4 , '30E/360 (ISDA)' , '30E/360' , 'ISDA' , '30E/360 ISDA' , 'EBOND'","Day count basis":"European 30/360"},{"@Basis":"5 , '30/360' , '30/360 ISDA' , 'GERMAN'","Day count basis":"30/360 ISDA"},{"@Basis":"7 , 'NL/365'","Day count basis":"No Leap Year /365"},{"@Basis":"8 , 'NL/360'","Day count basis":"No Leap Year /360"},{"@Basis":"9 , 'A/364'","Day count basis":"Actual/364"}]}
@Rate
the security’s annual coupon rate. @Rate is an expression of type float or of a type that can be implicitly converted to float.
@Issue
the issue date of the security. @Issue is an expression that returns a datetime or smalldatetime value, or a character string in date format.
@Settlement
the settlement date of the security. @Settlement is an expression that returns a datetime or smalldatetime value, or a character string in date format.
@Maturity
the maturity date of the security. @Maturity is an expression that returns a datetime or smalldatetime value, or a character string in date format.
Return Type
float
Remarks
If @Settlement IS NULL then @Settlement = GETDATE().
If @Basis is NULL then @Basis = 0.
If @Basis is invalid then PRICEMAT returns an error.
Examples
This security issued on 2014-07-31 matures on 2014-12-15 with an interest rate of 0.5% and a yield of 0.2%. Interest is calculated using the Actual/365 day-count convention.
SELECT
wct.PRICEMAT(
'2014-10-07' --@Settlement
,'2014-12-15' --@Maturity
,'2014-07-31' --@Issue
,0.005 --@Rate
,0.002 --@Yield
,3 --@Basis
) as Price;
This produces the following result.
{"columns":[{"field":"Price","headerClass":"ag-right-aligned-header","cellClass":"ag-right-aligned-cell"}],"rows":[{"Price":"100.056655689645"}]}
This security issued on 2014-08-15 matures on 2014-12-01 with an interest rate of -0.05% and a yield of 0.1%. Interest is calculated using the Actual/360 day-count convention.
SELECT
wct.PRICEMAT(
'2014-10-07' --@Settlement
,'2014-12-01' --@Maturity
,'2014-08-15' --@Issue
,-0.0005 --@Rate
,0.001 --@Yield
,2 --@Basis
) as Price;
This produces the following result.
{"columns":[{"field":"Price","headerClass":"ag-right-aligned-header","cellClass":"ag-right-aligned-cell"}],"rows":[{"Price":"99.9770879583983"}]}
This security issued on 2014-08-10 matures on 2014-11-15 with a yield of -0.05% and an interest rate of 0.2%. Interest is calculated using the 30/E 360 (ISDA) day-count convention.
SELECT
wct.PRICEMAT(
'2014-10-07' --@Settlement
,'2014-11-15' --@Maturity
,'2014-08-10' --@Issue
,0.002 --@Rate
,-0.0005 --@Yield
,4 --@Basis
) as Price;
This produces the following result.
{"columns":[{"field":"Price","headerClass":"ag-right-aligned-header","cellClass":"ag-right-aligned-cell"}],"rows":[{"Price":"100.026391953094"}]}
This security issued on 2014-07-01 matures on 2014-12-29 with an interest rate of 7.0% and a yield of 8.5%. Interest is calculated using the Actual/364 day-count convention.
SELECT
wct.PRICEMAT(
'2014-10-07' --@Settlement
,'2014-12-29' --@Maturity
,'2014-07-01' --@Issue
,0.07 --@Rate
,0.085 --@Yield
,9 --@Basis
) as Price;
This produces the following result.
{"columns":[{"field":"Price","headerClass":"ag-right-aligned-header","cellClass":"ag-right-aligned-cell"}],"rows":[{"Price":"99.628637367672"}]}
See Also
IAM - Price and/or yield of a security paying interest at maturity
IAMFACTORS - Factors for the price calculation of a security paying interest at maturity
ODDFPRICE - Price of a security with an odd first coupon
ODDLPRICE - Price of a bond with an odd last coupon
OFLPRICE - Price of a security with an odd last coupon.
PRICE - Price of a bond paying regular periodic interest
PRICEDISC - Price of a discount security
PRICESTEP - Calculate the Price of a security with step-up rates
YIELDMAT - Calculate the YIELD of an Interest-at-Maturity Security