Korba.java

  1. package org.drip.sample.securitysuite;

  2. import org.drip.analytics.cashflow.CompositePeriod;
  3. import org.drip.analytics.date.*;
  4. import org.drip.numerical.common.FormatUtil;
  5. import org.drip.numerical.linearalgebra.Matrix;
  6. import org.drip.product.creator.BondBuilder;
  7. import org.drip.product.credit.BondComponent;
  8. import org.drip.service.env.EnvManager;
  9. import org.drip.service.scenario.*;

  10. /*
  11.  * -*- mode: java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  12.  */

  13. /*!
  14.  * Copyright (C) 2018 Lakshmi Krishnamurthy
  15.  * Copyright (C) 2017 Lakshmi Krishnamurthy
  16.  *
  17.  *  This file is part of DRIP, a free-software/open-source library for buy/side financial/trading model
  18.  *      libraries targeting analysts and developers
  19.  *      https://lakshmidrip.github.io/DRIP/
  20.  *  
  21.  *  DRIP is composed of four main libraries:
  22.  *  
  23.  *  - DRIP Fixed Income - https://lakshmidrip.github.io/DRIP-Fixed-Income/
  24.  *  - DRIP Asset Allocation - https://lakshmidrip.github.io/DRIP-Asset-Allocation/
  25.  *  - DRIP Numerical Optimizer - https://lakshmidrip.github.io/DRIP-Numerical-Optimizer/
  26.  *  - DRIP Statistical Learning - https://lakshmidrip.github.io/DRIP-Statistical-Learning/
  27.  *
  28.  *  - DRIP Fixed Income: Library for Instrument/Trading Conventions, Treasury Futures/Options,
  29.  *      Funding/Forward/Overnight Curves, Multi-Curve Construction/Valuation, Collateral Valuation and XVA
  30.  *      Metric Generation, Calibration and Hedge Attributions, Statistical Curve Construction, Bond RV
  31.  *      Metrics, Stochastic Evolution and Option Pricing, Interest Rate Dynamics and Option Pricing, LMM
  32.  *      Extensions/Calibrations/Greeks, Algorithmic Differentiation, and Asset Backed Models and Analytics.
  33.  *
  34.  *  - DRIP Asset Allocation: Library for model libraries for MPT framework, Black Litterman Strategy
  35.  *      Incorporator, Holdings Constraint, and Transaction Costs.
  36.  *
  37.  *  - DRIP Numerical Optimizer: Library for Numerical Optimization and Spline Functionality.
  38.  *
  39.  *  - DRIP Statistical Learning: Library for Statistical Evaluation and Machine Learning.
  40.  *
  41.  *  Licensed under the Apache License, Version 2.0 (the "License");
  42.  *      you may not use this file except in compliance with the License.
  43.  *  
  44.  *  You may obtain a copy of the License at
  45.  *      http://www.apache.org/licenses/LICENSE-2.0
  46.  *  
  47.  *  Unless required by applicable law or agreed to in writing, software
  48.  *      distributed under the License is distributed on an "AS IS" BASIS,
  49.  *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  50.  *  
  51.  *  See the License for the specific language governing permissions and
  52.  *      limitations under the License.
  53.  */

  54. /**
  55.  * Korba generates the Full Suite of Replication Metrics for Bond Korba.
  56.  *
  57.  * @author Lakshmi Krishnamurthy
  58.  */

  59. public class Korba {

  60.     public static final void main (
  61.         final String[] astArgs)
  62.         throws Exception
  63.     {
  64.         EnvManager.InitEnv ("");

  65.         JulianDate dtSpot = DateUtil.CreateFromYMD (
  66.             2017,
  67.             DateUtil.OCTOBER,
  68.             5
  69.         );

  70.         String[] astrDepositTenor = new String[] {
  71.             "2D"
  72.         };

  73.         double[] adblDepositQuote = new double[] {
  74.             0.0130411 // 2D
  75.         };

  76.         double[] adblFuturesQuote = new double[] {
  77.             0.01345,    // 98.655
  78.             0.01470,    // 98.530
  79.             0.01575,    // 98.425
  80.             0.01660,    // 98.340
  81.             0.01745,    // 98.255
  82.             0.01845     // 98.155
  83.         };

  84.         String[] astrFixFloatTenor = new String[] {
  85.             "02Y",
  86.             "03Y",
  87.             "04Y",
  88.             "05Y",
  89.             "06Y",
  90.             "07Y",
  91.             "08Y",
  92.             "09Y",
  93.             "10Y",
  94.             "11Y",
  95.             "12Y",
  96.             "15Y",
  97.             "20Y",
  98.             "25Y",
  99.             "30Y",
  100.             "40Y",
  101.             "50Y"
  102.         };

  103.         String[] astrGovvieTenor = new String[] {
  104.             "1Y",
  105.             "2Y",
  106.             "3Y",
  107.             "5Y",
  108.             "7Y",
  109.             "10Y",
  110.             "20Y",
  111.             "30Y"
  112.         };

  113.         double[] adblFixFloatQuote = new double[] {
  114.             0.016410, //  2Y
  115.             0.017863, //  3Y
  116.             0.019030, //  4Y
  117.             0.020035, //  5Y
  118.             0.020902, //  6Y
  119.             0.021660, //  7Y
  120.             0.022307, //  8Y
  121.             0.022879, //  9Y
  122.             0.023363, // 10Y
  123.             0.023820, // 11Y
  124.             0.024172, // 12Y
  125.             0.024934, // 15Y
  126.             0.025581, // 20Y
  127.             0.025906, // 25Y
  128.             0.025973, // 30Y
  129.             0.025838, // 40Y
  130.             0.025560  // 50Y
  131.         };

  132.         double[] adblGovvieYield = new double[] {
  133.             0.01219, //  1Y
  134.             0.01391, //  2Y
  135.             0.01590, //  3Y
  136.             0.01937, //  5Y
  137.             0.02200, //  7Y
  138.             0.02378, // 10Y
  139.             0.02677, // 20Y
  140.             0.02927  // 30Y
  141.         };

  142.         String[] astrCreditTenor = new String[] {
  143.             "06M",
  144.             "01Y",
  145.             "02Y",
  146.             "03Y",
  147.             "04Y",
  148.             "05Y",
  149.             "07Y",
  150.             "10Y"
  151.         };

  152.         double[] adblCreditQuote = new double[] {
  153.              60.,   //  6M
  154.              68.,   //  1Y
  155.              88.,   //  2Y
  156.             102.,   //  3Y
  157.             121.,   //  4Y
  158.             138.,   //  5Y
  159.             168.,   //  7Y
  160.             188.    // 10Y
  161.         };

  162.         double dblFX = 1.;
  163.         int iSettleLag = 3;
  164.         int iCouponFreq = 12;
  165.         String strName = "Korba";
  166.         double dblCleanPrice = 0.95;
  167.         double dblIssuePrice = 1.;
  168.         String strCurrency = "USD";
  169.         double dblSpreadBump = 20.;
  170.         double dblCouponRate = 0.03;
  171.         String strTreasuryCode = "UST";
  172.         String strCouponDayCount = "30/360";
  173.         double dblSpreadDurationMultiplier = 5.;

  174.         org.drip.analytics.date.JulianDate[] adtPeriodEnd = new org.drip.analytics.date.JulianDate[] {
  175.             DateUtil.CreateFromYMD (2017, DateUtil.OCTOBER  , 25),
  176.             DateUtil.CreateFromYMD (2017, DateUtil.NOVEMBER , 25),
  177.             DateUtil.CreateFromYMD (2017, DateUtil.DECEMBER , 25),
  178.             DateUtil.CreateFromYMD (2018, DateUtil.JANUARY  , 25),
  179.             DateUtil.CreateFromYMD (2018, DateUtil.FEBRUARY , 25),
  180.             DateUtil.CreateFromYMD (2018, DateUtil.MARCH    , 25),
  181.             DateUtil.CreateFromYMD (2018, DateUtil.APRIL    , 25),
  182.             DateUtil.CreateFromYMD (2018, DateUtil.MAY      , 25),
  183.             DateUtil.CreateFromYMD (2018, DateUtil.JUNE     , 25),
  184.             DateUtil.CreateFromYMD (2018, DateUtil.JULY     , 25),
  185.             DateUtil.CreateFromYMD (2018, DateUtil.AUGUST   , 25),
  186.             DateUtil.CreateFromYMD (2018, DateUtil.SEPTEMBER, 25),
  187.             DateUtil.CreateFromYMD (2018, DateUtil.OCTOBER  , 25),
  188.             DateUtil.CreateFromYMD (2018, DateUtil.NOVEMBER , 25),
  189.             DateUtil.CreateFromYMD (2018, DateUtil.DECEMBER , 25),
  190.             DateUtil.CreateFromYMD (2019, DateUtil.JANUARY  , 25),
  191.             DateUtil.CreateFromYMD (2019, DateUtil.FEBRUARY , 25),
  192.             DateUtil.CreateFromYMD (2019, DateUtil.MARCH    , 25),
  193.             DateUtil.CreateFromYMD (2019, DateUtil.APRIL    , 25),
  194.             DateUtil.CreateFromYMD (2019, DateUtil.MAY      , 25),
  195.             DateUtil.CreateFromYMD (2019, DateUtil.JUNE     , 25),
  196.             DateUtil.CreateFromYMD (2019, DateUtil.JULY     , 25),
  197.             DateUtil.CreateFromYMD (2019, DateUtil.AUGUST   , 25),
  198.             DateUtil.CreateFromYMD (2019, DateUtil.SEPTEMBER, 25),
  199.             DateUtil.CreateFromYMD (2019, DateUtil.OCTOBER  , 25),
  200.             DateUtil.CreateFromYMD (2019, DateUtil.NOVEMBER , 25),
  201.             DateUtil.CreateFromYMD (2019, DateUtil.DECEMBER , 25),
  202.             DateUtil.CreateFromYMD (2020, DateUtil.JANUARY  , 25),
  203.             DateUtil.CreateFromYMD (2020, DateUtil.FEBRUARY , 25),
  204.             DateUtil.CreateFromYMD (2020, DateUtil.MARCH    , 25),
  205.             DateUtil.CreateFromYMD (2020, DateUtil.APRIL    , 25),
  206.             DateUtil.CreateFromYMD (2020, DateUtil.MAY      , 25),
  207.             DateUtil.CreateFromYMD (2020, DateUtil.JUNE     , 25),
  208.             DateUtil.CreateFromYMD (2020, DateUtil.JULY     , 25),
  209.             DateUtil.CreateFromYMD (2020, DateUtil.AUGUST   , 25),
  210.             DateUtil.CreateFromYMD (2020, DateUtil.SEPTEMBER, 25),
  211.             DateUtil.CreateFromYMD (2020, DateUtil.OCTOBER  , 25),
  212.             DateUtil.CreateFromYMD (2020, DateUtil.NOVEMBER , 25),
  213.             DateUtil.CreateFromYMD (2020, DateUtil.DECEMBER , 25),
  214.             DateUtil.CreateFromYMD (2021, DateUtil.JANUARY  , 25),
  215.             DateUtil.CreateFromYMD (2021, DateUtil.FEBRUARY , 25),
  216.             DateUtil.CreateFromYMD (2021, DateUtil.MARCH    , 25),
  217.             DateUtil.CreateFromYMD (2021, DateUtil.APRIL    , 25),
  218.             DateUtil.CreateFromYMD (2021, DateUtil.MAY      , 25),
  219.             DateUtil.CreateFromYMD (2021, DateUtil.JUNE     , 25),
  220.             DateUtil.CreateFromYMD (2021, DateUtil.JULY     , 25),
  221.             DateUtil.CreateFromYMD (2021, DateUtil.AUGUST   , 25),
  222.             DateUtil.CreateFromYMD (2021, DateUtil.SEPTEMBER, 25),
  223.             DateUtil.CreateFromYMD (2021, DateUtil.OCTOBER  , 25),
  224.             DateUtil.CreateFromYMD (2021, DateUtil.NOVEMBER , 25),
  225.             DateUtil.CreateFromYMD (2021, DateUtil.DECEMBER , 25),
  226.             DateUtil.CreateFromYMD (2022, DateUtil.JANUARY  , 25),
  227.             DateUtil.CreateFromYMD (2022, DateUtil.FEBRUARY , 25),
  228.             DateUtil.CreateFromYMD (2022, DateUtil.MARCH    , 25),
  229.             DateUtil.CreateFromYMD (2022, DateUtil.APRIL    , 25),
  230.             DateUtil.CreateFromYMD (2022, DateUtil.MAY      , 25),
  231.             DateUtil.CreateFromYMD (2022, DateUtil.JUNE     , 25),
  232.             DateUtil.CreateFromYMD (2022, DateUtil.JULY     , 25),
  233.             DateUtil.CreateFromYMD (2022, DateUtil.AUGUST   , 25),
  234.             DateUtil.CreateFromYMD (2022, DateUtil.SEPTEMBER, 25),
  235.             DateUtil.CreateFromYMD (2022, DateUtil.OCTOBER  , 25),
  236.             DateUtil.CreateFromYMD (2022, DateUtil.NOVEMBER , 25),
  237.             DateUtil.CreateFromYMD (2022, DateUtil.DECEMBER , 25),
  238.             DateUtil.CreateFromYMD (2023, DateUtil.JANUARY  , 25),
  239.             DateUtil.CreateFromYMD (2023, DateUtil.FEBRUARY , 25),
  240.             DateUtil.CreateFromYMD (2023, DateUtil.MARCH    , 25),
  241.             DateUtil.CreateFromYMD (2023, DateUtil.APRIL    , 25),
  242.             DateUtil.CreateFromYMD (2023, DateUtil.MAY      , 25),
  243.             DateUtil.CreateFromYMD (2023, DateUtil.JUNE     , 25),
  244.             DateUtil.CreateFromYMD (2023, DateUtil.JULY     , 25),
  245.             DateUtil.CreateFromYMD (2023, DateUtil.AUGUST   , 25),
  246.             DateUtil.CreateFromYMD (2023, DateUtil.SEPTEMBER, 25),
  247.             DateUtil.CreateFromYMD (2023, DateUtil.OCTOBER  , 25),
  248.             DateUtil.CreateFromYMD (2023, DateUtil.NOVEMBER , 25),
  249.             DateUtil.CreateFromYMD (2023, DateUtil.DECEMBER , 25),
  250.             DateUtil.CreateFromYMD (2024, DateUtil.JANUARY  , 25),
  251.             DateUtil.CreateFromYMD (2024, DateUtil.FEBRUARY , 25),
  252.             DateUtil.CreateFromYMD (2024, DateUtil.MARCH    , 25),
  253.             DateUtil.CreateFromYMD (2024, DateUtil.APRIL    , 25),
  254.             DateUtil.CreateFromYMD (2024, DateUtil.MAY      , 25),
  255.             DateUtil.CreateFromYMD (2024, DateUtil.JUNE     , 25),
  256.             DateUtil.CreateFromYMD (2024, DateUtil.JULY     , 25),
  257.             DateUtil.CreateFromYMD (2024, DateUtil.AUGUST   , 25),
  258.             DateUtil.CreateFromYMD (2024, DateUtil.SEPTEMBER, 25),
  259.             DateUtil.CreateFromYMD (2024, DateUtil.OCTOBER  , 25),
  260.             DateUtil.CreateFromYMD (2024, DateUtil.NOVEMBER , 25),
  261.             DateUtil.CreateFromYMD (2024, DateUtil.DECEMBER , 25),
  262.             DateUtil.CreateFromYMD (2025, DateUtil.JANUARY  , 25),
  263.             DateUtil.CreateFromYMD (2025, DateUtil.FEBRUARY , 25),
  264.             DateUtil.CreateFromYMD (2025, DateUtil.MARCH    , 25),
  265.             DateUtil.CreateFromYMD (2025, DateUtil.APRIL    , 25),
  266.             DateUtil.CreateFromYMD (2025, DateUtil.MAY      , 25),
  267.             DateUtil.CreateFromYMD (2025, DateUtil.JUNE     , 25),
  268.             DateUtil.CreateFromYMD (2025, DateUtil.JULY     , 25),
  269.             DateUtil.CreateFromYMD (2025, DateUtil.AUGUST   , 25),
  270.             DateUtil.CreateFromYMD (2025, DateUtil.SEPTEMBER, 25),
  271.             DateUtil.CreateFromYMD (2025, DateUtil.OCTOBER  , 25),
  272.             DateUtil.CreateFromYMD (2025, DateUtil.NOVEMBER , 25),
  273.             DateUtil.CreateFromYMD (2025, DateUtil.DECEMBER , 25),
  274.             DateUtil.CreateFromYMD (2026, DateUtil.JANUARY  , 25),
  275.             DateUtil.CreateFromYMD (2026, DateUtil.FEBRUARY , 25),
  276.             DateUtil.CreateFromYMD (2026, DateUtil.MARCH    , 25),
  277.             DateUtil.CreateFromYMD (2026, DateUtil.APRIL    , 25),
  278.             DateUtil.CreateFromYMD (2026, DateUtil.MAY      , 25),
  279.             DateUtil.CreateFromYMD (2026, DateUtil.JUNE     , 25),
  280.             DateUtil.CreateFromYMD (2026, DateUtil.JULY     , 25),
  281.             DateUtil.CreateFromYMD (2026, DateUtil.AUGUST   , 25),
  282.             DateUtil.CreateFromYMD (2026, DateUtil.SEPTEMBER, 25),
  283.             DateUtil.CreateFromYMD (2026, DateUtil.OCTOBER  , 25),
  284.             DateUtil.CreateFromYMD (2026, DateUtil.NOVEMBER , 25),
  285.             DateUtil.CreateFromYMD (2026, DateUtil.DECEMBER , 25),
  286.             DateUtil.CreateFromYMD (2027, DateUtil.JANUARY  , 25),
  287.             DateUtil.CreateFromYMD (2027, DateUtil.FEBRUARY , 25),
  288.             DateUtil.CreateFromYMD (2027, DateUtil.MARCH    , 25),
  289.             DateUtil.CreateFromYMD (2027, DateUtil.APRIL    , 25),
  290.             DateUtil.CreateFromYMD (2027, DateUtil.MAY      , 25),
  291.             DateUtil.CreateFromYMD (2027, DateUtil.JUNE     , 25),
  292.             DateUtil.CreateFromYMD (2027, DateUtil.JULY     , 25),
  293.             DateUtil.CreateFromYMD (2027, DateUtil.AUGUST   , 25),
  294.             DateUtil.CreateFromYMD (2027, DateUtil.SEPTEMBER, 25),
  295.             DateUtil.CreateFromYMD (2027, DateUtil.OCTOBER  , 25),
  296.             DateUtil.CreateFromYMD (2027, DateUtil.NOVEMBER , 25),
  297.             DateUtil.CreateFromYMD (2027, DateUtil.DECEMBER , 25),
  298.             DateUtil.CreateFromYMD (2028, DateUtil.JANUARY  , 25),
  299.             DateUtil.CreateFromYMD (2028, DateUtil.FEBRUARY , 25),
  300.             DateUtil.CreateFromYMD (2028, DateUtil.MARCH    , 25),
  301.             DateUtil.CreateFromYMD (2028, DateUtil.APRIL    , 25),
  302.             DateUtil.CreateFromYMD (2028, DateUtil.MAY      , 25),
  303.             DateUtil.CreateFromYMD (2028, DateUtil.JUNE     , 25),
  304.             DateUtil.CreateFromYMD (2028, DateUtil.JULY     , 25),
  305.             DateUtil.CreateFromYMD (2028, DateUtil.AUGUST   , 25),
  306.             DateUtil.CreateFromYMD (2028, DateUtil.SEPTEMBER, 25),
  307.             DateUtil.CreateFromYMD (2028, DateUtil.OCTOBER  , 25),
  308.             DateUtil.CreateFromYMD (2028, DateUtil.NOVEMBER , 25),
  309.             DateUtil.CreateFromYMD (2028, DateUtil.DECEMBER , 25),
  310.             DateUtil.CreateFromYMD (2029, DateUtil.JANUARY  , 25),
  311.             DateUtil.CreateFromYMD (2029, DateUtil.FEBRUARY , 25),
  312.             DateUtil.CreateFromYMD (2029, DateUtil.MARCH    , 25),
  313.             DateUtil.CreateFromYMD (2029, DateUtil.APRIL    , 25),
  314.             DateUtil.CreateFromYMD (2029, DateUtil.MAY      , 25),
  315.             DateUtil.CreateFromYMD (2029, DateUtil.JUNE     , 25),
  316.             DateUtil.CreateFromYMD (2029, DateUtil.JULY     , 25),
  317.             DateUtil.CreateFromYMD (2029, DateUtil.AUGUST   , 25),
  318.             DateUtil.CreateFromYMD (2029, DateUtil.SEPTEMBER, 25),
  319.             DateUtil.CreateFromYMD (2029, DateUtil.OCTOBER  , 25),
  320.             DateUtil.CreateFromYMD (2029, DateUtil.NOVEMBER , 25),
  321.             DateUtil.CreateFromYMD (2029, DateUtil.DECEMBER , 25),
  322.             DateUtil.CreateFromYMD (2030, DateUtil.JANUARY  , 25),
  323.             DateUtil.CreateFromYMD (2030, DateUtil.FEBRUARY , 25),
  324.             DateUtil.CreateFromYMD (2030, DateUtil.MARCH    , 25),
  325.             DateUtil.CreateFromYMD (2030, DateUtil.APRIL    , 25),
  326.             DateUtil.CreateFromYMD (2030, DateUtil.MAY      , 25),
  327.             DateUtil.CreateFromYMD (2030, DateUtil.JUNE     , 25),
  328.             DateUtil.CreateFromYMD (2030, DateUtil.JULY     , 25),
  329.             DateUtil.CreateFromYMD (2030, DateUtil.AUGUST   , 25),
  330.             DateUtil.CreateFromYMD (2030, DateUtil.SEPTEMBER, 25),
  331.             DateUtil.CreateFromYMD (2030, DateUtil.OCTOBER  , 25),
  332.             DateUtil.CreateFromYMD (2030, DateUtil.NOVEMBER , 25),
  333.             DateUtil.CreateFromYMD (2030, DateUtil.DECEMBER , 25),
  334.             DateUtil.CreateFromYMD (2031, DateUtil.JANUARY  , 25),
  335.             DateUtil.CreateFromYMD (2031, DateUtil.FEBRUARY , 25),
  336.             DateUtil.CreateFromYMD (2031, DateUtil.MARCH    , 25),
  337.             DateUtil.CreateFromYMD (2031, DateUtil.APRIL    , 25),
  338.             DateUtil.CreateFromYMD (2031, DateUtil.MAY      , 25),
  339.             DateUtil.CreateFromYMD (2031, DateUtil.JUNE     , 25),
  340.             DateUtil.CreateFromYMD (2031, DateUtil.JULY     , 25),
  341.             DateUtil.CreateFromYMD (2031, DateUtil.AUGUST   , 25),
  342.             DateUtil.CreateFromYMD (2031, DateUtil.SEPTEMBER, 25),
  343.             DateUtil.CreateFromYMD (2031, DateUtil.OCTOBER  , 25),
  344.             DateUtil.CreateFromYMD (2031, DateUtil.NOVEMBER , 25),
  345.             DateUtil.CreateFromYMD (2031, DateUtil.DECEMBER , 25),
  346.             DateUtil.CreateFromYMD (2032, DateUtil.JANUARY  , 25),
  347.             DateUtil.CreateFromYMD (2032, DateUtil.FEBRUARY , 25),
  348.             DateUtil.CreateFromYMD (2032, DateUtil.MARCH    , 25),
  349.             DateUtil.CreateFromYMD (2032, DateUtil.APRIL    , 25),
  350.             DateUtil.CreateFromYMD (2032, DateUtil.MAY      , 25),
  351.             DateUtil.CreateFromYMD (2032, DateUtil.JUNE     , 25),
  352.             DateUtil.CreateFromYMD (2032, DateUtil.JULY     , 25),
  353.             DateUtil.CreateFromYMD (2032, DateUtil.AUGUST   , 25),
  354.             DateUtil.CreateFromYMD (2032, DateUtil.SEPTEMBER, 25),
  355.             DateUtil.CreateFromYMD (2032, DateUtil.OCTOBER  , 25),
  356.             DateUtil.CreateFromYMD (2032, DateUtil.NOVEMBER , 25),
  357.             DateUtil.CreateFromYMD (2032, DateUtil.DECEMBER , 25),
  358.             DateUtil.CreateFromYMD (2033, DateUtil.JANUARY  , 25),
  359.             DateUtil.CreateFromYMD (2033, DateUtil.FEBRUARY , 25),
  360.             DateUtil.CreateFromYMD (2033, DateUtil.MARCH    , 25),
  361.             DateUtil.CreateFromYMD (2033, DateUtil.APRIL    , 25),
  362.             DateUtil.CreateFromYMD (2033, DateUtil.MAY      , 25),
  363.             DateUtil.CreateFromYMD (2033, DateUtil.JUNE     , 25),
  364.             DateUtil.CreateFromYMD (2033, DateUtil.JULY     , 25),
  365.             DateUtil.CreateFromYMD (2033, DateUtil.AUGUST   , 25),
  366.             DateUtil.CreateFromYMD (2033, DateUtil.SEPTEMBER, 25),
  367.             DateUtil.CreateFromYMD (2033, DateUtil.OCTOBER  , 25),
  368.             DateUtil.CreateFromYMD (2033, DateUtil.NOVEMBER , 25),
  369.             DateUtil.CreateFromYMD (2033, DateUtil.DECEMBER , 25),
  370.             DateUtil.CreateFromYMD (2034, DateUtil.JANUARY  , 25),
  371.             DateUtil.CreateFromYMD (2034, DateUtil.FEBRUARY , 25),
  372.             DateUtil.CreateFromYMD (2034, DateUtil.MARCH    , 25),
  373.             DateUtil.CreateFromYMD (2034, DateUtil.APRIL    , 25),
  374.             DateUtil.CreateFromYMD (2034, DateUtil.MAY      , 25),
  375.             DateUtil.CreateFromYMD (2034, DateUtil.JUNE     , 25),
  376.             DateUtil.CreateFromYMD (2034, DateUtil.JULY     , 25),
  377.             DateUtil.CreateFromYMD (2034, DateUtil.AUGUST   , 25),
  378.             DateUtil.CreateFromYMD (2034, DateUtil.SEPTEMBER, 25),
  379.             DateUtil.CreateFromYMD (2034, DateUtil.OCTOBER  , 25),
  380.             DateUtil.CreateFromYMD (2034, DateUtil.NOVEMBER , 25),
  381.             DateUtil.CreateFromYMD (2034, DateUtil.DECEMBER , 25),
  382.             DateUtil.CreateFromYMD (2035, DateUtil.JANUARY  , 25),
  383.             DateUtil.CreateFromYMD (2035, DateUtil.FEBRUARY , 25),
  384.             DateUtil.CreateFromYMD (2035, DateUtil.MARCH    , 25),
  385.             DateUtil.CreateFromYMD (2035, DateUtil.APRIL    , 25),
  386.             DateUtil.CreateFromYMD (2035, DateUtil.MAY      , 25),
  387.             DateUtil.CreateFromYMD (2035, DateUtil.JUNE     , 25),
  388.             DateUtil.CreateFromYMD (2035, DateUtil.JULY     , 25),
  389.             DateUtil.CreateFromYMD (2035, DateUtil.AUGUST   , 25),
  390.             DateUtil.CreateFromYMD (2035, DateUtil.SEPTEMBER, 25),
  391.             DateUtil.CreateFromYMD (2035, DateUtil.OCTOBER  , 25),
  392.             DateUtil.CreateFromYMD (2035, DateUtil.NOVEMBER , 25),
  393.             DateUtil.CreateFromYMD (2035, DateUtil.DECEMBER , 25),
  394.             DateUtil.CreateFromYMD (2036, DateUtil.JANUARY  , 25),
  395.             DateUtil.CreateFromYMD (2036, DateUtil.FEBRUARY , 25),
  396.             DateUtil.CreateFromYMD (2036, DateUtil.MARCH    , 25),
  397.             DateUtil.CreateFromYMD (2036, DateUtil.APRIL    , 25),
  398.             DateUtil.CreateFromYMD (2036, DateUtil.MAY      , 25),
  399.             DateUtil.CreateFromYMD (2036, DateUtil.JUNE     , 25),
  400.             DateUtil.CreateFromYMD (2036, DateUtil.JULY     , 25),
  401.             DateUtil.CreateFromYMD (2036, DateUtil.AUGUST   , 25),
  402.             DateUtil.CreateFromYMD (2036, DateUtil.SEPTEMBER, 25),
  403.             DateUtil.CreateFromYMD (2036, DateUtil.OCTOBER  , 25),
  404.             DateUtil.CreateFromYMD (2036, DateUtil.NOVEMBER , 25),
  405.             DateUtil.CreateFromYMD (2036, DateUtil.DECEMBER , 25),
  406.             DateUtil.CreateFromYMD (2037, DateUtil.JANUARY  , 25),
  407.             DateUtil.CreateFromYMD (2037, DateUtil.FEBRUARY , 25),
  408.             DateUtil.CreateFromYMD (2037, DateUtil.MARCH    , 25),
  409.             DateUtil.CreateFromYMD (2037, DateUtil.APRIL    , 25),
  410.             DateUtil.CreateFromYMD (2037, DateUtil.MAY      , 25),
  411.             DateUtil.CreateFromYMD (2037, DateUtil.JUNE     , 25),
  412.             DateUtil.CreateFromYMD (2037, DateUtil.JULY     , 25),
  413.             DateUtil.CreateFromYMD (2037, DateUtil.AUGUST   , 25),
  414.             DateUtil.CreateFromYMD (2037, DateUtil.SEPTEMBER, 25),
  415.             DateUtil.CreateFromYMD (2037, DateUtil.OCTOBER  , 25),
  416.             DateUtil.CreateFromYMD (2037, DateUtil.NOVEMBER , 25),
  417.             DateUtil.CreateFromYMD (2037, DateUtil.DECEMBER , 25),
  418.             DateUtil.CreateFromYMD (2038, DateUtil.JANUARY  , 25),
  419.             DateUtil.CreateFromYMD (2038, DateUtil.FEBRUARY , 25),
  420.             DateUtil.CreateFromYMD (2038, DateUtil.MARCH    , 25),
  421.             DateUtil.CreateFromYMD (2038, DateUtil.APRIL    , 25),
  422.             DateUtil.CreateFromYMD (2038, DateUtil.MAY      , 25),
  423.             DateUtil.CreateFromYMD (2038, DateUtil.JUNE     , 25),
  424.             DateUtil.CreateFromYMD (2038, DateUtil.JULY     , 25),
  425.             DateUtil.CreateFromYMD (2038, DateUtil.AUGUST   , 25),
  426.             DateUtil.CreateFromYMD (2038, DateUtil.SEPTEMBER, 25),
  427.             DateUtil.CreateFromYMD (2038, DateUtil.OCTOBER  , 25),
  428.             DateUtil.CreateFromYMD (2038, DateUtil.NOVEMBER , 25),
  429.             DateUtil.CreateFromYMD (2038, DateUtil.DECEMBER , 25),
  430.             DateUtil.CreateFromYMD (2039, DateUtil.JANUARY  , 25),
  431.             DateUtil.CreateFromYMD (2039, DateUtil.FEBRUARY , 25),
  432.             DateUtil.CreateFromYMD (2039, DateUtil.MARCH    , 25),
  433.             DateUtil.CreateFromYMD (2039, DateUtil.APRIL    , 25),
  434.             DateUtil.CreateFromYMD (2039, DateUtil.MAY      , 25),
  435.             DateUtil.CreateFromYMD (2039, DateUtil.JUNE     , 25),
  436.             DateUtil.CreateFromYMD (2039, DateUtil.JULY     , 25),
  437.             DateUtil.CreateFromYMD (2039, DateUtil.AUGUST   , 25),
  438.             DateUtil.CreateFromYMD (2039, DateUtil.SEPTEMBER, 25),
  439.             DateUtil.CreateFromYMD (2039, DateUtil.OCTOBER  , 25),
  440.             DateUtil.CreateFromYMD (2039, DateUtil.NOVEMBER , 25),
  441.             DateUtil.CreateFromYMD (2039, DateUtil.DECEMBER , 25),
  442.             DateUtil.CreateFromYMD (2040, DateUtil.JANUARY  , 25),
  443.             DateUtil.CreateFromYMD (2040, DateUtil.FEBRUARY , 25),
  444.             DateUtil.CreateFromYMD (2040, DateUtil.MARCH    , 25),
  445.             DateUtil.CreateFromYMD (2040, DateUtil.APRIL    , 25),
  446.             DateUtil.CreateFromYMD (2040, DateUtil.MAY      , 25),
  447.             DateUtil.CreateFromYMD (2040, DateUtil.JUNE     , 25),
  448.             DateUtil.CreateFromYMD (2040, DateUtil.JULY     , 25),
  449.             DateUtil.CreateFromYMD (2040, DateUtil.AUGUST   , 25),
  450.             DateUtil.CreateFromYMD (2040, DateUtil.SEPTEMBER, 25),
  451.             DateUtil.CreateFromYMD (2040, DateUtil.OCTOBER  , 25),
  452.             DateUtil.CreateFromYMD (2040, DateUtil.NOVEMBER , 25),
  453.             DateUtil.CreateFromYMD (2040, DateUtil.DECEMBER , 25),
  454.             DateUtil.CreateFromYMD (2041, DateUtil.JANUARY  , 25),
  455.             DateUtil.CreateFromYMD (2041, DateUtil.FEBRUARY , 25),
  456.             DateUtil.CreateFromYMD (2041, DateUtil.MARCH    , 25),
  457.             DateUtil.CreateFromYMD (2041, DateUtil.APRIL    , 25),
  458.             DateUtil.CreateFromYMD (2041, DateUtil.MAY      , 25),
  459.             DateUtil.CreateFromYMD (2041, DateUtil.JUNE     , 25),
  460.             DateUtil.CreateFromYMD (2041, DateUtil.JULY     , 25),
  461.             DateUtil.CreateFromYMD (2041, DateUtil.AUGUST   , 25),
  462.             DateUtil.CreateFromYMD (2041, DateUtil.SEPTEMBER, 25),
  463.             DateUtil.CreateFromYMD (2041, DateUtil.OCTOBER  , 25),
  464.             DateUtil.CreateFromYMD (2041, DateUtil.NOVEMBER , 25),
  465.             DateUtil.CreateFromYMD (2041, DateUtil.DECEMBER , 25),
  466.             DateUtil.CreateFromYMD (2042, DateUtil.JANUARY  , 25),
  467.             DateUtil.CreateFromYMD (2042, DateUtil.FEBRUARY , 25),
  468.             DateUtil.CreateFromYMD (2042, DateUtil.MARCH    , 25),
  469.             DateUtil.CreateFromYMD (2042, DateUtil.APRIL    , 25),
  470.             DateUtil.CreateFromYMD (2042, DateUtil.MAY      , 25),
  471.             DateUtil.CreateFromYMD (2042, DateUtil.JUNE     , 25),
  472.             DateUtil.CreateFromYMD (2042, DateUtil.JULY     , 25),
  473.             DateUtil.CreateFromYMD (2042, DateUtil.AUGUST   , 25),
  474.             DateUtil.CreateFromYMD (2042, DateUtil.SEPTEMBER, 25),
  475.             DateUtil.CreateFromYMD (2042, DateUtil.OCTOBER  , 25),
  476.             DateUtil.CreateFromYMD (2042, DateUtil.NOVEMBER , 25),
  477.             DateUtil.CreateFromYMD (2042, DateUtil.DECEMBER , 25),
  478.             DateUtil.CreateFromYMD (2043, DateUtil.JANUARY  , 25),
  479.             DateUtil.CreateFromYMD (2043, DateUtil.FEBRUARY , 25),
  480.             DateUtil.CreateFromYMD (2043, DateUtil.MARCH    , 25),
  481.             DateUtil.CreateFromYMD (2043, DateUtil.APRIL    , 25),
  482.             DateUtil.CreateFromYMD (2043, DateUtil.MAY      , 25),
  483.             DateUtil.CreateFromYMD (2043, DateUtil.JUNE     , 25),
  484.             DateUtil.CreateFromYMD (2043, DateUtil.JULY     , 25),
  485.             DateUtil.CreateFromYMD (2043, DateUtil.AUGUST   , 25),
  486.             DateUtil.CreateFromYMD (2043, DateUtil.SEPTEMBER, 25),
  487.             DateUtil.CreateFromYMD (2043, DateUtil.OCTOBER  , 25),
  488.             DateUtil.CreateFromYMD (2043, DateUtil.NOVEMBER , 25),
  489.             DateUtil.CreateFromYMD (2043, DateUtil.DECEMBER , 25),
  490.             DateUtil.CreateFromYMD (2044, DateUtil.JANUARY  , 25),
  491.             DateUtil.CreateFromYMD (2044, DateUtil.FEBRUARY , 25),
  492.             DateUtil.CreateFromYMD (2044, DateUtil.MARCH    , 25),
  493.             DateUtil.CreateFromYMD (2044, DateUtil.APRIL    , 25),
  494.             DateUtil.CreateFromYMD (2044, DateUtil.MAY      , 25),
  495.             DateUtil.CreateFromYMD (2044, DateUtil.JUNE     , 25),
  496.             DateUtil.CreateFromYMD (2044, DateUtil.JULY     , 25),
  497.             DateUtil.CreateFromYMD (2044, DateUtil.AUGUST   , 25),
  498.             DateUtil.CreateFromYMD (2044, DateUtil.SEPTEMBER, 25),
  499.             DateUtil.CreateFromYMD (2044, DateUtil.OCTOBER  , 25),
  500.             DateUtil.CreateFromYMD (2044, DateUtil.NOVEMBER , 25),
  501.             DateUtil.CreateFromYMD (2044, DateUtil.DECEMBER , 25),
  502.             DateUtil.CreateFromYMD (2045, DateUtil.JANUARY  , 25),
  503.             DateUtil.CreateFromYMD (2045, DateUtil.FEBRUARY , 25),
  504.             DateUtil.CreateFromYMD (2045, DateUtil.MARCH    , 25),
  505.             DateUtil.CreateFromYMD (2045, DateUtil.APRIL    , 25),
  506.             DateUtil.CreateFromYMD (2045, DateUtil.MAY      , 25),
  507.             DateUtil.CreateFromYMD (2045, DateUtil.JUNE     , 25),
  508.             DateUtil.CreateFromYMD (2045, DateUtil.JULY     , 25),
  509.             DateUtil.CreateFromYMD (2045, DateUtil.AUGUST   , 25),
  510.             DateUtil.CreateFromYMD (2045, DateUtil.SEPTEMBER, 25),
  511.             DateUtil.CreateFromYMD (2045, DateUtil.OCTOBER  , 25),
  512.             DateUtil.CreateFromYMD (2045, DateUtil.NOVEMBER , 25),
  513.             DateUtil.CreateFromYMD (2045, DateUtil.DECEMBER , 25),
  514.             DateUtil.CreateFromYMD (2046, DateUtil.JANUARY  , 25),
  515.             DateUtil.CreateFromYMD (2046, DateUtil.FEBRUARY , 25),
  516.             DateUtil.CreateFromYMD (2046, DateUtil.MARCH    , 25),
  517.         };

  518.         double[] adblPrincipalPayDown = new double[] {
  519.             1042394.66,
  520.             1022818.86,
  521.             1004129.80,
  522.             974934.20,
  523.             957106.77,
  524.             939707.76,
  525.             922657.37,
  526.             905884.73,
  527.             889512.35,
  528.             873677.83,
  529.             864616.71,
  530.             852795.67,
  531.             837416.16,
  532.             822345.44,
  533.             807557.01,
  534.             799363.65,
  535.             784999.88,
  536.             774438.91,
  537.             760500.39,
  538.             752641.94,
  539.             742504.50,
  540.             735131.64,
  541.             721791.58,
  542.             712205.44,
  543.             704773.66,
  544.             691885.60,
  545.             684742.14,
  546.             675528.64,
  547.             668439.66,
  548.             656462.04,
  549.             652990.02,
  550.             641304.10,
  551.             634968.44,
  552.             626832.46,
  553.             620742.65,
  554.             609695.73,
  555.             607009.38,
  556.             603903.35,
  557.             596371.82,
  558.             590476.70,
  559.             584804.48,
  560.             577509.36,
  561.             571914.96,
  562.             566346.07,
  563.             559485.28,
  564.             554040.80,
  565.             548540.33,
  566.             541657.01,
  567.             536289.73,
  568.             526630.27,
  569.             521543.31,
  570.             514933.57,
  571.             509907.40,
  572.             500859.44,
  573.             495978.98,
  574.             489841.69,
  575.             485067.24,
  576.             476454.32,
  577.             471946.62,
  578.             466072.58,
  579.             461583.26,
  580.             457226.26,
  581.             452652.44,
  582.             444720.08,
  583.             442818.85,
  584.             438397.53,
  585.             434244.44,
  586.             430065.06,
  587.             422460.79,
  588.             420612.69,
  589.             416624.87,
  590.             412543.43,
  591.             405378.76,
  592.             401446.60,
  593.             397674.86,
  594.             395916.46,
  595.             392024.18,
  596.             385216.45,
  597.             381466.80,
  598.             377887.02,
  599.             374205.01,
  600.             370631.36,
  601.             366112.63,
  602.             362673.96,
  603.             359240.29,
  604.             355743.84,
  605.             352271.29,
  606.             349018.01,
  607.             343041.74,
  608.             339733.29,
  609.             336374.82,
  610.             334939.82,
  611.             331774.08,
  612.             326190.16,
  613.             323032.82,
  614.             319911.89,
  615.             316975.61,
  616.             313909.57,
  617.             308609.51,
  618.             305713.96,
  619.             304456.23,
  620.             301443.00,
  621.             298508.57,
  622.             295551.65,
  623.             290682.72,
  624.             287833.49,
  625.             285004.82,
  626.             282264.53,
  627.             279579.72,
  628.             274938.37,
  629.             272263.40,
  630.             269673.48,
  631.             268358.55,
  632.             265809.43,
  633.             263245.44,
  634.             258858.82,
  635.             256390.42,
  636.             253980.67,
  637.             251557.77,
  638.             249111.72,
  639.             246734.26,
  640.             242754.14,
  641.             240465.03,
  642.             238152.45,
  643.             235856.77,
  644.             234804.12,
  645.             232515.16,
  646.             228776.49,
  647.             226572.49,
  648.             224514.41,
  649.             222351.38,
  650.             220261.58,
  651.             218139.74,
  652.             214724.59,
  653.             212682.98,
  654.             210713.08,
  655.             208759.18,
  656.             206853.37,
  657.             204868.46,
  658.             201531.66,
  659.             199648.70,
  660.             198731.52,
  661.             196886.73,
  662.             195019.08,
  663.             193209.88,
  664.             191438.82,
  665.             188474.69,
  666.             186712.44,
  667.             185007.04,
  668.             183379.35,
  669.             181663.35,
  670.             179977.88,
  671.             178296.02,
  672.             175694.27,
  673.             174077.00,
  674.             172521.03,
  675.             170944.71,
  676.             169432.01,
  677.             167919.65,
  678.             166384.87,
  679.             164027.33,
  680.             163210.74,
  681.             161724.10,
  682.             160296.41,
  683.             158890.55,
  684.             157461.36,
  685.             156076.90,
  686.             153846.28,
  687.             152567.54,
  688.             151188.13,
  689.             149893.10,
  690.             148615.29,
  691.             147311.47,
  692.             146032.75,
  693.             144033.04,
  694.             142843.78,
  695.             141635.64,
  696.             140439.62,
  697.             139295.40,
  698.             138168.91,
  699.             136987.58,
  700.             135895.20,
  701.             134192.98,
  702.             133090.15,
  703.             132495.67,
  704.             131478.32,
  705.             130410.42,
  706.             129434.94,
  707.             128479.55,
  708.             127482.61,
  709.             126054.79,
  710.             125216.37,
  711.             124375.18,
  712.             122850.27,
  713.             121741.16,
  714.             120855.76,
  715.             120109.93,
  716.             119397.88,
  717.             118653.33,
  718.             118020.88,
  719.             117433.26,
  720.             116833.62,
  721.             116369.87,
  722.             115991.65,
  723.             115665.77,
  724.             115486.44,
  725.             113205.69,
  726.             112388.04,
  727.             112004.47,
  728.             112201.48,
  729.             112127.90,
  730.             111539.05,
  731.             113317.94,
  732.             384849.62,
  733.             288750.90,
  734.             375798.57,
  735.             320704.31,
  736.             13849.71,
  737.             13727.36,
  738.             13606.05,
  739.             13485.77,
  740.             13366.52,
  741.             13248.30,
  742.             13131.08,
  743.             13014.86,
  744.             12899.64,
  745.             12785.41,
  746.             12672.16,
  747.             12559.88,
  748.             12448.56,
  749.             12338.21,
  750.             12228.80,
  751.             12120.34,
  752.             12012.81,
  753.             11906.21,
  754.             11800.54,
  755.             11695.78,
  756.             11591.93,
  757.             11488.98,
  758.             11386.92,
  759.             11285.76,
  760.             11185.48,
  761.             11086.07,
  762.             10987.53,
  763.             10889.86,
  764.             10793.04,
  765.             10697.07,
  766.             10601.95,
  767.             10507.67,
  768.             10414.22,
  769.             10321.60,
  770.             10229.80,
  771.             10138.82,
  772.             10048.65,
  773.             9959.29,
  774.             9870.73,
  775.             9782.97,
  776.             9695.99,
  777.             9609.81,
  778.             9524.40,
  779.             9439.78,
  780.             9355.93,
  781.             9272.85,
  782.             9190.53,
  783.             9108.98,
  784.             9028.19,
  785.             8948.16,
  786.             8868.88,
  787.             8790.35,
  788.             8712.58,
  789.             8635.55,
  790.             8559.27,
  791.             8483.74,
  792.             8408.97,
  793.             8334.94,
  794.             8261.66,
  795.             8189.15,
  796.             8117.40,
  797.             8046.43,
  798.             7976.24,
  799.             7906.86,
  800.             7838.30,
  801.             7770.60,
  802.             7703.79,
  803.             7637.95,
  804.             7573.17,
  805.             7509.58,
  806.             7447.43,
  807.             15430.41,
  808.             7217.42,
  809.             7166.87,
  810.             7064.29,
  811.             6848.45,
  812.             6788.98,
  813.             6730.17,
  814.             6672.01,
  815.             6614.51,
  816.             6557.67,
  817.             6501.51,
  818.             6446.02,
  819.             6391.21,
  820.             6337.10,
  821.             6283.69,
  822.             6230.99,
  823.             6179.02,
  824.             6127.79,
  825.             6077.32,
  826.             6027.64,
  827.             5978.77,
  828.             5930.74,
  829.             5883.58,
  830.             5837.33,
  831.             5792.05,
  832.             5747.80,
  833.             5704.65,
  834.             5662.69,
  835.             5622.02,
  836.             5582.81,
  837.             5545.23,
  838.             5509.53,
  839.             5476.05,
  840.             5445.31,
  841.             5418.10,
  842.             5395.78,
  843.             5381.19,
  844.             5382.69,
  845.             5239.13,
  846.             4921.48,
  847.             4829.27,
  848.             4735.30,
  849.             4758.91,
  850.             4467.33,
  851.             4054.87,
  852.             4039.73,
  853.             3869.92,
  854.             3753.53,
  855.             13947.59,
  856.             108760.73,
  857.             0.00,
  858.             0.00,
  859.             0.00,
  860.             18935930.73,
  861.         };

  862.         double[] adblCouponAmount = new double[] {
  863.             214911.15,
  864.             209801.35,
  865.             208645.97,
  866.             203949.72,
  867.             198769.55,
  868.             197754.66,
  869.             192680.89,
  870.             189056.23,
  871.             184844.05,
  872.             181872.94,
  873.             176537.96,
  874.             175565.07,
  875.             171591.89,
  876.             167172.78,
  877.             165151.15,
  878.             162047.63,
  879.             158385.85,
  880.             157056.72,
  881.             152268.92,
  882.             148763.77,
  883.             149060.46,
  884.             145612.12,
  885.             139315.98,
  886.             138099.47,
  887.             135867.81,
  888.             133187.13,
  889.             131133.35,
  890.             128714.53,
  891.             127954.47,
  892.             125933.77,
  893.             123021.72,
  894.             122133.79,
  895.             119857.23,
  896.             117716.89,
  897.             116814.32,
  898.             114413.23,
  899.             112804.70,
  900.             111352.48,
  901.             109700.47,
  902.             108911.53,
  903.             106641.22,
  904.             105758.51,
  905.             103690.11,
  906.             102402.43,
  907.             100781.19,
  908.             99373.12,
  909.             98011.07,
  910.             96666.90,
  911.             95525.76,
  912.             93935.33,
  913.             92648.76,
  914.             91350.19,
  915.             90124.21,
  916.             88857.19,
  917.             87640.50,
  918.             86412.38,
  919.             85225.30,
  920.             84054.91,
  921.             82904.02,
  922.             81742.19,
  923.             80671.03,
  924.             79536.51,
  925.             78438.89,
  926.             77331.19,
  927.             76293.11,
  928.             75212.00,
  929.             74166.08,
  930.             73156.98,
  931.             72134.91,
  932.             71111.01,
  933.             70113.89,
  934.             69107.90,
  935.             68200.89,
  936.             67224.69,
  937.             66280.08,
  938.             65327.04,
  939.             64398.85,
  940.             63502.14,
  941.             62601.87,
  942.             61693.82,
  943.             60814.96,
  944.             59965.50,
  945.             59106.93,
  946.             58241.71,
  947.             57459.96,
  948.             56614.50,
  949.             55796.16,
  950.             55004.46,
  951.             54205.11,
  952.             53404.76,
  953.             52630.00,
  954.             51880.13,
  955.             51118.61,
  956.             50381.25,
  957.             49642.59,
  958.             48898.09,
  959.             48205.92,
  960.             47478.83,
  961.             46774.80,
  962.             46097.30,
  963.             45414.32,
  964.             44721.83,
  965.             44077.12,
  966.             43401.05,
  967.             42771.33,
  968.             42115.56,
  969.             41480.46,
  970.             40864.45,
  971.             40244.31,
  972.             39642.59,
  973.             39041.01,
  974.             38457.17,
  975.             37855.18,
  976.             37260.28,
  977.             36704.95,
  978.             36124.23,
  979.             35585.47,
  980.             35022.14,
  981.             34495.84,
  982.             33945.86,
  983.             33431.80,
  984.             32894.94,
  985.             32396.10,
  986.             31875.20,
  987.             31370.34,
  988.             30867.35,
  989.             30371.77,
  990.             29889.85,
  991.             29409.08,
  992.             28941.41,
  993.             28472.03,
  994.             28015.31,
  995.             27557.09,
  996.             27100.33,
  997.             26655.89,
  998.             26223.22,
  999.             25803.39,
  1000.             25366.63,
  1001.             24956.51,
  1002.             24530.22,
  1003.             24122.62,
  1004.             23709.23,
  1005.             23318.54,
  1006.             22912.85,
  1007.             22531.29,
  1008.             22135.35,
  1009.             21753.88,
  1010.             21369.77,
  1011.             21008.13,
  1012.             20644.17,
  1013.             20279.85,
  1014.             19916.26,
  1015.             19560.78,
  1016.             19213.88,
  1017.             18868.70,
  1018.             18531.73,
  1019.             18196.74,
  1020.             17858.17,
  1021.             17538.39,
  1022.             17207.85,
  1023.             16895.45,
  1024.             16576.14,
  1025.             16262.48,
  1026.             15955.98,
  1027.             15649.79,
  1028.             15344.07,
  1029.             15053.01,
  1030.             14753.00,
  1031.             14470.07,
  1032.             14172.60,
  1033.             13896.26,
  1034.             13618.69,
  1035.             13341.67,
  1036.             13065.02,
  1037.             12794.59,
  1038.             12531.03,
  1039.             12269.03,
  1040.             12005.29,
  1041.             11754.32,
  1042.             11502.50,
  1043.             11246.58,
  1044.             11000.57,
  1045.             10760.62,
  1046.             10511.15,
  1047.             10277.63,
  1048.             10042.41,
  1049.             9803.74,
  1050.             9573.79,
  1051.             9349.22,
  1052.             9115.61,
  1053.             8895.89,
  1054.             8676.39,
  1055.             8453.94,
  1056.             8238.91,
  1057.             8029.57,
  1058.             7813.00,
  1059.             7608.49,
  1060.             7403.70,
  1061.             7196.49,
  1062.             6995.67,
  1063.             6798.91,
  1064.             6595.69,
  1065.             6402.70,
  1066.             6209.62,
  1067.             6014.35,
  1068.             5824.16,
  1069.             5634.41,
  1070.             5445.40,
  1071.             5262.51,
  1072.             5076.74,
  1073.             4895.50,
  1074.             4708.98,
  1075.             4529.63,
  1076.             4347.02,
  1077.             3658.90,
  1078.             3092.03,
  1079.             2415.05,
  1080.             2128.00,
  1081.             2101.10,
  1082.             2074.44,
  1083.             2048.03,
  1084.             2021.87,
  1085.             1995.94,
  1086.             1970.26,
  1087.             1944.81,
  1088.             1919.60,
  1089.             1894.62,
  1090.             1869.88,
  1091.             1845.36,
  1092.             1821.07,
  1093.             1797.01,
  1094.             1773.17,
  1095.             1749.55,
  1096.             1726.15,
  1097.             1702.96,
  1098.             1680.00,
  1099.             1657.24,
  1100.             1634.70,
  1101.             1612.37,
  1102.             1590.24,
  1103.             1568.32,
  1104.             1546.60,
  1105.             1525.09,
  1106.             1503.77,
  1107.             1482.66,
  1108.             1461.74,
  1109.             1441.01,
  1110.             1420.47,
  1111.             1400.13,
  1112.             1379.97,
  1113.             1360.00,
  1114.             1340.22,
  1115.             1320.66,
  1116.             1301.32,
  1117.             1282.15,
  1118.             1263.16,
  1119.             1244.35,
  1120.             1225.71,
  1121.             1207.24,
  1122.             1188.94,
  1123.             1170.88,
  1124.             1152.99,
  1125.             1135.27,
  1126.             1117.72,
  1127.             1100.32,
  1128.             1083.09,
  1129.             1066.02,
  1130.             1049.11,
  1131.             1032.35,
  1132.             1015.75,
  1133.             999.31,
  1134.             983.01,
  1135.             966.87,
  1136.             950.87,
  1137.             935.03,
  1138.             919.32,
  1139.             903.76,
  1140.             888.35,
  1141.             873.08,
  1142.             857.95,
  1143.             842.96,
  1144.             828.10,
  1145.             813.38,
  1146.             798.78,
  1147.             784.31,
  1148.             769.98,
  1149.             755.83,
  1150.             741.83,
  1151.             727.97,
  1152.             718.25,
  1153.             704.58,
  1154.             691.02,
  1155.             677.59,
  1156.             664.49,
  1157.             651.52,
  1158.             638.68,
  1159.             625.96,
  1160.             613.34,
  1161.             600.86,
  1162.             588.51,
  1163.             576.26,
  1164.             564.11,
  1165.             552.06,
  1166.             540.14,
  1167.             528.35,
  1168.             516.65,
  1169.             505.03,
  1170.             493.63,
  1171.             482.33,
  1172.             471.13,
  1173.             460.01,
  1174.             448.98,
  1175.             438.03,
  1176.             427.17,
  1177.             416.38,
  1178.             405.68,
  1179.             395.04,
  1180.             384.47,
  1181.             373.97,
  1182.             363.53,
  1183.             353.15,
  1184.             342.82,
  1185.             332.52,
  1186.             322.28,
  1187.             312.07,
  1188.             301.50,
  1189.             291.57,
  1190.             281.91,
  1191.             272.74,
  1192.             263.63,
  1193.             254.66,
  1194.             245.65,
  1195.             236.98,
  1196.             228.83,
  1197.             220.65,
  1198.             207.80,
  1199.             183.35,
  1200.             175.62,
  1201.             0.00,
  1202.             0.00,
  1203.             0.00,
  1204.             0.00,
  1205.         };

  1206.         double dblIssueAmount = Matrix.Sum (adblPrincipalPayDown);

  1207.         JulianDate dtEffective = DateUtil.CreateFromYMD (
  1208.             2017,
  1209.             DateUtil.SEPTEMBER,
  1210.             25
  1211.         );

  1212.         BondComponent bond = BondBuilder.CreateBondFromCF (
  1213.             strName,
  1214.             dtEffective,
  1215.             strCurrency,
  1216.             strName,
  1217.             strCouponDayCount,
  1218.             dblIssueAmount,
  1219.             dblCouponRate,
  1220.             iCouponFreq,
  1221.             adtPeriodEnd,
  1222.             adblCouponAmount,
  1223.             adblPrincipalPayDown,
  1224.             true
  1225.         );

  1226.         BondReplicator abr = BondReplicator.CorporateSenior (
  1227.             dblCleanPrice,
  1228.             dblIssuePrice,
  1229.             dblIssueAmount,
  1230.             dtSpot,
  1231.             astrDepositTenor,
  1232.             adblDepositQuote,
  1233.             adblFuturesQuote,
  1234.             astrFixFloatTenor,
  1235.             adblFixFloatQuote,
  1236.             dblSpreadBump,
  1237.             dblSpreadDurationMultiplier,
  1238.             strTreasuryCode,
  1239.             astrGovvieTenor,
  1240.             adblGovvieYield,
  1241.             astrCreditTenor,
  1242.             adblCreditQuote,
  1243.             dblFX,
  1244.             Double.NaN,
  1245.             iSettleLag,
  1246.             bond
  1247.         );

  1248.         BondReplicationRun abrr = abr.generateRun();

  1249.         System.out.println (abrr.display());

  1250.         double dblBalance = 1.;

  1251.         for (CompositePeriod p : bond.couponPeriods()) {
  1252.             int iEndDate = p.endDate();

  1253.             int iStartDate = p.startDate();

  1254.             double dblPrincipalPayDown = bond.notional (iStartDate) - bond.notional (iEndDate);

  1255.             double dblInterest = dblCouponRate * p.couponDCF() * bond.notional (iStartDate) * bond.couponFactor (iEndDate);

  1256.             dblBalance -= dblPrincipalPayDown;

  1257.             System.out.println (
  1258.                 "\t" + new JulianDate (iEndDate) + " => " +
  1259.                 FormatUtil.FormatDouble (dblPrincipalPayDown, 8, 2, dblIssueAmount) + " | " +
  1260.                 FormatUtil.FormatDouble (dblInterest, 6, 2, dblIssueAmount) + " | " +
  1261.                 FormatUtil.FormatDouble (dblPrincipalPayDown + dblInterest, 8, 2, dblIssueAmount) + " | " +
  1262.                 FormatUtil.FormatDouble (dblBalance, 8, 2, dblIssueAmount) + " ||"
  1263.             );
  1264.         }
  1265.     }
  1266. }