diff --git a/ReleaseNotes/03_01_2023.txt b/ReleaseNotes/03_01_2023.txt
new file mode 100644
index 000000000000..64a8f8466a8b
--- /dev/null
+++ b/ReleaseNotes/03_01_2023.txt
@@ -0,0 +1,37 @@
+
+Features:
+
+ - State Curve Basis Spline Forward Rate - Constructor (1, 2)
+ - State Curve Basis Spline Forward Rate (3, 4, 5)
+ - State Curve Basis Spline Forward Rate - Jack D Manifest Measure (6)
+ - State Curve Basis Spline FX Forward #1 (7, 8)
+ - State Curve Basis Spline FX Forward - Span (9)
+ - State Curve Basis Spline FX Forward - Spot (10, 11)
+ - State Curve Basis Spline FX Forward - Node (12, 13, 14)
+ - State Curve Basis Spline FX Forward - Constructor (15, 16, 17)
+ - State Curve Basis Spline FX Forward #2 (18, 19, 20)
+ - State Curve Basis Spline FX Forward - Zero (21, 22, 23)
+ - State Curve Basis Spline FX Forward - Bootstrap (24, 25, 26)
+ - State Curve Basis Spline FX Forward - Implied Node Rates (27, 28, 29)
+ - State Curve Basis Spline FX Forward - Bootstrap Discount Curve (30, 31, 32)
+ - State Curve Basis Spline FX Forward #3 (33, 34, 35)
+ - State Curve Basis Spline FX Forward - Jack D Manifest Measure (36, 37)
+ - State Curve Basis Spline Govvie Yield (38, 39, 40)
+ - State Curve Basis Spline Govvie Yield - Span (41)
+ - State Curve Basis Spline Govvie Yield - Constructor (42, 43)
+ - State Curve Basis Spline Govvie Yield - Yld (44, 45, 46)
+ - State Curve Basis Spline Govvie Yield - Jack D Forward Manifest Measure (47)
+ - State Curve Basis Spline Govvie Yield - Flat Forward Discount (48)
+ - State Curve Basis Spline Govvie Yield - Flat Forward (49, 50, 51)
+ - State Curve Basis Spline Market Surface (52, 53)
+ - State Curve Basis Spline Market Surface - Wire Stretch (54)
+ - State Curve Basis Spline Market Surface - Constructor (55, 56, 57)
+ - State Curve Basis Spline Market Surface - Node (58)
+ - State Curve Basis Spline Market Surface - x Anchor Term Structure (59, 60)
+
+
+Bug Fixes/Re-organization:
+
+Samples:
+
+IdeaDRIP:
diff --git a/ScheduleSheet.xlsx b/ScheduleSheet.xlsx
index d53336ea41cd..b7d5b1810151 100644
Binary files a/ScheduleSheet.xlsx and b/ScheduleSheet.xlsx differ
diff --git a/src/main/java/org/drip/state/curve/BasisSplineFXForward.java b/src/main/java/org/drip/state/curve/BasisSplineFXForward.java
index a3705f1b8661..8136752f8a6b 100644
--- a/src/main/java/org/drip/state/curve/BasisSplineFXForward.java
+++ b/src/main/java/org/drip/state/curve/BasisSplineFXForward.java
@@ -1,11 +1,25 @@
package org.drip.state.curve;
+import org.drip.analytics.date.JulianDate;
+import org.drip.numerical.differentiation.WengertJacobian;
+import org.drip.param.valuation.ValuationParams;
+import org.drip.product.fx.FXForwardComponent;
+import org.drip.product.params.CurrencyPair;
+import org.drip.service.common.StringUtil;
+import org.drip.spline.grid.Span;
+import org.drip.state.creator.ScenarioDiscountCurveBuilder;
+import org.drip.state.discount.MergedDiscountForwardCurve;
+import org.drip.state.fx.FXCurve;
+
/*
* -*- mode: java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*/
/*!
+ * Copyright (C) 2025 Lakshmi Krishnamurthy
+ * Copyright (C) 2024 Lakshmi Krishnamurthy
+ * Copyright (C) 2023 Lakshmi Krishnamurthy
* Copyright (C) 2022 Lakshmi Krishnamurthy
* Copyright (C) 2021 Lakshmi Krishnamurthy
* Copyright (C) 2020 Lakshmi Krishnamurthy
@@ -83,72 +97,96 @@
/**
* BasisSplineFXForward manages the Basis Latent State, using the Basis as the State Response
- * Representation.
+ * Representation. It exports the following functionality:
*
- *
*
- *
+ *
+ *
+ *
+ *
+ *
*
* @author Lakshmi Krishnamurthy
*/
-public class BasisSplineFXForward extends org.drip.state.fx.FXCurve {
- private org.drip.spline.grid.Span _span = null;
- private double _dblFXSpot = java.lang.Double.NaN;
+public class BasisSplineFXForward extends FXCurve
+{
+ private Span _span = null;
+ private double _fxSpot = Double.NaN;
private double nodeBasis (
- final int iNodeDate,
- final org.drip.param.valuation.ValuationParams valParam,
- final org.drip.state.discount.MergedDiscountForwardCurve dcNum,
- final org.drip.state.discount.MergedDiscountForwardCurve dcDenom,
- final boolean bBasisOnDenom)
- throws java.lang.Exception
+ final int nodeDate,
+ final ValuationParams valuationParams,
+ final MergedDiscountForwardCurve numeratorDiscountCurve,
+ final MergedDiscountForwardCurve denominatorDiscountCurve,
+ final boolean basisOnDenominator)
+ throws Exception
{
- return new org.drip.product.fx.FXForwardComponent ("FXFWD_" +
- org.drip.service.common.StringUtil.GUID(), currencyPair(), epoch().julian(), iNodeDate, 1.,
- null).discountCurveBasis (valParam, dcNum, dcDenom, _dblFXSpot, fx (iNodeDate),
- bBasisOnDenom);
+ return new FXForwardComponent (
+ "FXFWD_" + StringUtil.GUID(),
+ currencyPair(),
+ epoch().julian(),
+ nodeDate,
+ 1.,
+ null
+ ).discountCurveBasis (
+ valuationParams,
+ numeratorDiscountCurve,
+ denominatorDiscountCurve,
+ _fxSpot,
+ fx (nodeDate),
+ basisOnDenominator
+ );
}
/**
* BasisSplineFXForward constructor
*
- * @param cp The Currency Pair
+ * @param currencyPair The Currency Pair
* @param span The Span over which the Basis Representation is valid
*
- * @throws java.lang.Exception Thrown if the Inputs are Invalid
+ * @throws Exception Thrown if the Inputs are Invalid
*/
public BasisSplineFXForward (
- final org.drip.product.params.CurrencyPair cp,
- final org.drip.spline.grid.Span span)
- throws java.lang.Exception
+ final CurrencyPair currencyPair,
+ final Span span)
+ throws Exception
{
- super ((int) span.left(), cp);
+ super ((int) span.left(), currencyPair);
- _span = span;
-
- _dblFXSpot = _span.calcResponseValue (_span.left());
+ _fxSpot = (_span = span).calcResponseValue (_span.left());
}
@Override public double fx (
- final int iDate)
- throws java.lang.Exception
+ final int date)
+ throws Exception
{
- double dblSpanLeft = _span.left();
+ double spanLeft = _span.left();
- if (iDate <= dblSpanLeft) return _span.calcResponseValue (dblSpanLeft);
+ if (date <= spanLeft) {
+ return _span.calcResponseValue (spanLeft);
+ }
- double dblSpanRight = _span.right();
+ double spanRight = _span.right();
- if (iDate >= dblSpanRight) return _span.calcResponseValue (dblSpanRight);
+ if (date >= spanRight) {
+ return _span.calcResponseValue (spanRight);
+ }
- return _span.calcResponseValue (iDate);
+ return _span.calcResponseValue (date);
}
/**
@@ -159,130 +197,172 @@ public BasisSplineFXForward (
public double fxSpot()
{
- return _dblFXSpot;
+ return _fxSpot;
}
@Override public double[] zeroBasis (
- final int[] aiDateNode,
- final org.drip.param.valuation.ValuationParams valParams,
- final org.drip.state.discount.MergedDiscountForwardCurve dcNum,
- final org.drip.state.discount.MergedDiscountForwardCurve dcDenom,
- final boolean bBasisOnDenom)
+ final int[] nodeDateArray,
+ final ValuationParams valuationParams,
+ final MergedDiscountForwardCurve numeratorDiscountCurve,
+ final MergedDiscountForwardCurve denominatorDiscountCurve,
+ final boolean basisOnDenominator)
{
- if (null == aiDateNode) return null;
+ if (null == nodeDateArray) {
+ return null;
+ }
- int iNumBasis = aiDateNode.length;
- double[] adblBasis = new double[iNumBasis];
+ int nodeCount = nodeDateArray.length;
+ double[] basisArray = new double[nodeCount];
- if (0 == iNumBasis) return null;
+ if (0 == nodeCount) {
+ return null;
+ }
- for (int i = 0; i < iNumBasis; ++i) {
+ for (int nodeIndex = 0; nodeIndex < nodeCount; ++nodeIndex) {
try {
- adblBasis[i] = nodeBasis (aiDateNode[i], valParams, dcNum, dcDenom, bBasisOnDenom);
- } catch (java.lang.Exception e) {
+ basisArray[nodeIndex] = nodeBasis (
+ nodeDateArray[nodeIndex],
+ valuationParams,
+ numeratorDiscountCurve,
+ denominatorDiscountCurve,
+ basisOnDenominator
+ );
+ } catch (Exception e) {
e.printStackTrace();
return null;
}
}
- return adblBasis;
+ return basisArray;
}
@Override public double[] bootstrapBasis (
- final int[] aiDateNode,
- final org.drip.param.valuation.ValuationParams valParams,
- final org.drip.state.discount.MergedDiscountForwardCurve dcNum,
- final org.drip.state.discount.MergedDiscountForwardCurve dcDenom,
- final boolean bBasisOnDenom)
+ final int[] nodeDateArray,
+ final ValuationParams valuationParams,
+ final MergedDiscountForwardCurve numeratorDiscountCurve,
+ final MergedDiscountForwardCurve denominatorDiscountCurve,
+ final boolean basisOnDenominator)
{
- if (null == aiDateNode) return null;
+ if (null == nodeDateArray) {
+ return null;
+ }
- int iNumBasis = aiDateNode.length;
- double[] adblBasis = new double[iNumBasis];
- org.drip.state.discount.MergedDiscountForwardCurve dcBasis = bBasisOnDenom ? dcDenom : dcNum;
+ int nodeCount = nodeDateArray.length;
+ double[] basisArray = new double[nodeCount];
+ MergedDiscountForwardCurve basisDiscountCurve = basisOnDenominator ? denominatorDiscountCurve :
+ numeratorDiscountCurve;
- if (0 == iNumBasis || null == dcBasis) return null;
+ if (0 == nodeCount || null == basisDiscountCurve) {
+ return null;
+ }
- for (int i = 0; i < iNumBasis; ++i) {
+ for (int nodeIndex = 0; nodeIndex < nodeCount; ++nodeIndex) {
try {
- if (bBasisOnDenom)
- adblBasis[i] = nodeBasis (aiDateNode[i], valParams, dcNum, dcBasis, true);
- else
- adblBasis[i] = nodeBasis (aiDateNode[i], valParams, dcBasis, dcDenom, false);
- } catch (java.lang.Exception e) {
+ basisArray[nodeIndex] = nodeBasis (
+ nodeDateArray[nodeIndex],
+ valuationParams,
+ basisOnDenominator ? numeratorDiscountCurve : basisDiscountCurve,
+ basisOnDenominator ? basisDiscountCurve : denominatorDiscountCurve,
+ true
+ );
+ } catch (Exception e) {
e.printStackTrace();
return null;
}
}
- return adblBasis;
+ return basisArray;
}
@Override public double[] impliedNodeRates (
- final int[] aiDateNode,
- final org.drip.param.valuation.ValuationParams valParams,
- final org.drip.state.discount.MergedDiscountForwardCurve dcNum,
- final org.drip.state.discount.MergedDiscountForwardCurve dcDenom,
- final boolean bBasisOnDenom)
+ final int[] nodeDateArray,
+ final ValuationParams valuationParams,
+ final MergedDiscountForwardCurve numeratorDiscountCurve,
+ final MergedDiscountForwardCurve denominatorDiscountCurve,
+ final boolean basisOnDenominator)
{
- if (null == aiDateNode) return null;
+ if (null == nodeDateArray) {
+ return null;
+ }
- int iNumBasis = aiDateNode.length;
- double[] adblImpliedNodeRate = new double[iNumBasis];
+ int nodeCount = nodeDateArray.length;
+ double[] impliedNodeRateArray = new double[nodeCount];
- if (0 == iNumBasis) return null;
+ if (0 == nodeCount) {
+ return null;
+ }
- for (int i = 0; i < iNumBasis; ++i) {
+ for (int nodeIndex = 0; nodeIndex < nodeCount; ++nodeIndex) {
try {
- double dblBaseImpliedRate = java.lang.Double.NaN;
-
- if (bBasisOnDenom)
- dblBaseImpliedRate = dcNum.zero (aiDateNode[i]);
- else
- dblBaseImpliedRate = dcDenom.zero (aiDateNode[i]);
-
- adblImpliedNodeRate[i] = dblBaseImpliedRate + nodeBasis (i, valParams, dcNum, dcDenom,
- bBasisOnDenom);
- } catch (java.lang.Exception e) {
+ impliedNodeRateArray[nodeIndex] = (
+ basisOnDenominator ? numeratorDiscountCurve.zero (nodeDateArray[nodeIndex]) :
+ denominatorDiscountCurve.zero (nodeDateArray[nodeIndex])
+ ) + nodeBasis (
+ nodeIndex,
+ valuationParams,
+ numeratorDiscountCurve,
+ denominatorDiscountCurve,
+ basisOnDenominator
+ );
+ } catch (Exception e) {
e.printStackTrace();
}
}
- return adblImpliedNodeRate;
+ return impliedNodeRateArray;
}
- @Override public org.drip.state.discount.MergedDiscountForwardCurve bootstrapBasisDC (
- final int[] aiDateNode,
- final org.drip.param.valuation.ValuationParams valParams,
- final org.drip.state.discount.MergedDiscountForwardCurve dcNum,
- final org.drip.state.discount.MergedDiscountForwardCurve dcDenom,
- final boolean bBasisOnDenom)
+ @Override public MergedDiscountForwardCurve bootstrapBasisDC (
+ final int[] nodeDateArray,
+ final ValuationParams valuationParams,
+ final MergedDiscountForwardCurve numeratorDiscountCurve,
+ final MergedDiscountForwardCurve denominatorDiscountCurve,
+ final boolean basisOnDenominator)
{
- double[] adblImpliedRate = impliedNodeRates (aiDateNode, valParams, dcNum, dcDenom, bBasisOnDenom);
-
- if (null == adblImpliedRate) return null;
+ double[] impliedRateArray = impliedNodeRates (
+ nodeDateArray,
+ valuationParams,
+ numeratorDiscountCurve,
+ denominatorDiscountCurve,
+ basisOnDenominator
+ );
+
+ if (null == impliedRateArray) {
+ return null;
+ }
- int iNumDF = adblImpliedRate.length;
- double[] adblDF = new double[iNumDF];
- org.drip.state.discount.MergedDiscountForwardCurve dc = bBasisOnDenom ? dcDenom : dcNum;
+ int impliedRateArrayCount = impliedRateArray.length;
+ double[] discountFactorArray = new double[impliedRateArrayCount];
+ MergedDiscountForwardCurve discountCurve = basisOnDenominator ? denominatorDiscountCurve :
+ numeratorDiscountCurve;
- if (0 == iNumDF) return null;
+ if (0 == impliedRateArrayCount) {
+ return null;
+ }
- int iSpotDate = valParams.valueDate();
+ int spotDate = valuationParams.valueDate();
- java.lang.String strCurrency = dc.currency();
+ String currency = discountCurve.currency();
- for (int i = 0; i < iNumDF; ++i)
- adblDF[i] = java.lang.Math.exp (-1. * adblImpliedRate[i] * (aiDateNode[i] - iSpotDate) /
- 365.25);
+ for (int impliedRateArrayIndex = 0; impliedRateArrayIndex < impliedRateArrayCount;
+ ++impliedRateArrayIndex) {
+ discountFactorArray[impliedRateArrayIndex] = Math.exp (
+ -1. * impliedRateArray[impliedRateArrayIndex] *
+ (nodeDateArray[impliedRateArrayIndex] - spotDate) / 365.25
+ );
+ }
try {
- return org.drip.state.creator.ScenarioDiscountCurveBuilder.CubicPolynomialDiscountCurve
- (strCurrency + "::BASIS", new org.drip.analytics.date.JulianDate (iSpotDate), strCurrency,
- aiDateNode, adblDF);
- } catch (java.lang.Exception e) {
+ return ScenarioDiscountCurveBuilder.CubicPolynomialDiscountCurve (
+ currency + "::BASIS",
+ new JulianDate (spotDate),
+ currency,
+ nodeDateArray,
+ discountFactorArray
+ );
+ } catch (Exception e) {
e.printStackTrace();
}
@@ -290,27 +370,33 @@ public double fxSpot()
}
@Override public double rate (
- final int[] aiDateNode,
- final org.drip.param.valuation.ValuationParams valParams,
- final org.drip.state.discount.MergedDiscountForwardCurve dcNum,
- final org.drip.state.discount.MergedDiscountForwardCurve dcDenom,
- final int iDate,
- final boolean bBasisOnDenom)
- throws java.lang.Exception
+ final int[] nodeDateArray,
+ final ValuationParams valuationParams,
+ final MergedDiscountForwardCurve numeratorDiscountCurve,
+ final MergedDiscountForwardCurve denominatorDiscountCurve,
+ final int date,
+ final boolean basisOnDenominator)
+ throws Exception
{
- org.drip.state.discount.MergedDiscountForwardCurve dcImplied = bootstrapBasisDC (aiDateNode, valParams, dcNum,
- dcDenom, bBasisOnDenom);
-
- if (null == dcImplied)
- throw new java.lang.Exception ("BasisSplineFXForward::rate: Cannot imply basis DC!");
+ MergedDiscountForwardCurve impliedDiscountCurve = bootstrapBasisDC (
+ nodeDateArray,
+ valuationParams,
+ numeratorDiscountCurve,
+ denominatorDiscountCurve,
+ basisOnDenominator
+ );
+
+ if (null == impliedDiscountCurve) {
+ throw new Exception ("BasisSplineFXForward::rate: Cannot imply basis DC!");
+ }
- return dcImplied.zero (iDate);
+ return impliedDiscountCurve.zero (date);
}
- @Override public org.drip.numerical.differentiation.WengertJacobian jackDForwardDManifestMeasure (
- final java.lang.String strManifestMeasure,
- final int iDate)
+ @Override public WengertJacobian jackDForwardDManifestMeasure (
+ final String manifestMeasure,
+ final int date)
{
- return _span.jackDResponseDManifestMeasure (strManifestMeasure, iDate, 1);
+ return _span.jackDResponseDManifestMeasure (manifestMeasure, date, 1);
}
}
diff --git a/src/main/java/org/drip/state/curve/BasisSplineForwardRate.java b/src/main/java/org/drip/state/curve/BasisSplineForwardRate.java
index a0ab97c26680..4c9348e215f7 100644
--- a/src/main/java/org/drip/state/curve/BasisSplineForwardRate.java
+++ b/src/main/java/org/drip/state/curve/BasisSplineForwardRate.java
@@ -1,8 +1,11 @@
package org.drip.state.curve;
+import org.drip.numerical.differentiation.WengertJacobian;
+import org.drip.spline.grid.OverlappingStretchSpan;
import org.drip.spline.grid.Span;
import org.drip.state.forward.ForwardCurve;
+import org.drip.state.identifier.ForwardLabel;
/*
* -*- mode: java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
@@ -121,41 +124,45 @@ public class BasisSplineForwardRate extends ForwardCurve {
/**
* BasisSplineForwardRate constructor
*
- * @param fri The Floating Rate Index
+ * @param forwardLabel The Floating Rate Index Forward Label
* @param span The Span over which the Forward Rate Representation is valid
*
- * @throws java.lang.Exception Thrown if the Inputs are Invalid
+ * @throws Exception Thrown if the Inputs are Invalid
*/
public BasisSplineForwardRate (
- final org.drip.state.identifier.ForwardLabel fri,
- final org.drip.spline.grid.OverlappingStretchSpan span)
- throws java.lang.Exception
+ final ForwardLabel forwardLabel,
+ final OverlappingStretchSpan span)
+ throws Exception
{
- super ((int) span.left(), fri);
+ super ((int) span.left(), forwardLabel);
_span = span;
}
@Override public double forward (
- final int iDate)
- throws java.lang.Exception
+ final int date)
+ throws Exception
{
- double dblSpanLeft = _span.left();
+ double spanLeft = _span.left();
- if (iDate <= dblSpanLeft) return _span.calcResponseValue (dblSpanLeft);
+ if (date <= spanLeft) {
+ return _span.calcResponseValue (spanLeft);
+ }
- double dblSpanRight = _span.right();
+ double spanRight = _span.right();
- if (iDate >= dblSpanRight) return _span.calcResponseValue (dblSpanRight);
+ if (date >= spanRight) {
+ return _span.calcResponseValue (spanRight);
+ }
- return _span.calcResponseValue (iDate);
+ return _span.calcResponseValue (date);
}
- @Override public org.drip.numerical.differentiation.WengertJacobian jackDForwardDManifestMeasure (
- final java.lang.String strManifestMeasure,
- final int iDate)
+ @Override public WengertJacobian jackDForwardDManifestMeasure (
+ final String manifestMeasure,
+ final int date)
{
- return _span.jackDResponseDManifestMeasure (strManifestMeasure, iDate, 1);
+ return _span.jackDResponseDManifestMeasure (manifestMeasure, date, 1);
}
}
diff --git a/src/main/java/org/drip/state/curve/BasisSplineGovvieYield.java b/src/main/java/org/drip/state/curve/BasisSplineGovvieYield.java
index 2de84a90f041..afd88f9f9446 100644
--- a/src/main/java/org/drip/state/curve/BasisSplineGovvieYield.java
+++ b/src/main/java/org/drip/state/curve/BasisSplineGovvieYield.java
@@ -1,11 +1,20 @@
package org.drip.state.curve;
+import org.drip.analytics.date.JulianDate;
+import org.drip.numerical.differentiation.WengertJacobian;
+import org.drip.spline.grid.Span;
+import org.drip.state.govvie.GovvieCurve;
+import org.drip.state.nonlinear.FlatForwardDiscountCurve;
+
/*
* -*- mode: java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*/
/*!
+ * Copyright (C) 2025 Lakshmi Krishnamurthy
+ * Copyright (C) 2024 Lakshmi Krishnamurthy
+ * Copyright (C) 2023 Lakshmi Krishnamurthy
* Copyright (C) 2022 Lakshmi Krishnamurthy
* Copyright (C) 2021 Lakshmi Krishnamurthy
* Copyright (C) 2020 Lakshmi Krishnamurthy
@@ -83,108 +92,127 @@
/**
* BasisSplineGovvieYield manages the Basis Spline Latent State, using the Basis as the State Response
- * Representation, for the Govvie Curve with Yield Quantification Metric.
+ * Representation, for the Govvie Curve with Yield Quantification Metric. It exports the following
+ * functionality:
*
- *
*
- *
+ *
+ *
+ *
+ *
+ *
*
* @author Lakshmi Krishnamurthy
*/
-public class BasisSplineGovvieYield extends org.drip.state.govvie.GovvieCurve {
- private org.drip.spline.grid.Span _span = null;
+public class BasisSplineGovvieYield extends GovvieCurve
+{
+ private Span _span = null;
/**
- * BasisSplineGovvieYield Constructor
+ * BasisSplineGovvieYield Constructor
*
- * @param strTreasuryCode Treasury Code
- * @param strCurrency Currency
+ * @param treasuryCode Treasury Code
+ * @param currency Currency
* @param span Govvie Curve Span
*
- * @throws java.lang.Exception Thrown if the Inputs are Invalid
+ * @throws Exception Thrown if the Inputs are Invalid
*/
public BasisSplineGovvieYield (
- final java.lang.String strTreasuryCode,
- final java.lang.String strCurrency,
- final org.drip.spline.grid.Span span)
- throws java.lang.Exception
+ final String treasuryCode,
+ final String currency,
+ final Span span)
+ throws Exception
{
- super ((int) span.left(), strTreasuryCode, strCurrency);
+ super ((int) span.left(), treasuryCode, currency);
_span = span;
}
@Override public double yld (
- final int iDate)
- throws java.lang.Exception
+ final int date)
+ throws Exception
{
- double dblSpanLeft = _span.left();
+ double spanLeft = _span.left();
- if (iDate <= dblSpanLeft) return _span.calcResponseValue (dblSpanLeft);
+ if (date <= spanLeft) {
+ return _span.calcResponseValue (spanLeft);
+ }
- double dblSpanRight = _span.right();
+ double spanRight = _span.right();
- if (iDate >= dblSpanRight) return _span.calcResponseValue (dblSpanRight);
+ if (date >= spanRight) {
+ return _span.calcResponseValue (spanRight);
+ }
- return _span.calcResponseValue (iDate);
+ return _span.calcResponseValue (date);
}
- @Override public org.drip.numerical.differentiation.WengertJacobian jackDForwardDManifestMeasure (
- final java.lang.String strManifestMeasure,
- final int iDate)
+ @Override public WengertJacobian jackDForwardDManifestMeasure (
+ final String manifestMeasure,
+ final int date)
{
- return _span.jackDResponseDManifestMeasure (strManifestMeasure, iDate, 1);
+ return _span.jackDResponseDManifestMeasure (manifestMeasure, date, 1);
}
/**
* Construct a Flat Forward Instance of the Curve at the specified Date Nodes
*
- * @param aiDate Array of Date Nodes
+ * @param dateArray Array of Date Nodes
*
* @return The Flat Forward Instance
*/
- public org.drip.state.nonlinear.FlatForwardDiscountCurve flatForward (
- final int[] aiDate)
+ public FlatForwardDiscountCurve flatForward (
+ final int[] dateArray)
{
- return flatForward (dayCount(), freq(), aiDate);
+ return flatForward (dayCount(), freq(), dateArray);
}
/**
* Construct a Flat Forward Instance of the Curve at the specified Date Node Tenors
*
- * @param astrTenor Array of Date Node Tenors
+ * @param tenorArray Array of Date Node Tenors
*
* @return The Flat Forward Instance
*/
- public org.drip.state.nonlinear.FlatForwardDiscountCurve flatForward (
- final java.lang.String[] astrTenor)
+ public FlatForwardDiscountCurve flatForward (
+ final String[] tenorArray)
{
- if (null == astrTenor) return null;
+ if (null == tenorArray) {
+ return null;
+ }
- int iNumTenor = astrTenor.length;
- int[] aiDate = 0 == iNumTenor ? null : new int[iNumTenor];
+ int tenorCount = tenorArray.length;
+ int[] dateArray = 0 == tenorCount ? null : new int[tenorCount];
- org.drip.analytics.date.JulianDate dtEpoch = epoch();
+ JulianDate epochDate = epoch();
- for (int i = 0; i < iNumTenor; ++i) {
+ for (int tenorIndex = 0; tenorIndex < tenorCount; ++tenorIndex) {
try {
- aiDate[i] = dtEpoch.addTenor (astrTenor[i]).julian();
- } catch (java.lang.Exception e) {
+ dateArray[tenorIndex] = epochDate.addTenor (tenorArray[tenorIndex]).julian();
+ } catch (Exception e) {
e.printStackTrace();
return null;
}
}
- return flatForward (dayCount(), freq(), aiDate);
+ return flatForward (dayCount(), freq(), dateArray);
}
}
diff --git a/src/main/java/org/drip/state/curve/BasisSplineMarketSurface.java b/src/main/java/org/drip/state/curve/BasisSplineMarketSurface.java
index c93079f4f00f..9fccaf0de989 100644
--- a/src/main/java/org/drip/state/curve/BasisSplineMarketSurface.java
+++ b/src/main/java/org/drip/state/curve/BasisSplineMarketSurface.java
@@ -1,11 +1,19 @@
package org.drip.state.curve;
+import org.drip.analytics.definition.MarketSurface;
+import org.drip.analytics.definition.NodeStructure;
+import org.drip.spline.multidimensional.WireSurfaceStretch;
+import org.drip.state.identifier.CustomLabel;
+
/*
* -*- mode: java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*/
/*!
+ * Copyright (C) 2025 Lakshmi Krishnamurthy
+ * Copyright (C) 2024 Lakshmi Krishnamurthy
+ * Copyright (C) 2023 Lakshmi Krishnamurthy
* Copyright (C) 2022 Lakshmi Krishnamurthy
* Copyright (C) 2021 Lakshmi Krishnamurthy
* Copyright (C) 2020 Lakshmi Krishnamurthy
@@ -85,60 +93,69 @@
* BasisSplineMarketSurface implements the Market surface that holds the latent state Dynamics
* parameters.
*
- *
- *
- *
+ *
+ *
+ *
+ *
*
* @author Lakshmi Krishnamurthy
*/
-public class BasisSplineMarketSurface extends org.drip.analytics.definition.MarketSurface {
- private org.drip.spline.multidimensional.WireSurfaceStretch _wss = null;
+public class BasisSplineMarketSurface extends MarketSurface
+{
+ private WireSurfaceStretch _wireSurfaceStretch = null;
/**
* BasisSplineMarketSurface Constructor
*
- * @param iEpochDate The Starting Date
- * @param label The Spline Market Surface Latent State Label
- * @param strCurrency The Currency
- * @param wss Wire Surface Stretch Instance
+ * @param epochDate The Starting Date
+ * @param customLabel The Spline Market Surface Latent State Label
+ * @param currency The Currency
+ * @param wireSurfaceStretch Wire Surface Stretch Instance
*
- * @throws java.lang.Exception Thrown if the Inputs are Invalid
+ * @throws Exception Thrown if the Inputs are Invalid
*/
public BasisSplineMarketSurface (
- final int iEpochDate,
- final org.drip.state.identifier.CustomLabel label,
- final java.lang.String strCurrency,
- final org.drip.spline.multidimensional.WireSurfaceStretch wss)
- throws java.lang.Exception
+ final int epochDate,
+ final CustomLabel customLabel,
+ final String currency,
+ final WireSurfaceStretch wireSurfaceStretch)
+ throws Exception
{
- super (iEpochDate, label, strCurrency);
+ super (epochDate, customLabel, currency);
- _wss = wss;
+ _wireSurfaceStretch = wireSurfaceStretch;
}
@Override public double node (
- final double dblStrike,
- final double dblDate)
- throws java.lang.Exception
+ final double strike,
+ final double date)
+ throws Exception
{
- return _wss.responseValue (dblStrike, dblDate);
+ return _wireSurfaceStretch.responseValue (strike, date);
}
- @Override public org.drip.analytics.definition.NodeStructure xAnchorTermStructure (
- final double dblStrikeAnchor)
+ @Override public NodeStructure xAnchorTermStructure (
+ final double strikeAnchor)
{
try {
- return new BasisSplineTermStructure (epoch().julian(),
- org.drip.state.identifier.CustomLabel.Standard (label() + "_" + dblStrikeAnchor),
- currency(), _wss.wireSpanXAnchor (dblStrikeAnchor));
- } catch (java.lang.Exception e) {
+ return new BasisSplineTermStructure (
+ epoch().julian(),
+ CustomLabel.Standard (label() + "_" + strikeAnchor),
+ currency(),
+ _wireSurfaceStretch.wireSpanXAnchor (strikeAnchor)
+ );
+ } catch (Exception e) {
e.printStackTrace();
}
@@ -152,7 +169,7 @@ public BasisSplineMarketSurface (
return new BasisSplineTermStructure (epoch().julian(),
org.drip.state.identifier.CustomLabel.Standard (label() + "_" + new
org.drip.analytics.date.JulianDate ((int) dblMaturityDateAnchor)), currency(),
- _wss.wireSpanYAnchor (dblMaturityDateAnchor));
+ _wireSurfaceStretch.wireSpanYAnchor (dblMaturityDateAnchor));
} catch (java.lang.Exception e) {
e.printStackTrace();
}