Class FXCurve

java.lang.Object
org.drip.state.fx.FXCurve
All Implemented Interfaces:
Curve, LatentState
Direct Known Subclasses:
BasisSplineFXForward, ExplicitBootFXCurve

public abstract class FXCurve
extends java.lang.Object
implements Curve
FXCurve is the Stub for the FX Curve for the specified Currency Pair. It implements the following Functionality.
  • Calculate the FX Forward to the given Date
  • Calculate the set of Zero basis given the input discount curves
  • Bootstrap the basis to the discount curve inputs
  • Bootstrap the discount curve from the discount curve inputs
  • Calculate the rates implied by the discount curve inputs
  • Calculate the rate implied by the discount curve inputs to a specified date
  • Return the Currency Pair
  • Calculate the FX Forward to the given date
  • Retrieve the Manifest Measure Jacobian of the Forward Rate to the given date
  • Retrieve the Manifest Measure Jacobian of the Forward Rate to the date implied by the given Tenor

Module Product Core Module
Library Fixed Income Analytics
Project Latent State Inference and Creation Utilities
Package FX Latent State Curve Estimator
Author:
Lakshmi Krishnamurthy
  • Method Details

    • fx

      public abstract double fx​(int date) throws java.lang.Exception
      Calculate the FX Forward to the given Date
      Parameters:
      date - Date
      Returns:
      The FX Forward
      Throws:
      java.lang.Exception - Thrown if the FX Forward cannot be calculated
    • zeroBasis

      public abstract double[] zeroBasis​(int[] dateNodeArray, ValuationParams valuationParams, MergedDiscountForwardCurve numeratorDiscountCurve, MergedDiscountForwardCurve denominatorDiscountCurve, boolean basisOnDenominator)
      Calculate the set of Zero basis given the input discount curves
      Parameters:
      dateNodeArray - Array of Date Nodes
      valuationParams - Valuation Parameters
      numeratorDiscountCurve - Discount Curve Numerator
      denominatorDiscountCurve - Discount Curve Denominator
      basisOnDenominator - True if the basis is calculated on the denominator discount curve
      Returns:
      Array of the computed basis
    • bootstrapBasis

      public abstract double[] bootstrapBasis​(int[] dateNodeArray, ValuationParams valuationParams, MergedDiscountForwardCurve numeratorDiscountCurve, MergedDiscountForwardCurve denominatorDiscountCurve, boolean basisOnDenominator)
      Bootstrap the basis to the discount curve inputs
      Parameters:
      dateNodeArray - Array of Date Nodes
      valuationParams - Valuation Parameters
      numeratorDiscountCurve - Discount Curve Numerator
      denominatorDiscountCurve - Discount Curve Denominator
      basisOnDenominator - True if the basis is calculated on the denominator discount curve
      Returns:
      Array of the computed basis
    • bootstrapBasisDC

      public abstract MergedDiscountForwardCurve bootstrapBasisDC​(int[] dateNodeArray, ValuationParams valuationParams, MergedDiscountForwardCurve numeratorDiscountCurve, MergedDiscountForwardCurve denominatorDiscountCurve, boolean basisOnDenominator)
      Bootstrap the discount curve from the discount curve inputs
      Parameters:
      dateNodeArray - Array of Date Nodes
      valuationParams - Valuation Parameters
      numeratorDiscountCurve - Discount Curve Numerator
      denominatorDiscountCurve - Discount Curve Denominator
      basisOnDenominator - True if the basis is calculated on the denominator discount curve
      Returns:
      Array of the computed basis
    • impliedNodeRates

      public abstract double[] impliedNodeRates​(int[] dateNodeArray, ValuationParams valuationParams, MergedDiscountForwardCurve numeratorDiscountCurve, MergedDiscountForwardCurve denominatorDiscountCurve, boolean basisOnDenominator)
      Calculate the rates implied by the discount curve inputs
      Parameters:
      dateNodeArray - Array of Date Nodes
      valuationParams - Valuation Parameters
      numeratorDiscountCurve - Discount Curve Numerator
      denominatorDiscountCurve - Discount Curve Denominator
      basisOnDenominator - True if the basis is calculated on the denominator discount curve
      Returns:
      Array of the computed implied rates
    • rate

      public abstract double rate​(int[] dateNodeArray, ValuationParams valuationParams, MergedDiscountForwardCurve numeratorDiscountCurve, MergedDiscountForwardCurve denominatorDiscountCurve, int date, boolean basisOnDenominator) throws java.lang.Exception
      Calculate the rate implied by the discount curve inputs to a specified date
      Parameters:
      dateNodeArray - Array of Date Nodes
      valuationParams - ValuationParams
      numeratorDiscountCurve - Discount Curve Numerator
      denominatorDiscountCurve - Discount Curve Denominator
      date - Date to which the implied rate is sought
      basisOnDenominator - True if the implied rate is calculated on the denominator discount curve
      Returns:
      Implied rate
      Throws:
      java.lang.Exception - Thrown if the implied rate cannot be calculated
    • label

      public LatentStateLabel label()
      Description copied from interface: Curve
      Get the Curve Latent State Identifier Label
      Specified by:
      label in interface Curve
      Returns:
      The Curve Latent State Identifier Label
    • currency

      public java.lang.String currency()
      Description copied from interface: Curve
      Get the Currency
      Specified by:
      currency in interface Curve
      Returns:
      Currency
    • epoch

      public JulianDate epoch()
      Description copied from interface: Curve
      Get the Epoch Date
      Specified by:
      epoch in interface Curve
      Returns:
      The Epoch Date
    • currencyPair

      public CurrencyPair currencyPair()
      Return the Currency Pair
      Returns:
      CurrencyPair
    • fx

      public double fx​(JulianDate date) throws java.lang.Exception
      Calculate the FX Forward to the given date
      Parameters:
      date - Date
      Returns:
      The FX Forward
      Throws:
      java.lang.Exception - Thrown if the FX Forward cannot be calculated
    • fx

      public double fx​(java.lang.String tenor) throws java.lang.Exception
      Calculate the FX Forward to the given date
      Parameters:
      tenor - The Tenor
      Returns:
      The FX Forward
      Throws:
      java.lang.Exception - Thrown if the FX Forward cannot be calculated
    • setCCIS

      public boolean setCCIS​(CurveConstructionInputSet curveConstructionInputSet)
      Description copied from interface: Curve
      Set the Curve Construction Input Set Parameters
      Specified by:
      setCCIS in interface Curve
      Parameters:
      curveConstructionInputSet - The Curve Construction Input Set Parameters
      Returns:
      TRUE - Inputs successfully Set
    • calibComp

      public CalibratableComponent[] calibComp()
      Description copied from interface: Curve
      Retrieve the Calibration Components
      Specified by:
      calibComp in interface Curve
      Returns:
      Array of Calibration Components
    • manifestMeasure

      public CaseInsensitiveTreeMap<java.lang.Double> manifestMeasure​(java.lang.String instrument)
      Description copied from interface: Curve
      Retrieve the Manifest Measure Map of the given Instrument used to construct the Curve
      Specified by:
      manifestMeasure in interface Curve
      Parameters:
      instrument - The Calibration Instrument's Code whose Manifest Measure Map is sought
      Returns:
      The Manifest Measure Map of the given Instrument used to construct the Curve
    • parallelShiftManifestMeasure

      public LatentState parallelShiftManifestMeasure​(java.lang.String manifestMeasure, double shift)
      Description copied from interface: LatentState
      Create a LatentState Instance from the Manifest Measure Parallel Shift
      Specified by:
      parallelShiftManifestMeasure in interface LatentState
      Parameters:
      manifestMeasure - The Specified Manifest Measure
      shift - Parallel shift of the Manifest Measure
      Returns:
      New LatentState Instance corresponding to the Parallel Shifted Manifest Measure
    • shiftManifestMeasure

      public LatentState shiftManifestMeasure​(int spanIndex, java.lang.String manifestMeasure, double shift)
      Description copied from interface: LatentState
      Create a LatentState Instance from the Shift of the Specified Manifest Measure
      Specified by:
      shiftManifestMeasure in interface LatentState
      Parameters:
      spanIndex - Index into the Span that identifies the Instrument
      manifestMeasure - The Specified Manifest Measure
      shift - Shift of the Manifest Measure
      Returns:
      New LatentState Instance corresponding to the Shift of the Specified Manifest Measure
    • customTweakManifestMeasure

      public LatentState customTweakManifestMeasure​(java.lang.String manifestMeasure, ManifestMeasureTweak manifestMeasureTweak)
      Description copied from interface: LatentState
      Create a LatentState Instance from the Manifest Measure Tweak Parameters
      Specified by:
      customTweakManifestMeasure in interface LatentState
      Parameters:
      manifestMeasure - The Specified Manifest Measure
      manifestMeasureTweak - Manifest Measure Tweak Parameters
      Returns:
      New LatentState Instance corresponding to the Tweaked Manifest Measure
    • parallelShiftQuantificationMetric

      public LatentState parallelShiftQuantificationMetric​(double shift)
      Description copied from interface: LatentState
      Create a LatentState Instance from the Quantification Metric Parallel Shift
      Specified by:
      parallelShiftQuantificationMetric in interface LatentState
      Parameters:
      shift - Parallel shift of the Quantification Metric
      Returns:
      New LatentState Instance corresponding to the Parallel Shifted Quantification Metric
    • customTweakQuantificationMetric

      public LatentState customTweakQuantificationMetric​(ManifestMeasureTweak manifestMeasureTweak)
      Description copied from interface: LatentState
      Create a LatentState Instance from the Quantification Metric Tweak Parameters
      Specified by:
      customTweakQuantificationMetric in interface LatentState
      Parameters:
      manifestMeasureTweak - Quantification Metric Tweak Parameters
      Returns:
      New LatentState Instance corresponding to the Tweaked Quantification Metric
    • jackDForwardDManifestMeasure

      public abstract WengertJacobian jackDForwardDManifestMeasure​(java.lang.String manifestMeasure, int date)
      Retrieve the Manifest Measure Jacobian of the Forward Rate to the given date
      Parameters:
      manifestMeasure - Manifest Measure
      date - Date
      Returns:
      The Manifest Measure Jacobian of the Forward Rate to the given date
    • jackDForwardDManifestMeasure

      public WengertJacobian jackDForwardDManifestMeasure​(java.lang.String manifestMeasure, JulianDate date)
      Retrieve the Manifest Measure Jacobian of the Forward Rate to the given date
      Parameters:
      manifestMeasure - Manifest Measure
      date - Date
      Returns:
      The Manifest Measure Jacobian of the Forward Rate to the given date
    • jackDForwardDManifestMeasure

      public WengertJacobian jackDForwardDManifestMeasure​(java.lang.String manifestMeasure, java.lang.String tenor)
      Retrieve the Manifest Measure Jacobian of the Forward Rate to the date implied by the given Tenor
      Parameters:
      manifestMeasure - Manifest Measure
      tenor - Tenor
      Returns:
      The Manifest Measure Jacobian of the Forward Rate to the date implied by the given Tenor