Dhule.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.
*/
/**
* Dhule generates the Full Suite of Replication Metrics for Bond Dhule.
*
* @author Lakshmi Krishnamurthy
*/
public class Dhule {
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 = "Dhule";
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[] {
475796.56,
446370.43,
443575.29,
428965.03,
391532.47,
396998.16,
380276.29,
373036.68,
360674.24,
353894.44,
335414.04,
347272.51,
337014.65,
322589.82,
323653.03,
320276.04,
309919.33,
318259.57,
303572.91,
289731.60,
305429.66,
294821.36,
285595.18,
289999.59,
284002.48,
279054.50,
277701.66,
272559.82,
281753.25,
282786.12,
266462.02,
278984.22,
274920.95,
265816.09,
275840.79,
266644.90,
264718.55,
268535.97,
254733.61,
269839.77,
257982.57,
264728.63,
250934.90,
257671.34,
249367.74,
245615.89,
245431.01,
233764.50,
245795.01,
226499.85,
226220.30,
229322.19,
216001.24,
222542.96,
208183.73,
208169.97,
192010.96,
205244.59,
191402.09,
184015.20,
188961.64,
180388.82,
173389.44,
180196.20,
163686.21,
176029.61,
170123.73,
163432.81,
153564.51,
160562.43,
152420.95,
149878.97,
149730.76,
137832.88,
147168.29,
141641.94,
132274.98,
142420.46,
130830.77,
121574.67,
134765.76,
125610.09,
117281.91,
121301.10,
119717.44,
114533.98,
112444.48,
106542.90,
113670.30,
114633.25,
103519.43,
97772.87,
104933.69,
99924.27,
95006.96,
92422.57,
87570.75,
94702.35,
86829.43,
85032.79,
85593.04,
89772.76,
73120.22,
83278.76,
78573.10,
70945.42,
77577.28,
69956.00,
68342.04,
69644.68,
59134.62,
72276.39,
61871.04,
69115.34,
55247.03,
62518.44,
55107.53,
53630.26,
55055.14,
44778.27,
57939.94,
44765.76,
46277.44,
50672.89,
43406.05,
41983.20,
45967.41,
41676.75,
34490.81,
41901.93,
34748.56,
33413.69,
34998.15,
24984.25,
35286.30,
31103.09,
24035.39,
34353.45,
27318.64,
26077.14,
21995.32,
23663.19,
13784.76,
24134.19,
20062.60,
13108.77,
17710.51,
16552.60,
12193.41,
19719.22,
9961.31,
3085.09,
16395.62,
9550.72,
3220.90,
7904.77,
6877.28,
2934.14,
1877.75,
0.00,
3501.05,
7411.09,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
0.00,
59717516.32,
};
double[] adblCouponAmount = new double[] {
102472.91,
112086.91,
97978.52,
100820.36,
123198.38,
107289.42,
114399.79,
113869.94,
117128.52,
112847.64,
123590.00,
108157.63,
111403.34,
118329.35,
110484.29,
110033.33,
113239.98,
101878.24,
112335.54,
119117.72,
100692.80,
107459.58,
114185.38,
106650.87,
106246.80,
109379.46,
108977.68,
112080.37,
101205.72,
100826.23,
114299.88,
100086.46,
103149.00,
109617.00,
98982.38,
105411.61,
105027.70,
101270.87,
110986.38,
93838.99,
103504.66,
93152.59,
106066.65,
95784.92,
102019.79,
101660.76,
98039.15,
107466.90,
90880.04,
103497.60,
99937.19,
93184.94,
99281.31,
89392.54,
98649.90,
95177.58,
104376.28,
88312.00,
97478.49,
100338.49,
90683.91,
96665.91,
99516.06,
89952.90,
102084.01,
86403.87,
89252.63,
92093.27,
97989.93,
88596.54,
94475.47,
94256.02,
91006.67,
99877.85,
87585.80,
90400.94,
96217.16,
84018.00,
92814.87,
98602.41,
83504.55,
89281.39,
95046.79,
88942.96,
88773.94,
91560.71,
91395.80,
94176.94,
85204.35,
82118.45,
90751.81,
93525.43,
84625.73,
87397.65,
90167.04,
90030.25,
92797.09,
83979.42,
89634.75,
89509.73,
86503.84,
80625.61,
94885.45,
83285.70,
86041.59,
91660.91,
82972.15,
88582.67,
88481.95,
85532.47,
93978.97,
79662.84,
88094.08,
79488.38,
90741.15,
82159.75,
87735.93,
87656.59,
84754.23,
93145.27,
78974.12,
90170.03,
87287.76,
81593.96,
87148.17,
87085.68,
81410.70,
84153.92,
89702.24,
81246.20,
86789.05,
86739.02,
83894.44,
92230.24,
81017.16,
83761.69,
89299.58,
78105.88,
83637.00,
83598.94,
86348.02,
83531.96,
91848.88,
80697.12,
83446.15,
88979.41,
83399.93,
83375.26,
86130.60,
77779.52,
86084.65,
91623.23,
77736.91,
83266.71,
88803.63,
83248.91,
83237.90,
86002.59,
85998.37,
86795.10,
82424.83,
77668.95,
83826.40,
82855.49,
81896.39,
80945.26,
80005.71,
79073.81,
78153.36,
77240.46,
76338.77,
75442.83,
74559.63,
73683.80,
72818.74,
71960.96,
71113.75,
70273.75,
69444.16,
68621.73,
67808.00,
67003.18,
66209.00,
65368.18,
64559.14,
63788.68,
63026.70,
62274.14,
61432.75,
60651.23,
59923.57,
59202.51,
58489.10,
57783.75,
57087.37,
56397.56,
55716.66,
55041.04,
54375.82,
53717.63,
53063.22,
52306.64,
51671.63,
51044.73,
50426.66,
49815.62,
49212.43,
48618.22,
48034.14,
47416.90,
46719.33,
46158.09,
45612.91,
45078.92,
44559.76,
44056.98,
43537.39,
43094.25,
42296.58,
40729.05,
154138.78,
22151.18,
21862.38,
21622.51,
21385.03,
21149.90,
20917.12,
20686.66,
20458.50,
20232.61,
20008.97,
19787.58,
19568.39,
19351.40,
19136.58,
18923.91,
18713.38,
18504.96,
18298.64,
18094.39,
17892.19,
17692.04,
17493.91,
17297.77,
17103.63,
16911.45,
16721.22,
16532.93,
16346.56,
16162.09,
15979.52,
15798.83,
15620.02,
15443.07,
15268.00,
15094.82,
14923.57,
14754.38,
14587.73,
14354.07,
14155.94,
13994.55,
13835.16,
13653.32,
13463.54,
13309.28,
13156.75,
13004.02,
12843.27,
12679.01,
12533.61,
12390.87,
12149.03,
12008.62,
11869.70,
11732.30,
11596.44,
11456.12,
11310.15,
11178.75,
11048.90,
10944.29,
10734.20,
10596.74,
10473.25,
10343.73,
10325.35,
9965.02,
9740.85,
9626.76,
9497.04,
9316.36,
9206.18,
9097.19,
8989.41,
13367.27,
8674.12,
8571.57,
8471.05,
8289.52,
8190.60,
8092.76,
7995.99,
7900.29,
7805.67,
7712.15,
7619.77,
7528.62,
7438.94,
7336.11,
7154.49,
7068.57,
6958.80,
6868.54,
6785.37,
6703.18,
6622.00,
6538.74,
6449.85,
6365.53,
6254.73,
6178.50,
6103.19,
6028.79,
7802.87,
5811.50,
5728.30,
5651.90,
5583.39,
5516.05,
5431.66,
5345.00,
5280.80,
5217.82,
5156.25,
5096.47,
5024.91,
4943.33,
4891.09,
36115.49,
3704.22,
1925.53,
1902.90,
1880.51,
1858.36,
1836.47,
1814.82,
1793.42,
1772.29,
1746.40,
1725.94,
1700.04,
1661.14,
1641.44,
1621.98,
1602.75,
1583.77,
1563.01,
1539.77,
1521.94,
1489.40,
1427.43,
1410.34,
1393.44,
1376.71,
1360.16,
1343.79,
1327.59,
1311.57,
1295.72,
1280.04,
1264.53,
1249.19,
1234.02,
1219.01,
1204.17,
1189.49,
1174.99,
1160.65,
1146.48,
1132.48,
1118.67,
1105.08,
1090.04,
1067.14,
1047.24,
1030.92,
1018.22,
1005.67,
993.28,
981.07,
969.10,
948.83,
929.86,
914.24,
896.96,
882.24,
871.18,
860.24,
849.42,
838.74,
828.18,
817.76,
807.47,
797.32,
787.31,
777.48,
767.87,
752.10,
731.31,
722.20,
712.35,
692.93,
683.89,
661.85,
653.51,
645.31,
637.26,
627.23,
602.88,
583.17,
549.25,
535.13,
517.43,
508.10,
501.01,
494.81,
484.81,
454.48,
445.13,
439.39,
433.74,
428.19,
422.77,
417.59,
396.97,
392.06,
369.15,
364.41,
359.76,
355.23,
350.83,
346.62,
342.71,
339.47,
294.60,
253.10,
245.44,
233.26,
207.78,
205.16,
190.79,
404.12,
166.27,
159.54,
157.73,
148.58,
146.92,
139.00,
134.10,
132.75,
128.40,
101.44,
95.71,
94.71,
93.83,
109.15,
62.23,
53.33,
9.96,
};
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) + " ||"
);
}
}
}