Logo

SQL Server STEPCF Function

Updated 2023-10-05 16:11:00.287000

Description

Use the table-valued function STEPCF to return the cash flows of a stepped-rate bond. Stepped-rate bonds have different interest rates for different coupon periods and may even have a zero-rate period, usually at the commencement of the bond.

The first row in the resultant table is dated with settlement date passed into the function and is for the amount of the accrued interest. All the remaining rows are dated for the subsequent coupon dates and the amounts are the coupon amount. The row for the maturity date includes the coupon amount and the redemption amount.

The resultant table also includes the discount factor for each period as well as the discounted cash flow value for each period. The sum of the discounted cash flow values across all the periods is equal to the clean price of the bond.

Syntax

SELECT * FROM [westclintech].[wct].[STEPCF](
  <@Settlement, datetime,>
 ,<@Maturity, datetime,>
 ,<@Steps, nvarchar(max),>
 ,<@Yield, float,>
 ,<@Redemption, float,>
 ,<@Frequency, float,>
 ,<@Basis, nvarchar(4000),>
 ,<@Issue, datetime,>
 ,<@FirstCoupon, datetime,>
 ,<@LastCoupon, datetime,>)

Arguments

@Settlement

the settlement date of the bond. @Settlement is an expression that returns a datetime or smalldatetime value, or a character string in date format.

@Maturity

the maturity date of the bond. @Maturity is an expression that returns a datetime or smalldatetime value, or a character string in date format.

@Steps

an SQL statement which when executed will return the dates and rates associated with the step periods. The dates are the beginning of the coupon period is which the rate becomes effective. The rates are the annual coupon rates.

@Yield

the bond's yield. @Yield is an expression of type float or of a type that can be implicitly converted to float.

@Redemption

the bond's redemption value. Since the coupon amounts are calculation using a face amount of 100 the redemption value should be entered in relation to a 100 face value. @Redemption is an expression of type float or of a type that can be implicitly converted to float.

@Frequency

the number of coupon payments per year. For annual payments, @Frequency = 1; for semi-annual, @Frequency = 2; for quarterly, @Frequency = 4; for bi-monthly, @Frequency = 6; for monthly, @Frequency = 12. For bonds with @Basis = 'A/364' or 9, you can enter 364 for payments made every 52 weeks, 182 for payments made every 26 weeks, 91 for payments made every 13 weeks, 28 for payments made every 4 weeks, 14 for payments made every 2 weeks, and 7 for weekly payments. @Frequency 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.

@BasisDay count basis
0 , 'BOND'US (NASD) 30/360
1 , 'ACTUAL'Actual/Actual
2 , 'A360'Actual/360
3 , 'A365'Actual/365
4 , '30E/360 (ISDA)' , '30E/360' , 'ISDA' , '30E/360 ISDA' , 'EBOND'European 30/360
5 , '30/360' , '30/360 ISDA' , 'GERMAN'30/360 ISDA
6 , 'NL/ACT'No Leap Year/ACT
7 , 'NL/365'No Leap Year /365
8 , 'NL/360'No Leap Year /360
9 , 'A/365'Actual/364
10 , 'BOND NON-EOM'US (NASD) 30/360 non-end-of-month
11 , 'ACTUAL NON-EOM'Actual/Actual non-end-of-month
12 , 'A360 NON-EOM'Actual/360 non-end-of-month
13 , 'A365 NON-EOM'Actual/365 non-end-of-month
14 , '30E/360 NON-EOM' , '30E/360 ICMA NON-EOM' , 'EBOND NON-EOM'European 30/360 non-end-of-month
15 , '30/360 NON-EOM' , '30/360 ISDA NON-EOM' , 'GERMAN NON-EOM'30/360 ISDA non-end-of-month
16 , 'NL/ACT NON-EOM'No Leap Year/ACT non-end-of-month
17 , 'NL/365 NON-EOM'No Leap Year/365 non-end-of-month
18 , 'NL/360 NON-EOM'No Leap Year/360 non-end-of-month
19 , 'A/365 NON-EOM'Actual/364 non-end-of-month

@Issue

the issue date of the bond; the date from which the bond starts accruing interest. @Issue is an expression that returns a datetime or smalldatetime value, or a character string in date format.

@FirstCoupon

the first coupon date of the bond. The period from the issue date until the first coupon date defines the odd interest period. All subsequent coupon dates are assumed to occur at regular periodic intervals as defined by @Frequency. @FirstCoupon is an expression that returns a datetime or smalldatetime value, or a character string in date format.

@LastCoupon

the last coupon date of the bond prior to the maturity. The period from the last interest date until the maturity date defines the odd interest period. All coupon dates from @FirstCoupon to @LastCoupon are assumed to occur at regular periodic intervals as defined by @Frequency. @LastCoupon is an expression that returns a datetime or smalldatetime value, or a character string in date format.

Return Type

table

colNamecolDatatypecolDesc
date_pmtdatetimeDate of the cash flow.
amt_cashflowfloatAmount of the cash flow.
Nfloat Number of coupons from the settlement date to date_pmt.
PVFfloatPresent value factor
PVCFfloat Present value of the cash flow; PVF * amt_cashflow.
cumPVCFfloatSum of the PVCF.

Remarks

If @Settlement is NULL then @Settlement = GETDATE().

If @Step is NULL or returns no rows then0 is used.

If @Redemption is NULL then @Redemption = 100.

If @Frequency is NULL then @Frequency = 2.

If @Basis is NULL then @Basis = 1.

If @Maturity <= @Settlement then no rows are returned.

If @Frequency invalid STEPCF returns an error.

If @Basis invalid (see above list), STEPCF returns an error.

If @Maturity is NULL then no rows are returned.

To calculate the cash flows for a bond paying regular periodic interest just enter @Maturity and @Settlement.

To calculate the cash flows for bond with an odd first coupon where the settlement date is before the first coupon date, enter @Issue, @FirstCoupon, @Settlement, and @Maturity. If the settlement date is on or after the first coupon date just enter @Maturity and @Settlement.

To calculate the cash flows for a bond with an odd last coupon enter @LastCoupon, @Settlement, and @Maturity.

To calculate the cash flows for bond with an odd first coupon and an odd last coupon where the settlement date is before the first coupon date, enter @Issue, @FirstCoupon, @LastCoupon, @Settlement, and @Maturity. If the settlement date is on or after the first coupon date just enter @LastCoupon, @Maturity and @Settlement.

Examples

Example #1

In this example we generate the cash flows for bond maturing on 2034-06-15. The settlement date is 2014-05-01, the yield is 2.76%. The coupon is paid twice-yearly, the redemption value is 100 and the day-count convention is actual/actual. The step-rate schedule is passed in using a derived table.

SELECT *
FROM wct.STEPCF(   '2014-05-01', --@Settlement
                   '2034-06-15', --@Maturity
                   'SELECT
          *
        FROM (VALUES
          (''2029-12-15''' + ', .015),
          (''2024-12-15''' + ', .014),
          (''2020-12-15''' + ', .013),
          (''2016-12-15''' + ', .012),
          (''2012-12-15''' + ', .011)
          )n(date_step, rate_step)',
                                 --@Step
                   0.0276,       --@Yield
                   100,          --@Redemption
                   2,            --@Frequency
                   1,            --@Basis
                   NULL,         --@Issue
                   NULL,         --@FirstCoupon
                   NULL          --@LastCoupon
               );

This produces the following result.

date_pmtamt_cashflowNPVFPVCFcumPVCF
2014-05-01 00:00:00.000-0.41401098901098901-0.414010989010989-0.414010989010989
2014-06-15 00:00:00.0000.550.2472527472527470.9966169764754820.5481393370615150.134128348050526
2014-12-15 00:00:00.0000.551.247252747252750.9830508744086430.5406779809247540.67480632897528
2015-06-15 00:00:00.0000.552.247252747252750.9696694361892310.5333181899040771.20812451887936
2015-12-15 00:00:00.0000.553.247252747252750.9564701481448330.5260585814796581.73418310035901
2016-06-15 00:00:00.0000.554.247252747252750.9434505308195230.5188977919507382.25308089230975
2016-12-15 00:00:00.0000.555.247252747252750.9306081385081110.5118344761794612.76491536848921
2017-06-15 00:00:00.0000.66.247252747252750.9179405587967170.550764335278033.31567970376724
2017-12-15 00:00:00.0000.67.247252747252750.9054454121096040.5432672472657623.85894695103301
2018-06-15 00:00:00.0000.68.247252747252750.8931203512621860.5358722107573114.39481916179032
2018-12-15 00:00:00.0000.69.247252747252750.8809630610201080.5285778366120654.92339699840238
2019-06-15 00:00:00.0000.610.24725274725270.868971257664340.5213827545986045.44477975300099
2019-12-15 00:00:00.0000.611.24725274725270.8571426885621820.5142856131373095.95906536613829
2020-06-15 00:00:00.0000.612.24725274725270.8454751317441130.5072850790464686.46635044518476
2020-12-15 00:00:00.0000.613.24725274725270.8339663954864010.5003798372918416.9667302824766
2021-06-15 00:00:00.0000.6514.24725274725270.8226143178993890.5346993066346037.50142958911121
2021-12-15 00:00:00.0000.6515.24725274725270.8114167665213940.5274208982389068.02885048735011
2022-06-15 00:00:00.0000.6516.24725274725270.8003716379181240.5202415646467818.54909205199689
2022-12-15 00:00:00.0000.6517.24725274725270.7894768572875560.5131599572369119.06225200923381
2023-06-15 00:00:00.0000.6518.24725274725270.7787303780701870.5061747457456229.56842675497943
2023-12-15 00:00:00.0000.6519.24725274725270.7681301815645960.49928461801698710.0677113729964
2024-06-15 00:00:00.0000.6520.24725274725270.757674276548230.4924882797563510.5601996527528
2024-12-15 00:00:00.0000.6521.24725274725270.7473606989033640.48578445428718611.04598410704
2025-06-15 00:00:00.0000.722.24725274725270.7371875112481390.51603125787369811.5620153649136
2025-12-15 00:00:00.0000.723.24725274725270.7271528025726370.50900696180084612.0710223267145
2026-06-15 00:00:00.0000.724.24725274725270.7172546878798940.50207828151592612.5731006082304
2026-12-15 00:00:00.0000.725.24725274725270.7074913078318150.49524391548227113.0683445237127
2027-06-15 00:00:00.0000.726.24725274725270.6978608283998970.48850257987992813.5568471035926
2027-12-15 00:00:00.0000.727.24725274725270.6883614405207110.48185300836449814.0387001119571
2028-06-15 00:00:00.0000.728.24725274725270.6789913597560770.47529395182925414.5139940637864
2028-12-15 00:00:00.0000.729.24725274725270.6697488259578590.46882417817050114.9828182419569
2029-06-15 00:00:00.0000.730.24725274725270.6606321029373230.46244247205612615.445260714013
2029-12-15 00:00:00.0000.731.24725274725270.6516394781390050.45614763469730415.9014083487103
2030-06-15 00:00:00.0000.7532.24725274725270.6427692623190030.48207694673925216.3834852954496
2030-12-15 00:00:00.0000.7533.24725274725270.6340197892276610.47551484192074616.8590001373703
2031-06-15 00:00:00.0000.7534.24725274725270.6253894152965680.46904206147242617.3280421988427
2031-12-15 00:00:00.0000.7535.24725274725270.6168765193298170.46265738949736317.7906995883401
2032-06-15 00:00:00.0000.7536.24725274725270.6084795021994640.45635962664959818.2470592149897
2032-12-15 00:00:00.0000.7537.24725274725270.6001967865451410.45014758990885618.6972068048985
2033-06-15 00:00:00.0000.7538.24725274725270.5920268164777480.44402011235831119.1412269172569
2033-12-15 00:00:00.0000.7539.24725274725270.5839680572871850.43797604296538919.5792029602222
2034-06-15 00:00:00.000100.7540.24725274725270.57601899515405958.033913761771577.6131167219937

Example #2

In this example we use the same data but select the step rate data from a temporary table rather than a derived table.

SELECT *
INTO #t
FROM
(
    VALUES
        ('2029-12-15', .015),
        ('2024-12-15', .014),
        ('2020-12-15', .013),
        ('2016-12-15', .012),
        ('2012-12-15', .011)
) n (date_step, rate_step);
SELECT *
FROM wct.STEPCF(   '2014-05-01',       --@Settlement
                   '2034-06-15',       --@Maturity
                   'SELECT * FROM #t', --@Step
                   0.0276,             --@Yield
                   100,                --@Redemption
                   2,                  --@Frequency
                   1,                  --@Basis
                   NULL,               --@Issue
                   NULL,               --@FirstCoupon
                   NULL                --@LastCoupon
               );

This produces the following result.

date_pmtamt_cashflowNPVFPVCFcumPVCF
2014-05-01 00:00:00.000-0.41401098901098901-0.414010989010989-0.414010989010989
2014-06-15 00:00:00.0000.550.2472527472527470.9966169764754820.5481393370615150.134128348050526
2014-12-15 00:00:00.0000.551.247252747252750.9830508744086430.5406779809247540.67480632897528
2015-06-15 00:00:00.0000.552.247252747252750.9696694361892310.5333181899040771.20812451887936
2015-12-15 00:00:00.0000.553.247252747252750.9564701481448330.5260585814796581.73418310035901
2016-06-15 00:00:00.0000.554.247252747252750.9434505308195230.5188977919507382.25308089230975
2016-12-15 00:00:00.0000.555.247252747252750.9306081385081110.5118344761794612.76491536848921
2017-06-15 00:00:00.0000.66.247252747252750.9179405587967170.550764335278033.31567970376724
2017-12-15 00:00:00.0000.67.247252747252750.9054454121096040.5432672472657623.85894695103301
2018-06-15 00:00:00.0000.68.247252747252750.8931203512621860.5358722107573114.39481916179032
2018-12-15 00:00:00.0000.69.247252747252750.8809630610201080.5285778366120654.92339699840238
2019-06-15 00:00:00.0000.610.24725274725270.868971257664340.5213827545986045.44477975300099
2019-12-15 00:00:00.0000.611.24725274725270.8571426885621820.5142856131373095.95906536613829
2020-06-15 00:00:00.0000.612.24725274725270.8454751317441130.5072850790464686.46635044518476
2020-12-15 00:00:00.0000.613.24725274725270.8339663954864010.5003798372918416.9667302824766
2021-06-15 00:00:00.0000.6514.24725274725270.8226143178993890.5346993066346037.50142958911121
2021-12-15 00:00:00.0000.6515.24725274725270.8114167665213940.5274208982389068.02885048735011
2022-06-15 00:00:00.0000.6516.24725274725270.8003716379181240.5202415646467818.54909205199689
2022-12-15 00:00:00.0000.6517.24725274725270.7894768572875560.5131599572369119.06225200923381
2023-06-15 00:00:00.0000.6518.24725274725270.7787303780701870.5061747457456229.56842675497943
2023-12-15 00:00:00.0000.6519.24725274725270.7681301815645960.49928461801698710.0677113729964
2024-06-15 00:00:00.0000.6520.24725274725270.757674276548230.4924882797563510.5601996527528
2024-12-15 00:00:00.0000.6521.24725274725270.7473606989033640.48578445428718611.04598410704
2025-06-15 00:00:00.0000.722.24725274725270.7371875112481390.51603125787369811.5620153649136
2025-12-15 00:00:00.0000.723.24725274725270.7271528025726370.50900696180084612.0710223267145
2026-06-15 00:00:00.0000.724.24725274725270.7172546878798940.50207828151592612.5731006082304
2026-12-15 00:00:00.0000.725.24725274725270.7074913078318150.49524391548227113.0683445237127
2027-06-15 00:00:00.0000.726.24725274725270.6978608283998970.48850257987992813.5568471035926
2027-12-15 00:00:00.0000.727.24725274725270.6883614405207110.48185300836449814.0387001119571
2028-06-15 00:00:00.0000.728.24725274725270.6789913597560770.47529395182925414.5139940637864
2028-12-15 00:00:00.0000.729.24725274725270.6697488259578590.46882417817050114.9828182419569
2029-06-15 00:00:00.0000.730.24725274725270.6606321029373230.46244247205612615.445260714013
2029-12-15 00:00:00.0000.731.24725274725270.6516394781390050.45614763469730415.9014083487103
2030-06-15 00:00:00.0000.7532.24725274725270.6427692623190030.48207694673925216.3834852954496
2030-12-15 00:00:00.0000.7533.24725274725270.6340197892276610.47551484192074616.8590001373703
2031-06-15 00:00:00.0000.7534.24725274725270.6253894152965680.46904206147242617.3280421988427
2031-12-15 00:00:00.0000.7535.24725274725270.6168765193298170.46265738949736317.7906995883401
2032-06-15 00:00:00.0000.7536.24725274725270.6084795021994640.45635962664959818.2470592149897
2032-12-15 00:00:00.0000.7537.24725274725270.6001967865451410.45014758990885618.6972068048985
2033-06-15 00:00:00.0000.7538.24725274725270.5920268164777480.44402011235831119.1412269172569
2033-12-15 00:00:00.0000.7539.24725274725270.5839680572871850.43797604296538919.5792029602222
2034-06-15 00:00:00.000100.7540.24725274725270.57601899515405958.033913761771577.6131167219937

Example #3

In this example, we have a bond with zero first step.

SELECT *
INTO #t
FROM
(
    VALUES
        ('2040-12-15', .018),
        ('2036-12-15', .017),
        ('2032-12-15', .016),
        ('2028-12-15', .015),
        ('2024-12-15', .014)
) n (date_step, rate_step);
SELECT *
FROM wct.STEPCF(   '2016-07-01',       --@Settlement
                   '2044-06-15',       --@Maturity
                   'SELECT * FROM #t', --@Step
                   0.0290,             --@Yield
                   100,                --@Redemption
                   2,                  --@Frequency
                   1,                  --@Basis
                   NULL,               --@Issue
                   NULL,               --@FirstCoupon
                   NULL                --@LastCoupon
               );

This produces the following result.

date_pmtamt_cashflowNPVFPVCFcumPVCF
2016-07-01 00:00:00.00000100
2016-12-15 00:00:00.00000.9125683060109290.98694869259716100
2017-06-15 00:00:00.00001.912568306010930.97284247668522600
2017-12-15 00:00:00.00002.912568306010930.95893787746202600
2018-06-15 00:00:00.00003.912568306010930.94523201326961700
2018-12-15 00:00:00.00004.912568306010930.93172204363688200
2019-06-15 00:00:00.00005.912568306010930.91840516869086500
2019-12-15 00:00:00.00006.912568306010930.90527862857650600
2020-06-15 00:00:00.00007.912568306010930.89233970288467800
2020-12-15 00:00:00.00008.912568306010930.87958571008839600
2021-06-15 00:00:00.00009.912568306010930.86701400698708400
2021-12-15 00:00:00.000010.91256830601090.85462198815878100
2022-06-15 00:00:00.000011.91256830601090.84240708542018900
2022-12-15 00:00:00.000012.91256830601090.8303667672944200
2023-06-15 00:00:00.000013.91256830601090.81849853848636800
2023-12-15 00:00:00.000014.91256830601090.80679993936556700
2024-06-15 00:00:00.000015.91256830601090.79526854545644900
2024-12-15 00:00:00.000016.91256830601090.78390196693587800
2025-06-15 00:00:00.0000.717.91256830601090.7726978481378790.5408884936965150.540888493696515
2025-12-15 00:00:00.0000.718.91256830601090.761653867065430.5331577069458011.07404620064232
2026-06-15 00:00:00.0000.719.91256830601090.7507677349092460.5255374144364731.59958361507879
2026-12-15 00:00:00.0000.720.91256830601090.7400371955734320.5180260369014022.11760965198019
2027-06-15 00:00:00.0000.721.91256830601090.7294600252079170.5106220176455422.62823166962573
2027-12-15 00:00:00.0000.722.91256830601090.7190340317475770.5033238222233043.13155549184904
2028-06-15 00:00:00.0000.723.91256830601090.7087570544579370.4961299381205563.62768542996959
2028-12-15 00:00:00.0000.724.91256830601090.698626963487370.4890388744411594.11672430441075
2029-06-15 00:00:00.0000.7525.91256830601090.6886416594256980.5164812445692734.63320554898003
2029-12-15 00:00:00.0000.7526.91256830601090.6787990728690960.5090993046518225.14230485363185
2030-06-15 00:00:00.0000.7527.91256830601090.6690971639912230.5018228729934175.64412772662527
2030-12-15 00:00:00.0000.7528.91256830601090.6595339221204760.4946504415903576.13877816821562
2031-06-15 00:00:00.0000.7529.91256830601090.6501073653232890.4875805239924676.62635869220809
2031-12-15 00:00:00.0000.7530.91256830601090.6408155399933850.4806116549950397.10697034720313
2032-06-15 00:00:00.0000.7531.91256830601090.6316565204469050.4737423903351797.58071273753831
2032-12-15 00:00:00.0000.7532.91256830601090.6226284085233170.4669713063924888.04768404393079
2033-06-15 00:00:00.0000.833.91256830601090.6137293331920320.4909834665536268.53866751048442
2033-12-15 00:00:00.0000.834.91256830601090.6049574501646450.4839659601317169.02263347061614
2034-06-15 00:00:00.0000.835.91256830601090.5963109415127110.4770487532101699.4996822238263
2034-12-15 00:00:00.0000.836.91256830601090.5877880152909910.4702304122327939.9699126360591
2035-06-15 00:00:00.0000.837.91256830601090.5793869051660830.46350952413286710.433422160192
2035-12-15 00:00:00.0000.838.91256830601090.5711058700503530.45688469604028210.8903068562322
2036-06-15 00:00:00.0000.839.91256830601090.5629431937411070.45035455499288611.3406614112251
2036-12-15 00:00:00.0000.840.91256830601090.5548971845649160.44391774765193311.7845791588771
2037-06-15 00:00:00.0000.8541.91256830601090.5469661750270240.4649212487729712.24950040765
2037-12-15 00:00:00.0000.8542.91256830601090.539148521465770.45827624324590512.7077766508959
2038-06-15 00:00:00.0000.8543.91256830601090.5314426037119470.45172621315515513.1595028640511
2038-12-15 00:00:00.0000.8544.91256830601090.5238468247530280.44526980104007413.6047726650912
2039-06-15 00:00:00.0000.8545.91256830601090.5163596104021960.43890566884186714.043678333933
2039-12-15 00:00:00.0000.8546.91256830601090.5089794089721010.43263249762628614.4763108315593
2040-06-15 00:00:00.0000.8547.91256830601090.5017046909532790.42644898731028714.9027598188696
2040-12-15 00:00:00.0000.8548.91256830601090.494533948697170.42035385639259415.3231136752622
2041-06-15 00:00:00.0000.949.91256830601090.4874656961036660.438719126493315.7618328017555
2041-12-15 00:00:00.0000.950.91256830601090.4804984683131260.43244862148181416.1942814232373
2042-06-15 00:00:00.0000.951.91256830601090.4736308214027860.42626773926250716.6205491624998
2042-12-15 00:00:00.0000.952.91256830601090.4668613320875170.42017519887876517.0407243613786
2043-06-15 00:00:00.0000.953.91256830601090.4601885974248570.41416973768237117.454894099061
2043-12-15 00:00:00.0000.954.91256830601090.4536112345242550.40825011107182917.8631442101328
2044-06-15 00:00:00.000100.955.91256830601090.44712788026047845.115203118282262.978347328415

Example #4

In this example we use the same bond but the settlement is in the final coupon period.

SELECT *
INTO #t
FROM
(
    VALUES
        ('2040-12-15', .018),
        ('2036-12-15', .017),
        ('2032-12-15', .016),
        ('2028-12-15', .015),
        ('2024-12-15', .014)
) n (date_step, rate_step);
SELECT *
FROM wct.STEPCF(   '2044-04-01',       --@Settlement
                   '2044-06-15',       --@Maturity
                   'SELECT * FROM #t', --@Step
                   0.0290,             --@Yield
                   100,                --@Redemption
                   2,                  --@Frequency
                   1,                  --@Basis
                   NULL,               --@Issue
                   NULL,               --@FirstCoupon
                   NULL                --@LastCoupon
               );

This produces the following result.

date_pmtamt_cashflowNPVFPVCFcumPVCF
2044-04-01 00:00:00.000-0.53114754098360701-0.531147540983607-0.531147540983607
2044-06-15 00:00:00.000100.90.4098360655737710.994092483194133100.30393155428899.7727840133044

Example #5

In this example we have a bond with an odd first coupon period.

SELECT *
INTO #t
FROM
(
    VALUES
        ('2040-12-15', .018),
        ('2035-12-15', .016),
        ('2030-12-15', .015),
        ('2025-12-15', .014),
        ('2020-12-15', .013),
        ('2015-12-01', .012)
) n (date_step, rate_step);
SELECT *
FROM wct.STEPCF(   '2016-04-01',       --@Settlement
                   '2044-06-15',       --@Maturity
                   'SELECT * FROM #t', --@Step
                   0.03125,            --@Yield
                   100,                --@Redemption
                   2,                  --@Frequency
                   1,                  --@Basis
                   '2015-12-01',       --@Issue
                   '2016-06-15',       --@FirstCoupon
                   NULL                --@LastCoupon
               );

This produces the following result.

date_pmtamt_cashflowNPVFPVCFcumPVCF
2016-04-01 00:00:00.000-0.401-0.4-0.4
2016-06-15 00:00:00.0000.6459016393442620.4098360655737710.9936659702679030.6418104791566450.241810479156645
2016-12-15 00:00:00.0000.61.409836065573770.978378801494550.587027280896730.828837760053376
2017-06-15 00:00:00.0000.62.409836065573770.9633268199330960.5779960919598571.40683385201323
2017-12-15 00:00:00.0000.63.409836065573770.948506407318740.5691038443912441.97593769640448
2018-06-15 00:00:00.0000.64.409836065573770.9339140010522980.5603484006313792.53628609703586
2018-12-15 00:00:00.0000.65.409836065573770.9195460933438020.5517276560062813.08801375304214
2019-06-15 00:00:00.0000.66.409836065573770.9053992303692820.5432395382215693.63125329126371
2019-12-15 00:00:00.0000.67.409836065573770.8914700114405240.5348820068643144.16613529812802
2020-06-15 00:00:00.0000.68.409836065573770.8777550881875920.5266530529125554.69278835104058
2020-12-15 00:00:00.0000.69.409836065573770.8642511637539370.5185506982523625.21133904929294
2021-06-15 00:00:00.0000.6510.40983606557380.8509549920038770.553120744802525.76445979409546
2021-12-15 00:00:00.0000.6511.40983606557380.8378633767422790.5446111948824816.30907098897794
2022-06-15 00:00:00.0000.6512.40983606557380.8249731709462440.5362325611150586.845303550093
2022-12-15 00:00:00.0000.6513.40983606557380.8122812760086090.5279828294055967.37328637949859
2023-06-15 00:00:00.0000.6514.40983606557380.7997846409930920.519860016645517.8931463961441
2023-12-15 00:00:00.0000.6515.40983606557380.7874802619008910.5118621702355798.40500856637968
2024-06-15 00:00:00.0000.6516.40983606557380.7753651809485690.503987367616578.90899593399625
2024-12-15 00:00:00.0000.6517.40983606557380.7634364858570530.4962337158070849.40522964980334
2025-06-15 00:00:00.0000.6518.40983606557380.751691309151560.4885993509485149.89382900075185
2025-12-15 00:00:00.0000.6519.40983606557380.7401268274723050.48108243785699810.3749114386088
2026-06-15 00:00:00.0000.720.40983606557380.7287402608958080.51011818262706610.8850296212359
2026-12-15 00:00:00.0000.721.40983606557380.7175288722666420.50227021058664911.3872998318226
2027-06-15 00:00:00.0000.722.40983606557380.7064899665394630.49454297657762411.8818428084002
2027-12-15 00:00:00.0000.723.40983606557380.6956208901311630.48693462309181412.368777431492
2028-06-15 00:00:00.0000.724.40983606557380.6849190302829920.47944332119809412.8482207526901
2028-12-15 00:00:00.0000.725.40983606557380.6743818144324840.47206727010273913.3202880227928
2029-06-15 00:00:00.0000.726.40983606557380.6640067095950610.46480469671654313.7850927195094
2029-12-15 00:00:00.0000.727.40983606557380.6537912217551370.45765385522859614.242746574738
2030-06-15 00:00:00.0000.728.40983606557380.6437328952665970.45061302668661814.6933596014246
2030-12-15 00:00:00.0000.729.40983606557380.6338293122624960.44368051858374715.1370401200083
2031-06-15 00:00:00.0000.7530.40983606557380.6240780920738420.46805856905538115.6050986890637
2031-12-15 00:00:00.0000.7531.40983606557380.6144768906573210.46085766799299116.0659563570567
2032-06-15 00:00:00.0000.7532.40983606557380.6050234000318240.45376755002386816.5197239070806
2032-12-15 00:00:00.0000.7533.40983606557380.5957153477236420.44678651079273216.9665104178733
2033-06-15 00:00:00.0000.7534.40983606557380.5865504962202020.43991287216515117.4064232900385
2033-12-15 00:00:00.0000.7535.40983606557380.5775266424321980.43314498182414917.8395682718626
2034-06-15 00:00:00.0000.7536.40983606557380.5686416171640110.42648121287300818.2660494847356
2034-12-15 00:00:00.0000.7537.40983606557380.5598932845922570.41991996344419318.6859694481798
2035-06-15 00:00:00.0000.7538.40983606557380.5512795417523760.41345965631428219.0994291044941
2035-12-15 00:00:00.0000.7539.40983606557380.5427983180331090.40709873852483119.5065278430189
2036-06-15 00:00:00.0000.840.40983606557380.5344475746787530.42755805974300319.9340859027619
2036-12-15 00:00:00.0000.841.40983606557380.526225304299080.42098024343926420.3550661462012
2037-06-15 00:00:00.0000.842.40983606557380.5181295303867870.41450362430942920.7695697705106
2037-12-15 00:00:00.0000.843.40983606557380.5101583068423750.408126645473921.1776964159845
2038-06-15 00:00:00.0000.844.40983606557380.5023097175063380.4018477740050721.5795441899896
2038-12-15 00:00:00.0000.845.40983606557380.4945818756985480.39566550055883921.9752096905484
2039-06-15 00:00:00.0000.846.40983606557380.4869729237647240.3895783390117822.3647880295602
2039-12-15 00:00:00.0000.847.40983606557380.4794810326298830.38358482610390622.7483728556641
2040-06-15 00:00:00.0000.848.40983606557380.4721044013586540.37768352108692323.126056376751
2040-12-15 00:00:00.0000.849.40983606557380.4648412567223670.37187300537789323.4979293821289
2041-06-15 00:00:00.0000.950.40983606557380.4576898527727920.41192086749551323.9098502496244
2041-12-15 00:00:00.0000.951.40983606557380.4506484704224410.40558362338019724.3154338730046
2042-06-15 00:00:00.0000.952.40983606557380.4437154170313270.39934387532819424.7147777483328
2042-12-15 00:00:00.0000.953.40983606557380.4368890260000760.39320012340006825.1079778717329
2043-06-15 00:00:00.0000.954.40983606557380.4301676563693050.38715089073237525.4951287624653
2043-12-15 00:00:00.0000.955.40983606557380.4235496924251620.38119472318264625.8763234856479
2044-06-15 00:00:00.000100.956.40983606557380.41703354331092942.078684520072767.9550080057206

Example #6

In this example we have a bond with an odd last coupon period.

SELECT *
INTO #t
FROM
(
    VALUES
        ('2040-12-01', .018),
        ('2035-12-01', .016),
        ('2030-12-01', .015),
        ('2025-12-01', .014),
        ('2020-12-01', .013),
        ('2015-12-01', .012)
) n (date_step, rate_step);
SELECT *
FROM wct.STEPCF(   '2016-04-01',       --@Settlement
                   '2044-06-15',       --@Maturity
                   'SELECT * FROM #t', --@Step
                   0.02125,            --@Yield
                   100,                --@Redemption
                   2,                  --@Frequency
                   1,                  --@Basis
                   NULL,               --@Issue
                   NULL,               --@FirstCoupon
                   '2043-12-01'        --@LastCoupon
               );

This produces the following result.

date_pmt                          amt_cashflow                      N                    PVF                   PVCF                cumPVCF
----------------------- ---------------------- ---------------------- ---------------------- ---------------------- ----------------------
2016-04-01 00:00:00.000                   -0.4                      0                      1                   -0.4                   -0.4
2016-06-01 00:00:00.000                    0.6      0.333333333333333      0.996483214643168      0.597889928785901      0.197889928785901
2016-12-01 00:00:00.000                    0.6       1.33333333333333      0.986006891421812      0.591604134853087      0.789494063638988
2017-06-01 00:00:00.000                    0.6       2.33333333333333      0.975640708889857      0.585384425333914        1.3748784889729
2017-12-01 00:00:00.000                    0.6       3.33333333333333       0.96538350910561      0.579230105463366       1.95410859443627
2018-06-01 00:00:00.000                    0.6       4.33333333333333       0.95523414630116      0.573140487780696       2.52724908221696
2018-12-01 00:00:00.000                    0.6       5.33333333333333      0.945191486754394      0.567114892052636        3.0943639742696
2019-06-01 00:00:00.000                    0.6       6.33333333333333      0.935254408662357      0.561152645197414       3.65551661946701
2019-12-01 00:00:00.000                    0.6       7.33333333333333      0.925421802015937      0.555253081209562       4.21076970067658
2020-06-01 00:00:00.000                    0.6       8.33333333333333      0.915692568475881      0.549415541085528        4.7601852417621
2020-12-01 00:00:00.000                    0.6       9.33333333333333      0.906065621250098      0.543639372750059       5.30382461451216
2021-06-01 00:00:00.000                   0.65       10.3333333333333      0.896539884972268      0.582750925231974       5.88657553974414
2021-12-01 00:00:00.000                   0.65       11.3333333333333      0.887114295581712      0.576624292128113       6.46319983187225
2022-06-01 00:00:00.000                   0.65       12.3333333333333      0.877787800204539       0.57056207013295        7.0337619020052
2022-12-01 00:00:00.000                   0.65       13.3333333333333      0.868559357036031       0.56456358207342       7.59832548407862
2023-06-01 00:00:00.000                   0.65       14.3333333333333      0.859427935224273      0.558628157895778        8.1569536419744
2023-12-01 00:00:00.000                   0.65       15.3333333333333      0.850392514755001      0.552755134590751       8.70970877656515
2024-06-01 00:00:00.000                   0.65       16.3333333333333      0.841452086337663      0.546943856119481       9.25665263268463
2024-12-01 00:00:00.000                   0.65       17.3333333333333      0.832605651292679      0.541193673340241       9.79784630602487
2025-06-01 00:00:00.000                   0.65       18.3333333333333       0.82385222143988      0.535503943935922       10.3333502499608
2025-12-01 00:00:00.000                   0.65       19.3333333333333      0.815190818988131      0.529874032342285       10.8632242823031
2026-06-01 00:00:00.000                    0.7       20.3333333333333      0.806620476426104      0.564634333498273       11.4278586158014
2026-12-01 00:00:00.000                    0.7       21.3333333333333      0.798140236414203      0.558698165489942       11.9865567812913
2027-06-01 00:00:00.000                    0.7       22.3333333333333      0.789749151677628      0.552824406174339       12.5393811874656
2027-12-01 00:00:00.000                    0.7       23.3333333333333      0.781446284900559      0.547012399430391        13.086393586896
2028-06-01 00:00:00.000                    0.7       24.3333333333333      0.773230708621456      0.541261496035019        13.627655082931
2028-12-01 00:00:00.000                    0.7       25.3333333333333      0.765101505129456      0.535571053590619       14.1632261365217
2029-06-01 00:00:00.000                    0.7       26.3333333333333      0.757057766361861      0.529940436453303        14.693166572975
2029-12-01 00:00:00.000                    0.7       27.3333333333333      0.749098593802707      0.524369015661895       15.2175355886369
2030-06-01 00:00:00.000                    0.7       28.3333333333333      0.741223098382394      0.518856168867676       15.7363917575045
2030-12-01 00:00:00.000                    0.7       29.3333333333333      0.733430400378374      0.513401280264862       16.2497930377694
2031-06-01 00:00:00.000                   0.75       30.3333333333333      0.725719629316882      0.544289721987661       16.7940827597571
2031-12-01 00:00:00.000                   0.75       31.3333333333333      0.718089923875703      0.538567442906777       17.3326502026638
2032-06-01 00:00:00.000                   0.75       32.3333333333333      0.710540431787955      0.532905323840967       17.8655555265048
2032-12-01 00:00:00.000                   0.75       33.3333333333333      0.703070309746895      0.527302732310171        18.392858258815
2033-06-01 00:00:00.000                   0.75       34.3333333333333      0.695678723311708      0.521759042483781       18.9146173012988
2033-12-01 00:00:00.000                   0.75       35.3333333333333      0.688364846814306      0.516273635110729       19.4308909364095
2034-06-01 00:00:00.000                   0.75       36.3333333333333      0.681127863267093       0.51084589745032       19.9417368338598
2034-12-01 00:00:00.000                   0.75       37.3333333333333      0.673966964271706      0.505475223203779       20.4472120570636
2035-06-01 00:00:00.000                   0.75       38.3333333333333      0.666881349928713      0.500161012446535       20.9473730695101
2035-12-01 00:00:00.000                   0.75       39.3333333333333      0.659870228748263      0.494902671561197       21.4422757410713
2036-06-01 00:00:00.000                    0.8       40.3333333333333       0.65293281756167      0.522346254049336       21.9646219951207
2036-12-01 00:00:00.000                    0.8       41.3333333333333      0.646068341433935      0.516854673147148       22.4814766682678
2037-06-01 00:00:00.000                    0.8       42.3333333333333      0.639276033577177      0.511420826861742       22.9928974951295
2037-12-01 00:00:00.000                    0.8       43.3333333333333      0.632555135264987      0.506044108211989       23.4989416033415
2038-06-01 00:00:00.000                    0.8       44.3333333333333      0.625904895747668      0.500723916598134       23.9996655199397
2038-12-01 00:00:00.000                    0.8       45.3333333333333      0.619324572168378      0.495459657734703       24.4951251776744
2039-06-01 00:00:00.000                    0.8       46.3333333333333      0.612813429480152      0.490250743584121       24.9853759212585
2039-12-01 00:00:00.000                    0.8       47.3333333333333      0.606370740363787      0.485096592291029       25.4704725135495
2040-06-01 00:00:00.000                    0.8       48.3333333333333      0.599995785146604      0.479996628117283       25.9504691416668
2040-12-01 00:00:00.000                    0.8       49.3333333333333      0.593687851722057      0.474950281377646       26.4254194230444
2041-06-01 00:00:00.000                    0.9       50.3333333333333      0.587446235470186      0.528701611923167       26.9541210349676
2041-12-01 00:00:00.000                    0.9       51.3333333333333       0.58127023917891      0.523143215261019       27.4772642502286
2042-06-01 00:00:00.000                    0.9       52.3333333333333      0.575159172966145       0.51764325566953       27.9949075058982
2042-12-01 00:00:00.000                    0.9       53.3333333333333      0.569112354202741      0.512201118782467       28.5071086246806
2043-06-01 00:00:00.000                    0.9       54.3333333333333      0.563129107436231      0.506816196692608       29.0139248213732
2043-12-01 00:00:00.000                    0.9       55.3333333333333       0.55720876431538      0.501487887883842       29.5154127092571
2044-06-15 00:00:00.000       100.968852459016       56.4098360655738       0.55090504709795       55.6242504193603       85.1396631286174

Example #7

In this example we have a bond with odd first coupon and an odd last coupon period.

SELECT *
INTO #t
FROM
(
    VALUES
        ('2040-12-01', .018),
        ('2035-12-01', .016),
        ('2030-12-01', .015),
        ('2025-12-01', .014),
        ('2020-12-01', .013),
        ('2015-12-01', .012)
) n (date_step, rate_step);
SELECT *
FROM wct.STEPCF(   '2016-04-01',       --@Settlement
                   '2044-06-15',       --@Maturity
                   'SELECT * FROM #t', --@Step
                   0.02125,            --@Yield
                   100,                --@Redemption
                   2,                  --@Frequency
                   1,                  --@Basis
                   '2015-11-14',       --@Issue
                   '2016-06-01',       --@FirstCoupon
                   '2043-12-01'        --@LastCoupon
               );

This produces the following result.

date_pmtamt_cashflowNPVFPVCFcumPVCF
2016-04-01 00:00:00.000-0.45573770491803301-0.455737704918033-0.455737704918033
2016-06-01 00:00:00.0000.6557377049180330.3333333333333330.9964832146431680.6534316161594550.197693911241422
2016-12-01 00:00:00.0000.61.333333333333330.9860068914218120.5916041348530870.789298046094509
2017-06-01 00:00:00.0000.62.333333333333330.9756407088898570.5853844253339141.37468247142842
2017-12-01 00:00:00.0000.63.333333333333330.965383509105610.5792301054633661.95391257689179
2018-06-01 00:00:00.0000.64.333333333333330.955234146301160.5731404877806962.52705306467248
2018-12-01 00:00:00.0000.65.333333333333330.9451914867543940.5671148920526363.09416795672512
2019-06-01 00:00:00.0000.66.333333333333330.9352544086623570.5611526451974143.65532060192254
2019-12-01 00:00:00.0000.67.333333333333330.9254218020159370.5552530812095624.2105736831321
2020-06-01 00:00:00.0000.68.333333333333330.9156925684758810.5494155410855284.75998922421763
2020-12-01 00:00:00.0000.69.333333333333330.9060656212500980.5436393727500595.30362859696768
2021-06-01 00:00:00.0000.6510.33333333333330.8965398849722680.5827509252319745.88637952219966
2021-12-01 00:00:00.0000.6511.33333333333330.8871142955817120.5766242921281136.46300381432777
2022-06-01 00:00:00.0000.6512.33333333333330.8777878002045390.570562070132957.03356588446072
2022-12-01 00:00:00.0000.6513.33333333333330.8685593570360310.564563582073427.59812946653414
2023-06-01 00:00:00.0000.6514.33333333333330.8594279352242730.5586281578957788.15675762442992
2023-12-01 00:00:00.0000.6515.33333333333330.8503925147550010.5527551345907518.70951275902067
2024-06-01 00:00:00.0000.6516.33333333333330.8414520863376630.5469438561194819.25645661514015
2024-12-01 00:00:00.0000.6517.33333333333330.8326056512926790.5411936733402419.79765028848039
2025-06-01 00:00:00.0000.6518.33333333333330.823852221439880.53550394393592210.3331542324163
2025-12-01 00:00:00.0000.6519.33333333333330.8151908189881310.52987403234228510.8630282647586
2026-06-01 00:00:00.0000.720.33333333333330.8066204764261040.56463433349827311.4276625982569
2026-12-01 00:00:00.0000.721.33333333333330.7981402364142030.55869816548994211.9863607637468
2027-06-01 00:00:00.0000.722.33333333333330.7897491516776280.55282440617433912.5391851699212
2027-12-01 00:00:00.0000.723.33333333333330.7814462849005590.54701239943039113.0861975693515
2028-06-01 00:00:00.0000.724.33333333333330.7732307086214560.54126149603501913.6274590653866
2028-12-01 00:00:00.0000.725.33333333333330.7651015051294560.53557105359061914.1630301189772
2029-06-01 00:00:00.0000.726.33333333333330.7570577663618610.52994043645330314.6929705554305
2029-12-01 00:00:00.0000.727.33333333333330.7490985938027070.52436901566189515.2173395710924
2030-06-01 00:00:00.0000.728.33333333333330.7412230983823940.51885616886767615.7361957399601
2030-12-01 00:00:00.0000.729.33333333333330.7334304003783740.51340128026486216.2495970202249
2031-06-01 00:00:00.0000.7530.33333333333330.7257196293168820.54428972198766116.7938867422126
2031-12-01 00:00:00.0000.7531.33333333333330.7180899238757030.53856744290677717.3324541851194
2032-06-01 00:00:00.0000.7532.33333333333330.7105404317879550.53290532384096717.8653595089603
2032-12-01 00:00:00.0000.7533.33333333333330.7030703097468950.52730273231017118.3926622412705
2033-06-01 00:00:00.0000.7534.33333333333330.6956787233117080.52175904248378118.9144212837543
2033-12-01 00:00:00.0000.7535.33333333333330.6883648468143060.51627363511072919.430694918865
2034-06-01 00:00:00.0000.7536.33333333333330.6811278632670930.5108458974503219.9415408163153
2034-12-01 00:00:00.0000.7537.33333333333330.6739669642717060.50547522320377920.4470160395191
2035-06-01 00:00:00.0000.7538.33333333333330.6668813499287130.50016101244653520.9471770519656
2035-12-01 00:00:00.0000.7539.33333333333330.6598702287482630.49490267156119721.4420797235268
2036-06-01 00:00:00.0000.840.33333333333330.652932817561670.52234625404933621.9644259775762
2036-12-01 00:00:00.0000.841.33333333333330.6460683414339350.51685467314714822.4812806507233
2037-06-01 00:00:00.0000.842.33333333333330.6392760335771770.51142082686174222.9927014775851
2037-12-01 00:00:00.0000.843.33333333333330.6325551352649870.50604410821198923.4987455857971
2038-06-01 00:00:00.0000.844.33333333333330.6259048957476680.50072391659813423.9994695023952
2038-12-01 00:00:00.0000.845.33333333333330.6193245721683780.49545965773470324.4949291601299
2039-06-01 00:00:00.0000.846.33333333333330.6128134294801520.49025074358412124.985179903714
2039-12-01 00:00:00.0000.847.33333333333330.6063707403637870.48509659229102925.470276496005
2040-06-01 00:00:00.0000.848.33333333333330.5999957851466040.47999662811728325.9502731241223
2040-12-01 00:00:00.0000.849.33333333333330.5936878517220570.47495028137764626.4252234055
2041-06-01 00:00:00.0000.950.33333333333330.5874462354701860.52870161192316726.9539250174231
2041-12-01 00:00:00.0000.951.33333333333330.581270239178910.52314321526101927.4770682326842
2042-06-01 00:00:00.0000.952.33333333333330.5751591729661450.5176432556695327.9947114883537
2042-12-01 00:00:00.0000.953.33333333333330.5691123542027410.51220111878246728.5069126071361
2043-06-01 00:00:00.0000.954.33333333333330.5631291074362310.50681619669260829.0137288038288
2043-12-01 00:00:00.0000.90000000000000655.33333333333330.557208764315380.50148788788384729.5152166917126
2044-06-15 00:00:00.000100.96885245901656.40983606557380.5509050470979555.624250419360385.1394671110729
date_pmtamt_cashflowNPVFPVCFcumPVCF
-------------------------------------------------------------------------------------------------------------------------------------
2016-04-01 00:00:00.000-0.45573770491803301-0.455737704918033-0.455737704918033
2016-06-01 00:00:00.0000.6557377049180330.3333333333333330.9964832146431680.6534316161594550.197693911241422
2016-12-01 00:00:00.0000.61.333333333333330.9860068914218120.5916041348530870.789298046094509
2017-06-01 00:00:00.0000.62.333333333333330.9756407088898570.5853844253339141.37468247142842
2017-12-01 00:00:00.0000.63.333333333333330.965383509105610.5792301054633661.95391257689179
2018-06-01 00:00:00.0000.64.333333333333330.955234146301160.5731404877806962.52705306467248
2018-12-01 00:00:00.0000.65.333333333333330.9451914867543940.5671148920526363.09416795672512
2019-06-01 00:00:00.0000.66.333333333333330.9352544086623570.5611526451974143.65532060192254
2019-12-01 00:00:00.0000.67.333333333333330.9254218020159370.5552530812095624.2105736831321
2020-06-01 00:00:00.0000.68.333333333333330.9156925684758810.5494155410855284.75998922421763
2020-12-01 00:00:00.0000.69.333333333333330.9060656212500980.5436393727500595.30362859696768
2021-06-01 00:00:00.0000.6510.33333333333330.8965398849722680.5827509252319745.88637952219966
2021-12-01 00:00:00.0000.6511.33333333333330.8871142955817120.5766242921281136.46300381432777
2022-06-01 00:00:00.0000.6512.33333333333330.8777878002045390.570562070132957.03356588446072
2022-12-01 00:00:00.0000.6513.33333333333330.8685593570360310.564563582073427.59812946653414
2023-06-01 00:00:00.0000.6514.33333333333330.8594279352242730.5586281578957788.15675762442992
2023-12-01 00:00:00.0000.6515.33333333333330.8503925147550010.5527551345907518.70951275902067
2024-06-01 00:00:00.0000.6516.33333333333330.8414520863376630.5469438561194819.25645661514015
2024-12-01 00:00:00.0000.6517.33333333333330.8326056512926790.5411936733402419.79765028848039
2025-06-01 00:00:00.0000.6518.33333333333330.823852221439880.53550394393592210.3331542324163
2025-12-01 00:00:00.0000.6519.33333333333330.8151908189881310.52987403234228510.8630282647586
2026-06-01 00:00:00.0000.720.33333333333330.8066204764261040.56463433349827311.4276625982569
2026-12-01 00:00:00.0000.721.33333333333330.7981402364142030.55869816548994211.9863607637468
2027-06-01 00:00:00.0000.722.33333333333330.7897491516776280.55282440617433912.5391851699212
2027-12-01 00:00:00.0000.723.33333333333330.7814462849005590.54701239943039113.0861975693515
2028-06-01 00:00:00.0000.724.33333333333330.7732307086214560.54126149603501913.6274590653866
2028-12-01 00:00:00.0000.725.33333333333330.7651015051294560.53557105359061914.1630301189772
2029-06-01 00:00:00.0000.726.33333333333330.7570577663618610.52994043645330314.6929705554305
2029-12-01 00:00:00.0000.727.33333333333330.7490985938027070.52436901566189515.2173395710924
2030-06-01 00:00:00.0000.728.33333333333330.7412230983823940.51885616886767615.7361957399601
2030-12-01 00:00:00.0000.729.33333333333330.7334304003783740.51340128026486216.2495970202249
2031-06-01 00:00:00.0000.7530.33333333333330.7257196293168820.54428972198766116.7938867422126
2031-12-01 00:00:00.0000.7531.33333333333330.7180899238757030.53856744290677717.3324541851194
2032-06-01 00:00:00.0000.7532.33333333333330.7105404317879550.53290532384096717.8653595089603
2032-12-01 00:00:00.0000.7533.33333333333330.7030703097468950.52730273231017118.3926622412705
2033-06-01 00:00:00.0000.7534.33333333333330.6956787233117080.52175904248378118.9144212837543
2033-12-01 00:00:00.0000.7535.33333333333330.6883648468143060.51627363511072919.430694918865
2034-06-01 00:00:00.0000.7536.33333333333330.6811278632670930.5108458974503219.9415408163153
2034-12-01 00:00:00.0000.7537.33333333333330.6739669642717060.50547522320377920.4470160395191
2035-06-01 00:00:00.0000.7538.33333333333330.6668813499287130.50016101244653520.9471770519656
2035-12-01 00:00:00.0000.7539.33333333333330.6598702287482630.49490267156119721.4420797235268
2036-06-01 00:00:00.0000.840.33333333333330.652932817561670.52234625404933621.9644259775762
2036-12-01 00:00:00.0000.841.33333333333330.6460683414339350.51685467314714822.4812806507233
2037-06-01 00:00:00.0000.842.33333333333330.6392760335771770.51142082686174222.9927014775851
2037-12-01 00:00:00.0000.843.33333333333330.6325551352649870.50604410821198923.4987455857971
2038-06-01 00:00:00.0000.844.33333333333330.6259048957476680.50072391659813423.9994695023952
2038-12-01 00:00:00.0000.845.33333333333330.6193245721683780.49545965773470324.4949291601299
2039-06-01 00:00:00.0000.846.33333333333330.6128134294801520.49025074358412124.985179903714
2039-12-01 00:00:00.0000.847.33333333333330.6063707403637870.48509659229102925.470276496005
2040-06-01 00:00:00.0000.848.33333333333330.5999957851466040.47999662811728325.9502731241223
2040-12-01 00:00:00.0000.849.33333333333330.5936878517220570.47495028137764626.4252234055
2041-06-01 00:00:00.0000.950.33333333333330.5874462354701860.52870161192316726.9539250174231
2041-12-01 00:00:00.0000.951.33333333333330.581270239178910.52314321526101927.4770682326842
2042-06-01 00:00:00.0000.952.33333333333330.5751591729661450.5176432556695327.9947114883537
2042-12-01 00:00:00.0000.953.33333333333330.5691123542027410.51220111878246728.5069126071361
2043-06-01 00:00:00.0000.954.33333333333330.5631291074362310.50681619669260829.0137288038288
2043-12-01 00:00:00.0000.90000000000000655.33333333333330.557208764315380.50148788788384729.5152166917126
2044-06-15 00:00:00.000100.96885245901656.40983606557380.5509050470979555.624250419360385.1394671110729

See Also

BONDCF - Cash flows for a bond paying regular periodic interest