- 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.
- */
- /**
- * Bhilwara generates the Full Suite of Replication Metrics for Bond Bhilwara.
- *
- * @author Lakshmi Krishnamurthy
- */
- public class Bhilwara {
- 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 = "Bhilwara";
- 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.SEPTEMBER, 25),
- 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),
- };
- double[] adblPrincipalPayDown = new double[] {
- 299135.42,
- 293800.82,
- 286422.31,
- 284811.34,
- 280035.33,
- 270326.05,
- 269712.70,
- 26144.16,
- 256686.70,
- 251454.94,
- 248096.89,
- 241975.08,
- 241697.45,
- 236817.23,
- 233143.59,
- 231739.14,
- 227993.33,
- 225400.55,
- 224352.13,
- 220835.71,
- 215670.45,
- 218278.54,
- 213286.08,
- 210099.94,
- 210256.27,
- 207185.92,
- 204347.86,
- 203127.82,
- 200332.53,
- 200631.41,
- 199262.80,
- 194534.04,
- 203827.56,
- 192652.24,
- 189464.50,
- 201054.55,
- 188939.02,
- 214387.68,
- 187778.97,
- 179343.85,
- 189669.13,
- 176363.67,
- 176262.86,
- 168645.72,
- 168773.49,
- 166805.04,
- 164318.82,
- 163155.09,
- 158829.45,
- 158789.33,
- 153827.32,
- 152677.48,
- 150337.52,
- 147447.05,
- 146919.10,
- 142388.33,
- 140765.07,
- 136984.46,
- 137165.33,
- 133432.66,
- 130939.82,
- 131192.67,
- 128281.73,
- 125889.89,
- 126159.02,
- 122344.40,
- 124132.89,
- 122375.65,
- 120127.34,
- 117469.89,
- 117736.91,
- 115135.15,
- 113499.44,
- 112833.61,
- 110775.61,
- 111019.29,
- 109454.50,
- 107044.35,
- 107304.17,
- 104936.76,
- 102638.27,
- 103708.20,
- 101424.44,
- 99234.51,
- 99074.90,
- 97679.15,
- 97152.74,
- 95778.72,
- 94487.89,
- 94296.53,
- 93807.05,
- 91373.77,
- 90147.87,
- 89973.49,
- 88748.25,
- 87150.09,
- 86341.31,
- 84805.19,
- 85035.19,
- 83563.64,
- 82420.58,
- 81926.86,
- 81809.16,
- 79025.70,
- 79569.20,
- 78101.88,
- 76748.40,
- 76940.91,
- 75569.06,
- 75122.18,
- 74700.40,
- 73086.81,
- 73516.53,
- 71935.57,
- 72108.42,
- 70278.22,
- 70124.85,
- 68881.26,
- 68243.67,
- 67843.46,
- 66097.31,
- 66779.19,
- 65100.05,
- 64735.20,
- 64617.74,
- 63200.82,
- 62602.68,
- 62505.70,
- 61656.14,
- 60573.31,
- 60449.54,
- 59391.79,
- 58820.86,
- 58500.20,
- 57261.46,
- 57610.98,
- 56846.90,
- 55588.17,
- 55932.23,
- 54960.87,
- 54458.37,
- 53721.51,
- 53414.67,
- 52280.72,
- 52361.31,
- 51657.14,
- 50765.54,
- 50672.24,
- 50201.50,
- 49525.75,
- 49624.48,
- 48581.40,
- 47743.86,
- 48215.40,
- 47388.72,
- 45990.91,
- 45912.95,
- 45477.28,
- 44876.02,
- 44461.64,
- 43872.03,
- 43957.13,
- 43706.39,
- 42798.64,
- 42231.38,
- 42307.78,
- 41759.21,
- 41203.77,
- 40805.59,
- 40262.53,
- 40141.05,
- 39463.11,
- 39090.44,
- 38863.93,
- 38639.77,
- 37840.46,
- 37912.67,
- 37273.86,
- 36920.28,
- 36702.69,
- 35953.59,
- 36263.93,
- 35397.65,
- 35187.49,
- 35106.59,
- 34518.72,
- 34556.59,
- 33857.24,
- 33655.11,
- 32982.42,
- 33257.16,
- 32581.87,
- 32155.38,
- 32186.68,
- 31649.70,
- 31229.88,
- 31254.65,
- 30376.70,
- 30617.78,
- 30216.11,
- 29821.74,
- 29328.58,
- 29350.86,
- 28867.66,
- 28591.17,
- 28412.39,
- 27852.78,
- 27964.98,
- 27604.96,
- 27156.64,
- 27264.30,
- 26832.91,
- 26576.29,
- 26205.21,
- 26048.68,
- 31263.96,
- 37878.87,
- 33808.14,
- 24634.37,
- 24583.50,
- 25933.13,
- 37250.03,
- 91357.96,
- 704382.83,
- 558714.10,
- 319083.90,
- 13025.09,
- };
- double[] adblCouponAmount = new double[] {
- 32157.95,
- 30759.71,
- 33409.09,
- 28990.84,
- 29616.95,
- 31196.73,
- 26960.85,
- 28530.68,
- 28181.61,
- 28764.64,
- 27496.02,
- 29875.28,
- 25930.15,
- 26493.25,
- 27910.58,
- 25840.64,
- 25516.76,
- 26036.67,
- 23219.86,
- 25382.73,
- 26673.77,
- 22341.89,
- 23628.28,
- 24877.50,
- 23018.77,
- 22716.61,
- 23165.53,
- 22861.07,
- 23286.07,
- 20823.41,
- 20547.31,
- 23069.15,
- 20001.92,
- 20404.04,
- 21473.63,
- 19200.37,
- 20234.01,
- 19959.45,
- 19016.53,
- 20630.34,
- 17269.74,
- 18850.73,
- 16797.78,
- 21229.35,
- 18981.96,
- 20019.66,
- 19749.87,
- 18856.70,
- 20464.21,
- 17132.07,
- 19319.99,
- 18469.61,
- 17050.15,
- 17988.65,
- 16036.03,
- 17524.11,
- 16740.37,
- 18178.63,
- 15227.97,
- 16646.25,
- 16967.16,
- 15184.30,
- 16028.43,
- 16339.73,
- 14624.86,
- 16436.19,
- 13774.37,
- 14090.69,
- 14396.94,
- 15168.67,
- 13579.28,
- 14338.90,
- 14165.25,
- 13543.32,
- 14718.16,
- 12778.13,
- 13060.28,
- 13763.79,
- 11899.67,
- 13018.49,
- 13693.96,
- 11482.11,
- 12157.04,
- 12815.40,
- 11874.38,
- 11735.80,
- 11986.35,
- 11846.13,
- 12086.10,
- 10825.54,
- 10331.36,
- 11305.83,
- 11536.23,
- 10334.25,
- 10568.21,
- 10795.32,
- 10672.36,
- 10891.00,
- 9758.13,
- 10312.75,
- 10195.59,
- 9755.32,
- 9002.06,
- 10489.50,
- 9114.38,
- 9322.49,
- 9832.73,
- 8811.07,
- 9313.06,
- 9208.44,
- 8811.12,
- 9583.01,
- 8039.30,
- 8800.85,
- 7859.90,
- 8881.73,
- 7958.45,
- 8412.11,
- 8317.85,
- 7959.20,
- 8656.73,
- 7263.06,
- 8207.09,
- 7862.23,
- 7272.47,
- 7686.33,
- 7600.56,
- 7030.72,
- 7191.07,
- 7584.10,
- 6796.19,
- 7182.86,
- 7102.26,
- 6795.90,
- 7390.98,
- 6422.40,
- 6568.20,
- 6926.45,
- 5992.50,
- 6347.08,
- 6274.90,
- 6410.16,
- 6132.82,
- 6668.94,
- 5794.21,
- 5925.24,
- 6247.89,
- 5790.73,
- 5724.18,
- 5846.85,
- 5220.32,
- 5712.30,
- 6010.65,
- 5041.42,
- 5338.20,
- 5627.69,
- 5215.56,
- 5155.26,
- 5265.38,
- 5204.48,
- 5310.08,
- 4756.57,
- 4538.66,
- 4965.64,
- 5065.86,
- 4537.32,
- 4638.22,
- 4736.15,
- 4680.23,
- 4774.04,
- 4275.36,
- 4515.74,
- 4462.18,
- 4266.90,
- 4075.33,
- 4442.79,
- 3978.24,
- 4201.15,
- 4150.56,
- 3968.18,
- 4311.98,
- 3614.58,
- 4080.14,
- 3904.60,
- 3608.02,
- 3809.20,
- 3398.26,
- 3715.46,
- 3551.14,
- 3857.64,
- 3232.72,
- 3533.95,
- 3602.30,
- 3223.76,
- 3402.41,
- 3467.83,
- 3103.07,
- 3485.93,
- 2920.52,
- 2985.95,
- 3049.23,
- 3210.74,
- 2872.50,
- 3030.77,
- 2991.59,
- 2857.54,
- 3102.25,
- 2690.86,
- 2746.92,
- 2891.37,
- 2496.66,
- 2639.19,
- 2603.95,
- 2654.68,
- 2534.63,
- 2750.46,
- 2377.38,
- 2409.61,
- 2522.89,
- 2332.86,
- 2300.57,
- 2342.06,
- 2143.67,
- 2167.53,
- 1250.69,
- 424.12,
- 17.11,
- };
- double dblIssueAmount = Matrix.Sum (adblPrincipalPayDown);
- JulianDate dtEffective = DateUtil.CreateFromYMD (
- 2017,
- DateUtil.AUGUST,
- 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) + " ||"
- );
- }
- }
- }