BurgardKjaerEdgeRun.java

  1. package org.drip.xva.pde;

  2. /*
  3.  * -*- mode: java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  4.  */

  5. /*!
  6.  * Copyright (C) 2020 Lakshmi Krishnamurthy
  7.  * Copyright (C) 2019 Lakshmi Krishnamurthy
  8.  * Copyright (C) 2018 Lakshmi Krishnamurthy
  9.  * Copyright (C) 2017 Lakshmi Krishnamurthy
  10.  *
  11.  *  This file is part of DROP, an open-source library targeting analytics/risk, transaction cost analytics,
  12.  *      asset liability management analytics, capital, exposure, and margin analytics, valuation adjustment
  13.  *      analytics, and portfolio construction analytics within and across fixed income, credit, commodity,
  14.  *      equity, FX, and structured products. It also includes auxiliary libraries for algorithm support,
  15.  *      numerical analysis, numerical optimization, spline builder, model validation, statistical learning,
  16.  *      and computational support.
  17.  *  
  18.  *      https://lakshmidrip.github.io/DROP/
  19.  *  
  20.  *  DROP is composed of three modules:
  21.  *  
  22.  *  - DROP Product Core - https://lakshmidrip.github.io/DROP-Product-Core/
  23.  *  - DROP Portfolio Core - https://lakshmidrip.github.io/DROP-Portfolio-Core/
  24.  *  - DROP Computational Core - https://lakshmidrip.github.io/DROP-Computational-Core/
  25.  *
  26.  *  DROP Product Core implements libraries for the following:
  27.  *  - Fixed Income Analytics
  28.  *  - Loan Analytics
  29.  *  - Transaction Cost Analytics
  30.  *
  31.  *  DROP Portfolio Core implements libraries for the following:
  32.  *  - Asset Allocation Analytics
  33.  *  - Asset Liability Management Analytics
  34.  *  - Capital Estimation Analytics
  35.  *  - Exposure Analytics
  36.  *  - Margin Analytics
  37.  *  - XVA Analytics
  38.  *
  39.  *  DROP Computational Core implements libraries for the following:
  40.  *  - Algorithm Support
  41.  *  - Computation Support
  42.  *  - Function Analysis
  43.  *  - Model Validation
  44.  *  - Numerical Analysis
  45.  *  - Numerical Optimizer
  46.  *  - Spline Builder
  47.  *  - Statistical Learning
  48.  *
  49.  *  Documentation for DROP is Spread Over:
  50.  *
  51.  *  - Main                     => https://lakshmidrip.github.io/DROP/
  52.  *  - Wiki                     => https://github.com/lakshmiDRIP/DROP/wiki
  53.  *  - GitHub                   => https://github.com/lakshmiDRIP/DROP
  54.  *  - Repo Layout Taxonomy     => https://github.com/lakshmiDRIP/DROP/blob/master/Taxonomy.md
  55.  *  - Javadoc                  => https://lakshmidrip.github.io/DROP/Javadoc/index.html
  56.  *  - Technical Specifications => https://github.com/lakshmiDRIP/DROP/tree/master/Docs/Internal
  57.  *  - Release Versions         => https://lakshmidrip.github.io/DROP/version.html
  58.  *  - Community Credits        => https://lakshmidrip.github.io/DROP/credits.html
  59.  *  - Issues Catalog           => https://github.com/lakshmiDRIP/DROP/issues
  60.  *  - JUnit                    => https://lakshmidrip.github.io/DROP/junit/index.html
  61.  *  - Jacoco                   => https://lakshmidrip.github.io/DROP/jacoco/index.html
  62.  *
  63.  *  Licensed under the Apache License, Version 2.0 (the "License");
  64.  *      you may not use this file except in compliance with the License.
  65.  *  
  66.  *  You may obtain a copy of the License at
  67.  *      http://www.apache.org/licenses/LICENSE-2.0
  68.  *  
  69.  *  Unless required by applicable law or agreed to in writing, software
  70.  *      distributed under the License is distributed on an "AS IS" BASIS,
  71.  *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  72.  *  
  73.  *  See the License for the specific language governing permissions and
  74.  *      limitations under the License.
  75.  */

  76. /**
  77.  * <i>BurgardKjaerEdgeRun</i> collects the Results of the Burgard Kjaer PDE based on the Risk-Neutral Ito
  78.  * Evolution of the Derivative, as laid out in Burgard and Kjaer (2014). The References are:
  79.  *
  80.  *  <br><br>
  81.  *  <ul>
  82.  *      <li>
  83.  *          Burgard, C., and M. Kjaer (2014): PDE Representations of Derivatives with Bilateral Counter-party
  84.  *              Risk and Funding Costs <i>Journal of Credit Risk</i> <b>7 (3)</b> 1-19
  85.  *      </li>
  86.  *      <li>
  87.  *          Cesari, G., J. Aquilina, N. Charpillon, X. Filipovic, G. Lee, and L. Manda (2009): <i>Modeling,
  88.  *              Pricing, and Hedging Counter-party Credit Exposure - A Technical Guide</i> <b>Springer
  89.  *              Finance</b> New York
  90.  *      </li>
  91.  *      <li>
  92.  *          Gregory, J. (2009): Being Two-faced over Counter-party Credit Risk <i>Risk</i> <b>20 (2)</b>
  93.  *              86-90
  94.  *      </li>
  95.  *      <li>
  96.  *          Li, B., and Y. Tang (2007): <i>Quantitative Analysis, Derivatives Modeling, and Trading
  97.  *              Strategies in the Presence of Counter-party Credit Risk for the Fixed Income Market</i>
  98.  *              <b>World Scientific Publishing</b> Singapore
  99.  *      </li>
  100.  *      <li>
  101.  *          Piterbarg, V. (2010): Funding Beyond Discounting: Collateral Agreements and Derivatives Pricing
  102.  *              <i>Risk</i> <b>21 (2)</b> 97-102
  103.  *      </li>
  104.  *  </ul>
  105.  *
  106.  *  <br><br>
  107.  *  <ul>
  108.  *      <li><b>Module </b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/PortfolioCore.md">Portfolio Core Module</a></li>
  109.  *      <li><b>Library</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/XVAAnalyticsLibrary.md">XVA Analytics Library</a></li>
  110.  *      <li><b>Project</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/src/main/java/org/drip/xva/README.md">Valuation Adjustments that account for Collateral, CC Credit/Debt and Funding Overhead</a></li>
  111.  *      <li><b>Package</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/src/main/java/org/drip/xva/pde/README.md">Burgard Kjaer PDE Evolution Scheme</a></li>
  112.  *  </ul>
  113.  * <br><br>
  114.  *
  115.  * @author Lakshmi Krishnamurthy
  116.  */

  117. public class BurgardKjaerEdgeRun extends org.drip.xva.pde.BurgardKjaerEdge
  118. {
  119.     private double _derivativeXVAFundingGrowth = java.lang.Double.NaN;
  120.     private double _derivativeXVAHedgeErrorGrowth = java.lang.Double.NaN;
  121.     private double _derivativeXVAClientDefaultGrowth = java.lang.Double.NaN;
  122.     private double _derivativeXVADealerDefaultGrowth = java.lang.Double.NaN;

  123.     /**
  124.      * BurgardKjaerEdgeRun Constructor
  125.      *
  126.      * @param dblPositionValueBump The Bump in the Position Value
  127.      * @param derivativeXVAStochasticGrowthDown The Stochastic Down Component of the Derivative XVA Value
  128.      *      Growth
  129.      * @param derivativeXVAStochasticGrowth The Stochastic Component of the Derivative XVA Value Growth
  130.      * @param derivativeXVAStochasticGrowthUp The Stochastic Up Component of the Derivative XVA Value
  131.      *      Growth
  132.      * @param derivativeXVACollateralGrowth The Collateral Component of the Derivative XVA Value Growth
  133.      * @param derivativeXVAFundingGrowth The Funding Component of the Derivative XVA Value Growth
  134.      * @param derivativeXVADealerDefaultGrowth The Dealer Default Component of the Derivative XVA Value
  135.      *      Growth
  136.      * @param derivativeXVAClientDefaultGrowth The Client Default Component of the Derivative XVA Value
  137.      *      Growth
  138.      * @param derivativeXVAHedgeErrorGrowth The Hedge Error Component of the Derivaitve XVA Growth
  139.      *
  140.      * @throws java.lang.Exception Thrown if the Inputs are Invalid
  141.      */

  142.     public BurgardKjaerEdgeRun (
  143.         final double dblPositionValueBump,
  144.         final double derivativeXVAStochasticGrowthDown,
  145.         final double derivativeXVAStochasticGrowth,
  146.         final double derivativeXVAStochasticGrowthUp,
  147.         final double derivativeXVACollateralGrowth,
  148.         final double derivativeXVAFundingGrowth,
  149.         final double derivativeXVADealerDefaultGrowth,
  150.         final double derivativeXVAClientDefaultGrowth,
  151.         final double derivativeXVAHedgeErrorGrowth)
  152.         throws java.lang.Exception
  153.     {
  154.         super (
  155.             dblPositionValueBump,
  156.             derivativeXVAStochasticGrowthDown,
  157.             derivativeXVAStochasticGrowth,
  158.             derivativeXVAStochasticGrowthUp,
  159.             derivativeXVACollateralGrowth
  160.         );

  161.         if (!org.drip.numerical.common.NumberUtil.IsValid (_derivativeXVAFundingGrowth =
  162.                 derivativeXVAFundingGrowth) ||
  163.             !org.drip.numerical.common.NumberUtil.IsValid (_derivativeXVADealerDefaultGrowth =
  164.                 derivativeXVADealerDefaultGrowth) ||
  165.             !org.drip.numerical.common.NumberUtil.IsValid (_derivativeXVAClientDefaultGrowth =
  166.                 derivativeXVAClientDefaultGrowth) ||
  167.             !org.drip.numerical.common.NumberUtil.IsValid (_derivativeXVAHedgeErrorGrowth =
  168.                 derivativeXVAHedgeErrorGrowth))
  169.         {
  170.             throw new java.lang.Exception ("BurgardKjaerEdgeRun Constructor => Invalid Inputs");
  171.         }
  172.     }

  173.     /**
  174.      * Retrieve the Hedge Error Component of the Derivative XVA Value Growth
  175.      *
  176.      * @return The Hedge Error Component of the Derivative XVA Value Growth
  177.      */

  178.     public double derivativeXVAHedgeErrorGrowth()
  179.     {
  180.         return _derivativeXVAHedgeErrorGrowth;
  181.     }

  182.     /**
  183.      * Retrieve the Funding Component of the Derivative XVA Value Growth
  184.      *
  185.      * @return The Funding Component of the Derivative XVA Value Growth
  186.      */

  187.     public double derivativeXVAFundingGrowth()
  188.     {
  189.         return _derivativeXVAFundingGrowth;
  190.     }

  191.     /**
  192.      * Retrieve the Dealer Default Component of the Derivative XVA Value Growth
  193.      *
  194.      * @return The Dealer Default Component of the Derivative XVA Value Growth
  195.      */

  196.     public double derivativeXVADealerDefaultGrowth()
  197.     {
  198.         return _derivativeXVADealerDefaultGrowth;
  199.     }

  200.     /**
  201.      * Retrieve the Client Default Component of the Derivative XVA Value Growth
  202.      *
  203.      * @return The Client Default Component of the Derivative XVA Value Growth
  204.      */

  205.     public double derivativeXVAClientDefaultGrowth()
  206.     {
  207.         return _derivativeXVAClientDefaultGrowth;
  208.     }

  209.     @Override public double thetaPositionValueDown()
  210.     {
  211.         return super.derivativeXVAStochasticGrowthDown() + super.derivativeXVACollateralGrowth() +
  212.             _derivativeXVAFundingGrowth + _derivativeXVADealerDefaultGrowth +
  213.                 _derivativeXVAClientDefaultGrowth + _derivativeXVAHedgeErrorGrowth;
  214.     }

  215.     @Override public double theta()
  216.     {
  217.         return super.derivativeXVAStochasticGrowth() + super.derivativeXVACollateralGrowth() +
  218.             _derivativeXVAFundingGrowth + _derivativeXVADealerDefaultGrowth +
  219.                 _derivativeXVAClientDefaultGrowth + _derivativeXVAHedgeErrorGrowth;
  220.     }

  221.     @Override public double thetaPositionValueUp()
  222.     {
  223.         return super.derivativeXVAStochasticGrowthUp() + super.derivativeXVACollateralGrowth() +
  224.             _derivativeXVAFundingGrowth + _derivativeXVADealerDefaultGrowth +
  225.                 _derivativeXVAClientDefaultGrowth + _derivativeXVAHedgeErrorGrowth;
  226.     }
  227. }