PutGreeks.java

  1. package org.drip.pricer.option;

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

  78. /**
  79.  * <i>PutGreeks</i> contains the Sensitivities generated during the Put Option Pricing Run.
  80.  *
  81.  *  <br><br>
  82.  *  <ul>
  83.  *      <li><b>Module </b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/ProductCore.md">Product Core Module</a></li>
  84.  *      <li><b>Library</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/FixedIncomeAnalyticsLibrary.md">Fixed Income Analytics</a></li>
  85.  *      <li><b>Project</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/src/main/java/org/drip/pricer/README.md">Custom Pricing Algorithms and the Derivative Fokker Planck Trajectory Generators</a></li>
  86.  *      <li><b>Package</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/src/main/java/org/drip/pricer/option/README.md">Deterministic/Stochastic Volatility Settings/Greeks</a></li>
  87.  *  </ul>
  88.  * <br><br>
  89.  *
  90.  * @author Lakshmi Krishnamurthy
  91.  */

  92. public class PutGreeks extends org.drip.pricer.option.Greeks {
  93.     private double _dblPutPriceFromParity = java.lang.Double.NaN;

  94.     /**
  95.      * The PutGreeks Constructor
  96.      *
  97.      * @param dblDF The Payoff Discount Factor
  98.      * @param dblEffectiveVolatility Effective Volatility
  99.      * @param dblExpectedPayoff Expected Forward Payoff
  100.      * @param dblExpectedATMPayoff Expected ATM Forward Payoff
  101.      * @param dblPutPrice Put Price
  102.      * @param dblPutPriceFromParity Put Price Computed from Put-Call Parity
  103.      * @param dblPutProb1 Put Probability Term #1
  104.      * @param dblPutProb2 Put Probability Term #2
  105.      * @param dblPutDelta Put Delta
  106.      * @param dblPutVega Put Vega
  107.      * @param dblPutTheta Put Theta
  108.      * @param dblPutRho Put Rho
  109.      * @param dblPutGamma Put Gamma
  110.      * @param dblPutVanna Put Vanna
  111.      * @param dblPutVomma Put Vomma
  112.      * @param dblPutCharm Put Charm
  113.      * @param dblPutVeta Put Veta
  114.      * @param dblPutColor Put Color
  115.      * @param dblPutSpeed Put Speed
  116.      * @param dblPutUltima Put Ultima
  117.      *
  118.      * @throws java.lang.Exception Thrown if the Inputs are Invalid
  119.      */

  120.     public PutGreeks (
  121.         final double dblDF,
  122.         final double dblEffectiveVolatility,
  123.         final double dblExpectedPayoff,
  124.         final double dblExpectedATMPayoff,
  125.         final double dblPutPrice,
  126.         final double dblPutPriceFromParity,
  127.         final double dblPutProb1,
  128.         final double dblPutProb2,
  129.         final double dblPutDelta,
  130.         final double dblPutVega,
  131.         final double dblPutTheta,
  132.         final double dblPutRho,
  133.         final double dblPutGamma,
  134.         final double dblPutVanna,
  135.         final double dblPutVomma,
  136.         final double dblPutCharm,
  137.         final double dblPutVeta,
  138.         final double dblPutColor,
  139.         final double dblPutSpeed,
  140.         final double dblPutUltima)
  141.         throws java.lang.Exception
  142.     {
  143.         super (dblDF, dblEffectiveVolatility, dblExpectedPayoff, dblExpectedATMPayoff, dblPutPrice,
  144.             dblPutProb1, dblPutProb2, dblPutDelta, dblPutVega, dblPutTheta, dblPutRho, dblPutGamma,
  145.                 dblPutVanna, dblPutVomma, dblPutCharm, dblPutVeta, dblPutColor, dblPutSpeed, dblPutUltima);

  146.         if (!org.drip.numerical.common.NumberUtil.IsValid (dblPutPrice) &&
  147.             !org.drip.numerical.common.NumberUtil.IsValid (_dblPutPriceFromParity = dblPutPriceFromParity))
  148.             throw new java.lang.Exception ("PutGreeks ctr: Invalid Inputs");

  149.         _dblPutPriceFromParity = dblPutPriceFromParity;
  150.     }

  151.     /**
  152.      * The Put Option Price Computed from the Put-Call Parity Relation
  153.      *
  154.      * @return The Put Option Price Computed from the Put-Call Parity Relation
  155.      */

  156.     public double putPriceFromParity()
  157.     {
  158.         return _dblPutPriceFromParity;
  159.     }
  160. }