Logo

T360

Updated 2023-10-07 00:01:14.367000

Syntax

SELECT [westclintech].[wct].[T360](
  <@Maturity, datetime,>
 ,<@Settlement, datetime,>
 ,<@CFdate, datetime,>
 ,<@Freq, int,>
 ,<@Method30360, int,>)

Description

Use the scalar function T360 to calculate the number of periods (fractional part included) from a cash flow date to a settlement date. The function supports several 30/360 day-count conventions and annual, semi-annual, quarterly, and monthly compounding.

Arguments

@Method30360

the 30/360 day-count convention to be use d in the calculation. @Method30360 must be of a type int or of a type that can be implicitly converted to int.

@CFDate

the date of interest for the function. @CFDate is an expression of type datetime or of a type that can be implicitly converted to datetime.

@Settlement

the minimum or first cash flow date in a series of cash flow dates. @Settlement is an expression of type datetime or of a type that can be implicitly converted to datetime.

@Maturity

the maximum or final cash flow date in a series of cash flow dates. @Maturity is an expression of type datetime or of a type that can be implicitly converted to datetime.

@Freq

the compounding frequency to be used in the calculation. @Freq must be of type int or of a type that can be implicitly converted to int.

Return Type

float

Remarks

Set @Method30360 to 0 for the US convention (also known as 30/360 US).

Set @Method30360 to 1 for the Special German convention (also known as 30E/360, 30/360 ICAM, and Eurobond).

Set @Method30360 to 2 for the German convention (also known as 30E360 ISDA).

If @Method30360 is NULL then @Method30360 is set to 0.

Set @Freq to 1 for annual compounding.

Set @Freq to 2 for semi-annual compounding.

Set @Freq to 4 for quarterly compounding.

Set @Freq to 12 for monthly compounding.

If @Freq is NULL then @Freq = 2.

If @CFDate is NULL then @CFDate equals the current date.

If @CFDate > @Maturity then NULL is returned.

If @CFDate < @Settlement then NULL is returned.

Examples

SELECT wct.T360(   '2022-03-16', --@Maturity

                   '2015-03-12', --@Settlement

                   '2015-03-31', --@CFdate

                   2,            --@Freq

                   0             --@Method30360

               ) as T360;

This produces the following result.

{"columns":[{"field":"T360","headerClass":"ag-right-aligned-header","cellClass":"ag-right-aligned-cell"}],"rows":[{"T360":"0.105555555555556"}]}

In this example, we have a series of cash flows and we want to calculate the time values for each cash flow in the set.

--Put some data into a table

SELECT cf,

       d

INTO #t

FROM

(

    VALUES

        (-1012864.58333333, '2015-03-18'),

        (6875, '2015-07-03'),

        (6875, '2016-01-03'),

        (6875, '2016-07-03'),

        (6875, '2017-01-03'),

        (6875, '2017-07-03'),

        (6875, '2018-01-03'),

        (1006875, '2018-07-03')

) n (cf, d);

--Calculate the T360 value for each cash flow

SELECT cf,

       d,

       wct.T360(   n.maturity,   --@Maturity

                   n.settlement, --@Settlement

                   d,            --@CFdate

                   2,            --@Freq

                   0             --@Method30360

               ) as T360

FROM

(SELECT MAX(d) as Maturity, MIN(d) as settlement FROM #t) n ,

#t;

This produces the following result.

{"columns":[{"field":"cf","headerClass":"ag-right-aligned-header","cellClass":"ag-right-aligned-cell"},{"field":"","headerClass":"ag-right-aligned-header","cellClass":"ag-right-aligned-cell"},{"field":"T360","headerClass":"ag-right-aligned-header","cellClass":"ag-right-aligned-cell"}],"rows":[{"cf":"-1012864.58333333","":"2015-03-18","T360":"0"},{"cf":"6875.00000000","":"2015-07-03","T360":"0.583333333333333"},{"cf":"6875.00000000","":"2016-01-03","T360":"1.58333333333333"},{"cf":"6875.00000000","":"2016-07-03","T360":"2.58333333333333"},{"cf":"6875.00000000","":"2017-01-03","T360":"3.58333333333333"},{"cf":"6875.00000000","":"2017-07-03","T360":"4.58333333333333"},{"cf":"6875.00000000","":"2018-01-03","T360":"5.58333333333333"},{"cf":"1006875.00000000","":"2018-07-03","T360":"6.58333333333333"}]}

See Also

BUSDAYS - Calculate the number of business days between two dates

BUSDAYSWE - Number of business days between 2 dates with specified weekend days

DAYS360 - Number of days using 30/360 day-count conventions

DAYSNL - Number of days excluding leap years

NUMMONTHS - Number of months between two dates

XIRRT - Internal rate of return for cash flows discounted using XNPVT

XNPVT - Calculate the net present value for a series of cash flows with irregular time periods—cash flows of varying amount occurring at various points in time.

YEARFRAC - Calculate the difference between two dates as a fraction of a year