Rohtak.java
package org.drip.sample.securitysuite;
import org.drip.analytics.cashflow.CompositePeriod;
import org.drip.analytics.date.*;
import org.drip.numerical.common.FormatUtil;
import org.drip.numerical.linearalgebra.Matrix;
import org.drip.product.creator.BondBuilder;
import org.drip.product.credit.BondComponent;
import org.drip.service.env.EnvManager;
import org.drip.service.scenario.*;
/*
* -*- mode: java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*/
/*!
* Copyright (C) 2018 Lakshmi Krishnamurthy
* Copyright (C) 2017 Lakshmi Krishnamurthy
*
* This file is part of DRIP, a free-software/open-source library for buy/side financial/trading model
* libraries targeting analysts and developers
* https://lakshmidrip.github.io/DRIP/
*
* DRIP is composed of four main libraries:
*
* - DRIP Fixed Income - https://lakshmidrip.github.io/DRIP-Fixed-Income/
* - DRIP Asset Allocation - https://lakshmidrip.github.io/DRIP-Asset-Allocation/
* - DRIP Numerical Optimizer - https://lakshmidrip.github.io/DRIP-Numerical-Optimizer/
* - DRIP Statistical Learning - https://lakshmidrip.github.io/DRIP-Statistical-Learning/
*
* - DRIP Fixed Income: Library for Instrument/Trading Conventions, Treasury Futures/Options,
* Funding/Forward/Overnight Curves, Multi-Curve Construction/Valuation, Collateral Valuation and XVA
* Metric Generation, Calibration and Hedge Attributions, Statistical Curve Construction, Bond RV
* Metrics, Stochastic Evolution and Option Pricing, Interest Rate Dynamics and Option Pricing, LMM
* Extensions/Calibrations/Greeks, Algorithmic Differentiation, and Asset Backed Models and Analytics.
*
* - DRIP Asset Allocation: Library for model libraries for MPT framework, Black Litterman Strategy
* Incorporator, Holdings Constraint, and Transaction Costs.
*
* - DRIP Numerical Optimizer: Library for Numerical Optimization and Spline Functionality.
*
* - DRIP Statistical Learning: Library for Statistical Evaluation and Machine Learning.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* Rohtak generates the Full Suite of Replication Metrics for Bond Rohtak.
*
* @author Lakshmi Krishnamurthy
*/
public class Rohtak {
public static final void main (
final String[] astArgs)
throws Exception
{
EnvManager.InitEnv ("");
JulianDate dtSpot = DateUtil.CreateFromYMD (
2017,
DateUtil.OCTOBER,
5
);
String[] astrDepositTenor = new String[] {
"2D"
};
double[] adblDepositQuote = new double[] {
0.0130411 // 2D
};
double[] adblFuturesQuote = new double[] {
0.01345, // 98.655
0.01470, // 98.530
0.01575, // 98.425
0.01660, // 98.340
0.01745, // 98.255
0.01845 // 98.155
};
String[] astrFixFloatTenor = new String[] {
"02Y",
"03Y",
"04Y",
"05Y",
"06Y",
"07Y",
"08Y",
"09Y",
"10Y",
"11Y",
"12Y",
"15Y",
"20Y",
"25Y",
"30Y",
"40Y",
"50Y"
};
String[] astrGovvieTenor = new String[] {
"1Y",
"2Y",
"3Y",
"5Y",
"7Y",
"10Y",
"20Y",
"30Y"
};
double[] adblFixFloatQuote = new double[] {
0.016410, // 2Y
0.017863, // 3Y
0.019030, // 4Y
0.020035, // 5Y
0.020902, // 6Y
0.021660, // 7Y
0.022307, // 8Y
0.022879, // 9Y
0.023363, // 10Y
0.023820, // 11Y
0.024172, // 12Y
0.024934, // 15Y
0.025581, // 20Y
0.025906, // 25Y
0.025973, // 30Y
0.025838, // 40Y
0.025560 // 50Y
};
double[] adblGovvieYield = new double[] {
0.01219, // 1Y
0.01391, // 2Y
0.01590, // 3Y
0.01937, // 5Y
0.02200, // 7Y
0.02378, // 10Y
0.02677, // 20Y
0.02927 // 30Y
};
String[] astrCreditTenor = new String[] {
"06M",
"01Y",
"02Y",
"03Y",
"04Y",
"05Y",
"07Y",
"10Y"
};
double[] adblCreditQuote = new double[] {
60., // 6M
68., // 1Y
88., // 2Y
102., // 3Y
121., // 4Y
138., // 5Y
168., // 7Y
188. // 10Y
};
double dblFX = 1.;
int iSettleLag = 3;
int iCouponFreq = 12;
String strName = "Rohtak";
double dblCleanPrice = 0.95;
double dblIssuePrice = 1.;
String strCurrency = "USD";
double dblSpreadBump = 20.;
double dblCouponRate = 0.03;
String strTreasuryCode = "UST";
String strCouponDayCount = "30/360";
double dblSpreadDurationMultiplier = 5.;
org.drip.analytics.date.JulianDate[] adtPeriodEnd = new org.drip.analytics.date.JulianDate[] {
DateUtil.CreateFromYMD (2017, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2017, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2017, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2018, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2018, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2018, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2018, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2018, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2018, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2018, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2018, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2018, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2018, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2018, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2018, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2019, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2019, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2019, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2019, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2019, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2019, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2019, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2019, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2019, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2019, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2019, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2019, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2020, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2020, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2020, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2020, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2020, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2020, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2020, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2020, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2020, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2020, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2020, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2020, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2021, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2021, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2021, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2021, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2021, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2021, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2021, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2021, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2021, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2021, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2021, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2021, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2022, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2022, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2022, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2022, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2022, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2022, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2022, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2022, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2022, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2022, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2022, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2022, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2023, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2023, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2023, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2023, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2023, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2023, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2023, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2023, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2023, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2023, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2023, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2023, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2024, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2024, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2024, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2024, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2024, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2024, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2024, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2024, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2024, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2024, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2024, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2024, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2025, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2025, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2025, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2025, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2025, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2025, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2025, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2025, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2025, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2025, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2025, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2025, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2026, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2026, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2026, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2026, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2026, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2026, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2026, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2026, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2026, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2026, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2026, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2026, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2027, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2027, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2027, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2027, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2027, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2027, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2027, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2027, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2027, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2027, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2027, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2027, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2028, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2028, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2028, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2028, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2028, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2028, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2028, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2028, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2028, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2028, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2028, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2028, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2029, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2029, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2029, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2029, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2029, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2029, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2029, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2029, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2029, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2029, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2029, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2029, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2030, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2030, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2030, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2030, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2030, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2030, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2030, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2030, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2030, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2030, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2030, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2030, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2031, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2031, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2031, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2031, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2031, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2031, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2031, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2031, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2031, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2031, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2031, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2031, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2032, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2032, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2032, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2032, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2032, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2032, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2032, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2032, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2032, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2032, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2032, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2032, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2033, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2033, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2033, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2033, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2033, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2033, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2033, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2033, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2033, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2033, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2033, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2033, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2034, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2034, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2034, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2034, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2034, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2034, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2034, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2034, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2034, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2034, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2034, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2034, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2035, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2035, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2035, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2035, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2035, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2035, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2035, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2035, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2035, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2035, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2035, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2035, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2036, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2036, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2036, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2036, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2036, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2036, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2036, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2036, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2036, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2036, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2036, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2036, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2037, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2037, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2037, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2037, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2037, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2037, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2037, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2037, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2037, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2037, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2037, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2037, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2038, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2038, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2038, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2038, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2038, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2038, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2038, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2038, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2038, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2038, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2038, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2038, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2039, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2039, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2039, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2039, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2039, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2039, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2039, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2039, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2039, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2039, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2039, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2039, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2040, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2040, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2040, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2040, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2040, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2040, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2040, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2040, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2040, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2040, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2040, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2040, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2041, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2041, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2041, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2041, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2041, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2041, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2041, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2041, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2041, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2041, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2041, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2041, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2042, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2042, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2042, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2042, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2042, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2042, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2042, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2042, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2042, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2042, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2042, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2042, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2043, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2043, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2043, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2043, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2043, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2043, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2043, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2043, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2043, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2043, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2043, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2043, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2044, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2044, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2044, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2044, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2044, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2044, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2044, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2044, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2044, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2044, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2044, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2044, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2045, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2045, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2045, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2045, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2045, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2045, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2045, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2045, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2045, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2045, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2045, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2045, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2046, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2046, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2046, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2046, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2046, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2046, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2046, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2046, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2046, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2046, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2046, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2046, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2047, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2047, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2047, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2047, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2047, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2047, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2047, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2047, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2047, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2047, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2047, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2047, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2048, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2048, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2048, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2048, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2048, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2048, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2048, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2048, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2048, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2048, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2048, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2048, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2049, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2049, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2049, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2049, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2049, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2049, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2049, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2049, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2049, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2049, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2049, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2049, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2050, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2050, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2050, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2050, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2050, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2050, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2050, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2050, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2050, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2050, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2050, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2050, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2051, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2051, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2051, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2051, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2051, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2051, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2051, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2051, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2051, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2051, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2051, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2051, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2052, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2052, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2052, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2052, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2052, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2052, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2052, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2052, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2052, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2052, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2052, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2052, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2053, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2053, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2053, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2053, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2053, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2053, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2053, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2053, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2053, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2053, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2053, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2053, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2054, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2054, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2054, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2054, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2054, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2054, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2054, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2054, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2054, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2054, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2054, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2054, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2055, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2055, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2055, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2055, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2055, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2055, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2055, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2055, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2055, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2055, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2055, DateUtil.NOVEMBER , 25),
DateUtil.CreateFromYMD (2055, DateUtil.DECEMBER , 25),
DateUtil.CreateFromYMD (2056, DateUtil.JANUARY , 25),
DateUtil.CreateFromYMD (2056, DateUtil.FEBRUARY , 25),
DateUtil.CreateFromYMD (2056, DateUtil.MARCH , 25),
DateUtil.CreateFromYMD (2056, DateUtil.APRIL , 25),
DateUtil.CreateFromYMD (2056, DateUtil.MAY , 25),
DateUtil.CreateFromYMD (2056, DateUtil.JUNE , 25),
DateUtil.CreateFromYMD (2056, DateUtil.JULY , 25),
DateUtil.CreateFromYMD (2056, DateUtil.AUGUST , 25),
DateUtil.CreateFromYMD (2056, DateUtil.SEPTEMBER, 25),
DateUtil.CreateFromYMD (2056, DateUtil.OCTOBER , 25),
DateUtil.CreateFromYMD (2056, DateUtil.NOVEMBER , 25),
};
double[] adblPrincipalPayDown = new double[] {
130411.55,
122346.11,
121579.99,
117575.45,
107315.52,
108813.62,
104230.30,
102245.99,
98857.56,
96999.28,
91933.96,
95184.27,
92372.68,
88418.96,
88710.38,
87784.78,
84946.10,
87232.08,
83206.60,
79412.82,
83715.52,
80807.88,
78279.06,
79486.27,
77842.52,
76486.32,
76115.52,
74706.19,
77226.03,
77509.13,
73034.84,
76467.06,
75353.36,
72857.79,
75605.48,
73084.96,
72556.97,
73603.29,
69820.19,
73960.65,
70710.70,
72559.73,
68778.99,
70625.39,
68349.45,
67321.10,
67270.43,
64072.74,
67370.20,
62081.57,
62004.95,
62855.15,
59203.99,
60997.02,
57061.28,
57057.51,
52628.47,
56255.69,
52461.59,
50436.91,
51792.68,
49442.95,
47524.48,
49390.16,
44864.91,
48248.13,
46629.38,
44795.46,
42090.65,
44008.71,
41777.21,
41080.47,
41039.85,
37778.75,
40337.50,
38822.78,
36255.38,
39036.16,
35859.53,
33322.52,
36938.08,
34428.59,
32145.91,
33247.54,
32813.47,
31392.73,
30820.02,
29202.45,
31156.00,
31419.94,
28373.74,
26798.66,
28761.38,
27388.34,
26040.55,
25332.19,
24002.35,
25957.06,
23799.16,
23306.72,
23460.28,
24605.90,
20041.59,
22825.96,
21536.18,
19445.50,
21263.23,
19174.31,
18731.94,
19088.98,
16208.27,
19810.31,
16958.29,
18943.89,
15142.71,
17135.74,
15104.48,
14699.57,
15090.12,
12273.32,
15880.82,
12269.89,
12684.23,
13888.98,
11897.21,
11507.22,
12599.25,
11423.22,
9453.62,
11484.94,
9524.27,
9158.39,
9592.68,
6847.96,
9671.66,
8525.08,
6587.88,
9415.97,
7487.79,
7147.51,
6028.72,
6485.87,
3778.28,
6614.97,
5498.98,
3593.00,
4854.29,
4536.92,
3342.10,
5404.86,
2730.30,
845.60,
4493.89,
2617.77,
882.82,
2166.63,
1885.00,
804.22,
514.67,
0.00,
959.61,
2031.31,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
16368032.97,
};
double[] adblCouponAmount = new double[] {
30408.13,
33261.02,
29074.45,
29917.75,
38614.58,
33628.17,
35856.81,
35690.73,
36712.08,
35370.31,
38737.33,
33900.30,
34917.61,
37088.46,
34629.55,
34488.21,
35493.28,
31932.12,
35209.80,
37335.57,
31560.57,
33681.51,
35789.60,
33428.03,
33301.38,
34283.26,
34157.33,
35129.82,
31721.33,
31602.39,
35825.49,
31370.52,
32330.42,
34357.72,
31024.46,
33039.60,
32919.27,
31741.75,
34786.92,
29412.35,
32441.90,
29197.21,
33244.92,
30022.27,
31976.49,
31863.96,
30728.82,
33683.80,
28484.91,
32439.69,
31323.73,
29207.35,
31118.16,
28018.68,
30920.25,
29831.91,
32715.10,
27680.00,
30553.09,
31449.51,
28423.44,
30298.40,
31191.74,
28194.31,
31996.62,
27081.93,
27974.83,
28865.18,
30713.39,
27769.18,
29611.84,
29543.06,
28524.60,
31305.13,
27452.38,
28334.75,
30157.75,
26334.11,
29091.35,
30905.37,
26173.18,
27983.84,
29790.91,
27877.76,
27824.79,
28698.26,
28646.57,
29518.27,
26705.96,
25738.73,
28444.72,
29314.07,
26524.60,
27393.41,
28261.43,
28218.56,
29085.78,
26322.02,
28094.60,
28055.41,
27113.26,
25270.82,
29740.34,
26104.59,
26968.37,
28729.66,
26006.31,
27764.84,
27733.27,
26808.80,
29456.22,
24969.06,
27611.70,
24914.38,
28441.38,
25751.68,
27499.44,
27474.57,
26564.87,
29194.91,
24753.19,
28262.37,
27358.97,
25574.34,
27315.22,
27295.63,
25516.90,
26376.72,
28115.75,
25465.34,
27202.66,
27186.98,
26295.38,
28908.11,
25393.55,
26253.78,
27989.54,
24481.05,
26214.70,
26202.77,
27064.42,
26181.77,
28788.58,
25293.24,
26154.88,
27889.19,
26140.39,
26132.66,
26996.27,
24378.76,
26981.87,
28717.85,
24365.41,
26098.63,
27834.09,
26093.06,
26089.60,
26956.15,
26954.83,
27204.55,
25834.88,
24344.10,
26274.06,
25969.74,
25669.24,
25371.01,
25076.52,
24784.44,
24495.93,
24209.80,
23927.18,
23646.36,
23369.54,
23095.02,
22823.88,
22555.02,
22289.48,
22026.20,
21766.17,
21508.40,
21253.35,
21001.09,
20752.16,
20488.62,
20235.04,
19993.55,
19754.72,
19518.85,
19255.13,
19010.17,
18782.10,
18556.09,
18332.49,
18111.40,
17893.13,
17676.92,
17463.51,
17251.74,
17043.24,
16836.94,
16631.83,
16394.69,
16195.65,
15999.16,
15805.44,
15613.92,
15424.86,
15238.61,
15055.54,
14862.08,
14643.44,
14467.52,
14296.65,
14129.28,
13966.55,
13808.96,
13646.11,
13507.21,
13257.20,
12765.88,
48404.49,
6942.94,
6852.42,
6777.23,
6702.80,
6629.10,
6556.14,
6483.91,
6412.39,
6341.59,
6271.50,
6202.10,
6133.40,
6065.39,
5998.06,
5931.40,
5865.41,
5800.09,
5735.42,
5671.40,
5608.03,
5545.29,
5483.19,
5421.71,
5360.86,
5300.63,
5241.00,
5181.98,
5123.57,
5065.75,
5008.53,
4951.89,
4895.85,
4840.39,
4785.51,
4731.23,
4677.56,
4624.53,
4572.29,
4499.06,
4436.96,
4386.37,
4336.41,
4279.42,
4219.93,
4171.58,
4123.77,
4075.90,
4025.52,
3974.03,
3928.46,
3883.72,
3807.92,
3763.91,
3720.37,
3677.30,
3634.72,
3590.74,
3544.99,
3503.80,
3463.10,
3430.31,
3364.47,
3321.38,
3282.68,
3242.08,
3236.32,
3123.38,
3053.11,
3017.36,
2976.70,
2920.07,
2885.53,
2851.37,
2817.59,
4189.76,
2718.77,
2686.62,
2655.12,
2598.22,
2567.22,
2536.55,
2506.22,
2476.22,
2446.56,
2417.25,
2388.30,
2359.73,
2331.62,
2299.39,
2242.46,
2215.53,
2181.13,
2152.83,
2126.77,
2101.00,
2075.56,
2049.46,
2021.60,
1995.18,
1960.45,
1936.55,
1912.95,
1889.63,
2445.69,
1821.52,
1795.44,
1771.50,
1750.02,
1728.92,
1702.47,
1675.31,
1655.18,
1635.44,
1616.14,
1597.41,
1574.98,
1549.41,
1533.03,
1319.83,
1161.03,
603.53,
596.43,
589.42,
582.47,
575.61,
568.83,
562.12,
555.50,
547.38,
540.97,
532.85,
520.66,
514.48,
508.38,
502.36,
496.41,
489.90,
482.62,
477.03,
466.83,
447.41,
442.05,
436.75,
431.51,
426.32,
421.19,
416.11,
411.09,
406.12,
401.21,
396.35,
391.54,
386.78,
382.08,
377.43,
372.83,
368.28,
363.79,
359.34,
354.96,
350.63,
346.37,
341.66,
334.48,
328.24,
323.13,
319.14,
315.21,
311.33,
307.50,
303.75,
297.39,
291.45,
286.55,
281.14,
276.53,
273.06,
269.63,
266.24,
262.89,
259.58,
256.31,
253.09,
249.91,
246.77,
243.69,
240.68,
235.73,
229.22,
226.36,
223.28,
217.19,
214.35,
207.45,
204.83,
202.26,
199.74,
196.60,
188.96,
182.79,
172.15,
167.73,
162.18,
159.26,
157.03,
155.09,
151.96,
142.45,
139.52,
137.72,
135.95,
134.21,
132.51,
130.89,
124.42,
122.88,
115.70,
114.22,
112.76,
111.34,
109.96,
108.64,
107.42,
106.40,
92.34,
79.33,
76.93,
73.11,
65.12,
64.31,
59.80,
126.66,
52.11,
50.01,
49.44,
46.57,
46.05,
43.57,
42.03,
41.61,
40.24,
31.79,
30.00,
29.69,
29.41,
34.21,
19.51,
16.71,
3.21,
};
double dblIssueAmount = Matrix.Sum (adblPrincipalPayDown);
JulianDate dtEffective = DateUtil.CreateFromYMD (
2017,
DateUtil.SEPTEMBER,
25
);
BondComponent bond = BondBuilder.CreateBondFromCF (
strName,
dtEffective,
strCurrency,
strName,
strCouponDayCount,
dblIssueAmount,
dblCouponRate,
iCouponFreq,
adtPeriodEnd,
adblCouponAmount,
adblPrincipalPayDown,
true
);
BondReplicator abr = BondReplicator.CorporateSenior (
dblCleanPrice,
dblIssuePrice,
dblIssueAmount,
dtSpot,
astrDepositTenor,
adblDepositQuote,
adblFuturesQuote,
astrFixFloatTenor,
adblFixFloatQuote,
dblSpreadBump,
dblSpreadDurationMultiplier,
strTreasuryCode,
astrGovvieTenor,
adblGovvieYield,
astrCreditTenor,
adblCreditQuote,
dblFX,
Double.NaN,
iSettleLag,
bond
);
BondReplicationRun abrr = abr.generateRun();
System.out.println (abrr.display());
double dblBalance = 1.;
for (CompositePeriod p : bond.couponPeriods()) {
int iEndDate = p.endDate();
int iStartDate = p.startDate();
double dblPrincipalPayDown = bond.notional (iStartDate) - bond.notional (iEndDate);
double dblInterest = dblCouponRate * p.couponDCF() * bond.notional (iStartDate) * bond.couponFactor (iEndDate);
dblBalance -= dblPrincipalPayDown;
System.out.println (
"\t" + new JulianDate (iEndDate) + " => " +
FormatUtil.FormatDouble (dblPrincipalPayDown, 8, 2, dblIssueAmount) + " | " +
FormatUtil.FormatDouble (dblInterest, 6, 2, dblIssueAmount) + " | " +
FormatUtil.FormatDouble (dblPrincipalPayDown + dblInterest, 8, 2, dblIssueAmount) + " | " +
FormatUtil.FormatDouble (dblBalance, 8, 2, dblIssueAmount) + " ||"
);
}
}
}