├── .github ├── PULL_REQUEST_TEMPLATE.md └── workflows │ └── test.yml ├── .gitignore ├── .idea ├── checkstyle-idea.xml ├── codeStyles │ ├── Project.xml │ └── codeStyleConfig.xml ├── compiler.xml ├── encodings.xml ├── misc.xml └── vcs.xml ├── .project ├── .travis.yml ├── LICENSE.txt ├── NOTICE.txt ├── README.md ├── bnd.bnd ├── docs ├── Model and Product Interfaces.xlsx ├── refactoring-3.6.x-to-4.0.0 │ ├── Refactorings 3.6.x to 4.0.0.xlsx │ └── refactorings-3.6.3-to-4.0.1.xml ├── refactoring-4.0.x-to-4.1.0 │ ├── Refactorings 4.0.x to 4.1.0.xlsx │ └── refactorings-4.0.15-to-4.1.0.xml ├── refactoring-4.1.x-to-5.0.0 │ └── Refactorings 4.1.x to 5.0.0.xlsx ├── refactoring-5.0.x-to-5.1.0 │ └── Refactorings 4.1.x to 5.1.0.xlsx └── refactoring-5.1.x-to-6.0.x │ └── Refactorings 4.1.x to 6.0.x.xlsx ├── finmath lib eclipse code style preferences.epf ├── finmath-checkstyle-java-6.xml ├── finmath-checkstyle.xml ├── lib ├── LICENSE for commons-lang3-3.7 │ ├── LICENSE.txt │ ├── NOTICE.txt │ └── RELEASE-NOTES.txt ├── LICENSE for commons-math3-3.6 │ ├── LICENSE.txt │ ├── NOTICE.txt │ └── RELEASE-NOTES.txt ├── commons-lang3-3.7.jar ├── commons-math3-3.6.1.jar └── jblas-1.2.4.jar ├── maven-release-site.sh ├── maven-release.sh ├── pom.xml └── src ├── main ├── java │ ├── module-info.java │ └── net │ │ └── finmath │ │ ├── climate │ │ └── models │ │ │ ├── AbatementModel.java │ │ │ ├── CarbonConcentration.java │ │ │ ├── ClimateModel.java │ │ │ ├── SavingsRateModel.java │ │ │ ├── Temperature.java │ │ │ ├── dice │ │ │ ├── DICEModel.java │ │ │ ├── package-info.java │ │ │ └── submodels │ │ │ │ ├── AbatementCostFunction.java │ │ │ │ ├── CarbonConcentration3DScalar.java │ │ │ │ ├── DamageFromTemperature.java │ │ │ │ ├── EmissionExternalFunction.java │ │ │ │ ├── EmissionIndustrialIntensityFunction.java │ │ │ │ ├── EvolutionOfCapital.java │ │ │ │ ├── EvolutionOfCarbonConcentration.java │ │ │ │ ├── EvolutionOfEmissionIndustrialIntensity.java │ │ │ │ ├── EvolutionOfPopulation.java │ │ │ │ ├── EvolutionOfProductivity.java │ │ │ │ ├── EvolutionOfTemperature.java │ │ │ │ ├── ForcingExternalFunction.java │ │ │ │ ├── ForcingFunction.java │ │ │ │ ├── Temperature2DScalar.java │ │ │ │ └── package-info.java │ │ │ └── package-info.java │ │ ├── concurrency │ │ ├── FutureWrapper.java │ │ └── package-info.java │ │ ├── equities │ │ ├── marketdata │ │ │ ├── AffineDividend.java │ │ │ ├── AffineDividendStream.java │ │ │ ├── FlatYieldCurve.java │ │ │ ├── VolatilityPoint.java │ │ │ ├── YieldCurve.java │ │ │ └── package-info.java │ │ ├── models │ │ │ ├── Black76Model.java │ │ │ ├── BuehlerDividendForwardStructure.java │ │ │ ├── EquityForwardStructure.java │ │ │ ├── FlatVolatilitySurface.java │ │ │ ├── ShiftedVolatilitySurface.java │ │ │ ├── SviVolatilitySmile.java │ │ │ ├── SviVolatilitySurface.java │ │ │ ├── VolatilitySurface.java │ │ │ └── package-info.java │ │ ├── pricer │ │ │ ├── AnalyticOptionValuation.java │ │ │ ├── EquityValuationRequest.java │ │ │ ├── EquityValuationResult.java │ │ │ ├── OptionValuation.java │ │ │ ├── PdeOptionValuation.java │ │ │ └── package-info.java │ │ └── products │ │ │ ├── AbstractOption.java │ │ │ ├── AmericanOption.java │ │ │ ├── EuropeanOption.java │ │ │ ├── Option.java │ │ │ └── package-info.java │ │ ├── exception │ │ ├── CalculationException.java │ │ └── package-info.java │ │ ├── finitedifference │ │ ├── experimental │ │ │ ├── BlackScholesTheta.java │ │ │ └── package-info.java │ │ ├── models │ │ │ ├── FDMBlackScholesModel.java │ │ │ ├── FDMConstantElasticityOfVarianceModel.java │ │ │ ├── FiniteDifference1DBoundary.java │ │ │ ├── FiniteDifference1DModel.java │ │ │ └── package-info.java │ │ ├── package-info.java │ │ ├── products │ │ │ ├── FDMEuropeanCallOption.java │ │ │ ├── FDMEuropeanPutOption.java │ │ │ ├── FiniteDifference1DProduct.java │ │ │ └── package-info.java │ │ └── solvers │ │ │ ├── FDMThetaMethod.java │ │ │ └── package-info.java │ │ ├── fouriermethod │ │ ├── CharacteristicFunction.java │ │ ├── calibration │ │ │ ├── BoundConstraint.java │ │ │ ├── CalibratedModel.java │ │ │ ├── Constraint.java │ │ │ ├── Constraints.png │ │ │ ├── Constraints.ucls │ │ │ ├── NegativityConstraint.java │ │ │ ├── ParameterInformation.java │ │ │ ├── PositivityConstraint.java │ │ │ ├── ScalarConstraint.java │ │ │ ├── ScalarParameterInformation.java │ │ │ ├── ScalarParameterInformationImplementation.java │ │ │ ├── Unconstrained.java │ │ │ ├── models │ │ │ │ ├── CalibratableHestonModel.java │ │ │ │ ├── CalibratableMertonModel.java │ │ │ │ ├── CalibratableProcess.java │ │ │ │ ├── CalibratableVarianceGammaModel.java │ │ │ │ ├── CalibrationDiagram.png │ │ │ │ ├── CalibrationDiagram.ucls │ │ │ │ └── package-info.java │ │ │ └── package-info.java │ │ ├── models │ │ │ ├── BatesModel.java │ │ │ ├── BlackScholesModel.java │ │ │ ├── CharacteristicFunctionModel.java │ │ │ ├── HestonModel.java │ │ │ ├── MertonModel.java │ │ │ ├── VarianceGammaModel.java │ │ │ └── package-info.java │ │ ├── package-info.java │ │ └── products │ │ │ ├── AbstractFourierTransformProduct.java │ │ │ ├── DigitalOption.java │ │ │ ├── EuropeanOption.java │ │ │ ├── FourierTransformProduct.java │ │ │ ├── package-info.java │ │ │ └── smile │ │ │ ├── EuropeanOptionSmile.java │ │ │ ├── EuropeanOptionSmileByCarrMadan.java │ │ │ ├── SmileByIntegralTransform.java │ │ │ └── package-info.java │ │ ├── functions │ │ ├── AnalyticFormulas.java │ │ ├── BachelierModel.java │ │ ├── BarrierOptions.java │ │ ├── DoubleTernaryOperator.java │ │ ├── GammaDistribution.java │ │ ├── JarqueBeraTest.java │ │ ├── LinearAlgebra.java │ │ ├── LogNormalDistribution.java │ │ ├── NonCentralChiSquaredDistribution.java │ │ ├── NormalDistribution.java │ │ ├── PoissonDistribution.java │ │ ├── SABRModel.java │ │ └── package-info.java │ │ ├── information │ │ ├── Library.java │ │ └── package-info.java │ │ ├── integration │ │ ├── AbstractRealIntegral.java │ │ ├── MonteCarloIntegrator.java │ │ ├── PiecewiseContantDoubleUnaryOperator.java │ │ ├── RealIntegral.java │ │ ├── RombergRealIntegration.java │ │ ├── SimpsonRealIntegrator.java │ │ ├── TrapezoidalRealIntegrator.java │ │ └── package-info.java │ │ ├── interpolation │ │ ├── BiLinearInterpolation.java │ │ ├── RationalFunctionInterpolation.java │ │ └── package-info.java │ │ ├── marketdata │ │ ├── calibration │ │ │ ├── CalibratedCurves.java │ │ │ ├── CalibrationClassDiagram.svg │ │ │ ├── ParameterAggregation.java │ │ │ ├── ParameterObject.java │ │ │ ├── ParameterTransformation.java │ │ │ ├── Solver.java │ │ │ └── package-info.java │ │ ├── model │ │ │ ├── AnalyticModel.java │ │ │ ├── AnalyticModelFromCurvesAndVols.java │ │ │ ├── bond │ │ │ │ ├── Bond.java │ │ │ │ ├── BondCurve.java │ │ │ │ └── package-info.java │ │ │ ├── cds │ │ │ │ ├── CDS.java │ │ │ │ └── package-info.java │ │ │ ├── curves │ │ │ │ ├── AbstractCurve.java │ │ │ │ ├── AbstractForwardCurve.java │ │ │ │ ├── Curve.java │ │ │ │ ├── CurveBuilder.java │ │ │ │ ├── CurveFactory.java │ │ │ │ ├── CurveFromProductOfCurves.java │ │ │ │ ├── CurveInterpolation.java │ │ │ │ ├── CurvesClassDiagram.svg │ │ │ │ ├── CurvesClassDiagram.ucls │ │ │ │ ├── DiscountCurve.java │ │ │ │ ├── DiscountCurveFromForwardCurve.java │ │ │ │ ├── DiscountCurveFromProductOfCurves.java │ │ │ │ ├── DiscountCurveInterpolation.java │ │ │ │ ├── DiscountCurveNelsonSiegelSvensson.java │ │ │ │ ├── DiscountCurveRenormalized.java │ │ │ │ ├── ForwardCurve.java │ │ │ │ ├── ForwardCurveFromDiscountCurve.java │ │ │ │ ├── ForwardCurveInterpolation.java │ │ │ │ ├── ForwardCurveNelsonSiegelSvensson.java │ │ │ │ ├── ForwardCurveWithFixings.java │ │ │ │ ├── IndexCurveFromDiscountCurve.java │ │ │ │ ├── PiecewiseCurve.java │ │ │ │ ├── SeasonalCurve.java │ │ │ │ ├── locallinearregression │ │ │ │ │ ├── CurveEstimation.java │ │ │ │ │ ├── Partition.java │ │ │ │ │ └── package-info.java │ │ │ │ └── package-info.java │ │ │ ├── package-info.java │ │ │ ├── volatilities │ │ │ │ ├── AbstractVolatilitySurface.java │ │ │ │ ├── AbstractVolatilitySurfaceParametric.java │ │ │ │ ├── CapletVolatilities.java │ │ │ │ ├── CapletVolatilitiesParametric.java │ │ │ │ ├── CapletVolatilitiesParametricDisplacedFourParameterAnalytic.java │ │ │ │ ├── CapletVolatilitiesParametricFourParameterPicewiseConstant.java │ │ │ │ ├── OptionData.java │ │ │ │ ├── OptionSmileData.java │ │ │ │ ├── OptionSurfaceData.java │ │ │ │ ├── SwaptionATMMarketDataFromArray.java │ │ │ │ ├── SwaptionDataLattice.java │ │ │ │ ├── SwaptionMarketData.java │ │ │ │ ├── VolatilitySurface.java │ │ │ │ └── package-info.java │ │ │ └── volatility │ │ │ │ └── caplet │ │ │ │ ├── CapShiftedVol.java │ │ │ │ ├── CapTenorStructure.java │ │ │ │ ├── CapVolMarketData.java │ │ │ │ ├── CapletVolBootstrapping.java │ │ │ │ ├── CapletVolatilitySurface.java │ │ │ │ ├── package-info.java │ │ │ │ ├── smile │ │ │ │ ├── LinearSmileInterpolater.java │ │ │ │ ├── SmileInterpolationExtrapolationMethod.java │ │ │ │ └── package-info.java │ │ │ │ └── tenorconversion │ │ │ │ ├── CorrelationProvider.java │ │ │ │ ├── CorrelationProviderTenorBasis.java │ │ │ │ ├── TenorConverter.java │ │ │ │ └── package-info.java │ │ ├── package-info.java │ │ └── products │ │ │ ├── AbstractAnalyticProduct.java │ │ │ ├── AnalyticProduct.java │ │ │ ├── Cap.java │ │ │ ├── Cashflow.java │ │ │ ├── CurveCalibrationProductsClassDiagram.svg │ │ │ ├── Deposit.java │ │ │ ├── Forward.java │ │ │ ├── ForwardRateAgreement.java │ │ │ ├── MarketForwardRateAgreement.java │ │ │ ├── Performance.java │ │ │ ├── Portfolio.java │ │ │ ├── Swap.java │ │ │ ├── SwapAnnuity.java │ │ │ ├── SwapLeg.java │ │ │ └── package-info.java │ │ ├── marketdata2 │ │ ├── calibration │ │ │ ├── CalibratedCurves.java │ │ │ ├── ParameterAggregation.java │ │ │ ├── ParameterObject.java │ │ │ ├── ParameterTransformation.java │ │ │ ├── Solver.java │ │ │ └── package-info.java │ │ ├── interpolation │ │ │ ├── RationalFunctionInterpolation.java │ │ │ └── package-info.java │ │ ├── model │ │ │ ├── AnalyticModel.java │ │ │ ├── AnalyticModelFromCurvesAndVols.java │ │ │ ├── curves │ │ │ │ ├── AbstractCurve.java │ │ │ │ ├── AbstractForwardCurve.java │ │ │ │ ├── Curve.java │ │ │ │ ├── CurveBuilder.java │ │ │ │ ├── CurveInterpolation.java │ │ │ │ ├── DiscountCurveFromForwardCurve.java │ │ │ │ ├── DiscountCurveInterface.java │ │ │ │ ├── DiscountCurveInterpolation.java │ │ │ │ ├── ForwardCurveFromDiscountCurve.java │ │ │ │ ├── ForwardCurveInterface.java │ │ │ │ ├── ForwardCurveInterpolation.java │ │ │ │ └── package-info.java │ │ │ ├── package-info.java │ │ │ └── volatilities │ │ │ │ ├── AbstractVolatilitySurface.java │ │ │ │ ├── VolatilitySurface.java │ │ │ │ └── package-info.java │ │ ├── package-info.java │ │ └── products │ │ │ ├── AbstractAnalyticProduct.java │ │ │ ├── AnalyticProduct.java │ │ │ ├── Cashflow.java │ │ │ ├── Deposit.java │ │ │ ├── Forward.java │ │ │ ├── ForwardRateAgreement.java │ │ │ ├── MarketForwardRateAgreement.java │ │ │ ├── Performance.java │ │ │ ├── Portfolio.java │ │ │ ├── Swap.java │ │ │ ├── SwapAnnuity.java │ │ │ ├── SwapLeg.java │ │ │ └── package-info.java │ │ ├── modelling │ │ ├── DescribedModel.java │ │ ├── DescribedProduct.java │ │ ├── InterestRateProductDescriptor.java │ │ ├── Model.java │ │ ├── ModelDescriptor.java │ │ ├── ModelFactory.java │ │ ├── Product.java │ │ ├── ProductDescriptor.java │ │ ├── ProductFactory.java │ │ ├── SingleAssetProductDescriptor.java │ │ ├── UnsupportedProduct.java │ │ ├── descriptor │ │ │ ├── AnalyticModelDescriptor.java │ │ │ ├── AssetModelDescriptor.java │ │ │ ├── BlackScholesModelDescriptor.java │ │ │ ├── HestonModelDescriptor.java │ │ │ ├── InterestRateModelDescriptor.java │ │ │ ├── InterestRateSwapLegProductDescriptor.java │ │ │ ├── InterestRateSwapProductDescriptor.java │ │ │ ├── InterestRateSwaptionProductDescriptor.java │ │ │ ├── MertonModelDescriptor.java │ │ │ ├── ScheduleDescriptor.java │ │ │ ├── SingleAssetDigitalOptionProductDescriptor.java │ │ │ ├── SingleAssetEuropeanOptionProductDescriptor.java │ │ │ ├── VarianceGammaModelDescriptor.java │ │ │ ├── package-info.java │ │ │ └── xmlparser │ │ │ │ ├── FIPXMLParser.java │ │ │ │ ├── FPMLParser.java │ │ │ │ ├── XMLParser.java │ │ │ │ └── package-info.java │ │ ├── modelfactory │ │ │ ├── AnalyticModelFactory.java │ │ │ ├── AssetModelFourierMethodFactory.java │ │ │ ├── AssetModelMonteCarloFactory.java │ │ │ ├── BlackScholesModelMonteCarloFactory.java │ │ │ ├── BlackScholesModelMonteCarloFiniteDifference1D.java │ │ │ ├── HestonModelMonteCarloFactory.java │ │ │ └── package-info.java │ │ ├── package-info.java │ │ ├── productfactory │ │ │ ├── InterestRateAnalyticProductFactory.java │ │ │ ├── InterestRateMonteCarloProductFactory.java │ │ │ ├── ProductFactoryCascade.java │ │ │ ├── SingleAssetFourierProductFactory.java │ │ │ ├── SingleAssetMonteCarloProductFactory.java │ │ │ └── package-info.java │ │ └── products │ │ │ ├── Swaption.java │ │ │ └── package-info.java │ │ ├── montecarlo │ │ ├── AbstractMonteCarloProduct.java │ │ ├── AbstractRandomVariableFactory.java │ │ ├── BrownianBridge.java │ │ ├── BrownianMotion.java │ │ ├── BrownianMotionFromMersenneRandomNumbers.java │ │ ├── BrownianMotionFromRandomNumberGenerator.java │ │ ├── BrownianMotionLazyInit.java │ │ ├── BrownianMotionView.java │ │ ├── BrownianMotionWithControlVariate.java │ │ ├── CorrelatedBrownianMotion.java │ │ ├── GammaProcess.java │ │ ├── IndependentIncrements.java │ │ ├── IndependentIncrementsFromICDF.java │ │ ├── JumpProcessIncrements.java │ │ ├── MertonJumpProcess.java │ │ ├── MonteCarloProduct.java │ │ ├── MonteCarloSimulationModel.java │ │ ├── RandomVariableFactory.java │ │ ├── RandomVariableFloatFactory.java │ │ ├── RandomVariableFromArrayFactory.java │ │ ├── RandomVariableFromDoubleArray.java │ │ ├── RandomVariableFromFloatArray.java │ │ ├── RandomVariableLazyEvaluation.java │ │ ├── RandomVariableLazyEvaluationFactory.java │ │ ├── VarianceGammaProcess.java │ │ ├── assetderivativevaluation │ │ │ ├── AssetModelMonteCarloSimulationModel.java │ │ │ ├── MonteCarloAssetModel.java │ │ │ ├── MonteCarloBlackScholesModel.java │ │ │ ├── MonteCarloBlackScholesModelClassDiagram.png │ │ │ ├── MonteCarloBlackScholesModelClassDiagram.svg │ │ │ ├── MonteCarloMertonModel.java │ │ │ ├── MonteCarloMultiAssetBlackScholesModel.java │ │ │ ├── MonteCarloVarianceGammaModel.java │ │ │ ├── models │ │ │ │ ├── BachelierModel.java │ │ │ │ ├── BlackScholesModel.java │ │ │ │ ├── BlackScholesModelWithCurves.java │ │ │ │ ├── BlackScholesModelWithStockNumeraire.java │ │ │ │ ├── DisplacedLognomalModel.java │ │ │ │ ├── HestonModel.java │ │ │ │ ├── InhomogeneousDisplacedLognomalModel.java │ │ │ │ ├── InhomogenousBachelierModel.java │ │ │ │ ├── MertonModel.java │ │ │ │ ├── MultiAssetBlackScholesModel.java │ │ │ │ ├── VarianceGammaModel.java │ │ │ │ └── package-info.java │ │ │ ├── package-info.java │ │ │ └── products │ │ │ │ ├── AbstractAssetMonteCarloProduct.java │ │ │ │ ├── AbstractAssetMonteCarloProductClassDiagram.svg │ │ │ │ ├── AbstractAssetMonteCarloProductClassDiagram.ucls │ │ │ │ ├── AsianOption.java │ │ │ │ ├── AssetMonteCarloProduct.java │ │ │ │ ├── BasketOption.java │ │ │ │ ├── BermudanDigitalOption.java │ │ │ │ ├── BermudanOption.java │ │ │ │ ├── BlackScholesDeltaHedgedPortfolio.java │ │ │ │ ├── BlackScholesHedgedPortfolio.java │ │ │ │ ├── DeltaHedgedPortfolioWithAAD.java │ │ │ │ ├── DigitalOption.java │ │ │ │ ├── DigitalOptionDeltaLikelihood.java │ │ │ │ ├── EuropeanOption.java │ │ │ │ ├── EuropeanOptionDeltaLikelihood.java │ │ │ │ ├── EuropeanOptionDeltaPathwise.java │ │ │ │ ├── EuropeanOptionDeltaPathwiseForGeometricModel.java │ │ │ │ ├── EuropeanOptionGammaLikelihood.java │ │ │ │ ├── EuropeanOptionGammaPathwise.java │ │ │ │ ├── EuropeanOptionRhoLikelihood.java │ │ │ │ ├── EuropeanOptionRhoPathwise.java │ │ │ │ ├── EuropeanOptionThetaPathwise.java │ │ │ │ ├── EuropeanOptionVegaLikelihood.java │ │ │ │ ├── EuropeanOptionVegaPathwise.java │ │ │ │ ├── EuropeanOptionWithBoundary.java │ │ │ │ ├── FiniteDifferenceDeltaHedgedPortfolio.java │ │ │ │ ├── FiniteDifferenceHedgedPortfolio.java │ │ │ │ ├── ForwardAgreement.java │ │ │ │ ├── ForwardAgreementWithFundingRequirement.java │ │ │ │ ├── LocalRiskMinimizingHedgePortfolio.java │ │ │ │ └── package-info.java │ │ ├── automaticdifferentiation │ │ │ ├── AbstractRandomVariableDifferentiableFactory.java │ │ │ ├── IndependentModelParameterProvider.java │ │ │ ├── RandomVariableDifferentiable.java │ │ │ ├── RandomVariableDifferentiableFactory.java │ │ │ ├── backward │ │ │ │ ├── RandomVariableDifferentiableAAD.java │ │ │ │ ├── RandomVariableDifferentiableAADFactory.java │ │ │ │ ├── alternative │ │ │ │ │ ├── RandomVariableAAD.java │ │ │ │ │ ├── RandomVariableDifferentiableAADPathwise.java │ │ │ │ │ ├── RandomVariableDifferentiableAADPathwiseFactory.java │ │ │ │ │ ├── RandomVariableDifferentiableAADStochasticNonOptimized.java │ │ │ │ │ ├── RandomVariableDifferentiableAADStochasticNonOptimizedFactory.java │ │ │ │ │ ├── RandomVariableUniqueVariable.java │ │ │ │ │ ├── RandomVariableUniqueVariableFactory.java │ │ │ │ │ └── package-info.java │ │ │ │ └── package-info.java │ │ │ ├── forward │ │ │ │ ├── RandomVariableDifferentiableAD.java │ │ │ │ ├── RandomVariableDifferentiableADFactory.java │ │ │ │ └── package-info.java │ │ │ └── package-info.java │ │ ├── conditionalexpectation │ │ │ ├── LinearRegression.java │ │ │ ├── MonteCarloConditionalExpectationLinearRegressionFactory.java │ │ │ ├── MonteCarloConditionalExpectationLocalizedOnDependentRegressionFactory.java │ │ │ ├── MonteCarloConditionalExpectationRegression.java │ │ │ ├── MonteCarloConditionalExpectationRegressionFactory.java │ │ │ ├── MonteCarloConditionalExpectationRegressionLocalizedOnDependents.java │ │ │ ├── RegressionBasisFunctionsFromProducts.java │ │ │ ├── RegressionBasisFunctionsProvider.java │ │ │ └── package-info.java │ │ ├── crosscurrency │ │ │ ├── CrossCurrencyTermStructureMonteCarloSimulationModel.java │ │ │ └── package-info.java │ │ ├── hybridassetinterestrate │ │ │ ├── ConvexityAdjustedModel.java │ │ │ ├── CrossCurrencyLIBORMarketModelFromModels.java │ │ │ ├── HybridAssetLIBORModelMonteCarloSimulation.java │ │ │ ├── HybridAssetLIBORModelMonteCarloSimulationFromModels.java │ │ │ ├── HybridAssetMonteCarloSimulation.java │ │ │ ├── ModelFactory.java │ │ │ ├── RiskFactorFX.java │ │ │ ├── RiskFactorForwardRate.java │ │ │ ├── RiskFactorID.java │ │ │ ├── package-info.java │ │ │ └── products │ │ │ │ ├── Bond.java │ │ │ │ ├── BondWithForeignNumeraire.java │ │ │ │ ├── ForwardRateAgreementGeneralized.java │ │ │ │ ├── HybridAssetMonteCarloProduct.java │ │ │ │ ├── WorstOfExpressCertificate.java │ │ │ │ └── package-info.java │ │ ├── interestrate │ │ │ ├── CalibrationProduct.java │ │ │ ├── HullWhiteModel.svg │ │ │ ├── HullWhiteModel.ucls │ │ │ ├── LIBORMarketModel.java │ │ │ ├── LIBORMarketModelClassDiagram.svg │ │ │ ├── LIBORMarketModelClassDiagram.ucls │ │ │ ├── LIBORModel.java │ │ │ ├── LIBORModelCalibrationClassDiagram.svg │ │ │ ├── LIBORModelCalibrationClassDiagram.ucls │ │ │ ├── LIBORModelCalibrationDiagram.png │ │ │ ├── LIBORModelMonteCarloSimulationModel.java │ │ │ ├── LIBORMonteCarloSimulationFromLIBORModel.java │ │ │ ├── LIBORMonteCarloSimulationFromTermStructureModel.java │ │ │ ├── ShortRateModel.java │ │ │ ├── TermStructureModel.java │ │ │ ├── TermStructureMonteCarloSimulationFromTermStructureModel.java │ │ │ ├── TermStructureMonteCarloSimulationModel.java │ │ │ ├── models │ │ │ │ ├── HullWhiteModel.java │ │ │ │ ├── HullWhiteModelWithConstantCoeff.java │ │ │ │ ├── HullWhiteModelWithDirectSimulation.java │ │ │ │ ├── HullWhiteModelWithShiftExtension.java │ │ │ │ ├── LIBORMarketModelFromCovarianceModel.java │ │ │ │ ├── LIBORMarketModelStandard.java │ │ │ │ ├── LIBORMarketModelWithTenorRefinement.java │ │ │ │ ├── covariance │ │ │ │ │ ├── AbstractLIBORCovarianceModel.java │ │ │ │ │ ├── AbstractLIBORCovarianceModelParametric.java │ │ │ │ │ ├── AbstractShortRateVolatilityModel.java │ │ │ │ │ ├── AbstractShortRateVolatilityModelParametric.java │ │ │ │ │ ├── BlendedLocalVolatilityModel.java │ │ │ │ │ ├── DisplacedLocalVolatilityModel.java │ │ │ │ │ ├── ExponentialDecayLocalVolatilityModel.java │ │ │ │ │ ├── HullWhiteLocalVolatilityModel.java │ │ │ │ │ ├── LIBORCorrelationModel.java │ │ │ │ │ ├── LIBORCorrelationModelExponentialDecay.java │ │ │ │ │ ├── LIBORCorrelationModelThreeParameterExponentialDecay.java │ │ │ │ │ ├── LIBORCovarianceModel.java │ │ │ │ │ ├── LIBORCovarianceModelBH.java │ │ │ │ │ ├── LIBORCovarianceModelCalibrateable.java │ │ │ │ │ ├── LIBORCovarianceModelExponentialForm5Param.java │ │ │ │ │ ├── LIBORCovarianceModelExponentialForm7Param.java │ │ │ │ │ ├── LIBORCovarianceModelFromVolatilityAndCorrelation.java │ │ │ │ │ ├── LIBORCovarianceModelStochasticHestonVolatility.java │ │ │ │ │ ├── LIBORCovarianceModelStochasticVolatility.java │ │ │ │ │ ├── LIBORVolatilityModel.java │ │ │ │ │ ├── LIBORVolatilityModelFourParameterExponentialForm.java │ │ │ │ │ ├── LIBORVolatilityModelFourParameterExponentialFormIntegrated.java │ │ │ │ │ ├── LIBORVolatilityModelFromGivenMatrix.java │ │ │ │ │ ├── LIBORVolatilityModelMaturityDependentFourParameterExponentialForm.java │ │ │ │ │ ├── LIBORVolatilityModelPiecewiseConstant.java │ │ │ │ │ ├── LIBORVolatilityModelTimeHomogenousPiecewiseConstant.java │ │ │ │ │ ├── LIBORVolatilityModelTwoParameterExponentialForm.java │ │ │ │ │ ├── ShortRateVolatilityModel.java │ │ │ │ │ ├── ShortRateVolatilityModelAsGiven.java │ │ │ │ │ ├── ShortRateVolatilityModelCalibrateable.java │ │ │ │ │ ├── ShortRateVolatilityModelHoLee.java │ │ │ │ │ ├── ShortRateVolatilityModelParametric.java │ │ │ │ │ ├── ShortRateVolatilityModelPiecewiseConstant.java │ │ │ │ │ ├── TermStructCovarianceModelFromLIBORCovarianceModel.java │ │ │ │ │ ├── TermStructCovarianceModelFromLIBORCovarianceModelParametric.java │ │ │ │ │ ├── TermStructureCovarianceModel.java │ │ │ │ │ ├── TermStructureCovarianceModelParametric.java │ │ │ │ │ ├── TermStructureFactorLoadingsModel.java │ │ │ │ │ ├── TermStructureFactorLoadingsModelParametric.java │ │ │ │ │ ├── TermStructureTenorTimeScaling.java │ │ │ │ │ ├── TermStructureTenorTimeScalingPicewiseConstant.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── funding │ │ │ │ │ ├── DefaultFactors.java │ │ │ │ │ ├── FundingCapacity.java │ │ │ │ │ ├── FundingCapacityWithMemory.java │ │ │ │ │ ├── FundingCapacityWithoutMemory.java │ │ │ │ │ └── package-info.java │ │ │ │ └── package-info.java │ │ │ ├── package-info.java │ │ │ ├── products │ │ │ │ ├── AbstractLIBORMonteCarloProduct.java │ │ │ │ ├── AbstractTermStructureMonteCarloProduct.java │ │ │ │ ├── BermudanSwaption.java │ │ │ │ ├── BermudanSwaptionFromSwapSchedules.java │ │ │ │ ├── Bond.java │ │ │ │ ├── CMSOption.java │ │ │ │ ├── CancelableSwap.java │ │ │ │ ├── Caplet.java │ │ │ │ ├── DigitalCaplet.java │ │ │ │ ├── DigitalFloorlet.java │ │ │ │ ├── FlexiCap.java │ │ │ │ ├── ForwardRateVolatilitySurfaceCurvature.java │ │ │ │ ├── InterestRateProductsClassDiagram.svg │ │ │ │ ├── LIBORBond.java │ │ │ │ ├── MoneyMarketAccount.java │ │ │ │ ├── Portfolio.java │ │ │ │ ├── SimpleCappedFlooredFloatingRateBond.java │ │ │ │ ├── SimpleSwap.java │ │ │ │ ├── SimpleZeroSwap.java │ │ │ │ ├── Swap.java │ │ │ │ ├── SwapLeg.java │ │ │ │ ├── SwapLegWithFundingProvider.java │ │ │ │ ├── SwapWithComponents.java │ │ │ │ ├── SwaprateCovarianceAnalyticApproximation.java │ │ │ │ ├── Swaption.java │ │ │ │ ├── SwaptionATM.java │ │ │ │ ├── SwaptionAnalyticApproximation.java │ │ │ │ ├── SwaptionAnalyticApproximationRebonato.java │ │ │ │ ├── SwaptionFactory.java │ │ │ │ ├── SwaptionFromSwapSchedules.java │ │ │ │ ├── SwaptionGeneralizedAnalyticApproximation.java │ │ │ │ ├── SwaptionSimple.java │ │ │ │ ├── SwaptionSingleCurve.java │ │ │ │ ├── SwaptionSingleCurveAnalyticApproximation.java │ │ │ │ ├── SwaptionWithComponents.java │ │ │ │ ├── TermStructureMonteCarloProduct.java │ │ │ │ ├── components │ │ │ │ │ ├── AbstractPeriod.java │ │ │ │ │ ├── AbstractProductComponent.java │ │ │ │ │ ├── AccrualAccount.java │ │ │ │ │ ├── AccruingNotional.java │ │ │ │ │ ├── Cashflow.java │ │ │ │ │ ├── Choice.java │ │ │ │ │ ├── ExpectedTailLoss.java │ │ │ │ │ ├── ExposureEstimator.java │ │ │ │ │ ├── IndexedValue.java │ │ │ │ │ ├── Notional.java │ │ │ │ │ ├── NotionalFromComponent.java │ │ │ │ │ ├── NotionalFromConstant.java │ │ │ │ │ ├── Numeraire.java │ │ │ │ │ ├── Option.java │ │ │ │ │ ├── Period.java │ │ │ │ │ ├── ProductCollection.java │ │ │ │ │ ├── Selector.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── indices │ │ │ │ │ ├── AbstractIndex.java │ │ │ │ │ ├── AccruedInterest.java │ │ │ │ │ ├── AnalyticModelForwardCurveIndex.java │ │ │ │ │ ├── AnalyticModelIndex.java │ │ │ │ │ ├── CappedFlooredIndex.java │ │ │ │ │ ├── ConstantMaturitySwaprate.java │ │ │ │ │ ├── DateIndex.java │ │ │ │ │ ├── FixedCoupon.java │ │ │ │ │ ├── ForwardCurveIndex.java │ │ │ │ │ ├── LIBORIndex.java │ │ │ │ │ ├── LaggedIndex.java │ │ │ │ │ ├── LinearCombinationIndex.java │ │ │ │ │ ├── MaxIndex.java │ │ │ │ │ ├── MinIndex.java │ │ │ │ │ ├── NumerairePerformanceIndex.java │ │ │ │ │ ├── NumerairePerformanceOnScheduleIndex.java │ │ │ │ │ ├── PerformanceIndex.java │ │ │ │ │ ├── PowIndex.java │ │ │ │ │ ├── ProductIndex.java │ │ │ │ │ ├── TimeDiscreteEndOfMonthIndex.java │ │ │ │ │ ├── TriggerIndex.java │ │ │ │ │ ├── UnsupportedIndex.java │ │ │ │ │ └── package-info.java │ │ │ │ └── package-info.java │ │ │ └── simple │ │ │ │ ├── AbstractLIBORMarketModel.java │ │ │ │ ├── SimpleLIBORMarketModel.java │ │ │ │ ├── SimpleLIBORMarketModelWithWMC.java │ │ │ │ └── package-info.java │ │ ├── model │ │ │ ├── AbstractProcessModel.java │ │ │ ├── ProcessModel.java │ │ │ └── package-info.java │ │ ├── package-info.java │ │ ├── process │ │ │ ├── EulerSchemeFromProcessModel.java │ │ │ ├── LinearInterpolatedTimeDiscreteProcess.java │ │ │ ├── MonteCarloProcess.java │ │ │ ├── MonteCarloProcessFromProcessModel.java │ │ │ ├── Process.java │ │ │ ├── ProcessTimeDiscretizationProvider.java │ │ │ ├── component │ │ │ │ ├── barrier │ │ │ │ │ ├── Barrier.java │ │ │ │ │ ├── ProcessWithBarrier.java │ │ │ │ │ └── package-info.java │ │ │ │ └── factortransform │ │ │ │ │ ├── FactorTransform.java │ │ │ │ │ └── package-info.java │ │ │ └── package-info.java │ │ ├── products │ │ │ ├── PortfolioMonteCarloProduct.java │ │ │ └── package-info.java │ │ └── templatemethoddesign │ │ │ ├── LogNormalProcess.java │ │ │ ├── MonteCalorBlackScholesModelTemplateMethodDesign.png │ │ │ ├── assetderivativevaluation │ │ │ ├── MonteCarloBlackScholesModel2.java │ │ │ └── package-info.java │ │ │ └── package-info.java │ │ ├── optimizer │ │ ├── GoldenSectionSearch.java │ │ ├── LevenbergMarquardt.java │ │ ├── Optimizer.java │ │ ├── OptimizerFactory.java │ │ ├── OptimizerFactoryCMAES.java │ │ ├── OptimizerFactoryLevenbergMarquardt.java │ │ ├── SolverException.java │ │ ├── StochasticLevenbergMarquardt.java │ │ ├── StochasticLevenbergMarquardtAD.java │ │ ├── StochasticOptimizer.java │ │ ├── StochasticOptimizerFactory.java │ │ ├── StochasticOptimizerFactoryLevenbergMarquardt.java │ │ ├── StochasticOptimizerFactoryLevenbergMarquardtAD.java │ │ ├── StochasticOptimizerFactoryPathwiseLevenbergMarquardtAD.java │ │ ├── StochasticPathwiseLevenbergMarquardt.java │ │ ├── StochasticPathwiseLevenbergMarquardtAD.java │ │ ├── StochasticPathwiseOptimizerFactoryLevenbergMarquardt.java │ │ ├── package-info.java │ │ └── parameter │ │ │ ├── ParameterTransfrom.java │ │ │ ├── ParameterTransfromBoundedSlope.java │ │ │ └── ParameterTransfromSimpleBounded.java │ │ ├── parser │ │ ├── CSVCurveParser.java │ │ ├── CSVSwaptionParser.java │ │ └── package-info.java │ │ ├── randomnumbers │ │ ├── AcceptanceRejectionRandomNumberGenerator.java │ │ ├── HaltonSequence.java │ │ ├── HighEntropyRandomNumberGenerator.java │ │ ├── MersenneTwister.java │ │ ├── RandomNumberGenerator.java │ │ ├── RandomNumberGenerator1D.java │ │ ├── SobolSequence.java │ │ ├── SobolSequence1D.java │ │ ├── VanDerCorputSequence.java │ │ └── package-info.java │ │ ├── rootfinder │ │ ├── AbstractRootFinder.java │ │ ├── BisectionSearch.java │ │ ├── NewtonsMethod.java │ │ ├── RiddersMethod.java │ │ ├── RootFinder.java │ │ ├── RootFinderWithDerivative.java │ │ ├── SecantMethod.java │ │ ├── StochasticNewtonMethod.java │ │ ├── StochasticRootFinder.java │ │ ├── StochasticRootFinderUsingDerivative.java │ │ └── package-info.java │ │ ├── singleswaprate │ │ ├── Utils.java │ │ ├── annuitymapping │ │ │ ├── AnnuityMapping.java │ │ │ ├── AnnuityMappingFactory.java │ │ │ ├── BasicPiterbargAnnuityMapping.java │ │ │ ├── ConstantNormalizer.java │ │ │ ├── ExponentialNormalizer.java │ │ │ ├── MultiPiterbargAnnuityMapping.java │ │ │ ├── NormalizingFunction.java │ │ │ ├── SimplifiedLinearAnnuityMapping.java │ │ │ └── package-info.java │ │ ├── calibration │ │ │ ├── AbstractCubeCalibration.java │ │ │ ├── SABRCubeCalibration.java │ │ │ ├── SABRCubeParallelCalibration.java │ │ │ ├── SABRShiftedSmileCalibration.java │ │ │ ├── StaticCubeCalibration.java │ │ │ └── package-info.java │ │ ├── data │ │ │ ├── DataTable.java │ │ │ ├── DataTableBasic.java │ │ │ ├── DataTableExtrapolated.java │ │ │ ├── DataTableInterpolated.java │ │ │ ├── DataTableLight.java │ │ │ ├── DataTableLinear.java │ │ │ ├── ErrorEstimation.java │ │ │ └── package-info.java │ │ ├── model │ │ │ ├── AnalyticModelWithVolatilityCubes.java │ │ │ ├── VolatilityCubeModel.java │ │ │ ├── curves │ │ │ │ ├── ExponentialCorrelationCurve.java │ │ │ │ └── package-info.java │ │ │ ├── package-info.java │ │ │ └── volatilities │ │ │ │ ├── SABRVolatilityCube.java │ │ │ │ ├── SABRVolatilityCubeParallel.java │ │ │ │ ├── SABRVolatilityCubeParallelFactory.java │ │ │ │ ├── SABRVolatilityCubeSingleSmile.java │ │ │ │ ├── ScaledVolatilityCube.java │ │ │ │ ├── StaticVolatilityCube.java │ │ │ │ ├── VolVolCube.java │ │ │ │ ├── VolatilityCube.java │ │ │ │ ├── VolatilityCubeFactory.java │ │ │ │ └── package-info.java │ │ ├── package-info.java │ │ └── products │ │ │ ├── AbstractAnalyticVolatilityCubeProduct.java │ │ │ ├── AbstractSingleSwapRateProduct.java │ │ │ ├── AnalyticVolatilityCubeProduct.java │ │ │ ├── AnnuityDummyProduct.java │ │ │ ├── CashSettledPayerSwaption.java │ │ │ ├── CashSettledReceiverSwaption.java │ │ │ ├── ConstantMaturitySwap.java │ │ │ ├── NormalizingDummyProduct.java │ │ │ └── package-info.java │ │ ├── stochastic │ │ ├── ConditionalExpectationEstimator.java │ │ ├── RandomOperator.java │ │ ├── RandomVariable.java │ │ ├── RandomVariable.png │ │ ├── RandomVariable.svg │ │ ├── RandomVariable.ucls │ │ ├── RandomVariableAccumulator.java │ │ ├── RandomVariableArray.java │ │ ├── RandomVariableArrayImplementation.java │ │ ├── Scalar.java │ │ ├── operators │ │ │ └── RandomVariableOperator.java │ │ └── package-info.java │ │ ├── swing │ │ ├── JNumberField.java │ │ └── package-info.java │ │ ├── time │ │ ├── FloatingpointDate.java │ │ ├── Period.java │ │ ├── RegularSchedule.java │ │ ├── Schedule.java │ │ ├── ScheduleFromPeriods.java │ │ ├── ScheduleGenerator.java │ │ ├── ScheduleMetaData.java │ │ ├── SchedulePrototype.java │ │ ├── Tenor.java │ │ ├── TenorFromArray.java │ │ ├── TimeDiscretization.java │ │ ├── TimeDiscretizationFromArray.java │ │ ├── businessdaycalendar │ │ │ ├── AbstractBusinessdayCalendar.java │ │ │ ├── BusinessdayCalendar.java │ │ │ ├── BusinessdayCalendarAny.java │ │ │ ├── BusinessdayCalendarExcludingGivenHolidays.java │ │ │ ├── BusinessdayCalendarExcludingGivenSetOfHolidays.java │ │ │ ├── BusinessdayCalendarExcludingLONHolidays.java │ │ │ ├── BusinessdayCalendarExcludingNYCHolidays.java │ │ │ ├── BusinessdayCalendarExcludingTARGETHolidays.java │ │ │ ├── BusinessdayCalendarExcludingWeekends.java │ │ │ └── package-info.java │ │ ├── daycount │ │ │ ├── DayCountConvention.java │ │ │ ├── DayCountConventionFactory.java │ │ │ ├── DayCountConvention_30E_360.java │ │ │ ├── DayCountConvention_30E_360_ISDA.java │ │ │ ├── DayCountConvention_30U_360.java │ │ │ ├── DayCountConvention_ACT.java │ │ │ ├── DayCountConvention_ACT_360.java │ │ │ ├── DayCountConvention_ACT_365.java │ │ │ ├── DayCountConvention_ACT_365A.java │ │ │ ├── DayCountConvention_ACT_365L.java │ │ │ ├── DayCountConvention_ACT_ACT_AFB.java │ │ │ ├── DayCountConvention_ACT_ACT_ICMA.java │ │ │ ├── DayCountConvention_ACT_ACT_ISDA.java │ │ │ ├── DayCountConvention_ACT_ACT_YEARFRAC.java │ │ │ ├── DayCountConvention_NL_365.java │ │ │ ├── DayCountConvention_NONE.java │ │ │ ├── DayCountConvention_UNKNOWN.java │ │ │ └── package-info.java │ │ └── package-info.java │ │ ├── timeseries │ │ ├── HistoricalSimulationModel.java │ │ ├── MarketData.java │ │ ├── TimeSeries.java │ │ ├── TimeSeriesFromArray.java │ │ ├── TimeSeriesModelParametric.java │ │ ├── TimeSeriesView.java │ │ ├── models │ │ │ └── parametric │ │ │ │ ├── ARMAGARCH.java │ │ │ │ ├── DisplacedLognormal.java │ │ │ │ ├── DisplacedLognormalARMAGARCH.java │ │ │ │ ├── DisplacedLognormalGARCH.java │ │ │ │ ├── DisplacedLognormalGJRGARCH.java │ │ │ │ ├── GARCH.java │ │ │ │ ├── SimpleHistroricalSimulation.java │ │ │ │ └── package-info.java │ │ └── package-info.java │ │ └── util │ │ ├── Cached.java │ │ ├── FileUtilities.java │ │ ├── TriFunction.java │ │ ├── config │ │ ├── ConfigTree.java │ │ ├── nodes │ │ │ ├── ConfigNode.java │ │ │ ├── Node.java │ │ │ ├── SpecialNodes.java │ │ │ ├── ValueNode.java │ │ │ └── package-info.java │ │ └── package-info.java │ │ └── package-info.java ├── java8 │ └── net │ │ └── finmath │ │ ├── concurrency │ │ ├── FutureWrapper.java │ │ └── package-info.java │ │ ├── exception │ │ ├── CalculationException.java │ │ └── package-info.java │ │ ├── finitedifference │ │ ├── experimental │ │ │ ├── BlackScholesTheta.java │ │ │ └── package-info.java │ │ ├── models │ │ │ ├── FDMBlackScholesModel.java │ │ │ ├── FDMConstantElasticityOfVarianceModel.java │ │ │ ├── FiniteDifference1DBoundary.java │ │ │ ├── FiniteDifference1DModel.java │ │ │ └── package-info.java │ │ ├── package-info.java │ │ ├── products │ │ │ ├── FDMEuropeanCallOption.java │ │ │ ├── FDMEuropeanPutOption.java │ │ │ ├── FiniteDifference1DProduct.java │ │ │ └── package-info.java │ │ └── solvers │ │ │ ├── FDMThetaMethod.java │ │ │ └── package-info.java │ │ ├── fouriermethod │ │ ├── CharacteristicFunction.java │ │ ├── calibration │ │ │ ├── BoundConstraint.java │ │ │ ├── CalibratedModel.java │ │ │ ├── Constraint.java │ │ │ ├── Constraints.png │ │ │ ├── Constraints.ucls │ │ │ ├── NegativityConstraint.java │ │ │ ├── ParameterInformation.java │ │ │ ├── PositivityConstraint.java │ │ │ ├── ScalarConstraint.java │ │ │ ├── ScalarParameterInformation.java │ │ │ ├── ScalarParameterInformationImplementation.java │ │ │ ├── Unconstrained.java │ │ │ ├── models │ │ │ │ ├── CalibratableHestonModel.java │ │ │ │ ├── CalibratableMertonModel.java │ │ │ │ ├── CalibratableProcess.java │ │ │ │ ├── CalibratableVarianceGammaModel.java │ │ │ │ ├── CalibrationDiagram.png │ │ │ │ ├── CalibrationDiagram.ucls │ │ │ │ └── package-info.java │ │ │ └── package-info.java │ │ ├── models │ │ │ ├── BatesModel.java │ │ │ ├── BlackScholesModel.java │ │ │ ├── CharacteristicFunctionModel.java │ │ │ ├── HestonModel.java │ │ │ ├── MertonModel.java │ │ │ ├── VarianceGammaModel.java │ │ │ └── package-info.java │ │ ├── package-info.java │ │ └── products │ │ │ ├── AbstractFourierTransformProduct.java │ │ │ ├── DigitalOption.java │ │ │ ├── EuropeanOption.java │ │ │ ├── FourierTransformProduct.java │ │ │ ├── package-info.java │ │ │ └── smile │ │ │ ├── EuropeanOptionSmile.java │ │ │ ├── EuropeanOptionSmileByCarrMadan.java │ │ │ ├── SmileByIntegralTransform.java │ │ │ └── package-info.java │ │ ├── functions │ │ ├── AnalyticFormulas.java │ │ ├── BachelierModel.java │ │ ├── BarrierOptions.java │ │ ├── DoubleTernaryOperator.java │ │ ├── GammaDistribution.java │ │ ├── JarqueBeraTest.java │ │ ├── LinearAlgebra.java │ │ ├── LogNormalDistribution.java │ │ ├── NonCentralChiSquaredDistribution.java │ │ ├── NormalDistribution.java │ │ ├── PoissonDistribution.java │ │ ├── SABRModel.java │ │ └── package-info.java │ │ ├── information │ │ ├── Library.java │ │ └── package-info.java │ │ ├── integration │ │ ├── AbstractRealIntegral.java │ │ ├── MonteCarloIntegrator.java │ │ ├── PiecewiseContantDoubleUnaryOperator.java │ │ ├── RealIntegral.java │ │ ├── RombergRealIntegration.java │ │ ├── SimpsonRealIntegrator.java │ │ ├── TrapezoidalRealIntegrator.java │ │ └── package-info.java │ │ ├── interpolation │ │ ├── BiLinearInterpolation.java │ │ ├── RationalFunctionInterpolation.java │ │ └── package-info.java │ │ ├── marketdata │ │ ├── calibration │ │ │ ├── CalibratedCurves.java │ │ │ ├── CalibrationClassDiagram.svg │ │ │ ├── ParameterAggregation.java │ │ │ ├── ParameterObject.java │ │ │ ├── ParameterTransformation.java │ │ │ ├── Solver.java │ │ │ └── package-info.java │ │ ├── model │ │ │ ├── AnalyticModel.java │ │ │ ├── AnalyticModelFromCurvesAndVols.java │ │ │ ├── bond │ │ │ │ ├── Bond.java │ │ │ │ ├── BondCurve.java │ │ │ │ └── package-info.java │ │ │ ├── cds │ │ │ │ ├── CDS.java │ │ │ │ └── package-info.java │ │ │ ├── curves │ │ │ │ ├── AbstractCurve.java │ │ │ │ ├── AbstractForwardCurve.java │ │ │ │ ├── Curve.java │ │ │ │ ├── CurveBuilder.java │ │ │ │ ├── CurveFactory.java │ │ │ │ ├── CurveFromProductOfCurves.java │ │ │ │ ├── CurveInterpolation.java │ │ │ │ ├── CurvesClassDiagram.svg │ │ │ │ ├── CurvesClassDiagram.ucls │ │ │ │ ├── DiscountCurve.java │ │ │ │ ├── DiscountCurveFromForwardCurve.java │ │ │ │ ├── DiscountCurveFromProductOfCurves.java │ │ │ │ ├── DiscountCurveInterpolation.java │ │ │ │ ├── DiscountCurveNelsonSiegelSvensson.java │ │ │ │ ├── DiscountCurveRenormalized.java │ │ │ │ ├── ForwardCurve.java │ │ │ │ ├── ForwardCurveFromDiscountCurve.java │ │ │ │ ├── ForwardCurveInterpolation.java │ │ │ │ ├── ForwardCurveNelsonSiegelSvensson.java │ │ │ │ ├── ForwardCurveWithFixings.java │ │ │ │ ├── IndexCurveFromDiscountCurve.java │ │ │ │ ├── PiecewiseCurve.java │ │ │ │ ├── SeasonalCurve.java │ │ │ │ ├── locallinearregression │ │ │ │ │ ├── CurveEstimation.java │ │ │ │ │ ├── Partition.java │ │ │ │ │ └── package-info.java │ │ │ │ └── package-info.java │ │ │ ├── package-info.java │ │ │ ├── volatilities │ │ │ │ ├── AbstractVolatilitySurface.java │ │ │ │ ├── AbstractVolatilitySurfaceParametric.java │ │ │ │ ├── CapletVolatilities.java │ │ │ │ ├── CapletVolatilitiesParametric.java │ │ │ │ ├── CapletVolatilitiesParametricDisplacedFourParameterAnalytic.java │ │ │ │ ├── CapletVolatilitiesParametricFourParameterPicewiseConstant.java │ │ │ │ ├── OptionData.java │ │ │ │ ├── OptionSmileData.java │ │ │ │ ├── OptionSurfaceData.java │ │ │ │ ├── SwaptionATMMarketDataFromArray.java │ │ │ │ ├── SwaptionDataLattice.java │ │ │ │ ├── SwaptionMarketData.java │ │ │ │ ├── VolatilitySurface.java │ │ │ │ └── package-info.java │ │ │ └── volatility │ │ │ │ └── caplet │ │ │ │ ├── CapShiftedVol.java │ │ │ │ ├── CapTenorStructure.java │ │ │ │ ├── CapVolMarketData.java │ │ │ │ ├── CapletVolBootstrapping.java │ │ │ │ ├── CapletVolatilitySurface.java │ │ │ │ ├── package-info.java │ │ │ │ ├── smile │ │ │ │ ├── LinearSmileInterpolater.java │ │ │ │ ├── SmileInterpolationExtrapolationMethod.java │ │ │ │ └── package-info.java │ │ │ │ └── tenorconversion │ │ │ │ ├── CorrelationProvider.java │ │ │ │ ├── CorrelationProviderTenorBasis.java │ │ │ │ ├── TenorConverter.java │ │ │ │ └── package-info.java │ │ ├── package-info.java │ │ └── products │ │ │ ├── AbstractAnalyticProduct.java │ │ │ ├── AnalyticProduct.java │ │ │ ├── Cap.java │ │ │ ├── Cashflow.java │ │ │ ├── CurveCalibrationProductsClassDiagram.svg │ │ │ ├── Deposit.java │ │ │ ├── Forward.java │ │ │ ├── ForwardRateAgreement.java │ │ │ ├── MarketForwardRateAgreement.java │ │ │ ├── Performance.java │ │ │ ├── Portfolio.java │ │ │ ├── Swap.java │ │ │ ├── SwapAnnuity.java │ │ │ ├── SwapLeg.java │ │ │ └── package-info.java │ │ ├── marketdata2 │ │ ├── calibration │ │ │ ├── CalibratedCurves.java │ │ │ ├── ParameterAggregation.java │ │ │ ├── ParameterObject.java │ │ │ ├── ParameterTransformation.java │ │ │ ├── Solver.java │ │ │ └── package-info.java │ │ ├── interpolation │ │ │ ├── RationalFunctionInterpolation.java │ │ │ └── package-info.java │ │ ├── model │ │ │ ├── AnalyticModel.java │ │ │ ├── AnalyticModelFromCurvesAndVols.java │ │ │ ├── curves │ │ │ │ ├── AbstractCurve.java │ │ │ │ ├── AbstractForwardCurve.java │ │ │ │ ├── Curve.java │ │ │ │ ├── CurveBuilder.java │ │ │ │ ├── CurveInterpolation.java │ │ │ │ ├── DiscountCurveFromForwardCurve.java │ │ │ │ ├── DiscountCurveInterface.java │ │ │ │ ├── DiscountCurveInterpolation.java │ │ │ │ ├── ForwardCurveFromDiscountCurve.java │ │ │ │ ├── ForwardCurveInterface.java │ │ │ │ ├── ForwardCurveInterpolation.java │ │ │ │ └── package-info.java │ │ │ ├── package-info.java │ │ │ └── volatilities │ │ │ │ ├── AbstractVolatilitySurface.java │ │ │ │ ├── VolatilitySurface.java │ │ │ │ └── package-info.java │ │ ├── package-info.java │ │ └── products │ │ │ ├── AbstractAnalyticProduct.java │ │ │ ├── AnalyticProduct.java │ │ │ ├── Cashflow.java │ │ │ ├── Deposit.java │ │ │ ├── Forward.java │ │ │ ├── ForwardRateAgreement.java │ │ │ ├── MarketForwardRateAgreement.java │ │ │ ├── Performance.java │ │ │ ├── Portfolio.java │ │ │ ├── Swap.java │ │ │ ├── SwapAnnuity.java │ │ │ ├── SwapLeg.java │ │ │ └── package-info.java │ │ ├── modelling │ │ ├── DescribedModel.java │ │ ├── DescribedProduct.java │ │ ├── InterestRateProductDescriptor.java │ │ ├── Model.java │ │ ├── ModelDescriptor.java │ │ ├── ModelFactory.java │ │ ├── Product.java │ │ ├── ProductDescriptor.java │ │ ├── ProductFactory.java │ │ ├── SingleAssetProductDescriptor.java │ │ ├── UnsupportedProduct.java │ │ ├── descriptor │ │ │ ├── AnalyticModelDescriptor.java │ │ │ ├── AssetModelDescriptor.java │ │ │ ├── BlackScholesModelDescriptor.java │ │ │ ├── HestonModelDescriptor.java │ │ │ ├── InterestRateModelDescriptor.java │ │ │ ├── InterestRateSwapLegProductDescriptor.java │ │ │ ├── InterestRateSwapProductDescriptor.java │ │ │ ├── InterestRateSwaptionProductDescriptor.java │ │ │ ├── MertonModelDescriptor.java │ │ │ ├── ScheduleDescriptor.java │ │ │ ├── SingleAssetDigitalOptionProductDescriptor.java │ │ │ ├── SingleAssetEuropeanOptionProductDescriptor.java │ │ │ ├── VarianceGammaModelDescriptor.java │ │ │ ├── package-info.java │ │ │ └── xmlparser │ │ │ │ ├── FIPXMLParser.java │ │ │ │ ├── FPMLParser.java │ │ │ │ ├── XMLParser.java │ │ │ │ └── package-info.java │ │ ├── modelfactory │ │ │ ├── AnalyticModelFactory.java │ │ │ ├── AssetModelFourierMethodFactory.java │ │ │ ├── AssetModelMonteCarloFactory.java │ │ │ ├── BlackScholesModelMonteCarloFactory.java │ │ │ ├── BlackScholesModelMonteCarloFiniteDifference1D.java │ │ │ ├── HestonModelMonteCarloFactory.java │ │ │ └── package-info.java │ │ ├── package-info.java │ │ ├── productfactory │ │ │ ├── InterestRateAnalyticProductFactory.java │ │ │ ├── InterestRateMonteCarloProductFactory.java │ │ │ ├── ProductFactoryCascade.java │ │ │ ├── SingleAssetFourierProductFactory.java │ │ │ ├── SingleAssetMonteCarloProductFactory.java │ │ │ └── package-info.java │ │ └── products │ │ │ ├── Swaption.java │ │ │ └── package-info.java │ │ ├── montecarlo │ │ ├── AbstractMonteCarloProduct.java │ │ ├── AbstractRandomVariableFactory.java │ │ ├── BrownianBridge.java │ │ ├── BrownianMotion.java │ │ ├── BrownianMotionFromMersenneRandomNumbers.java │ │ ├── BrownianMotionFromRandomNumberGenerator.java │ │ ├── BrownianMotionLazyInit.java │ │ ├── BrownianMotionView.java │ │ ├── BrownianMotionWithControlVariate.java │ │ ├── CorrelatedBrownianMotion.java │ │ ├── GammaProcess.java │ │ ├── IndependentIncrements.java │ │ ├── IndependentIncrementsFromICDF.java │ │ ├── JumpProcessIncrements.java │ │ ├── MertonJumpProcess.java │ │ ├── MonteCarloProduct.java │ │ ├── MonteCarloSimulationModel.java │ │ ├── RandomVariableFactory.java │ │ ├── RandomVariableFloatFactory.java │ │ ├── RandomVariableFromArrayFactory.java │ │ ├── RandomVariableFromDoubleArray.java │ │ ├── RandomVariableFromFloatArray.java │ │ ├── RandomVariableLazyEvaluation.java │ │ ├── RandomVariableLazyEvaluationFactory.java │ │ ├── VarianceGammaProcess.java │ │ ├── assetderivativevaluation │ │ │ ├── AssetModelMonteCarloSimulationModel.java │ │ │ ├── MonteCarloAssetModel.java │ │ │ ├── MonteCarloBlackScholesModel.java │ │ │ ├── MonteCarloBlackScholesModelClassDiagram.png │ │ │ ├── MonteCarloBlackScholesModelClassDiagram.svg │ │ │ ├── MonteCarloMertonModel.java │ │ │ ├── MonteCarloMultiAssetBlackScholesModel.java │ │ │ ├── MonteCarloVarianceGammaModel.java │ │ │ ├── models │ │ │ │ ├── BachelierModel.java │ │ │ │ ├── BlackScholesModel.java │ │ │ │ ├── BlackScholesModelWithCurves.java │ │ │ │ ├── DisplacedLognomalModel.java │ │ │ │ ├── HestonModel.java │ │ │ │ ├── InhomogeneousDisplacedLognomalModel.java │ │ │ │ ├── InhomogenousBachelierModel.java │ │ │ │ ├── MertonModel.java │ │ │ │ ├── MultiAssetBlackScholesModel.java │ │ │ │ ├── VarianceGammaModel.java │ │ │ │ └── package-info.java │ │ │ ├── package-info.java │ │ │ └── products │ │ │ │ ├── AbstractAssetMonteCarloProduct.java │ │ │ │ ├── AbstractAssetMonteCarloProductClassDiagram.svg │ │ │ │ ├── AbstractAssetMonteCarloProductClassDiagram.ucls │ │ │ │ ├── AsianOption.java │ │ │ │ ├── AssetMonteCarloProduct.java │ │ │ │ ├── BasketOption.java │ │ │ │ ├── BermudanDigitalOption.java │ │ │ │ ├── BermudanOption.java │ │ │ │ ├── BlackScholesDeltaHedgedPortfolio.java │ │ │ │ ├── BlackScholesHedgedPortfolio.java │ │ │ │ ├── DeltaHedgedPortfolioWithAAD.java │ │ │ │ ├── DigitalOption.java │ │ │ │ ├── DigitalOptionDeltaLikelihood.java │ │ │ │ ├── EuropeanOption.java │ │ │ │ ├── EuropeanOptionDeltaLikelihood.java │ │ │ │ ├── EuropeanOptionDeltaPathwise.java │ │ │ │ ├── EuropeanOptionDeltaPathwiseForGeometricModel.java │ │ │ │ ├── EuropeanOptionGammaLikelihood.java │ │ │ │ ├── EuropeanOptionGammaPathwise.java │ │ │ │ ├── EuropeanOptionRhoLikelihood.java │ │ │ │ ├── EuropeanOptionRhoPathwise.java │ │ │ │ ├── EuropeanOptionThetaPathwise.java │ │ │ │ ├── EuropeanOptionVegaLikelihood.java │ │ │ │ ├── EuropeanOptionVegaPathwise.java │ │ │ │ ├── EuropeanOptionWithBoundary.java │ │ │ │ ├── FiniteDifferenceDeltaHedgedPortfolio.java │ │ │ │ ├── FiniteDifferenceHedgedPortfolio.java │ │ │ │ ├── ForwardAgreement.java │ │ │ │ ├── ForwardAgreementWithFundingRequirement.java │ │ │ │ ├── LocalRiskMinimizingHedgePortfolio.java │ │ │ │ └── package-info.java │ │ ├── automaticdifferentiation │ │ │ ├── AbstractRandomVariableDifferentiableFactory.java │ │ │ ├── IndependentModelParameterProvider.java │ │ │ ├── RandomVariableDifferentiable.java │ │ │ ├── RandomVariableDifferentiableFactory.java │ │ │ ├── backward │ │ │ │ ├── RandomVariableDifferentiableAAD.java │ │ │ │ ├── RandomVariableDifferentiableAADFactory.java │ │ │ │ ├── alternative │ │ │ │ │ ├── RandomVariableAAD.java │ │ │ │ │ ├── RandomVariableDifferentiableAADPathwise.java │ │ │ │ │ ├── RandomVariableDifferentiableAADPathwiseFactory.java │ │ │ │ │ ├── RandomVariableDifferentiableAADStochasticNonOptimized.java │ │ │ │ │ ├── RandomVariableDifferentiableAADStochasticNonOptimizedFactory.java │ │ │ │ │ ├── RandomVariableUniqueVariable.java │ │ │ │ │ ├── RandomVariableUniqueVariableFactory.java │ │ │ │ │ └── package-info.java │ │ │ │ └── package-info.java │ │ │ ├── forward │ │ │ │ ├── RandomVariableDifferentiableAD.java │ │ │ │ ├── RandomVariableDifferentiableADFactory.java │ │ │ │ └── package-info.java │ │ │ └── package-info.java │ │ ├── conditionalexpectation │ │ │ ├── LinearRegression.java │ │ │ ├── MonteCarloConditionalExpectationLinearRegressionFactory.java │ │ │ ├── MonteCarloConditionalExpectationLocalizedOnDependentRegressionFactory.java │ │ │ ├── MonteCarloConditionalExpectationRegression.java │ │ │ ├── MonteCarloConditionalExpectationRegressionFactory.java │ │ │ ├── MonteCarloConditionalExpectationRegressionLocalizedOnDependents.java │ │ │ ├── RegressionBasisFunctionsFromProducts.java │ │ │ ├── RegressionBasisFunctionsProvider.java │ │ │ └── package-info.java │ │ ├── crosscurrency │ │ │ ├── CrossCurrencyTermStructureMonteCarloSimulationModel.java │ │ │ └── package-info.java │ │ ├── hybridassetinterestrate │ │ │ ├── ConvexityAdjustedModel.java │ │ │ ├── CrossCurrencyLIBORMarketModelFromModels.java │ │ │ ├── HybridAssetLIBORModelMonteCarloSimulation.java │ │ │ ├── HybridAssetLIBORModelMonteCarloSimulationFromModels.java │ │ │ ├── HybridAssetMonteCarloSimulation.java │ │ │ ├── ModelFactory.java │ │ │ ├── RiskFactorFX.java │ │ │ ├── RiskFactorForwardRate.java │ │ │ ├── RiskFactorID.java │ │ │ ├── package-info.java │ │ │ └── products │ │ │ │ ├── Bond.java │ │ │ │ ├── BondWithForeignNumeraire.java │ │ │ │ ├── ForwardRateAgreementGeneralized.java │ │ │ │ ├── HybridAssetMonteCarloProduct.java │ │ │ │ ├── WorstOfExpressCertificate.java │ │ │ │ └── package-info.java │ │ ├── interestrate │ │ │ ├── CalibrationProduct.java │ │ │ ├── HullWhiteModel.svg │ │ │ ├── HullWhiteModel.ucls │ │ │ ├── LIBORMarketModel.java │ │ │ ├── LIBORMarketModelClassDiagram.svg │ │ │ ├── LIBORMarketModelClassDiagram.ucls │ │ │ ├── LIBORModel.java │ │ │ ├── LIBORModelCalibrationClassDiagram.svg │ │ │ ├── LIBORModelCalibrationClassDiagram.ucls │ │ │ ├── LIBORModelCalibrationDiagram.png │ │ │ ├── LIBORModelMonteCarloSimulationModel.java │ │ │ ├── LIBORMonteCarloSimulationFromLIBORModel.java │ │ │ ├── LIBORMonteCarloSimulationFromTermStructureModel.java │ │ │ ├── ShortRateModel.java │ │ │ ├── TermStructureModel.java │ │ │ ├── TermStructureMonteCarloSimulationFromTermStructureModel.java │ │ │ ├── TermStructureMonteCarloSimulationModel.java │ │ │ ├── models │ │ │ │ ├── FundingCapacity.java │ │ │ │ ├── HullWhiteModel.java │ │ │ │ ├── HullWhiteModelWithConstantCoeff.java │ │ │ │ ├── HullWhiteModelWithDirectSimulation.java │ │ │ │ ├── HullWhiteModelWithShiftExtension.java │ │ │ │ ├── LIBORMarketModelFromCovarianceModel.java │ │ │ │ ├── LIBORMarketModelStandard.java │ │ │ │ ├── LIBORMarketModelWithTenorRefinement.java │ │ │ │ ├── covariance │ │ │ │ │ ├── AbstractLIBORCovarianceModel.java │ │ │ │ │ ├── AbstractLIBORCovarianceModelParametric.java │ │ │ │ │ ├── AbstractShortRateVolatilityModel.java │ │ │ │ │ ├── AbstractShortRateVolatilityModelParametric.java │ │ │ │ │ ├── BlendedLocalVolatilityModel.java │ │ │ │ │ ├── DisplacedLocalVolatilityModel.java │ │ │ │ │ ├── ExponentialDecayLocalVolatilityModel.java │ │ │ │ │ ├── HullWhiteLocalVolatilityModel.java │ │ │ │ │ ├── LIBORCorrelationModel.java │ │ │ │ │ ├── LIBORCorrelationModelExponentialDecay.java │ │ │ │ │ ├── LIBORCorrelationModelThreeParameterExponentialDecay.java │ │ │ │ │ ├── LIBORCovarianceModel.java │ │ │ │ │ ├── LIBORCovarianceModelBH.java │ │ │ │ │ ├── LIBORCovarianceModelCalibrateable.java │ │ │ │ │ ├── LIBORCovarianceModelExponentialForm5Param.java │ │ │ │ │ ├── LIBORCovarianceModelExponentialForm7Param.java │ │ │ │ │ ├── LIBORCovarianceModelFromVolatilityAndCorrelation.java │ │ │ │ │ ├── LIBORCovarianceModelStochasticHestonVolatility.java │ │ │ │ │ ├── LIBORCovarianceModelStochasticVolatility.java │ │ │ │ │ ├── LIBORVolatilityModel.java │ │ │ │ │ ├── LIBORVolatilityModelFourParameterExponentialForm.java │ │ │ │ │ ├── LIBORVolatilityModelFourParameterExponentialFormIntegrated.java │ │ │ │ │ ├── LIBORVolatilityModelFromGivenMatrix.java │ │ │ │ │ ├── LIBORVolatilityModelMaturityDependentFourParameterExponentialForm.java │ │ │ │ │ ├── LIBORVolatilityModelPiecewiseConstant.java │ │ │ │ │ ├── LIBORVolatilityModelTimeHomogenousPiecewiseConstant.java │ │ │ │ │ ├── LIBORVolatilityModelTwoParameterExponentialForm.java │ │ │ │ │ ├── ShortRateVolatilityModel.java │ │ │ │ │ ├── ShortRateVolatilityModelAsGiven.java │ │ │ │ │ ├── ShortRateVolatilityModelCalibrateable.java │ │ │ │ │ ├── ShortRateVolatilityModelHoLee.java │ │ │ │ │ ├── ShortRateVolatilityModelParametric.java │ │ │ │ │ ├── ShortRateVolatilityModelPiecewiseConstant.java │ │ │ │ │ ├── TermStructCovarianceModelFromLIBORCovarianceModel.java │ │ │ │ │ ├── TermStructCovarianceModelFromLIBORCovarianceModelParametric.java │ │ │ │ │ ├── TermStructureCovarianceModel.java │ │ │ │ │ ├── TermStructureCovarianceModelParametric.java │ │ │ │ │ ├── TermStructureFactorLoadingsModel.java │ │ │ │ │ ├── TermStructureFactorLoadingsModelParametric.java │ │ │ │ │ ├── TermStructureTenorTimeScaling.java │ │ │ │ │ ├── TermStructureTenorTimeScalingPicewiseConstant.java │ │ │ │ │ └── package-info.java │ │ │ │ └── package-info.java │ │ │ ├── package-info.java │ │ │ ├── products │ │ │ │ ├── AbstractLIBORMonteCarloProduct.java │ │ │ │ ├── BermudanSwaption.java │ │ │ │ ├── BermudanSwaptionFromSwapSchedules.java │ │ │ │ ├── Bond.java │ │ │ │ ├── CMSOption.java │ │ │ │ ├── CancelableSwap.java │ │ │ │ ├── Caplet.java │ │ │ │ ├── DigitalCaplet.java │ │ │ │ ├── DigitalFloorlet.java │ │ │ │ ├── FlexiCap.java │ │ │ │ ├── ForwardRateVolatilitySurfaceCurvature.java │ │ │ │ ├── InterestRateProductsClassDiagram.svg │ │ │ │ ├── LIBORBond.java │ │ │ │ ├── MoneyMarketAccount.java │ │ │ │ ├── Portfolio.java │ │ │ │ ├── SimpleCappedFlooredFloatingRateBond.java │ │ │ │ ├── SimpleSwap.java │ │ │ │ ├── SimpleZeroSwap.java │ │ │ │ ├── Swap.java │ │ │ │ ├── SwapLeg.java │ │ │ │ ├── SwapLegWithFundingProvider.java │ │ │ │ ├── SwapWithComponents.java │ │ │ │ ├── SwaprateCovarianceAnalyticApproximation.java │ │ │ │ ├── Swaption.java │ │ │ │ ├── SwaptionATM.java │ │ │ │ ├── SwaptionAnalyticApproximation.java │ │ │ │ ├── SwaptionAnalyticApproximationRebonato.java │ │ │ │ ├── SwaptionFactory.java │ │ │ │ ├── SwaptionFromSwapSchedules.java │ │ │ │ ├── SwaptionGeneralizedAnalyticApproximation.java │ │ │ │ ├── SwaptionSimple.java │ │ │ │ ├── SwaptionSingleCurve.java │ │ │ │ ├── SwaptionSingleCurveAnalyticApproximation.java │ │ │ │ ├── SwaptionWithComponents.java │ │ │ │ ├── TermStructureMonteCarloProduct.java │ │ │ │ ├── components │ │ │ │ │ ├── AbstractPeriod.java │ │ │ │ │ ├── AbstractProductComponent.java │ │ │ │ │ ├── AccrualAccount.java │ │ │ │ │ ├── AccruingNotional.java │ │ │ │ │ ├── Cashflow.java │ │ │ │ │ ├── Choice.java │ │ │ │ │ ├── ExpectedTailLoss.java │ │ │ │ │ ├── ExposureEstimator.java │ │ │ │ │ ├── IndexedValue.java │ │ │ │ │ ├── Notional.java │ │ │ │ │ ├── NotionalFromComponent.java │ │ │ │ │ ├── NotionalFromConstant.java │ │ │ │ │ ├── Numeraire.java │ │ │ │ │ ├── Option.java │ │ │ │ │ ├── Period.java │ │ │ │ │ ├── ProductCollection.java │ │ │ │ │ ├── Selector.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── indices │ │ │ │ │ ├── AbstractIndex.java │ │ │ │ │ ├── AccruedInterest.java │ │ │ │ │ ├── AnalyticModelForwardCurveIndex.java │ │ │ │ │ ├── AnalyticModelIndex.java │ │ │ │ │ ├── CappedFlooredIndex.java │ │ │ │ │ ├── ConstantMaturitySwaprate.java │ │ │ │ │ ├── DateIndex.java │ │ │ │ │ ├── FixedCoupon.java │ │ │ │ │ ├── ForwardCurveIndex.java │ │ │ │ │ ├── LIBORIndex.java │ │ │ │ │ ├── LaggedIndex.java │ │ │ │ │ ├── LinearCombinationIndex.java │ │ │ │ │ ├── MaxIndex.java │ │ │ │ │ ├── MinIndex.java │ │ │ │ │ ├── NumerairePerformanceIndex.java │ │ │ │ │ ├── NumerairePerformanceOnScheduleIndex.java │ │ │ │ │ ├── PerformanceIndex.java │ │ │ │ │ ├── PowIndex.java │ │ │ │ │ ├── ProductIndex.java │ │ │ │ │ ├── TimeDiscreteEndOfMonthIndex.java │ │ │ │ │ ├── TriggerIndex.java │ │ │ │ │ ├── UnsupportedIndex.java │ │ │ │ │ └── package-info.java │ │ │ │ └── package-info.java │ │ │ └── simple │ │ │ │ ├── AbstractLIBORMarketModel.java │ │ │ │ ├── SimpleLIBORMarketModel.java │ │ │ │ ├── SimpleLIBORMarketModelWithWMC.java │ │ │ │ └── package-info.java │ │ ├── model │ │ │ ├── AbstractProcessModel.java │ │ │ ├── ProcessModel.java │ │ │ └── package-info.java │ │ ├── package-info.java │ │ ├── process │ │ │ ├── EulerSchemeFromProcessModel.java │ │ │ ├── LinearInterpolatedTimeDiscreteProcess.java │ │ │ ├── MonteCarloProcess.java │ │ │ ├── MonteCarloProcessFromProcessModel.java │ │ │ ├── Process.java │ │ │ ├── ProcessTimeDiscretizationProvider.java │ │ │ ├── component │ │ │ │ ├── barrier │ │ │ │ │ ├── Barrier.java │ │ │ │ │ ├── ProcessWithBarrier.java │ │ │ │ │ └── package-info.java │ │ │ │ └── factortransform │ │ │ │ │ ├── FactorTransform.java │ │ │ │ │ └── package-info.java │ │ │ └── package-info.java │ │ ├── products │ │ │ ├── PortfolioMonteCarloProduct.java │ │ │ └── package-info.java │ │ └── templatemethoddesign │ │ │ ├── LogNormalProcess.java │ │ │ ├── MonteCalorBlackScholesModelTemplateMethodDesign.png │ │ │ ├── assetderivativevaluation │ │ │ ├── MonteCarloBlackScholesModel2.java │ │ │ └── package-info.java │ │ │ └── package-info.java │ │ ├── optimizer │ │ ├── GoldenSectionSearch.java │ │ ├── LevenbergMarquardt.java │ │ ├── Optimizer.java │ │ ├── OptimizerFactory.java │ │ ├── OptimizerFactoryCMAES.java │ │ ├── OptimizerFactoryLevenbergMarquardt.java │ │ ├── SolverException.java │ │ ├── StochasticLevenbergMarquardt.java │ │ ├── StochasticLevenbergMarquardtAD.java │ │ ├── StochasticOptimizer.java │ │ ├── StochasticOptimizerFactory.java │ │ ├── StochasticOptimizerFactoryLevenbergMarquardt.java │ │ ├── StochasticOptimizerFactoryLevenbergMarquardtAD.java │ │ ├── StochasticOptimizerFactoryPathwiseLevenbergMarquardtAD.java │ │ ├── StochasticPathwiseLevenbergMarquardt.java │ │ ├── StochasticPathwiseLevenbergMarquardtAD.java │ │ ├── StochasticPathwiseOptimizerFactoryLevenbergMarquardt.java │ │ └── package-info.java │ │ ├── parser │ │ ├── CSVCurveParser.java │ │ ├── CSVSwaptionParser.java │ │ └── package-info.java │ │ ├── randomnumbers │ │ ├── AcceptanceRejectionRandomNumberGenerator.java │ │ ├── HaltonSequence.java │ │ ├── MersenneTwister.java │ │ ├── RandomNumberGenerator.java │ │ ├── RandomNumberGenerator1D.java │ │ ├── SobolSequence.java │ │ ├── SobolSequence1D.java │ │ ├── VanDerCorputSequence.java │ │ └── package-info.java │ │ ├── rootfinder │ │ ├── AbstractRootFinder.java │ │ ├── BisectionSearch.java │ │ ├── NewtonsMethod.java │ │ ├── RiddersMethod.java │ │ ├── RootFinder.java │ │ ├── RootFinderWithDerivative.java │ │ ├── SecantMethod.java │ │ ├── StochasticNewtonMethod.java │ │ ├── StochasticRootFinder.java │ │ ├── StochasticRootFinderUsingDerivative.java │ │ └── package-info.java │ │ ├── singleswaprate │ │ ├── Utils.java │ │ ├── annuitymapping │ │ │ ├── AnnuityMapping.java │ │ │ ├── AnnuityMappingFactory.java │ │ │ ├── BasicPiterbargAnnuityMapping.java │ │ │ ├── ConstantNormalizer.java │ │ │ ├── ExponentialNormalizer.java │ │ │ ├── MultiPiterbargAnnuityMapping.java │ │ │ ├── NormalizingFunction.java │ │ │ ├── SimplifiedLinearAnnuityMapping.java │ │ │ └── package-info.java │ │ ├── calibration │ │ │ ├── AbstractCubeCalibration.java │ │ │ ├── SABRCubeCalibration.java │ │ │ ├── SABRCubeParallelCalibration.java │ │ │ ├── SABRShiftedSmileCalibration.java │ │ │ ├── StaticCubeCalibration.java │ │ │ └── package-info.java │ │ ├── data │ │ │ ├── DataTable.java │ │ │ ├── DataTableBasic.java │ │ │ ├── DataTableExtrapolated.java │ │ │ ├── DataTableInterpolated.java │ │ │ ├── DataTableLight.java │ │ │ ├── DataTableLinear.java │ │ │ ├── ErrorEstimation.java │ │ │ └── package-info.java │ │ ├── model │ │ │ ├── AnalyticModelWithVolatilityCubes.java │ │ │ ├── VolatilityCubeModel.java │ │ │ ├── curves │ │ │ │ ├── ExponentialCorrelationCurve.java │ │ │ │ └── package-info.java │ │ │ ├── package-info.java │ │ │ └── volatilities │ │ │ │ ├── SABRVolatilityCube.java │ │ │ │ ├── SABRVolatilityCubeParallel.java │ │ │ │ ├── SABRVolatilityCubeParallelFactory.java │ │ │ │ ├── SABRVolatilityCubeSingleSmile.java │ │ │ │ ├── ScaledVolatilityCube.java │ │ │ │ ├── StaticVolatilityCube.java │ │ │ │ ├── VolVolCube.java │ │ │ │ ├── VolatilityCube.java │ │ │ │ ├── VolatilityCubeFactory.java │ │ │ │ └── package-info.java │ │ ├── package-info.java │ │ └── products │ │ │ ├── AbstractAnalyticVolatilityCubeProduct.java │ │ │ ├── AbstractSingleSwapRateProduct.java │ │ │ ├── AnalyticVolatilityCubeProduct.java │ │ │ ├── AnnuityDummyProduct.java │ │ │ ├── CashSettledPayerSwaption.java │ │ │ ├── CashSettledReceiverSwaption.java │ │ │ ├── ConstantMaturitySwap.java │ │ │ ├── NormalizingDummyProduct.java │ │ │ └── package-info.java │ │ ├── stochastic │ │ ├── ConditionalExpectationEstimator.java │ │ ├── RandomOperator.java │ │ ├── RandomVariable.java │ │ ├── RandomVariable.png │ │ ├── RandomVariable.svg │ │ ├── RandomVariable.ucls │ │ ├── RandomVariableAccumulator.java │ │ ├── RandomVariableArray.java │ │ ├── RandomVariableArrayImplementation.java │ │ ├── Scalar.java │ │ └── package-info.java │ │ ├── time │ │ ├── FloatingpointDate.java │ │ ├── Period.java │ │ ├── RegularSchedule.java │ │ ├── Schedule.java │ │ ├── ScheduleFromPeriods.java │ │ ├── ScheduleGenerator.java │ │ ├── ScheduleMetaData.java │ │ ├── SchedulePrototype.java │ │ ├── Tenor.java │ │ ├── TenorFromArray.java │ │ ├── TimeDiscretization.java │ │ ├── TimeDiscretizationFromArray.java │ │ ├── businessdaycalendar │ │ │ ├── AbstractBusinessdayCalendar.java │ │ │ ├── BusinessdayCalendar.java │ │ │ ├── BusinessdayCalendarAny.java │ │ │ ├── BusinessdayCalendarExcludingGivenHolidays.java │ │ │ ├── BusinessdayCalendarExcludingGivenSetOfHolidays.java │ │ │ ├── BusinessdayCalendarExcludingLONHolidays.java │ │ │ ├── BusinessdayCalendarExcludingNYCHolidays.java │ │ │ ├── BusinessdayCalendarExcludingTARGETHolidays.java │ │ │ ├── BusinessdayCalendarExcludingWeekends.java │ │ │ └── package-info.java │ │ ├── daycount │ │ │ ├── DayCountConvention.java │ │ │ ├── DayCountConventionFactory.java │ │ │ ├── DayCountConvention_30E_360.java │ │ │ ├── DayCountConvention_30E_360_ISDA.java │ │ │ ├── DayCountConvention_30U_360.java │ │ │ ├── DayCountConvention_ACT.java │ │ │ ├── DayCountConvention_ACT_360.java │ │ │ ├── DayCountConvention_ACT_365.java │ │ │ ├── DayCountConvention_ACT_365A.java │ │ │ ├── DayCountConvention_ACT_365L.java │ │ │ ├── DayCountConvention_ACT_ACT_AFB.java │ │ │ ├── DayCountConvention_ACT_ACT_ICMA.java │ │ │ ├── DayCountConvention_ACT_ACT_ISDA.java │ │ │ ├── DayCountConvention_ACT_ACT_YEARFRAC.java │ │ │ ├── DayCountConvention_NL_365.java │ │ │ ├── DayCountConvention_NONE.java │ │ │ ├── DayCountConvention_UNKNOWN.java │ │ │ └── package-info.java │ │ └── package-info.java │ │ ├── timeseries │ │ ├── HistoricalSimulationModel.java │ │ ├── MarketData.java │ │ ├── TimeSeries.java │ │ ├── TimeSeriesFromArray.java │ │ ├── TimeSeriesModelParametric.java │ │ ├── TimeSeriesView.java │ │ ├── models │ │ │ └── parametric │ │ │ │ ├── ARMAGARCH.java │ │ │ │ ├── DisplacedLognormal.java │ │ │ │ ├── DisplacedLognormalARMAGARCH.java │ │ │ │ ├── DisplacedLognormalGARCH.java │ │ │ │ ├── DisplacedLognormalGJRGARCH.java │ │ │ │ ├── GARCH.java │ │ │ │ ├── SimpleHistroricalSimulation.java │ │ │ │ └── package-info.java │ │ └── package-info.java │ │ └── util │ │ ├── FileUtilities.java │ │ └── package-info.java ├── javadoc │ ├── resources │ │ ├── background.gif │ │ ├── inherit.gif │ │ ├── tab.gif │ │ ├── titlebar.gif │ │ └── titlebar_end.gif │ └── stylesheet.css └── resources │ └── finmath-lib.properties ├── site ├── markdown │ ├── building.md │ ├── codingconventions.md │ ├── concepts │ │ ├── automatictrackingofmeasurability │ │ │ └── index.md │ │ ├── separationofproductandmodel │ │ │ ├── index.md │ │ │ ├── modelandproductdescriptors.md │ │ │ └── modelandproductinterfaces.md │ │ └── stochasticautomaticdifferentiation │ │ │ └── index.md │ ├── eclipseproject.md │ ├── gettingstarted.md │ ├── index.md.vm │ ├── maven.md │ ├── migration │ │ ├── 3.6.x-to-4.0.1.md │ │ └── 4.0.x-to-5.0.1.md │ └── releasenotes.md ├── resources │ ├── concepts │ │ └── separationofproductandmodel │ │ │ ├── modelandproductinterfaces.svg │ │ │ └── modelandproductinterfaces.ucls │ └── css │ │ └── site.css └── site.xml └── test ├── java └── net │ └── finmath │ ├── analytic │ └── model │ │ └── curves │ │ └── test │ │ ├── CalibrationTest.java │ │ └── TestCurvesFromLIBORModel.java │ ├── climate │ └── models │ │ └── dice │ │ └── DICEModelTest.java │ ├── convexityadjustment │ └── CMSOptionTest.java │ ├── equities │ ├── AffineDividendStreamTest.java │ ├── AnalyticOptionValuationTest.java │ ├── Black76ModelTest.java │ ├── PdeOptionPricerTest.java │ └── SviVolatiltitySurfaceTest.java │ ├── finitedifference │ ├── BlackScholesThetaTest.java │ └── ConstantElasticityOfVarianceThetaTest.java │ ├── fouriermethod │ ├── BlackScholesCallOptionTest.java │ ├── HestonModelCallOptionTest.java │ ├── MertonJumpDiffusionCallOptionTest.java │ ├── VarianceGammaCallOptionTest.java │ ├── calibration │ │ ├── HestonDaxCalibrationTest.java │ │ └── VarianceGammaDaxCalibrationTest.java │ └── products │ │ └── TestCarrMadan.java │ ├── functions │ ├── AnalyticFormulasTest.java │ ├── BachelierModelTest.java │ ├── BarrierOptionsTest.java │ ├── JarqueBeraTestTest.java │ ├── LinearAlgebraTest.java │ └── NormalDistributionTest.java │ ├── information │ └── LibraryTest.java │ ├── integration │ ├── MonteCarloIntegratorTest.java │ ├── PiecewiseContantDoubleUnaryOperatorTest.java │ ├── SimpsonRealIntegratorTest.java │ └── TrapezoidalRealIntegratorTest.java │ ├── interpolation │ └── BiLinearInterpolationTest.java │ ├── marketdata │ ├── model │ │ ├── bond │ │ │ ├── AccruedInterestTest.java │ │ │ └── BondValuationTest.java │ │ ├── cds │ │ │ └── CDSTest.java │ │ ├── curves │ │ │ ├── CalibrationMultiCurveTest.java │ │ │ ├── CalibrationTest.java │ │ │ ├── CurveTest.java │ │ │ ├── DiscountCurveNelsonSiegelSvenssonTest.java │ │ │ ├── DiscountCurveSerializationTest.java │ │ │ ├── ForwardCurveNelsonSiegelSvenssonTest.java │ │ │ ├── NelsonSiegelSvenssonBondCalibrationTest.java │ │ │ ├── NelsonSiegelSvenssonCalibrationTest.java │ │ │ └── locallinearregression │ │ │ │ └── CurveEstimationTest.java │ │ └── volatilities │ │ │ ├── CapletVolatilitiesParametricCalibrationTest.java │ │ │ ├── CapletVolatilitiesParametricTest.java │ │ │ └── CapletVolatilitiesTest.java │ └── products │ │ └── DepositTest.java │ ├── modelling │ ├── LIBORMarketModelHierarchyTest.java │ ├── descriptor │ │ ├── AssetBlackScholesModelDescriptorTest.java │ │ ├── HestonModelDescriptorTest.java │ │ ├── InterestRateSwapLegDescriptorTest.java │ │ ├── MertonModelDescriptorTest.java │ │ ├── VarianceGammaModelDescriptorTest.java │ │ └── xmlparser │ │ │ ├── FIPXMLParserTest.java │ │ │ └── FPMLParserTest.java │ └── productfactory │ │ └── ModelWithProductFactoryTest.java │ ├── montecarlo │ ├── BrownianMotionTest.java │ ├── GammaProcessTest.java │ ├── RandomVariableFromDoubleArrayTest.java │ ├── RandomVariableTest.java │ ├── VarianceGammaTest.java │ ├── assetderivativevaluation │ │ ├── BachelierModelMonteCarloValuationTest.java │ │ ├── BlackScholesMonteCarloValuationTest.java │ │ ├── DisplacedLognomalModelTest.java │ │ ├── HestonModelTest.java │ │ ├── InhomogenousBachelierModelMonteCarloValuationTest.java │ │ ├── MertonModelTest.java │ │ ├── MonteCarloBlackScholesModelAsianOptionSensitivitiesTest.java │ │ ├── MonteCarloBlackScholesModelBermudanDigitalOptionSensitivitiesGraphs.java │ │ ├── MonteCarloBlackScholesModelBermudanOptionSensitivitiesTest.java │ │ ├── MonteCarloBlackScholesModelDigitalOptionSensitivitiesTest.java │ │ ├── MonteCarloBlackScholesModelEuropeanOptionSensitivitiesTest.java │ │ ├── MonteCarloBlackScholesModelSensitivitiesTest.java │ │ ├── MonteCarloBlackScholesModelTest.java │ │ ├── VarianceGammaModelTest.java │ │ ├── models │ │ │ └── MultiAssetBlackScholesModelTest.java │ │ └── products │ │ │ ├── BlackScholesDeltaHedgedPortfolioTest.java │ │ │ ├── DeltaHedgedPortfolioWithAADTest.java │ │ │ ├── EuropeanOptionVegaPathwiseTest.java │ │ │ └── ForwardAgreementWithFundingRequirementTest.java │ ├── automaticdifferentiation │ │ ├── MonteCarloBlackScholesModelDigitalOptionAADRegressionSensitivitiesTest.java │ │ ├── RandomVariableDifferentiableArithmeticTest.java │ │ ├── RandomVariableDifferentiableTest.java │ │ ├── RandomVariableDifferentiableTypePriorityTest.java │ │ └── backward │ │ │ ├── RandomVariableDifferentiableAADPerformanceTest.java │ │ │ ├── RandomVariableDifferentiableAADTest.java │ │ │ └── alternative │ │ │ └── RandomVariableUniqueVariableTest.java │ ├── hybridassetinterestrate │ │ ├── CrossCurrencyLIBORMarketModelFromModelsTest.java │ │ └── HybridAssetLIBORModelMonteCarloSimulationFromModelsTest.java │ └── interestrate │ │ ├── CapValuationTest.java │ │ ├── FundingCapacityTest.java │ │ ├── HullWhiteModelCalibrationTest.java │ │ ├── HullWhiteModelTest.java │ │ ├── LIBORMarketModelCalibrationAADTest.java │ │ ├── LIBORMarketModelCalibrationSmileTest.java │ │ ├── LIBORMarketModelCalibrationTest.java │ │ ├── LIBORMarketModelInterpolationTest.java │ │ ├── LIBORMarketModelMultiCurveValuationTest.java │ │ ├── LIBORMarketModelNormalAADSensitivitiesTest.java │ │ ├── LIBORMarketModelValuationTest.java │ │ ├── LIBORMarketModelWithTenorRefinementCalibrationTest.java │ │ ├── modelplugins │ │ └── LIBORVolatilityModelFourParameterExponentialFormIntegratedTest.java │ │ └── products │ │ ├── InterestRateProductTest.java │ │ ├── SimpleCappedFlooredFloatingRateBondTest.java │ │ ├── SwapLegTest.java │ │ ├── SwaptionAnalyticApproximationTest.java │ │ ├── SwaptionNormalTest.java │ │ ├── components │ │ ├── ExposureTest.java │ │ └── FundingCapacityTest.java │ │ └── indices │ │ ├── LIBORIndexMultiCurveTest.java │ │ └── LIBORIndexTest.java │ ├── optimizer │ ├── LevenbergMarquardtTest.java │ ├── OptimizerFactoryTest.java │ ├── StochasticLevenbergMarquardtTest.java │ ├── StochasticLevenbergMarquardtTestInverse.java │ ├── StochasticPathwiseLevenbergMarquardtTest.java │ └── StochasticPathwiseLevenbergMarquardtTestInverse.java │ ├── randomnumbers │ ├── AcceptanceRejectionRandomNumberGeneratorTest.java │ └── HighEntropyRandomNumberGeneratorTest.java │ ├── rootfinder │ └── RootFindersTest.java │ ├── singleswaprate │ ├── annuitymapping │ │ ├── AnnuityMappingTest.java │ │ └── NormalizingFunctionTest.java │ ├── calibration │ │ ├── SABRCubeCalibrationTest.java │ │ ├── SABRCubeParallelCalibrationTest.java │ │ ├── SABRShiftedSmileCalibrationTest.java │ │ └── StaticCubeCalibrationTest.java │ ├── data │ │ └── DataTablesTest.java │ ├── model │ │ └── volatilities │ │ │ ├── SABRVolatilityCubeSharedParametersTest.java │ │ │ └── SABRVolatilityCubeTest.java │ └── products │ │ ├── AnnuityDummyTest.java │ │ ├── CashSettledSwaptionTest.java │ │ └── ConstantMaturitySwapTest.java │ ├── stochastic │ └── ScalarTest.java │ ├── time │ ├── DayCountConventionTest.java │ ├── FloatingpointDateTest.java │ ├── ScheduleGeneratorTest.java │ ├── TimeDiscretizationTest.java │ ├── businessdaycalendar │ │ └── BusinessdayCalendarTest.java │ └── daycount │ │ ├── DayCountConvention_30E_360Test.java │ │ └── DayCountConvention_30E_360_ISDATest.java │ └── util │ └── config │ └── ConfigTreeTest.java ├── java8 └── net │ └── finmath │ ├── analytic │ └── model │ │ └── curves │ │ └── test │ │ ├── CalibrationTest.java │ │ └── TestCurvesFromLIBORModel.java │ ├── convexityadjustment │ └── CMSOptionTest.java │ ├── finitedifference │ ├── BlackScholesThetaTest.java │ └── ConstantElasticityOfVarianceThetaTest.java │ ├── fouriermethod │ ├── BlackScholesCallOptionTest.java │ ├── HestonModelCallOptionTest.java │ ├── MertonJumpDiffusionCallOptionTest.java │ ├── VarianceGammaCallOptionTest.java │ ├── calibration │ │ ├── HestonDaxCalibrationTest.java │ │ └── VarianceGammaDaxCalibrationTest.java │ └── products │ │ └── TestCarrMadan.java │ ├── functions │ ├── AnalyticFormulasTest.java │ ├── BachelierModelTest.java │ ├── BarrierOptionsTest.java │ ├── JarqueBeraTestTest.java │ ├── LinearAlgebraTest.java │ └── NormalDistributionTest.java │ ├── information │ └── LibraryTest.java │ ├── integration │ ├── MonteCarloIntegratorTest.java │ ├── PiecewiseContantDoubleUnaryOperatorTest.java │ ├── SimpsonRealIntegratorTest.java │ └── TrapezoidalRealIntegratorTest.java │ ├── interpolation │ └── BiLinearInterpolationTest.java │ ├── marketdata │ ├── model │ │ ├── bond │ │ │ ├── AccruedInterestTest.java │ │ │ └── BondValuationTest.java │ │ ├── cds │ │ │ └── CDSTest.java │ │ ├── curves │ │ │ ├── CalibrationMultiCurveTest.java │ │ │ ├── CalibrationTest.java │ │ │ ├── CurveTest.java │ │ │ ├── DiscountCurveNelsonSiegelSvenssonTest.java │ │ │ ├── DiscountCurveSerializationTest.java │ │ │ ├── ForwardCurveNelsonSiegelSvenssonTest.java │ │ │ ├── NelsonSiegelSvenssonBondCalibrationTest.java │ │ │ ├── NelsonSiegelSvenssonCalibrationTest.java │ │ │ └── locallinearregression │ │ │ │ └── CurveEstimationTest.java │ │ └── volatilities │ │ │ ├── CapletVolatilitiesParametricCalibrationTest.java │ │ │ ├── CapletVolatilitiesParametricTest.java │ │ │ └── CapletVolatilitiesTest.java │ └── products │ │ └── DepositTest.java │ ├── modelling │ ├── LIBORMarketModelHierarchyTest.java │ ├── descriptor │ │ ├── AssetBlackScholesModelDescriptorTest.java │ │ ├── HestonModelDescriptorTest.java │ │ ├── InterestRateSwapLegDescriptorTest.java │ │ ├── MertonModelDescriptorTest.java │ │ ├── VarianceGammaModelDescriptorTest.java │ │ └── xmlparser │ │ │ ├── FIPXMLParserTest.java │ │ │ └── FPMLParserTest.java │ └── productfactory │ │ └── ModelWithProductFactoryTest.java │ ├── montecarlo │ ├── BrownianMotionTest.java │ ├── GammaProcessTest.java │ ├── RandomVariableTest.java │ ├── VarianceGammaTest.java │ ├── assetderivativevaluation │ │ ├── BachelierModelMonteCarloValuationTest.java │ │ ├── BlackScholesMonteCarloValuationTest.java │ │ ├── DisplacedLognomalModelTest.java │ │ ├── HestonModelTest.java │ │ ├── InhomogenousBachelierModelMonteCarloValuationTest.java │ │ ├── MertonModelTest.java │ │ ├── MonteCarloBlackScholesModelAsianOptionSensitivitiesTest.java │ │ ├── MonteCarloBlackScholesModelBermudanDigitalOptionSensitivitiesGraphs.java │ │ ├── MonteCarloBlackScholesModelBermudanOptionSensitivitiesTest.java │ │ ├── MonteCarloBlackScholesModelDigitalOptionSensitivitiesTest.java │ │ ├── MonteCarloBlackScholesModelEuropeanOptionSensitivitiesTest.java │ │ ├── MonteCarloBlackScholesModelSensitivitiesTest.java │ │ ├── MonteCarloBlackScholesModelTest.java │ │ ├── VarianceGammaModelTest.java │ │ └── products │ │ │ ├── BlackScholesDeltaHedgedPortfolioTest.java │ │ │ ├── DeltaHedgedPortfolioWithAADTest.java │ │ │ ├── EuropeanOptionVegaPathwiseTest.java │ │ │ └── ForwardAgreementWithFundingRequirementTest.java │ ├── automaticdifferentiation │ │ ├── MonteCarloBlackScholesModelDigitalOptionAADRegressionSensitivitiesTest.java │ │ ├── RandomVariableDifferentiableArithmeticTest.java │ │ ├── RandomVariableDifferentiableTest.java │ │ ├── RandomVariableDifferentiableTypePriorityTest.java │ │ └── backward │ │ │ ├── RandomVariableDifferentiableAADPerformanceTest.java │ │ │ ├── RandomVariableDifferentiableAADTest.java │ │ │ └── alternative │ │ │ └── RandomVariableUniqueVariableTest.java │ ├── hybridassetinterestrate │ │ ├── CrossCurrencyLIBORMarketModelFromModelsTest.java │ │ └── HybridAssetLIBORModelMonteCarloSimulationFromModelsTest.java │ └── interestrate │ │ ├── CapValuationTest.java │ │ ├── HullWhiteModelCalibrationTest.java │ │ ├── HullWhiteModelTest.java │ │ ├── LIBORMarketModelCalibrationAADTest.java │ │ ├── LIBORMarketModelCalibrationSmileTest.java │ │ ├── LIBORMarketModelCalibrationTest.java │ │ ├── LIBORMarketModelInterpolationTest.java │ │ ├── LIBORMarketModelMultiCurveValuationTest.java │ │ ├── LIBORMarketModelNormalAADSensitivitiesTest.java │ │ ├── LIBORMarketModelValuationTest.java │ │ ├── LIBORMarketModelWithTenorRefinementCalibrationTest.java │ │ ├── modelplugins │ │ └── LIBORVolatilityModelFourParameterExponentialFormIntegratedTest.java │ │ └── products │ │ ├── InterestRateProductTest.java │ │ ├── SimpleCappedFlooredFloatingRateBondTest.java │ │ ├── SwapLegTest.java │ │ ├── SwaptionAnalyticApproximationTest.java │ │ ├── SwaptionNormalTest.java │ │ ├── components │ │ ├── ExposureTest.java │ │ └── FundingCapacityTest.java │ │ └── indices │ │ ├── LIBORIndexMultiCurveTest.java │ │ └── LIBORIndexTest.java │ ├── optimizer │ ├── LevenbergMarquardtTest.java │ ├── OptimizerFactoryTest.java │ ├── StochasticLevenbergMarquardtTest.java │ ├── StochasticLevenbergMarquardtTestInverse.java │ ├── StochasticPathwiseLevenbergMarquardtTest.java │ └── StochasticPathwiseLevenbergMarquardtTestInverse.java │ ├── randomnumbers │ └── AcceptanceRejectionRandomNumberGeneratorTest.java │ ├── rootfinder │ └── RootFindersTest.java │ ├── singleswaprate │ ├── annuitymapping │ │ ├── AnnuityMappingTest.java │ │ └── NormalizingFunctionTest.java │ ├── calibration │ │ ├── SABRCubeCalibrationTest.java │ │ ├── SABRCubeParallelCalibrationTest.java │ │ ├── SABRShiftedSmileCalibrationTest.java │ │ └── StaticCubeCalibrationTest.java │ ├── data │ │ └── DataTablesTest.java │ ├── model │ │ └── volatilities │ │ │ ├── SABRVolatilityCubeSharedParametersTest.java │ │ │ └── SABRVolatilityCubeTest.java │ └── products │ │ ├── AnnuityDummyTest.java │ │ ├── CashSettledSwaptionTest.java │ │ └── ConstantMaturitySwapTest.java │ ├── stochastic │ └── ScalarTest.java │ └── time │ ├── DayCountConventionTest.java │ ├── FloatingpointDateTest.java │ ├── ScheduleGeneratorTest.java │ ├── TimeDiscretizationTest.java │ ├── businessdaycalendar │ └── BusinessdayCalendarTest.java │ └── daycount │ ├── DayCountConvention_30E_360Test.java │ └── DayCountConvention_30E_360_ISDATest.java └── resources ├── curves ├── EUR-EONIA.crv └── EUR-OIS6M.crv ├── net └── finmath │ └── modelling │ └── descriptor │ └── xmlparser │ ├── ird-ex01-vanilla-swap.xml │ ├── ird-ex03-compound-swap.xml │ ├── ird-ex07-ois-swap.xml │ ├── ird-ex08-fra.xml │ └── ird-ex09-euro-swaption-explicit.xml └── swaptions ├── CashPayerSwaptionPrice.sdl ├── CashReceiverSwaptionPrice.sdl └── PhysicalSwaptionPriceATM.sdl /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ### What is this PR for? 2 | *Replace this line by a few sentences describing the overall goals of the pull request's commits.* 3 | 4 | ### What type of PR is it? 5 | *Replace this line by any of { Bug Fix | Improvement | Feature | Documentation | Hot Fix | Refactoring }* 6 | 7 | ### Todos 8 | *Remove this line and add todos if necessary. Otherwise put N/A here.* 9 | * [ ] - Task 10 | 11 | ### What is the related issue? 12 | *Replace this line with a link to the corresponding issue (open an issue at github). Otherwise put N/A here.* 13 | 14 | ### How should this be tested? 15 | *Replace this line with an outline the steps to test the PR here. Are UnitTests sufficient?* 16 | 17 | ### Screenshots 18 | 19 | 20 | ### Questions: 21 | 22 | **Does the licenses files need update?** 23 | 24 | *Replace this line by either YES or NO. Add details if required.* 25 | 26 | **Are there breaking changes for older versions?** 27 | 28 | *Replace this line by either YES or NO. Add details if required.* 29 | 30 | **Does the change require additional documentation?** 31 | 32 | *Replace this line by either YES or NO. Add details if required.* 33 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: finmath lib 2 | 3 | on: [push] 4 | 5 | jobs: 6 | build: 7 | name: Java 17 build and unit testing 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@v2 11 | - name: Set up Java 12 | uses: actions/setup-java@v1 13 | with: 14 | java-version: 17 15 | - name: Build with Maven 16 | run: mvn -B package --file pom.xml 17 | -------------------------------------------------------------------------------- /.idea/checkstyle-idea.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/codeStyles/Project.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 21 | 22 | -------------------------------------------------------------------------------- /.idea/codeStyles/codeStyleConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | finmath lib 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | org.eclipse.m2e.core.maven2Builder 15 | 16 | 17 | 18 | 19 | 20 | org.eclipse.m2e.core.maven2Nature 21 | org.eclipse.jdt.core.javanature 22 | 23 | 24 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: java 2 | jdk: 3 | - oraclejdk11 4 | sudo: required 5 | dist: trusty 6 | env: 7 | - MVN_PROFILE=java-8 8 | - MVN_PROFILE=java-11 9 | script: "mvn checkstyle:check test -B -V -P ${MVN_PROFILE}" 10 | -------------------------------------------------------------------------------- /bnd.bnd: -------------------------------------------------------------------------------- 1 | -sources: false 2 | -dsannotations: * 3 | -metatype: * 4 | Bundle-SymbolicName: finmath-lib 5 | Export-Package: net.finmath.* 6 | Import-Package: org.jblas.*;resolution:=optional, * -------------------------------------------------------------------------------- /docs/Model and Product Interfaces.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/finmath/finmath-lib/b7a1cb5ef752057feca7c048cc700a8f52e9676c/docs/Model and Product Interfaces.xlsx -------------------------------------------------------------------------------- /docs/refactoring-3.6.x-to-4.0.0/Refactorings 3.6.x to 4.0.0.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/finmath/finmath-lib/b7a1cb5ef752057feca7c048cc700a8f52e9676c/docs/refactoring-3.6.x-to-4.0.0/Refactorings 3.6.x to 4.0.0.xlsx -------------------------------------------------------------------------------- /docs/refactoring-4.0.x-to-4.1.0/Refactorings 4.0.x to 4.1.0.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/finmath/finmath-lib/b7a1cb5ef752057feca7c048cc700a8f52e9676c/docs/refactoring-4.0.x-to-4.1.0/Refactorings 4.0.x to 4.1.0.xlsx -------------------------------------------------------------------------------- /docs/refactoring-4.1.x-to-5.0.0/Refactorings 4.1.x to 5.0.0.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/finmath/finmath-lib/b7a1cb5ef752057feca7c048cc700a8f52e9676c/docs/refactoring-4.1.x-to-5.0.0/Refactorings 4.1.x to 5.0.0.xlsx -------------------------------------------------------------------------------- /docs/refactoring-5.0.x-to-5.1.0/Refactorings 4.1.x to 5.1.0.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/finmath/finmath-lib/b7a1cb5ef752057feca7c048cc700a8f52e9676c/docs/refactoring-5.0.x-to-5.1.0/Refactorings 4.1.x to 5.1.0.xlsx -------------------------------------------------------------------------------- /docs/refactoring-5.1.x-to-6.0.x/Refactorings 4.1.x to 6.0.x.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/finmath/finmath-lib/b7a1cb5ef752057feca7c048cc700a8f52e9676c/docs/refactoring-5.1.x-to-6.0.x/Refactorings 4.1.x to 6.0.x.xlsx -------------------------------------------------------------------------------- /lib/LICENSE for commons-lang3-3.7/NOTICE.txt: -------------------------------------------------------------------------------- 1 | Apache Commons Lang 2 | Copyright 2001-2017 The Apache Software Foundation 3 | 4 | This product includes software developed at 5 | The Apache Software Foundation (http://www.apache.org/). 6 | 7 | This product includes software from the Spring Framework, 8 | under the Apache License 2.0 (see: StringUtils.containsWhitespace()) 9 | -------------------------------------------------------------------------------- /lib/LICENSE for commons-math3-3.6/NOTICE.txt: -------------------------------------------------------------------------------- 1 | Apache Commons Math 2 | Copyright 2001-2016 The Apache Software Foundation 3 | 4 | This product includes software developed at 5 | The Apache Software Foundation (http://www.apache.org/). 6 | 7 | This product includes software developed for Orekit by 8 | CS Systèmes d'Information (http://www.c-s.fr/) 9 | Copyright 2010-2012 CS Systèmes d'Information 10 | -------------------------------------------------------------------------------- /lib/commons-lang3-3.7.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/finmath/finmath-lib/b7a1cb5ef752057feca7c048cc700a8f52e9676c/lib/commons-lang3-3.7.jar -------------------------------------------------------------------------------- /lib/commons-math3-3.6.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/finmath/finmath-lib/b7a1cb5ef752057feca7c048cc700a8f52e9676c/lib/commons-math3-3.6.1.jar -------------------------------------------------------------------------------- /lib/jblas-1.2.4.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/finmath/finmath-lib/b7a1cb5ef752057feca7c048cc700a8f52e9676c/lib/jblas-1.2.4.jar -------------------------------------------------------------------------------- /maven-release-site.sh: -------------------------------------------------------------------------------- 1 | 2 | # deploy site (clover:instrument takes a long time) 3 | mvn compile clover:instrument -P java-8 -Dmaven.compiler.useIncrementalCompilation=false 4 | mvn install site site:stage site-deploy -Dmaven.compiler.useIncrementalCompilation=false 5 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/climate/models/AbatementModel.java: -------------------------------------------------------------------------------- 1 | package net.finmath.climate.models; 2 | 3 | import java.util.function.Function; 4 | 5 | import net.finmath.stochastic.RandomVariable; 6 | 7 | public interface AbatementModel extends Function { 8 | 9 | } -------------------------------------------------------------------------------- /src/main/java/net/finmath/climate/models/CarbonConcentration.java: -------------------------------------------------------------------------------- 1 | package net.finmath.climate.models; 2 | 3 | import net.finmath.stochastic.RandomVariable; 4 | 5 | public interface CarbonConcentration { 6 | 7 | RandomVariable getCarbonConcentrationInAtmosphere(); 8 | 9 | Double getExpectedCarbonConcentrationInAtmosphere(); 10 | 11 | } -------------------------------------------------------------------------------- /src/main/java/net/finmath/climate/models/SavingsRateModel.java: -------------------------------------------------------------------------------- 1 | package net.finmath.climate.models; 2 | 3 | import java.util.function.Function; 4 | 5 | import net.finmath.stochastic.RandomVariable; 6 | 7 | public interface SavingsRateModel extends Function { 8 | 9 | } -------------------------------------------------------------------------------- /src/main/java/net/finmath/climate/models/Temperature.java: -------------------------------------------------------------------------------- 1 | package net.finmath.climate.models; 2 | 3 | import net.finmath.stochastic.RandomVariable; 4 | 5 | public interface Temperature { 6 | 7 | RandomVariable getTemperatureOfAtmosphere(); 8 | 9 | Double getExpectedTemperatureOfAtmosphere(); 10 | 11 | } -------------------------------------------------------------------------------- /src/main/java/net/finmath/climate/models/dice/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Experiments related to the DICE model. 3 | * 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.climate.models.dice; 8 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/climate/models/dice/submodels/ForcingExternalFunction.java: -------------------------------------------------------------------------------- 1 | package net.finmath.climate.models.dice.submodels; 2 | 3 | import java.util.function.Function; 4 | 5 | /** 6 | * The function models the external forcing as a linear function capped at 1.0 7 | * 8 | * @author Maximilian Singhof 9 | */ 10 | public class ForcingExternalFunction implements Function { 11 | 12 | private final double intercept; 13 | private final double linear; 14 | 15 | public ForcingExternalFunction(double intercept, double linear) { 16 | this.intercept = intercept; 17 | this.linear = linear; 18 | } 19 | 20 | public ForcingExternalFunction() { 21 | // Parameters from original model 22 | this(0.5, 0.5/(5*17)); 23 | } 24 | 25 | @Override 26 | public Double apply(Double time) { 27 | return Math.min(intercept + linear*time,1.0); 28 | } 29 | } 30 | 31 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/climate/models/dice/submodels/ForcingFunction.java: -------------------------------------------------------------------------------- 1 | package net.finmath.climate.models.dice.submodels; 2 | 3 | import java.util.function.BiFunction; 4 | 5 | /** 6 | * The function that maps CarbonConcentration (in GtC) and external forcing (in W/m^2) to forcing (in W/m^2). 7 | * 8 | * @author Christian Fries 9 | */ 10 | public class ForcingFunction implements BiFunction { 11 | 12 | // Parameters of the orignal model 13 | private final double carbonConcentrationBase = 588; 14 | private final double forcingPerCarbonDoubling = 3.6813; 15 | 16 | @Override 17 | public Double apply(CarbonConcentration3DScalar carbonConcentration, Double forcingExternal) { 18 | return forcingPerCarbonDoubling * Math.log(carbonConcentration.getExpectedCarbonConcentrationInAtmosphere() / carbonConcentrationBase ) / Math.log(2) + forcingExternal; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/climate/models/dice/submodels/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Model components of the DICE model 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.climate.models.dice.submodels; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/climate/models/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Integrated Assessment Models. 3 | * 4 | * Our convention here is that all models return annualized quantities, if quantities are related to time periods. 5 | * So if X denotes an annualized quantity like the GDP and emission for the period \( (t_{i},t_{i+1}) \), then the total quantity is 6 | * \[ 7 | * X \cdot yearFraction(t_{i},t_{i+1}) 8 | * \] 9 | * 10 | * @author Christian Fries 11 | * @author Lennart Quante 12 | */ 13 | package net.finmath.climate.models; 14 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/concurrency/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides helper classes related to concurrent programming. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.concurrency; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/equities/marketdata/FlatYieldCurve.java: -------------------------------------------------------------------------------- 1 | package net.finmath.equities.marketdata; 2 | 3 | import java.time.LocalDate; 4 | import net.finmath.time.daycount.DayCountConvention; 5 | 6 | /** 7 | * Class to provide methods of a flat yield curve. 8 | * 9 | * @author Andreas Grotz 10 | */ 11 | 12 | public class FlatYieldCurve extends YieldCurve { 13 | 14 | private final static int longTime = 100; 15 | 16 | public FlatYieldCurve(final LocalDate curveDate, final double rate, final DayCountConvention dayCounter) { 17 | super("NONE", curveDate, dayCounter, new LocalDate[] { curveDate.plusYears(longTime) }, new double[] { 18 | Math.exp(-rate * dayCounter.getDaycountFraction(curveDate, curveDate.plusYears(longTime))) }); 19 | } 20 | 21 | public FlatYieldCurve rollToDate(LocalDate date) { 22 | assert date.isAfter(baseCurve.getReferenceDate()) : "can only roll to future dates"; 23 | return new FlatYieldCurve(date, getRate(baseCurve.getReferenceDate().plusYears(longTime)), dayCounter); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/equities/marketdata/VolatilityPoint.java: -------------------------------------------------------------------------------- 1 | package net.finmath.equities.marketdata; 2 | 3 | import java.time.LocalDate; 4 | 5 | /** 6 | * Class to store and handle volatility market quote. 7 | * 8 | * @author Andreas Grotz 9 | */ 10 | 11 | public class VolatilityPoint { 12 | 13 | private final LocalDate date; 14 | private final double strike; 15 | private final double volatility; 16 | 17 | public VolatilityPoint( 18 | final LocalDate date, 19 | final double strike, 20 | final double volatility) 21 | { 22 | this.date = date; 23 | this.strike = strike; 24 | this.volatility = volatility; 25 | } 26 | 27 | public LocalDate getDate() { 28 | return date; 29 | } 30 | 31 | public double getStrike() { 32 | return strike; 33 | } 34 | 35 | public double getVolatility() { 36 | return volatility; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/equities/marketdata/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes related to European and American equity options under local volatility and Buehler dividends. 3 | * 4 | * @author Andreas Grotz 5 | */ 6 | package net.finmath.equities.marketdata; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/equities/models/ShiftedVolatilitySurface.java: -------------------------------------------------------------------------------- 1 | package net.finmath.equities.models; 2 | 3 | /** 4 | * Interface for a shifted volatility surface (used in Vega calculations). 5 | * 6 | * @author Andreas Grotz 7 | */ 8 | 9 | public interface ShiftedVolatilitySurface extends VolatilitySurface { 10 | 11 | double getShift(); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/equities/models/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes related to European and American equity options under local volatility and Buehler dividends. 3 | * 4 | * @author Andreas Grotz 5 | */ 6 | package net.finmath.equities.models; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/equities/pricer/EquityValuationRequest.java: -------------------------------------------------------------------------------- 1 | package net.finmath.equities.pricer; 2 | 3 | import java.util.ArrayList; 4 | 5 | import net.finmath.equities.products.Option; 6 | 7 | /** 8 | * Class to store a pricing request handed to implementations of the IOptionPricer interface. 9 | * 10 | * @author Andreas Grotz 11 | */ 12 | 13 | public class EquityValuationRequest { 14 | 15 | enum CalculationRequestType 16 | { 17 | Price, 18 | EqDelta, 19 | EqGamma, 20 | EqVega, 21 | Theta, 22 | } 23 | 24 | private final Option option; 25 | private final ArrayList calcsRequested; 26 | 27 | public EquityValuationRequest(final Option option, final ArrayList calcsRequested) 28 | { 29 | this.option = option; 30 | this.calcsRequested = calcsRequested; 31 | } 32 | 33 | public Option getOption() { 34 | return option; 35 | } 36 | 37 | public ArrayList getCalcsRequested() { 38 | return calcsRequested; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/equities/pricer/EquityValuationResult.java: -------------------------------------------------------------------------------- 1 | package net.finmath.equities.pricer; 2 | 3 | import java.util.HashMap; 4 | 5 | import net.finmath.equities.pricer.EquityValuationRequest.CalculationRequestType; 6 | 7 | /** 8 | * Class to store a pricing result provided by implementations of the IOptionPricer interface. 9 | * 10 | * @author Andreas Grotz 11 | */ 12 | 13 | public class EquityValuationResult { 14 | 15 | private final EquityValuationRequest request; 16 | private final HashMap results; 17 | 18 | public EquityValuationResult( 19 | final EquityValuationRequest request, final HashMap results) 20 | { 21 | this.request = request; 22 | this.results = results; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/equities/pricer/OptionValuation.java: -------------------------------------------------------------------------------- 1 | package net.finmath.equities.pricer; 2 | 3 | import net.finmath.equities.marketdata.YieldCurve; 4 | import net.finmath.equities.models.EquityForwardStructure; 5 | import net.finmath.equities.models.VolatilitySurface; 6 | 7 | /** 8 | * Interface for option pricers that handle pricing requests. 9 | * Currently implemented are an analytic pricer and a PDE pricer for lognormal models with Buehler dividends. 10 | * 11 | * @author Andreas Grotz 12 | */ 13 | 14 | public interface OptionValuation extends Cloneable { 15 | 16 | EquityValuationResult calculate(EquityValuationRequest request, EquityForwardStructure forwardStructure, 17 | YieldCurve discountCurve, VolatilitySurface volSurface); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/equities/pricer/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes related to European and American equity options under local volatility and Buehler dividends. 3 | * 4 | * @author Andreas Grotz 5 | */ 6 | package net.finmath.equities.pricer; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/equities/products/AmericanOption.java: -------------------------------------------------------------------------------- 1 | package net.finmath.equities.products; 2 | 3 | import java.time.LocalDate; 4 | 5 | /** 6 | * Class for American options. 7 | * 8 | * @author Andreas Grotz 9 | */ 10 | 11 | public class AmericanOption extends AbstractOption { 12 | 13 | public AmericanOption(LocalDate expiryDate, double strike, boolean isCallOption) { 14 | super(expiryDate, strike, isCallOption); 15 | } 16 | 17 | @Override 18 | public boolean isAmericanOption() { 19 | return true; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/equities/products/EuropeanOption.java: -------------------------------------------------------------------------------- 1 | package net.finmath.equities.products; 2 | 3 | import java.time.LocalDate; 4 | 5 | /** 6 | * Class for European options. 7 | * 8 | * @author Andreas Grotz 9 | */ 10 | 11 | public class EuropeanOption extends AbstractOption { 12 | 13 | public EuropeanOption(LocalDate expiryDate, double strike, boolean isCallOption) { 14 | super(expiryDate, strike, isCallOption); 15 | } 16 | 17 | @Override 18 | public boolean isAmericanOption() { 19 | return false; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/equities/products/Option.java: -------------------------------------------------------------------------------- 1 | package net.finmath.equities.products; 2 | 3 | import java.time.LocalDate; 4 | 5 | /** 6 | * Interface to handle American and European options. 7 | * 8 | * @author Andreas Grotz 9 | */ 10 | 11 | public interface Option extends Cloneable { 12 | 13 | double getStrike(); 14 | 15 | LocalDate getExpiryDate(); 16 | 17 | boolean isCallOption(); 18 | 19 | boolean isAmericanOption(); 20 | 21 | double callPutFactor(); 22 | 23 | double getPayoff(double spot); 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/equities/products/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes related to European and American equity options under local volatility and Buehler dividends. 3 | * 4 | * @author Andreas Grotz 5 | */ 6 | package net.finmath.equities.products; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/exception/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes related to exception handling. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.exception; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/finitedifference/experimental/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Algorithms using finite differences methods. PDE solvers. Representation of models and products for finite difference methods. 3 | * 4 | * The package contains experimental code. Usage, API, interfaces are likely to change in future version. 5 | * 6 | * @author Christian Fries 7 | * @author Jörg Kienitz 8 | * @author Dr Ralph Rudd 9 | */ 10 | package net.finmath.finitedifference.experimental; 11 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/finitedifference/models/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Models provided for finite difference solvers. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.finitedifference.models; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/finitedifference/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Algorithms using finite differences methods. PDE solvers. Representation of models and products for finite difference methods. 3 | * 4 | * @author Christian Fries 5 | * @author Jörg Kienitz 6 | * @author Ralph Rudd 7 | */ 8 | package net.finmath.finitedifference; 9 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/finitedifference/products/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Product valuation code for models using backward propagation. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.finitedifference.products; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/finitedifference/solvers/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Finite difference solvers 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.finitedifference.solvers; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/fouriermethod/CharacteristicFunction.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 23.03.2014 5 | */ 6 | 7 | package net.finmath.fouriermethod; 8 | 9 | import java.util.function.Function; 10 | 11 | import org.apache.commons.math3.complex.Complex; 12 | 13 | /** 14 | * Interface which has to be implemented by characteristic functions of 15 | * random variables, e.g., Fourier transforms of values (payoffs). 16 | * 17 | * This is a functional interface. 18 | * 19 | * @author Christian Fries 20 | * @version 1.0 21 | */ 22 | @FunctionalInterface 23 | public interface CharacteristicFunction extends Function { 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/fouriermethod/calibration/Constraint.java: -------------------------------------------------------------------------------- 1 | package net.finmath.fouriermethod.calibration; 2 | 3 | /** 4 | * Constraint base interface (scalar and multivariate) 5 | * 6 | * @author Alessandro Gnoatto 7 | * 8 | */ 9 | public interface Constraint { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/fouriermethod/calibration/Constraints.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/finmath/finmath-lib/b7a1cb5ef752057feca7c048cc700a8f52e9676c/src/main/java/net/finmath/fouriermethod/calibration/Constraints.png -------------------------------------------------------------------------------- /src/main/java/net/finmath/fouriermethod/calibration/NegativityConstraint.java: -------------------------------------------------------------------------------- 1 | package net.finmath.fouriermethod.calibration; 2 | 3 | /** 4 | * Negativity constraint for calibration parameters. 5 | * 6 | * @author Alessandro Gnoatto 7 | * 8 | */ 9 | public class NegativityConstraint extends BoundConstraint { 10 | 11 | public NegativityConstraint() { 12 | super(Double.NEGATIVE_INFINITY, 0.0); 13 | } 14 | 15 | @Override 16 | public double apply(final double parameterToTest) { 17 | return -Math.abs(parameterToTest); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/fouriermethod/calibration/ParameterInformation.java: -------------------------------------------------------------------------------- 1 | package net.finmath.fouriermethod.calibration; 2 | 3 | /** 4 | * A generic interface for scalar or multivariate parameters. 5 | * 6 | * @author Alessandro Gnoatto 7 | * 8 | */ 9 | public interface ParameterInformation { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/fouriermethod/calibration/PositivityConstraint.java: -------------------------------------------------------------------------------- 1 | package net.finmath.fouriermethod.calibration; 2 | 3 | /** 4 | * Positivity constraint for calibration parameters 5 | * @author Alessandro Gnoatto 6 | * 7 | */ 8 | public class PositivityConstraint extends BoundConstraint { 9 | 10 | public PositivityConstraint() { 11 | super(0.0, Double.POSITIVE_INFINITY); 12 | } 13 | 14 | @Override 15 | public double apply(final double parameterToTest) { 16 | return Math.abs(parameterToTest); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/fouriermethod/calibration/ScalarConstraint.java: -------------------------------------------------------------------------------- 1 | package net.finmath.fouriermethod.calibration; 2 | 3 | /** 4 | * Base interface for scalar parameter constraints. 5 | * 6 | * @author Alessandro Gnoatto 7 | * 8 | */ 9 | public interface ScalarConstraint extends Constraint{ 10 | 11 | /** 12 | * Forces the parameter to respect a certain condition. 13 | * 14 | * @param parameterToTest The value to which the constraint should be applied. 15 | * @return the parameter after application of the constraint. 16 | */ 17 | double apply(double parameterToTest); 18 | 19 | /** 20 | * Returns the lower bound, possibly given by Double.NEGATIVE_INFINITY. 21 | * @return the lower bound. 22 | */ 23 | double getLowerBound(); 24 | 25 | /** 26 | * Returns the upper bound, possibly given by Double.POSITIVE_INFINITY. 27 | * @return the upper bound. 28 | */ 29 | double getUpperBound(); 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/fouriermethod/calibration/ScalarParameterInformation.java: -------------------------------------------------------------------------------- 1 | package net.finmath.fouriermethod.calibration; 2 | 3 | /** 4 | * An interface representing a scalar parameter. 5 | * 6 | * @author Alessandro Gnoatto 7 | */ 8 | public interface ScalarParameterInformation extends ParameterInformation{ 9 | 10 | /** 11 | * Boolean flag for parameters that need to be calibrated. 12 | * 13 | * @return true if the parameter must be calibrated. 14 | */ 15 | boolean getIsParameterToCalibrate(); 16 | 17 | /** 18 | * Returns the constraint. 19 | * 20 | * @return the constraint. 21 | */ 22 | ScalarConstraint getConstraint(); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/fouriermethod/calibration/Unconstrained.java: -------------------------------------------------------------------------------- 1 | package net.finmath.fouriermethod.calibration; 2 | 3 | /** 4 | * Absence of constraints. 5 | * 6 | * @author Alessandro Gnoatto 7 | * 8 | */ 9 | public class Unconstrained extends BoundConstraint{ 10 | 11 | public Unconstrained() { 12 | super(Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY); 13 | } 14 | 15 | @Override 16 | public double apply(final double parameterToTest) { 17 | return parameterToTest; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/fouriermethod/calibration/models/CalibrationDiagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/finmath/finmath-lib/b7a1cb5ef752057feca7c048cc700a8f52e9676c/src/main/java/net/finmath/fouriermethod/calibration/models/CalibrationDiagram.png -------------------------------------------------------------------------------- /src/main/java/net/finmath/fouriermethod/calibration/models/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Classes related to the calibration of fourier models. 3 | * 4 | * @author Alessandro Gnoatto 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.fouriermethod.calibration.models; 8 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/fouriermethod/calibration/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Classes related to the calibration of Fourier models. 3 | * 4 | * @author Alessandro Gnoatto 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.fouriermethod.calibration; 8 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/fouriermethod/models/CharacteristicFunctionModel.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 24.03.2014 5 | */ 6 | 7 | package net.finmath.fouriermethod.models; 8 | 9 | import net.finmath.fouriermethod.CharacteristicFunction; 10 | import net.finmath.modelling.Model; 11 | 12 | /** 13 | * Interface which has to be implemented by models providing the 14 | * characteristic functions of stochastic processes. 15 | * 16 | * @author Christian Fries 17 | * @version 1.0 18 | */ 19 | @FunctionalInterface 20 | public interface CharacteristicFunctionModel extends Model { 21 | 22 | /** 23 | * Returns the characteristic function of X(t), where X is this stochastic process. 24 | * 25 | * @param time The time at which the stochastic process is observed. 26 | * @return The characteristic function of X(t). 27 | */ 28 | CharacteristicFunction apply(double time); 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/fouriermethod/models/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides characteristic functions of stochastic processes (models). 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.fouriermethod.models; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/fouriermethod/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides algorithms related to derivative valuation via 3 | * a models characteristic functions and Fourier transforms of a products payoffs. 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.fouriermethod; 8 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/fouriermethod/products/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides characteristic functions of payoffs / values (products) and their numerical integration against a given model (valuation). 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.fouriermethod.products; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/fouriermethod/products/smile/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Products which are provide a "smile function" \( K \mapsto V(K) \) mapping a product strike to 3 | * the corresponding product value. 4 | * 5 | * @author Alessandro Gnoatto 6 | * @author Christian Fries 7 | */ 8 | package net.finmath.fouriermethod.products.smile; 9 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/functions/DoubleTernaryOperator.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Created on 07.02.2014. 3 | * 4 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 5 | */ 6 | package net.finmath.functions; 7 | 8 | /** 9 | * Functional interface for functions mapping (double,double,double) to double. 10 | * 11 | * @author Christian Fries 12 | * @see java.util.function.DoubleUnaryOperator 13 | * @version 1.0 14 | */ 15 | @FunctionalInterface 16 | public interface DoubleTernaryOperator { 17 | /** 18 | * Applies this operator to the given operands. 19 | * 20 | * @param x the first operand 21 | * @param y the second operand 22 | * @param z the third operand 23 | * @return the operator result 24 | */ 25 | double applyAsDouble(double x, double y, double z); 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/functions/GammaDistribution.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 29.06.2014 5 | */ 6 | 7 | package net.finmath.functions; 8 | 9 | /** 10 | * @author Christian Fries 11 | * @version 1.0 12 | */ 13 | public class GammaDistribution { 14 | 15 | private final org.apache.commons.math3.distribution.GammaDistribution gammaDistribution; 16 | 17 | public GammaDistribution(final double shape, final double scale) { 18 | super(); 19 | gammaDistribution = new org.apache.commons.math3.distribution.GammaDistribution(shape, scale); 20 | } 21 | 22 | /** 23 | * Return the inverse cumulative distribution function at x. 24 | * 25 | * @param x Argument 26 | * @return Inverse cumulative distribution function at x. 27 | */ 28 | public double inverseCumulativeDistribution(final double x) { 29 | return gammaDistribution.inverseCumulativeProbability(x); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/functions/PoissonDistribution.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 29.06.2014 5 | */ 6 | 7 | package net.finmath.functions; 8 | 9 | /** 10 | * @author Christian Fries 11 | * @version 1.0 12 | */ 13 | public class PoissonDistribution { 14 | private final double lambda; 15 | 16 | public PoissonDistribution(final double lambda) { 17 | super(); 18 | this.lambda = lambda; 19 | } 20 | 21 | /** 22 | * Return the inverse cumulative distribution function at x. 23 | * 24 | * @param x Argument 25 | * @return Inverse cumulative distribution function at x. 26 | */ 27 | public double inverseCumulativeDistribution(final double x) { 28 | double p = Math.exp(-lambda); 29 | double dp = p; 30 | int k = 0; 31 | while(x > p) { 32 | k++; 33 | dp *= lambda / k; 34 | p += dp; 35 | } 36 | return k; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/functions/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides some static functions, e.g., analytic valuation formulas or functions from linear algebra. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.functions; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/information/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides information about the library (e.g. the version and build number) and runtime. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.information; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/integration/RealIntegral.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 23.03.2014 5 | */ 6 | 7 | package net.finmath.integration; 8 | 9 | import java.util.function.DoubleUnaryOperator; 10 | 11 | /** 12 | * Interface for real integral. An integral is a map which 13 | * maps a DoubleUnaryOperator to a double. 14 | * 15 | * This is a functional interface. 16 | * 17 | * @author Christian Fries 18 | * @version 1.0 19 | */ 20 | @FunctionalInterface 21 | public interface RealIntegral { 22 | 23 | double integrate(DoubleUnaryOperator integrand); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/integration/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides algorithms for numerical integration and wrappers to libraries with algorithms for numerical integration. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.integration; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/interpolation/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Basic methodologies to interpolate of curves and surfaces are provided here. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.interpolation; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/marketdata/calibration/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes to create a calibrated model of curves from a collection of calibration 3 | * products and corresponding target values. 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.marketdata.calibration; 8 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/marketdata/model/bond/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes related to the modeling of Bond curves. 3 | * See Beier/Fries (2017). 4 | * 5 | * @author Christian Fries 6 | * @author Moritz Scherrmann 7 | */ 8 | package net.finmath.marketdata.model.bond; 9 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/marketdata/model/cds/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes related to the valuations of CDS. 3 | * 4 | * @author Christian Fries 5 | * @author Matthias Föhr 6 | */ 7 | package net.finmath.marketdata.model.cds; 8 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/marketdata/model/curves/locallinearregression/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provided classes implementing the local linear regression method, see see https://ssrn.com/abstract=3073942 3 | * 4 | * @author Christian Fries 5 | * @author Moritz Scherrmann 6 | */ 7 | package net.finmath.marketdata.model.curves.locallinearregression; 8 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/marketdata/model/curves/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides interface specification and implementation of curves, e.g., interest rate 3 | * curves like discount curves and forward curves. 4 | * 5 | * Curves are mappings t → f(t), usually given by a discrete set of points and an interpolation 6 | * and extrapolation methods. 7 | * 8 | * @author Christian Fries 9 | */ 10 | package net.finmath.marketdata.model.curves; 11 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/marketdata/model/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides interface specification and implementation of a model, which is essentially 3 | * a collection of curves. A model exposes the parameters of its elements (curves) 4 | * as a single parameter an can be calibrated using a generic solver. 5 | * 6 | * @author Christian Fries 7 | */ 8 | package net.finmath.marketdata.model; 9 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/marketdata/model/volatilities/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides interface specification and implementation of volatility surfaces, e.g., 3 | * interest rate volatility surfaces like (implied) caplet volatilities and swaption 4 | * volatilities. 5 | * Volatility surfaces are mappings (t,K) → f(t,K), usually given by a discrete 6 | * set of points and an interpolation and extrapolation method or a functional form 7 | * (like the SABR model). 8 | * 9 | * 10 | * @author Christian Fries 11 | */ 12 | package net.finmath.marketdata.model.volatilities; 13 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/marketdata/model/volatility/caplet/CapTenorStructure.java: -------------------------------------------------------------------------------- 1 | package net.finmath.marketdata.model.volatility.caplet; 2 | 3 | /** 4 | * Enum determining the currency of the observed cap or caplet prices. 5 | */ 6 | public enum CapTenorStructure { 7 | EUR, 8 | USD 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/marketdata/model/volatility/caplet/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Algorithms related to bootstrapping and interpolation of caplet implied volatilities. 3 | * 4 | * @TODO The code in this package is still under development and needs some polishing. 5 | */ 6 | package net.finmath.marketdata.model.volatility.caplet; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/marketdata/model/volatility/caplet/smile/SmileInterpolationExtrapolationMethod.java: -------------------------------------------------------------------------------- 1 | package net.finmath.marketdata.model.volatility.caplet.smile; 2 | 3 | /** 4 | * Interface for a Smile inter and extrapolation. 5 | */ 6 | public interface SmileInterpolationExtrapolationMethod { 7 | 8 | double calculateInterpolatedExtrapolatedSmileVolatility(double strike, int rowIndex); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/marketdata/model/volatility/caplet/smile/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Algorithms related to caplet smile interpolation. 3 | */ 4 | package net.finmath.marketdata.model.volatility.caplet.smile; 5 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/marketdata/model/volatility/caplet/tenorconversion/CorrelationProvider.java: -------------------------------------------------------------------------------- 1 | package net.finmath.marketdata.model.volatility.caplet.tenorconversion; 2 | 3 | import net.finmath.exception.CalculationException; 4 | import net.finmath.marketdata.model.AnalyticModel; 5 | 6 | /** 7 | * Interface for a correlation provider for forward curves. 8 | */ 9 | public interface CorrelationProvider { 10 | double getCorrelation(int newTenor, double firstForwardFixingTimeVectorInYears, double secondForwardFixingTimeVectorInYears, AnalyticModel analyticModel, String indexForDiscount) throws CalculationException; 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/marketdata/model/volatility/caplet/tenorconversion/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Algorithms related to caplet tenor conversion. 3 | */ 4 | package net.finmath.marketdata.model.volatility.caplet.tenorconversion; 5 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/marketdata/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Algorithms and methodologies related to market data, e.g., calibration of interest rate curves, interpolation of volatility surfaces. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.marketdata; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/marketdata/products/AbstractAnalyticProduct.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 12.10.2013 5 | */ 6 | 7 | package net.finmath.marketdata.products; 8 | 9 | import net.finmath.marketdata.model.AnalyticModel; 10 | import net.finmath.modelling.Model; 11 | 12 | /** 13 | * @author Christian Fries 14 | * @version 1.0 15 | */ 16 | public abstract class AbstractAnalyticProduct implements AnalyticProduct { 17 | 18 | /* (non-Javadoc) 19 | * @see net.finmath.marketdata.products.ProductInterface#getValue(double, net.finmath.marketdata.products.ModelInterface) 20 | */ 21 | @Override 22 | public Object getValue(final double evaluationTime, final Model model) { 23 | throw new IllegalArgumentException("The product " + this.getClass() 24 | + " cannot be valued against a model " + model.getClass() + "." 25 | + "It requires a model of type " + AnalyticModel.class + "."); 26 | } 27 | 28 | public double getValue(final AnalyticModel model) { 29 | return getValue(0.0, model); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/marketdata/products/AnalyticProduct.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 26.11.2012 5 | */ 6 | package net.finmath.marketdata.products; 7 | 8 | import net.finmath.marketdata.model.AnalyticModel; 9 | import net.finmath.modelling.Product; 10 | 11 | /** 12 | * The interface which has to be implemented by a product which may 13 | * be evaluated using an AnalyticModelFromCurvesAndVols. 14 | * 15 | * @author Christian Fries 16 | * @version 1.0 17 | */ 18 | public interface AnalyticProduct extends Product { 19 | 20 | /** 21 | * Return the valuation of the product using the given model. 22 | * The model has to implement the modes of AnalyticModel. 23 | * 24 | * @param evaluationTime The evaluation time as double. Cash flows prior and including this time are not considered. 25 | * @param model The model under which the product is valued. 26 | * @return The value of the product using the given model. 27 | */ 28 | double getValue(double evaluationTime, AnalyticModel model); 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/marketdata/products/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides interface specification and implementation of products, e.g., calibration products. 3 | * Products can be valued using the model (which provides valuation curves). 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.marketdata.products; 8 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/marketdata2/calibration/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes to create a calibrated model of curves from a collection of calibration 3 | * products and corresponding target values. 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.marketdata2.calibration; 8 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/marketdata2/interpolation/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Basic methodologies to interpolate of curves and surfaces are provided here. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.marketdata2.interpolation; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/marketdata2/model/curves/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides interface specification and implementation of curves, e.g., interest rate 3 | * curves like discount curves and forward curves. 4 | * 5 | * Curves are mappings t → f(t), usually given by a discrete set of points and an interpolation 6 | * and extrapolation methods. 7 | * 8 | * @author Christian Fries 9 | */ 10 | package net.finmath.marketdata2.model.curves; 11 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/marketdata2/model/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides interface specification and implementation of a model, which is essentially 3 | * a collection of curves. A model exposes the parameters of its elements (curves) 4 | * as a single parameter an can be calibrated using a generic solver. 5 | * 6 | * @author Christian Fries 7 | */ 8 | package net.finmath.marketdata2.model; 9 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/marketdata2/model/volatilities/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides interface specification and implementation of volatility surfaces, e.g., 3 | * interest rate volatility surfaces like (implied) caplet volatilities and swaption 4 | * volatilities. 5 | * Volatility surfaces are mappings (t,K) → f(t,K), usually given by a discrete 6 | * set of points and an interpolation and extrapolation method or a functional form 7 | * (like the SABR model). 8 | * 9 | * 10 | * @author Christian Fries 11 | */ 12 | package net.finmath.marketdata2.model.volatilities; 13 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/marketdata2/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Algorithms and methodologies related to market data, e.g., calibration of interest rate curves, interpolation of volatility surfaces. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.marketdata2; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/marketdata2/products/AbstractAnalyticProduct.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 12.10.2013 5 | */ 6 | 7 | package net.finmath.marketdata2.products; 8 | 9 | import net.finmath.marketdata2.model.AnalyticModel; 10 | import net.finmath.modelling.Model; 11 | import net.finmath.stochastic.RandomVariable; 12 | 13 | /** 14 | * @author Christian Fries 15 | * 16 | * @version 1.0 17 | */ 18 | public abstract class AbstractAnalyticProduct implements AnalyticProduct { 19 | 20 | /* (non-Javadoc) 21 | * @see net.finmath.marketdata.products.ProductInterface#getValue(double, net.finmath.marketdata.products.ModelInterface) 22 | */ 23 | @Override 24 | public Object getValue(final double evaluationTime, final Model model) { 25 | throw new IllegalArgumentException("The product " + this.getClass() 26 | + " cannot be valued against a model " + model.getClass() + "." 27 | + "It requires a model of type " + AnalyticModel.class + "."); 28 | } 29 | 30 | public RandomVariable getValue(final AnalyticModel model) { 31 | return getValue(0.0, model); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/marketdata2/products/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides interface specification and implementation of products, e.g., calibration products. 3 | * Products can be valued using the model (which provides valuation curves). 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.marketdata2.products; 8 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/modelling/DescribedModel.java: -------------------------------------------------------------------------------- 1 | package net.finmath.modelling; 2 | 3 | /** 4 | * Interface for models which can provide a complete description of their model parameters (independent of the implementation of the numerical method). 5 | * 6 | * @author Christian Fries 7 | * 8 | * @param An interface extending the ModelDescriptor interface, being rich enough to describe the model implementing this interface. 9 | * @version 1.0 10 | */ 11 | public interface DescribedModel extends Model { 12 | 13 | /** 14 | * Return a model descriptor representing this model. 15 | * 16 | * @return The model descriptor of this model. 17 | */ 18 | M getDescriptor(); 19 | 20 | /** 21 | * Construct a product from a product descriptor, which may be valued by this model. 22 | * 23 | * @param productDescriptor Given product descriptor. 24 | * @return An instance of a product implementation. 25 | */ 26 | DescribedProduct getProductFromDescriptor(ProductDescriptor productDescriptor); 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/modelling/DescribedProduct.java: -------------------------------------------------------------------------------- 1 | package net.finmath.modelling; 2 | 3 | /** 4 | * Interface for products which can provide a complete description of themself, i.e. the model parameters (independent of the implementation of the numerical method). 5 | * 6 | * @author Christian Fries 7 | * 8 | * @param An interface extending the ProductDescriptor interface, being rich enough to describe the product implementing this interface. 9 | * @version 1.0 10 | */ 11 | public interface DescribedProduct extends Product { 12 | 13 | /** 14 | * Return a product descriptor representing this product. 15 | * 16 | * @return The product descriptor of this product. 17 | */ 18 | T getDescriptor(); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/modelling/InterestRateProductDescriptor.java: -------------------------------------------------------------------------------- 1 | package net.finmath.modelling; 2 | 3 | /** 4 | * Marker interface for interest rate product descriptors. 5 | * 6 | * @author Christian Fries 7 | * @author Roland Bachl 8 | * @version 1.0 9 | */ 10 | public interface InterestRateProductDescriptor extends ProductDescriptor { 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/modelling/Model.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 11.10.2013 5 | */ 6 | 7 | package net.finmath.modelling; 8 | 9 | /** 10 | * Interface to be implemented by all model. 11 | * Used in specification of the Product. 12 | * For a description of the general concept see http://finmath.net/finmath-lib/concepts/separationofproductandmodel. 13 | * 14 | * @author Christian Fries 15 | * @version 1.0 16 | */ 17 | public interface Model { 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/modelling/ModelDescriptor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 09.02.2018 5 | */ 6 | 7 | package net.finmath.modelling; 8 | 9 | /** 10 | * Interface for a model descriptor. 11 | * For a description of the general concept see http://finmath.net/finmath-lib/concepts/separationofproductandmodel. 12 | * 13 | * @author Christian Fries 14 | * @version 1.0 15 | */ 16 | public interface ModelDescriptor { 17 | 18 | /** 19 | * Return the version of the model description. 20 | * 21 | * @return Version number. 22 | */ 23 | Integer version(); 24 | 25 | /** 26 | * Return the name of the model represented by this descriptor. 27 | * 28 | * @return Name of the model. 29 | */ 30 | String name(); 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/modelling/ModelFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 09.02.2018 5 | */ 6 | 7 | package net.finmath.modelling; 8 | 9 | /** 10 | * A factory to instantiate a model from a given descriptor. 11 | * 12 | * Factories are specific to a numerical method. 13 | * 14 | * @author Christian Fries 15 | * @author Luca Del Re 16 | * 17 | * @param An interface extending model descriptor given the descriptor describing the class impelmenting this interface. 18 | * @version 1.0 19 | */ 20 | public interface ModelFactory { 21 | 22 | /** 23 | * Get the model for the given descriptor. 24 | * 25 | * @param descriptor An object being able to describe the given model. 26 | * @return The model. 27 | */ 28 | DescribedModel getModelFromDescriptor(T descriptor); 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/modelling/ProductDescriptor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 09.02.2018 5 | */ 6 | 7 | package net.finmath.modelling; 8 | 9 | /** 10 | * Interface for a product descriptor. 11 | * For a description of the general concept see http://finmath.net/finmath-lib/concepts/separationofproductandmodel. 12 | * 13 | * @author Christian Fries 14 | * @version 1.0 15 | */ 16 | public interface ProductDescriptor { 17 | 18 | /** 19 | * Return the version of the model description. 20 | * 21 | * @return Version number. 22 | */ 23 | Integer version(); 24 | 25 | /** 26 | * Return the name of the model represented by this descriptor. 27 | * 28 | * @return Name of the model. 29 | */ 30 | String name(); 31 | 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/modelling/ProductFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 09.02.2018 5 | */ 6 | 7 | package net.finmath.modelling; 8 | 9 | /** 10 | * 11 | * @author Christian Fries 12 | * @author Luca Del Re 13 | * 14 | * @param

The base class of the product descriptors which can be handled by this ProductFactory. 15 | * @version 1.0 16 | */ 17 | public interface ProductFactory

{ 18 | 19 | /** 20 | * Constructs the product from a given product descriptor. 21 | * 22 | * @param descriptor A product descriptor. 23 | * @return An instance of the product describable by this descriptor. 24 | */ 25 | DescribedProduct getProductFromDescriptor(ProductDescriptor descriptor); 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/modelling/SingleAssetProductDescriptor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 09.02.2018 5 | */ 6 | 7 | package net.finmath.modelling; 8 | 9 | /** 10 | * Interface for a product descriptor. 11 | * For a description of the general concept see http://finmath.net/finmath-lib/concepts/separationofproductandmodel. 12 | * 13 | * @author Christian Fries 14 | * @version 1.0 15 | */ 16 | public interface SingleAssetProductDescriptor extends ProductDescriptor { 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/modelling/descriptor/AssetModelDescriptor.java: -------------------------------------------------------------------------------- 1 | package net.finmath.modelling.descriptor; 2 | 3 | import net.finmath.modelling.ModelDescriptor; 4 | 5 | /** 6 | * Marker interface for descriptors describing an asset model. 7 | * 8 | * @author Christian Fries 9 | * @author Roland Bachl 10 | * @version 1.0 11 | */ 12 | public interface AssetModelDescriptor extends ModelDescriptor { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/modelling/descriptor/InterestRateModelDescriptor.java: -------------------------------------------------------------------------------- 1 | package net.finmath.modelling.descriptor; 2 | 3 | import net.finmath.modelling.ModelDescriptor; 4 | 5 | /** 6 | * Marker interface for descriptors describing an interest rate model. 7 | * 8 | * @author Christian Fries 9 | * @author Roland Bachl 10 | * @version 1.0 11 | */ 12 | public interface InterestRateModelDescriptor extends ModelDescriptor { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/modelling/descriptor/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides interface separating implementation from specification (of models and products) 3 | * 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.modelling.descriptor; 8 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/modelling/descriptor/xmlparser/XMLParser.java: -------------------------------------------------------------------------------- 1 | package net.finmath.modelling.descriptor.xmlparser; 2 | 3 | import java.io.File; 4 | import java.io.IOException; 5 | 6 | import javax.xml.parsers.ParserConfigurationException; 7 | 8 | import org.xml.sax.SAXException; 9 | 10 | import net.finmath.modelling.ProductDescriptor; 11 | 12 | /** 13 | * Interface for XML parsers creating a product descriptor from an XML file. 14 | * 15 | * @author Christian Fries 16 | * @author Roland Bachl 17 | */ 18 | public interface XMLParser { 19 | 20 | /** 21 | * Parse a product descriptor from a file. 22 | * 23 | * @param file File containing a trade. 24 | * @return Product descriptor extracted from the file. 25 | * @throws SAXException Thrown by the xml parser. 26 | * @throws IOException Thrown if the file in not found or another IO error occured. 27 | * @throws ParserConfigurationException Thrown by the xml parser. 28 | */ 29 | ProductDescriptor getProductDescriptor(File file) throws SAXException, IOException, ParserConfigurationException; 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/modelling/descriptor/xmlparser/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides xml parsers to construct descriptors from XML 3 | * 4 | * @author Christian Fries 5 | * @author Roland Bachl 6 | */ 7 | package net.finmath.modelling.descriptor.xmlparser; 8 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/modelling/modelfactory/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes to build models from descriptors. 3 | * 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.modelling.modelfactory; 8 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/modelling/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides interface separating models and products. 3 | * 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.modelling; 8 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/modelling/productfactory/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes to build products from descriptors. 3 | * 4 | * 5 | * @author Christian Fries 6 | * @author Roland Bachl 7 | */ 8 | package net.finmath.modelling.productfactory; 9 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/modelling/products/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Interface and base classes related to products. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.modelling.products; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/RandomVariableFloatFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christianfries.com. 3 | * 4 | * Created on 21.06.2017 5 | */ 6 | 7 | package net.finmath.montecarlo; 8 | 9 | import net.finmath.stochastic.RandomVariable; 10 | 11 | /** 12 | * @author Christian Fries 13 | * 14 | */ 15 | public class RandomVariableFloatFactory extends AbstractRandomVariableFactory { 16 | 17 | private static final long serialVersionUID = 3368581641610610123L; 18 | 19 | public RandomVariableFloatFactory() { 20 | super(); 21 | } 22 | 23 | @Override 24 | public RandomVariable createRandomVariable(final double time, final double value) { 25 | return new RandomVariableFromFloatArray(time, value); 26 | } 27 | 28 | @Override 29 | public RandomVariable createRandomVariable(final double time, final double[] values) { 30 | return new RandomVariableFromFloatArray(time, values); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/RandomVariableLazyEvaluationFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 09.02.2004 5 | */ 6 | package net.finmath.montecarlo; 7 | 8 | import net.finmath.stochastic.RandomVariable; 9 | 10 | /** 11 | * 12 | * @author Christian Fries 13 | * @version 1.0 14 | */ 15 | public class RandomVariableLazyEvaluationFactory extends AbstractRandomVariableFactory { 16 | 17 | /** 18 | * 19 | */ 20 | private static final long serialVersionUID = 5474699190536441150L; 21 | 22 | @Override 23 | public RandomVariable createRandomVariable(final double time, final double value) { 24 | return new RandomVariableLazyEvaluation(time, value); 25 | } 26 | 27 | @Override 28 | public RandomVariable createRandomVariable(final double time, final double[] values) { 29 | return new RandomVariableLazyEvaluation(time, values); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/assetderivativevaluation/MonteCarloBlackScholesModelClassDiagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/finmath/finmath-lib/b7a1cb5ef752057feca7c048cc700a8f52e9676c/src/main/java/net/finmath/montecarlo/assetderivativevaluation/MonteCarloBlackScholesModelClassDiagram.png -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/assetderivativevaluation/models/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Equity models implementing {@link net.finmath.montecarlo.model.ProcessModel} 3 | * e.g. by extending {@link net.finmath.montecarlo.model.AbstractProcessModel}. 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.montecarlo.assetderivativevaluation.models; 8 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/assetderivativevaluation/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Monte-Carlo models for asset value processes, like the Black Scholes model. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.montecarlo.assetderivativevaluation; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/assetderivativevaluation/products/AssetMonteCarloProduct.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 17.02.2013 5 | */ 6 | package net.finmath.montecarlo.assetderivativevaluation.products; 7 | 8 | import net.finmath.exception.CalculationException; 9 | import net.finmath.montecarlo.assetderivativevaluation.AssetModelMonteCarloSimulationModel; 10 | import net.finmath.stochastic.RandomVariable; 11 | 12 | /** 13 | * Interface for products requiring an AssetModelMonteCarloSimulationModel for valuation. 14 | * 15 | * @author Christian Fries 16 | * @version 1.0 17 | */ 18 | public interface AssetMonteCarloProduct { 19 | 20 | RandomVariable getValue(double evaluationTime, AssetModelMonteCarloSimulationModel model) throws CalculationException; 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/assetderivativevaluation/products/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Products which may be valued using an AssetModelMonteCarloSimulationModel. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.montecarlo.assetderivativevaluation.products; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/automaticdifferentiation/IndependentModelParameterProvider.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christianfries.com. 3 | * 4 | * Created on 02.07.2017 5 | */ 6 | 7 | package net.finmath.montecarlo.automaticdifferentiation; 8 | 9 | import java.util.Map; 10 | 11 | import net.finmath.stochastic.RandomVariable; 12 | 13 | /** 14 | * Interface implemented by model which can provide their independent model parameters. 15 | * 16 | * This is useful for the model independent calculation of derivatives using AAD. 17 | * 18 | * @author Christian Fries 19 | */ 20 | public interface IndependentModelParameterProvider { 21 | 22 | /** 23 | * Returns a map of independent model parameters of this model. 24 | * 25 | * @return Map of independent model parameters of this model. 26 | */ 27 | default Map getModelParameters() { 28 | // TODO Remove default implementation in 4.0.0 version to enforce models complying with this interface. NOTE: The default here is to allow backward compatibility. 29 | throw new UnsupportedOperationException(); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/automaticdifferentiation/backward/alternative/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides alternative implementation of backward automatic differentiation. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.montecarlo.automaticdifferentiation.backward.alternative; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/automaticdifferentiation/backward/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides the implementation of backward automatic differentiation. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.montecarlo.automaticdifferentiation.backward; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/automaticdifferentiation/forward/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides the implementation of forward automatic differentiation. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.montecarlo.automaticdifferentiation.forward; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/automaticdifferentiation/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes adding automatic differentiation capabilities to objects relying on RandomVariable objects. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.montecarlo.automaticdifferentiation; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/conditionalexpectation/MonteCarloConditionalExpectationLinearRegressionFactory.java: -------------------------------------------------------------------------------- 1 | package net.finmath.montecarlo.conditionalexpectation; 2 | 3 | import net.finmath.stochastic.ConditionalExpectationEstimator; 4 | import net.finmath.stochastic.RandomVariable; 5 | 6 | /** 7 | * Provides a linear regression for a vector of regression basis functions. 8 | * 9 | * @author Christian Fries 10 | */ 11 | public class MonteCarloConditionalExpectationLinearRegressionFactory implements MonteCarloConditionalExpectationRegressionFactory { 12 | 13 | @Override 14 | public ConditionalExpectationEstimator getConditionalExpectationEstimator(final RandomVariable[] basisFunctionsEstimator, final RandomVariable[] basisFunctionsPredictor) { 15 | return new MonteCarloConditionalExpectationRegression(basisFunctionsEstimator, basisFunctionsPredictor); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/conditionalexpectation/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Algorithms to perform the calculation of conditional expectations in Monte-Carlo simulations, 3 | * also known as "American Monte-Carlo". 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.montecarlo.conditionalexpectation; 8 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/crosscurrency/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes for Cross-Currency models to be implemented via Monte-Carlo 3 | * algorithms from net.finmath.montecarlo.process. 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.montecarlo.crosscurrency; 8 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/hybridassetinterestrate/HybridAssetLIBORModelMonteCarloSimulation.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 03.04.2015 5 | */ 6 | package net.finmath.montecarlo.hybridassetinterestrate; 7 | 8 | import net.finmath.montecarlo.MonteCarloSimulationModel; 9 | import net.finmath.montecarlo.assetderivativevaluation.AssetModelMonteCarloSimulationModel; 10 | import net.finmath.montecarlo.interestrate.LIBORModelMonteCarloSimulationModel; 11 | 12 | /** 13 | * Basic interface which has to be implemented by Monte Carlo models for hybrid processes. 14 | * 15 | * @author Christian Fries 16 | * @version 1.0 17 | */ 18 | public interface HybridAssetLIBORModelMonteCarloSimulation extends MonteCarloSimulationModel, LIBORModelMonteCarloSimulationModel, AssetModelMonteCarloSimulationModel { 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/hybridassetinterestrate/RiskFactorFX.java: -------------------------------------------------------------------------------- 1 | package net.finmath.montecarlo.hybridassetinterestrate; 2 | 3 | public class RiskFactorFX implements RiskFactorID { 4 | 5 | private final String name; 6 | 7 | public RiskFactorFX(String name) { 8 | super(); 9 | this.name = name; 10 | } 11 | 12 | @Override 13 | public String getName() { 14 | return name; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/hybridassetinterestrate/RiskFactorForwardRate.java: -------------------------------------------------------------------------------- 1 | package net.finmath.montecarlo.hybridassetinterestrate; 2 | 3 | public class RiskFactorForwardRate implements RiskFactorID { 4 | 5 | private final String name; 6 | private final double periodStart; 7 | private final double periodEnd; 8 | 9 | public RiskFactorForwardRate(String name, double periodStart, double periodEnd) { 10 | super(); 11 | this.name = name; 12 | this.periodStart = periodStart; 13 | this.periodEnd = periodEnd; 14 | } 15 | 16 | @Override 17 | public String getName() { 18 | return name; 19 | } 20 | 21 | public double getPeriodStart() { 22 | return periodStart; 23 | } 24 | 25 | public double getPeriodEnd() { 26 | return periodEnd; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/hybridassetinterestrate/RiskFactorID.java: -------------------------------------------------------------------------------- 1 | package net.finmath.montecarlo.hybridassetinterestrate; 2 | 3 | public interface RiskFactorID { 4 | 5 | /** 6 | * @return The name of the risk factor. 7 | */ 8 | String getName(); 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/hybridassetinterestrate/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides interfaces and classes needed to generate a Hybrid Asset LIBOR Market Model. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.montecarlo.hybridassetinterestrate; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/hybridassetinterestrate/products/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes which implement financial products which may be 3 | * valued using a net.finmath.montecarlo.hybridassetinterestrate.HybridAssetLIBORModelMonteCarloSimulation. 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.montecarlo.hybridassetinterestrate.products; 8 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/interestrate/LIBORModelCalibrationDiagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/finmath/finmath-lib/b7a1cb5ef752057feca7c048cc700a8f52e9676c/src/main/java/net/finmath/montecarlo/interestrate/LIBORModelCalibrationDiagram.png -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/interestrate/models/covariance/TermStructureCovarianceModel.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 24.12.2016 5 | */ 6 | package net.finmath.montecarlo.interestrate.models.covariance; 7 | 8 | /** 9 | * A base class and interface description for the instantaneous covariance of 10 | * an forward rate interest rate model. 11 | * 12 | * @author Christian Fries 13 | * @version 1.0 14 | */ 15 | public interface TermStructureCovarianceModel extends TermStructureTenorTimeScaling, TermStructureFactorLoadingsModel { 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/interestrate/models/covariance/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Contains covariance models and their calibration as plug-ins for the LIBOR market model and volatility and correlation models which may be used to build a covariance model. 3 | * Covariance models provide they free parameters via an interface. The class AbstractLIBORCovarianceModelParametric provides a method that implements the generic calibration of the models. 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.montecarlo.interestrate.models.covariance; 8 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/interestrate/models/funding/DefaultFactors.java: -------------------------------------------------------------------------------- 1 | package net.finmath.montecarlo.interestrate.models.funding; 2 | 3 | import net.finmath.stochastic.RandomVariable; 4 | 5 | public class DefaultFactors { 6 | private final RandomVariable survivalProbability; 7 | private final RandomVariable defaultCompensation; 8 | 9 | public DefaultFactors(RandomVariable survivalProbability, RandomVariable defaultCompensation) { 10 | this.survivalProbability = survivalProbability; 11 | this.defaultCompensation = defaultCompensation; 12 | } 13 | 14 | public RandomVariable getSurvivalProbability() { 15 | return survivalProbability; 16 | } 17 | 18 | public RandomVariable getDefaultCompensation() { 19 | return defaultCompensation; 20 | } 21 | } -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/interestrate/models/funding/FundingCapacity.java: -------------------------------------------------------------------------------- 1 | package net.finmath.montecarlo.interestrate.models.funding; 2 | 3 | import net.finmath.stochastic.RandomVariable; 4 | 5 | public interface FundingCapacity { 6 | 7 | /** 8 | * Apply a new funding requirement to this funding capacity 9 | * and return the associated DefaultFactors. 10 | * 11 | * @param time The time at which the funding is required. 12 | * @param fundingRequirement The required funding. 13 | * @return A DefaultFactors that reflects the amount that has to be contracted to secure the funding. 14 | */ 15 | DefaultFactors getDefaultFactors(double time, RandomVariable fundingRequirement); 16 | 17 | } -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/interestrate/models/funding/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Model components related to non-linear discounting / funding. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.montecarlo.interestrate.models.funding; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/interestrate/models/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Interest rate models implementing {@link net.finmath.montecarlo.model.ProcessModel} 3 | * e.g. by extending {@link net.finmath.montecarlo.model.AbstractProcessModel}. 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.montecarlo.interestrate.models; 8 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/interestrate/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides interfaces and classes needed to generate interest rate models model (using numerical 3 | * algorithms from net.finmath.montecarlo.process. 4 | * 5 | * The basic interface and classes provide a TermStructureModel which provides a 6 | * forward rate {@link net.finmath.montecarlo.interestrate.TermStructureModel#getForwardRate(net.finmath.montecarlo.process.MonteCarloProcess, double, double, double)} 7 | * and a 8 | * numeraire {@link net.finmath.montecarlo.interestrate.TermStructureModel#getNumeraire(net.finmath.montecarlo.process.MonteCarloProcess, double)} 9 | * 10 | * There is a legacy interface LIBORModel which provides the 11 | * forward rates on a tenor time discretization under the name 12 | * {@link net.finmath.montecarlo.interestrate.LIBORModel#getLIBOR(net.finmath.montecarlo.process.MonteCarloProcess, int, int)} 13 | * 14 | * @author Christian Fries 15 | */ 16 | package net.finmath.montecarlo.interestrate; 17 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/interestrate/products/components/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides a set product components which allow to build financial products by composition. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.montecarlo.interestrate.products.components; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/interestrate/products/indices/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides a set of indices which can be used as part of a period. 3 | * 4 | * @see net.finmath.montecarlo.interestrate.products.components.Period 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.montecarlo.interestrate.products.indices; 8 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/interestrate/products/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes which implement financial products which may be 3 | * valued using a net.finmath.montecarlo.interestrate.LIBORModelMonteCarloSimulationModel. 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.montecarlo.interestrate.products; 8 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/interestrate/simple/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Simplified version of Monte-Carlo interest rate model - LIBOR Market Model. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.montecarlo.interestrate.simple; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/model/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides an interface and a base class for process models, i.e., models providing the parameters for 3 | * stochastic processes. 4 | * 5 | * The concept here is that we separate the numerical discretization scheme of an SDE from the parameterization of the SDE. 6 | * 7 | * @author Christian Fries 8 | */ 9 | package net.finmath.montecarlo.model; 10 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides basic interfaces and classes used in Monte-Carlo models (like LIBOR market model or Monte-Carlo simulation 3 | * of a Black-Scholes model), e.g., the Monte-Carlo random variable and the Brownian motion. 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.montecarlo; 8 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/process/ProcessTimeDiscretizationProvider.java: -------------------------------------------------------------------------------- 1 | package net.finmath.montecarlo.process; 2 | 3 | import java.time.LocalDateTime; 4 | 5 | import net.finmath.time.TimeDiscretization; 6 | 7 | /** 8 | * An object implementing this interfaces provides a suggestion for an optimal time-discretization 9 | * associated with this object. 10 | * 11 | * Examples are: 12 | *

    13 | *
  • 14 | * a European option can implement this interface and provide a time discretization with a single point, its exercise date. 15 | *
  • 16 | *
17 | * 18 | * @author Christian Fries 19 | */ 20 | public interface ProcessTimeDiscretizationProvider { 21 | 22 | /** 23 | * Returns a suggestion for a time discretization which is suited (or required) for the processing (e.g valuation) of this object. 24 | * 25 | * @param referenceDate A reference date relative to which the discretization is generated. 26 | * @return A time discretization. 27 | */ 28 | TimeDiscretization getProcessTimeDiscretization(LocalDateTime referenceDate); 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/process/component/barrier/ProcessWithBarrier.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Created on 29.06.2008 3 | * 4 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 5 | */ 6 | package net.finmath.montecarlo.process.component.barrier; 7 | 8 | 9 | /** 10 | * @author Christian Fries 11 | * @since finmath-lib 4.1.0 12 | * @version 1.0 13 | */ 14 | public interface ProcessWithBarrier { 15 | 16 | Barrier getBarrier(); 17 | 18 | void setBarrier(Barrier barrier); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/process/component/barrier/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Components providing the barrier in the Monte-Carlo simulation with barrier. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.montecarlo.process.component.barrier; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/process/component/factortransform/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Components providing the factor drift in the simulation of a proxy simulation scheme. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.montecarlo.process.component.factortransform; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/process/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Interfaced for stochastic processes and numerical schemes for stochastic processes (SDEs), like the Euler scheme. 3 | * The Euler scheme implementation is more generic and can be configured for 4 | * log-Euler scheme or predictor corrector scheme. 5 | * 6 | * The parameters have to be provided by a process model. 7 | * 8 | * @see net.finmath.montecarlo.model 9 | * @author Christian Fries 10 | */ 11 | package net.finmath.montecarlo.process; 12 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/products/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Products which are model independent, but assume a Monte-Carlo simulation. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.montecarlo.products; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/templatemethoddesign/MonteCalorBlackScholesModelTemplateMethodDesign.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/finmath/finmath-lib/b7a1cb5ef752057feca7c048cc700a8f52e9676c/src/main/java/net/finmath/montecarlo/templatemethoddesign/MonteCalorBlackScholesModelTemplateMethodDesign.png -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/templatemethoddesign/assetderivativevaluation/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Legacy classes related to Monte-Carlo simulation - used for teaching only. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.montecarlo.templatemethoddesign.assetderivativevaluation; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/montecarlo/templatemethoddesign/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Legacy classes related to Monte-Carlo simulation - used for teaching only. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.montecarlo.templatemethoddesign; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/optimizer/OptimizerFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 29.05.2015 5 | */ 6 | 7 | package net.finmath.optimizer; 8 | 9 | import net.finmath.optimizer.Optimizer.ObjectiveFunction; 10 | 11 | /** 12 | * @author Christian Fries 13 | * 14 | * @version 1.0 15 | */ 16 | public interface OptimizerFactory { 17 | 18 | Optimizer getOptimizer(ObjectiveFunction objectiveFunction, double[] initialParameters, double[] targetValues); 19 | 20 | Optimizer getOptimizer(ObjectiveFunction objectiveFunction, double[] initialParameters, double[] lowerBound, double[] upperBound, double[] targetValues); 21 | 22 | Optimizer getOptimizer(ObjectiveFunction objectiveFunction, double[] initialParameters, double[] lowerBound, double[] upperBound, double[] parameterStep, double[] targetValues); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/parser/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Contains classes for parsing files. 3 | * 4 | * @author Roland Bachl 5 | */ 6 | package net.finmath.parser; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/randomnumbers/RandomNumberGenerator.java: -------------------------------------------------------------------------------- 1 | package net.finmath.randomnumbers; 2 | 3 | import java.io.Serializable; 4 | 5 | /** 6 | * Interface for an n-dimensional random number generator 7 | * generating a sequence of vectors sampling the space [0,1]^{n} 8 | * 9 | * @author Christian Fries 10 | * @version 1.0 11 | */ 12 | public interface RandomNumberGenerator extends Serializable { 13 | 14 | /** 15 | * Get the next sample vector of dimension n, where n is getDimension. 16 | * 17 | * An implementation has to be thread safe. 18 | * 19 | * @return The next sample vector of dimension n, where n is getDimension. 20 | */ 21 | double[] getNext(); 22 | 23 | /** 24 | * Get the sample vector dimension. 25 | * 26 | * @return The sample vector dimension n. 27 | */ 28 | int getDimension(); 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/randomnumbers/SobolSequence1D.java: -------------------------------------------------------------------------------- 1 | package net.finmath.randomnumbers; 2 | 3 | /** 4 | * Implements a multi-dimensional Sobol sequence. 5 | * 6 | * The class is just a wrapper to Apache commons-math implementation 7 | * in order to implement the interfaces RandomNumberGenerator1D 8 | * and {@link java.util.function.DoubleSupplier}. 9 | * 10 | * @author Christian Fries 11 | * @version 1.0 12 | */ 13 | public class SobolSequence1D implements RandomNumberGenerator1D { 14 | 15 | private static final long serialVersionUID = 1368710922067034251L; 16 | 17 | private final SobolSequence sobolSequence; 18 | 19 | /** 20 | * Create a Sobol sequence. 21 | */ 22 | public SobolSequence1D() { 23 | super(); 24 | sobolSequence = new SobolSequence(1); 25 | } 26 | 27 | @Override 28 | public double nextDouble() { 29 | return sobolSequence.getNext()[0]; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/randomnumbers/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Random number generators for samples of uniform distributed random variables and generators and transformation for other distriburtions. 3 | * 4 | * Classes in this package provide wrappers for random number generators from thirs party libraries (e.g. Mersenne-Twister from commons-math), 5 | * native implementation of quasi random number gerantors (e.g. Halton sequence) and algorithm to sample other distributions 6 | * (like the Acceptance-Rejection method). 7 | * 8 | * @author Christian Fries 9 | */ 10 | package net.finmath.randomnumbers; 11 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/rootfinder/AbstractRootFinder.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Created on 12.10.2007 3 | * 4 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 5 | */ 6 | package net.finmath.rootfinder; 7 | 8 | /** 9 | * @author Christian Fries 10 | * @version 1.0 11 | */ 12 | public abstract class AbstractRootFinder implements RootFinder, RootFinderWithDerivative { 13 | 14 | @Override 15 | public void setValueAndDerivative(final double value, final double derivative) { 16 | setValue(value); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/rootfinder/StochasticRootFinder.java: -------------------------------------------------------------------------------- 1 | package net.finmath.rootfinder; 2 | 3 | import net.finmath.stochastic.RandomVariable; 4 | 5 | /** 6 | * @author Christian Fries 7 | * @author Stefan Sedlmair 8 | * @version 1.0 9 | */ 10 | public interface StochasticRootFinder { 11 | 12 | /** 13 | * @return Next point for which a value should be set using setValue. 14 | */ 15 | RandomVariable getNextPoint(); 16 | 17 | /** 18 | * @param value Value corresponding to point returned 19 | * by previous getNextPoint call. 20 | */ 21 | void setValue(RandomVariable value); 22 | 23 | /** 24 | * @return Returns the numberOfIterations. 25 | */ 26 | int getNumberOfIterations(); 27 | 28 | /** 29 | * @return Best point obtained so far 30 | */ 31 | RandomVariable getBestPoint(); 32 | 33 | /** 34 | * @return Returns the accuracy. 35 | */ 36 | double getAccuracy(); 37 | 38 | /** 39 | * @return Returns true if further improvement is not possible. 40 | */ 41 | boolean isDone(); 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/rootfinder/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Interfaces and classes provided variantes of one dimensional root finder to solve 3 | * f(x) = 0, like Bisection Search, Newtons Method. 4 | * An application of the solver is the calculation of the implied volatiltiy. 5 | * 6 | * @author Christian Fries 7 | */ 8 | package net.finmath.rootfinder; 9 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/singleswaprate/annuitymapping/ConstantNormalizer.java: -------------------------------------------------------------------------------- 1 | package net.finmath.singleswaprate.annuitymapping; 2 | 3 | /** 4 | * Constant normalizer returning the value one. 5 | * 6 | * @author Christian Fries 7 | * @author Roland Bachl 8 | * 9 | */ 10 | public class ConstantNormalizer implements NormalizingFunction { 11 | 12 | @Override 13 | public double getValue(final double swapRate) { 14 | return 1; 15 | } 16 | 17 | @Override 18 | public double getFirstDerivative(final double swapRate) { 19 | return 0; 20 | } 21 | 22 | @Override 23 | public double getSecondDerivative(final double swapRate) { 24 | return 0; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/singleswaprate/annuitymapping/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Classes providing options for the annuity mapping function. These replace the annuity, which is dependent on bonds of multiple maturities, with a function that solely 3 | * depends on a single swap rate. Thus allowing to use vanilla models where otherwise term structure models would be necessary. 4 | * 5 | * @author Christian Fries 6 | * @author Roland Bachl 7 | */ 8 | package net.finmath.singleswaprate.annuitymapping; 9 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/singleswaprate/calibration/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Classes providing calibration to market data of volatility cubes. 3 | * 4 | * @author Christian Fries 5 | * @author Roland Bachl 6 | */ 7 | package net.finmath.singleswaprate.calibration; 8 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/singleswaprate/data/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes to store and interact with market data. 3 | * 4 | * @author Christian Fries 5 | * @author Roland Bachl 6 | */ 7 | package net.finmath.singleswaprate.data; 8 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/singleswaprate/model/curves/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Additional curves for use in an analytic model, {@link net.finmath.marketdata.model.AnalyticModel}. 3 | * 4 | * @author Christian Fries 5 | * @author Roland Bachl 6 | */ 7 | package net.finmath.singleswaprate.model.curves; 8 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/singleswaprate/model/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Classes extending the regular analytic model, see {@link net.finmath.marketdata.model}, with the capacity to hold volatility cubes, 3 | * see {@link net.finmath.singleswaprate.model.volatilities.VolatilityCube}. 4 | * 5 | * @author Christian Fries 6 | * @author Roland Bachl 7 | */ 8 | package net.finmath.singleswaprate.model; 9 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/singleswaprate/model/volatilities/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides interface specification and implementation of volatility cubes, as well as a factory to create these, either via calibration from market data or construction 3 | * from parameters. Generally these cubes store normal implied volatilities of physically settled swaptions. 4 | * 5 | * @author Christian Fries 6 | * @author Roland Bachl 7 | */ 8 | package net.finmath.singleswaprate.model.volatilities; 9 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/singleswaprate/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Contains all classes related to interest rate derivatives, which are evaluated by a change of measure to the annuity measure of a single swap rate. 3 | * Most notable examples include the cash settled swaption and the constant maturity swap. 4 | * 5 | * @author Christian Fries 6 | * @author Roland Bachl 7 | * 8 | */ 9 | package net.finmath.singleswaprate; 10 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/singleswaprate/products/AnalyticVolatilityCubeProduct.java: -------------------------------------------------------------------------------- 1 | package net.finmath.singleswaprate.products; 2 | 3 | import net.finmath.marketdata.products.AnalyticProduct; 4 | import net.finmath.singleswaprate.model.VolatilityCubeModel; 5 | 6 | /** 7 | * The interface of a product to be evaluated using a {@link VolatilityCubeModel}. 8 | * 9 | * @author Christian Fries 10 | * @author Roland Bachl 11 | * 12 | */ 13 | public interface AnalyticVolatilityCubeProduct extends AnalyticProduct { 14 | 15 | /** 16 | * Return the valuation of the product using the given model. 17 | * The model has to implement the modes of {@link VolatilityCubeModel}. 18 | * 19 | * @param evaluationTime The evaluation time as double. Cash flows prior and including this time are not considered. 20 | * @param model The model under which the product is valued. 21 | * @return The value of the product using the given model. 22 | */ 23 | double getValue(double evaluationTime, VolatilityCubeModel model); 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/singleswaprate/products/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides interface specification and implementation of product based on a single interest rate curve. 3 | * 4 | * @author Christian Fries 5 | * @author Roland Bachl 6 | */ 7 | package net.finmath.singleswaprate.products; 8 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/stochastic/ConditionalExpectationEstimator.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 13.08.2004 5 | */ 6 | package net.finmath.stochastic; 7 | 8 | /** 9 | * The interface which has to be implemented by a fixed conditional expectation operator, 10 | * i.e., E( · | Z ) for a fixed Z. 11 | * 12 | * @author Christian Fries 13 | * @version 1.0 14 | */ 15 | public interface ConditionalExpectationEstimator { 16 | 17 | /** 18 | * Return the conditional expectation of a given random variable. 19 | * The definition of the filtration time is part of the object implementing this interface. 20 | * 21 | * @param randomVariable Given random variable. 22 | * @return The conditional expectation of randomVariable. 23 | */ 24 | RandomVariable getConditionalExpectation(RandomVariable randomVariable); 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/stochastic/RandomVariable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/finmath/finmath-lib/b7a1cb5ef752057feca7c048cc700a8f52e9676c/src/main/java/net/finmath/stochastic/RandomVariable.png -------------------------------------------------------------------------------- /src/main/java/net/finmath/stochastic/RandomVariableAccumulator.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 29.06.2013 5 | */ 6 | package net.finmath.stochastic; 7 | 8 | 9 | /** 10 | * The interface implemented by a mutable random variable accumulator. 11 | * An object of this class accumulates other random variables. 12 | * The classical application is the accumulation of discounted cash flows. 13 | * 14 | * @author Christian Fries 15 | * @version 1.3 16 | */ 17 | public interface RandomVariableAccumulator extends RandomVariable { 18 | 19 | void accumulate(RandomVariable randomVariable); 20 | void accumulate(double time, RandomVariable randomVariable); 21 | 22 | RandomVariable get(); 23 | RandomVariable get(double fromTime, double toTime); 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/stochastic/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Interfaces specifying operations on random variables. For implementation see also 3 | * {@link net.finmath.montecarlo} e.g. {@link net.finmath.montecarlo.RandomVariableFromDoubleArray}. 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.stochastic; 8 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/swing/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides utilities for Java swing (used in finmath applets). 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.swing; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/time/Tenor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 07.09.2013 5 | */ 6 | 7 | package net.finmath.time; 8 | 9 | import java.time.LocalDate; 10 | 11 | /** 12 | * @author Christian Fries 13 | * 14 | * @version 1.0 15 | */ 16 | public interface Tenor { 17 | 18 | /** 19 | * @return The reference date of this tenor, i.e., the date mapped to 0.0 20 | */ 21 | LocalDate getReferenceDate(); 22 | 23 | /** 24 | * Returns the date for the given time index. 25 | * 26 | * @param timeIndex Time index 27 | * @return Returns the date for a given time index. 28 | */ 29 | LocalDate getDate(int timeIndex); 30 | 31 | /** 32 | * Returns the day count fraction for the period form timeIndex to to timeIndex+1. 33 | * 34 | * @param timeIndex Time index 35 | * @return Returns the day count fraction. 36 | */ 37 | double getDaycountFraction(int timeIndex); 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/time/businessdaycalendar/BusinessdayCalendarAny.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 15.09.2013 5 | */ 6 | 7 | package net.finmath.time.businessdaycalendar; 8 | 9 | import java.time.LocalDate; 10 | 11 | /** 12 | * A business day calendar, where every day is a business day. 13 | * 14 | * @author Christian Fries 15 | * @version 1.0 16 | */ 17 | public class BusinessdayCalendarAny extends AbstractBusinessdayCalendar { 18 | 19 | private static final long serialVersionUID = -2440422998196510638L; 20 | 21 | /** 22 | * Create a business day calendar, where every day is a business day. 23 | */ 24 | public BusinessdayCalendarAny() { 25 | } 26 | 27 | @Override 28 | public boolean isBusinessday(final LocalDate date) { 29 | return true; 30 | } 31 | 32 | @Override 33 | public String toString() { 34 | return "BusinessdayCalendarAny"; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/time/businessdaycalendar/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides business day calendars, e.g., as used in date roll conventions. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.time.businessdaycalendar; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/time/daycount/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides various day count conventions, e.g., as used in the definition of coupon payments of interest rate products. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.time.daycount; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/time/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides interfaces and classes for time discretizations, tenors and (swap) schedule generation. 3 | * The swap schedule generation used business day calendars from net.finmath.time.businessdaycalendar 4 | * for date roll conventions. 5 | * 6 | * @author Christian Fries 7 | */ 8 | package net.finmath.time; 9 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/timeseries/MarketData.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 13.04.2014 5 | */ 6 | 7 | package net.finmath.timeseries; 8 | 9 | import java.util.Calendar; 10 | import java.util.Map; 11 | 12 | /** 13 | * A set of raw data associated with a given date. 14 | * 15 | * @author Christian Fries 16 | * @version 1.0 17 | */ 18 | public class MarketData { 19 | 20 | private final Calendar date; 21 | private final Map valuesForSymbols; 22 | 23 | public MarketData(final Calendar date, final Map valuesForSymbols) { 24 | super(); 25 | this.date = date; 26 | this.valuesForSymbols = valuesForSymbols; 27 | } 28 | 29 | public Calendar getDate() { 30 | return date; 31 | } 32 | 33 | public double getValue(final String symbol) { 34 | return valuesForSymbols.get(symbol); 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/timeseries/TimeSeries.java: -------------------------------------------------------------------------------- 1 | package net.finmath.timeseries; 2 | 3 | /** 4 | * Interface to be implemented by finite time series. 5 | * 6 | * @author Christian Fries 7 | * @version 1.0 8 | */ 9 | public interface TimeSeries { 10 | 11 | double getTime(int index); 12 | double getValue(int index); 13 | 14 | int getNumberOfTimePoints(); 15 | 16 | Iterable getValues(); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/timeseries/TimeSeriesModelParametric.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Created on 12.08.2012 3 | * 4 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 5 | */ 6 | package net.finmath.timeseries; 7 | 8 | 9 | /** 10 | * A parametric time series model 11 | * 12 | * @author Christian Fries 13 | * @version 1.0 14 | */ 15 | public interface TimeSeriesModelParametric { 16 | 17 | double[] getParameters(); 18 | 19 | String[] getParameterNames(); 20 | 21 | TimeSeriesModelParametric getCloneCalibrated(TimeSeries timeSeries); 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/timeseries/models/parametric/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Classes related to estimation of time series. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.timeseries.models.parametric; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/timeseries/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes related to time series modeling and estimation, e.g. maximum likelihood estimation of GARCH models. 3 | * Contains some aspects of estimating risk distribution from historical changes. 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.timeseries; 8 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/util/Cached.java: -------------------------------------------------------------------------------- 1 | package net.finmath.util; 2 | 3 | import java.util.Map; 4 | import java.util.concurrent.ConcurrentHashMap; 5 | import java.util.function.Function; 6 | 7 | /** 8 | * A simple wrapper, wrapping a Function<K,V> such that all calculations are cached in a ConcurrentHashMap<K,V> 9 | * 10 | * @author Christian Fries 11 | * 12 | * @param The type of the cache key. 13 | * @param The type of the value. 14 | */ 15 | public class Cached implements Function { 16 | 17 | private final Function mappingFunction; 18 | private final Map cache = new ConcurrentHashMap(); 19 | 20 | Cached(Function mappingFunction) { this.mappingFunction = mappingFunction; } 21 | 22 | public static Function of(Function mappingFunction) { 23 | return new Cached(mappingFunction); 24 | } 25 | 26 | @Override 27 | public V apply(K key) { 28 | return cache.computeIfAbsent(key, mappingFunction); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/util/TriFunction.java: -------------------------------------------------------------------------------- 1 | package net.finmath.util; 2 | 3 | @FunctionalInterface 4 | public interface TriFunction { 5 | 6 | R apply(U u, V v, W w); 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/util/config/nodes/ConfigNode.java: -------------------------------------------------------------------------------- 1 | package net.finmath.util.config.nodes; 2 | 3 | import java.util.Map; 4 | 5 | public class ConfigNode implements Node { 6 | 7 | private final String key; 8 | private final Map valueToConfig; 9 | 10 | public ConfigNode(String key, Map valueToConfig) { 11 | super(); 12 | this.key = key; 13 | this.valueToConfig = valueToConfig; 14 | } 15 | 16 | public String getKey() { 17 | return key; 18 | } 19 | 20 | public Map getValueToConfig() { 21 | return valueToConfig; 22 | } 23 | } -------------------------------------------------------------------------------- /src/main/java/net/finmath/util/config/nodes/Node.java: -------------------------------------------------------------------------------- 1 | package net.finmath.util.config.nodes; 2 | 3 | public interface Node {} -------------------------------------------------------------------------------- /src/main/java/net/finmath/util/config/nodes/SpecialNodes.java: -------------------------------------------------------------------------------- 1 | package net.finmath.util.config.nodes; 2 | 3 | public enum SpecialNodes { 4 | DEFAULT_VALUE; 5 | } -------------------------------------------------------------------------------- /src/main/java/net/finmath/util/config/nodes/ValueNode.java: -------------------------------------------------------------------------------- 1 | package net.finmath.util.config.nodes; 2 | 3 | public class ValueNode implements Node { 4 | 5 | private final Object value; 6 | 7 | public ValueNode(Object value) { 8 | super(); 9 | this.value = value; 10 | } 11 | 12 | public Object getValue() { 13 | return value; 14 | } 15 | } -------------------------------------------------------------------------------- /src/main/java/net/finmath/util/config/nodes/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Node implementation for the {@link net.finmath.util.config.ConfigTree}. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.util.config.nodes; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/util/config/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Utilities to manage configurations. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.util.config; 7 | -------------------------------------------------------------------------------- /src/main/java/net/finmath/util/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Some utilities. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.util; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/concurrency/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides helper classes related to concurrent programming. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.concurrency; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/exception/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes related to exception handling. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.exception; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/finitedifference/experimental/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Algorithms using finite differences methods. PDE solvers. Representation of models and products for finite difference methods. 3 | * 4 | * The package contains experimental code. Usage, API, interfaces are likely to change in future version. 5 | * 6 | * @author Christian Fries 7 | * @author Jörg Kienitz 8 | * @author Dr Ralph Rudd 9 | */ 10 | package net.finmath.finitedifference.experimental; 11 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/finitedifference/models/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Models provided for finite difference solvers. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.finitedifference.models; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/finitedifference/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Algorithms using finite differences methods. PDE solvers. Representation of models and products for finite difference methods. 3 | * 4 | * @author Christian Fries 5 | * @author Jörg Kienitz 6 | * @author Ralph Rudd 7 | */ 8 | package net.finmath.finitedifference; 9 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/finitedifference/products/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Product valuation code for models using backward propagation. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.finitedifference.products; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/finitedifference/solvers/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Finite difference solvers 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.finitedifference.solvers; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/fouriermethod/CharacteristicFunction.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 23.03.2014 5 | */ 6 | 7 | package net.finmath.fouriermethod; 8 | 9 | import java.util.function.Function; 10 | 11 | import org.apache.commons.math3.complex.Complex; 12 | 13 | /** 14 | * Interface which has to be implemented by characteristic functions of 15 | * random variables, e.g., Fourier transforms of values (payoffs). 16 | * 17 | * This is a functional interface. 18 | * 19 | * @author Christian Fries 20 | * @version 1.0 21 | */ 22 | @FunctionalInterface 23 | public interface CharacteristicFunction extends Function { 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/fouriermethod/calibration/Constraint.java: -------------------------------------------------------------------------------- 1 | package net.finmath.fouriermethod.calibration; 2 | 3 | /** 4 | * Constraint base interface (scalar and multivariate) 5 | * 6 | * @author Alessandro Gnoatto 7 | * 8 | */ 9 | public interface Constraint { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/fouriermethod/calibration/Constraints.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/finmath/finmath-lib/b7a1cb5ef752057feca7c048cc700a8f52e9676c/src/main/java8/net/finmath/fouriermethod/calibration/Constraints.png -------------------------------------------------------------------------------- /src/main/java8/net/finmath/fouriermethod/calibration/NegativityConstraint.java: -------------------------------------------------------------------------------- 1 | package net.finmath.fouriermethod.calibration; 2 | 3 | /** 4 | * Negativity constraint for calibration parameters. 5 | * 6 | * @author Alessandro Gnoatto 7 | * 8 | */ 9 | public class NegativityConstraint extends BoundConstraint { 10 | 11 | public NegativityConstraint() { 12 | super(Double.NEGATIVE_INFINITY, 0.0); 13 | } 14 | 15 | @Override 16 | public double apply(final double parameterToTest) { 17 | return -Math.abs(parameterToTest); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/fouriermethod/calibration/ParameterInformation.java: -------------------------------------------------------------------------------- 1 | package net.finmath.fouriermethod.calibration; 2 | 3 | /** 4 | * A generic interface for scalar or multivariate parameters. 5 | * 6 | * @author Alessandro Gnoatto 7 | * 8 | */ 9 | public interface ParameterInformation { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/fouriermethod/calibration/PositivityConstraint.java: -------------------------------------------------------------------------------- 1 | package net.finmath.fouriermethod.calibration; 2 | 3 | /** 4 | * Positivity constraint for calibration parameters 5 | * @author Alessandro Gnoatto 6 | * 7 | */ 8 | public class PositivityConstraint extends BoundConstraint { 9 | 10 | public PositivityConstraint() { 11 | super(0.0, Double.POSITIVE_INFINITY); 12 | } 13 | 14 | @Override 15 | public double apply(final double parameterToTest) { 16 | return Math.abs(parameterToTest); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/fouriermethod/calibration/ScalarConstraint.java: -------------------------------------------------------------------------------- 1 | package net.finmath.fouriermethod.calibration; 2 | 3 | /** 4 | * Base interface for scalar parameter constraints. 5 | * 6 | * @author Alessandro Gnoatto 7 | * 8 | */ 9 | public interface ScalarConstraint extends Constraint{ 10 | 11 | /** 12 | * Forces the parameter to respect a certain condition. 13 | * 14 | * @param parameterToTest The value to which the constraint should be applied. 15 | * @return the parameter after application of the constraint. 16 | */ 17 | double apply(double parameterToTest); 18 | 19 | /** 20 | * Returns the lower bound, possibly given by Double.NEGATIVE_INFINITY. 21 | * @return the lower bound. 22 | */ 23 | double getLowerBound(); 24 | 25 | /** 26 | * Returns the upper bound, possibly given by Double.POSITIVE_INFINITY. 27 | * @return the upper bound. 28 | */ 29 | double getUpperBound(); 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/fouriermethod/calibration/ScalarParameterInformation.java: -------------------------------------------------------------------------------- 1 | package net.finmath.fouriermethod.calibration; 2 | 3 | /** 4 | * An interface representing a scalar parameter. 5 | * 6 | * @author Alessandro Gnoatto 7 | */ 8 | public interface ScalarParameterInformation extends ParameterInformation{ 9 | 10 | /** 11 | * Boolean flag for parameters that need to be calibrated. 12 | * 13 | * @return true if the parameter must be calibrated. 14 | */ 15 | boolean getIsParameterToCalibrate(); 16 | 17 | /** 18 | * Returns the constraint. 19 | * 20 | * @return the constraint. 21 | */ 22 | ScalarConstraint getConstraint(); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/fouriermethod/calibration/Unconstrained.java: -------------------------------------------------------------------------------- 1 | package net.finmath.fouriermethod.calibration; 2 | 3 | /** 4 | * Absence of constraints. 5 | * 6 | * @author Alessandro Gnoatto 7 | * 8 | */ 9 | public class Unconstrained extends BoundConstraint{ 10 | 11 | public Unconstrained() { 12 | super(Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY); 13 | } 14 | 15 | @Override 16 | public double apply(final double parameterToTest) { 17 | return parameterToTest; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/fouriermethod/calibration/models/CalibrationDiagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/finmath/finmath-lib/b7a1cb5ef752057feca7c048cc700a8f52e9676c/src/main/java8/net/finmath/fouriermethod/calibration/models/CalibrationDiagram.png -------------------------------------------------------------------------------- /src/main/java8/net/finmath/fouriermethod/calibration/models/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Classes related to the calibration of fourier models. 3 | * 4 | * @author Alessandro Gnoatto 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.fouriermethod.calibration.models; 8 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/fouriermethod/calibration/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Classes related to the calibration of Fourier models. 3 | * 4 | * @author Alessandro Gnoatto 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.fouriermethod.calibration; 8 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/fouriermethod/models/CharacteristicFunctionModel.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 24.03.2014 5 | */ 6 | 7 | package net.finmath.fouriermethod.models; 8 | 9 | import net.finmath.fouriermethod.CharacteristicFunction; 10 | import net.finmath.modelling.Model; 11 | 12 | /** 13 | * Interface which has to be implemented by models providing the 14 | * characteristic functions of stochastic processes. 15 | * 16 | * @author Christian Fries 17 | * @version 1.0 18 | */ 19 | @FunctionalInterface 20 | public interface CharacteristicFunctionModel extends Model { 21 | 22 | /** 23 | * Returns the characteristic function of X(t), where X is this stochastic process. 24 | * 25 | * @param time The time at which the stochastic process is observed. 26 | * @return The characteristic function of X(t). 27 | */ 28 | CharacteristicFunction apply(double time); 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/fouriermethod/models/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides characteristic functions of stochastic processes (models). 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.fouriermethod.models; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/fouriermethod/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides algorithms related to derivative valuation via 3 | * a models characteristic functions and Fourier transforms of a products payoffs. 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.fouriermethod; 8 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/fouriermethod/products/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides characteristic functions of payoffs / values (products) and their numerical integration against a given model (valuation). 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.fouriermethod.products; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/fouriermethod/products/smile/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Products which are provide a "smile function" \( K \mapsto V(K) \) mapping a product strike to 3 | * the corresponding product value. 4 | * 5 | * @author Alessandro Gnoatto 6 | * @author Christian Fries 7 | */ 8 | package net.finmath.fouriermethod.products.smile; 9 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/functions/DoubleTernaryOperator.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Created on 07.02.2014. 3 | * 4 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 5 | */ 6 | package net.finmath.functions; 7 | 8 | /** 9 | * Functional interface for functions mapping (double,double,double) to double. 10 | * 11 | * @author Christian Fries 12 | * @see java.util.function.DoubleUnaryOperator 13 | * @version 1.0 14 | */ 15 | @FunctionalInterface 16 | public interface DoubleTernaryOperator { 17 | /** 18 | * Applies this operator to the given operands. 19 | * 20 | * @param x the first operand 21 | * @param y the second operand 22 | * @param z the third operand 23 | * @return the operator result 24 | */ 25 | double applyAsDouble(double x, double y, double z); 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/functions/GammaDistribution.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 29.06.2014 5 | */ 6 | 7 | package net.finmath.functions; 8 | 9 | /** 10 | * @author Christian Fries 11 | * @version 1.0 12 | */ 13 | public class GammaDistribution { 14 | 15 | private final org.apache.commons.math3.distribution.GammaDistribution gammaDistribution; 16 | 17 | public GammaDistribution(final double shape, final double scale) { 18 | super(); 19 | gammaDistribution = new org.apache.commons.math3.distribution.GammaDistribution(shape, scale); 20 | } 21 | 22 | /** 23 | * Return the inverse cumulative distribution function at x. 24 | * 25 | * @param x Argument 26 | * @return Inverse cumulative distribution function at x. 27 | */ 28 | public double inverseCumulativeDistribution(final double x) { 29 | return gammaDistribution.inverseCumulativeProbability(x); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/functions/PoissonDistribution.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 29.06.2014 5 | */ 6 | 7 | package net.finmath.functions; 8 | 9 | /** 10 | * @author Christian Fries 11 | * @version 1.0 12 | */ 13 | public class PoissonDistribution { 14 | private final double lambda; 15 | 16 | public PoissonDistribution(final double lambda) { 17 | super(); 18 | this.lambda = lambda; 19 | } 20 | 21 | /** 22 | * Return the inverse cumulative distribution function at x. 23 | * 24 | * @param x Argument 25 | * @return Inverse cumulative distribution function at x. 26 | */ 27 | public double inverseCumulativeDistribution(final double x) { 28 | double p = Math.exp(-lambda); 29 | double dp = p; 30 | int k = 0; 31 | while(x > p) { 32 | k++; 33 | dp *= lambda / k; 34 | p += dp; 35 | } 36 | return k; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/functions/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides some static functions, e.g., analytic valuation formulas or functions from linear algebra. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.functions; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/information/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides information about the library (e.g. the version and build number) and runtime. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.information; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/integration/RealIntegral.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 23.03.2014 5 | */ 6 | 7 | package net.finmath.integration; 8 | 9 | import java.util.function.DoubleUnaryOperator; 10 | 11 | /** 12 | * Interface for real integral. An integral is a map which 13 | * maps a DoubleUnaryOperator to a double. 14 | * 15 | * This is a functional interface. 16 | * 17 | * @author Christian Fries 18 | * @version 1.0 19 | */ 20 | @FunctionalInterface 21 | public interface RealIntegral { 22 | 23 | double integrate(DoubleUnaryOperator integrand); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/integration/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides algorithms for numerical integration and wrappers to libraries with algorithms for numerical integration. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.integration; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/interpolation/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Basic methodologies to interpolate of curves and surfaces are provided here. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.interpolation; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/marketdata/calibration/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes to create a calibrated model of curves from a collection of calibration 3 | * products and corresponding target values. 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.marketdata.calibration; 8 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/marketdata/model/bond/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes related to the modeling of Bond curves. 3 | * See Beier/Fries (2017). 4 | * 5 | * @author Christian Fries 6 | * @author Moritz Scherrmann 7 | */ 8 | package net.finmath.marketdata.model.bond; 9 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/marketdata/model/cds/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes related to the valuations of CDS. 3 | * 4 | * @author Christian Fries 5 | * @author Matthias Föhr 6 | */ 7 | package net.finmath.marketdata.model.cds; 8 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/marketdata/model/curves/locallinearregression/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provided classes implementing the local linear regression method, see see https://ssrn.com/abstract=3073942 3 | * 4 | * @author Christian Fries 5 | * @author Moritz Scherrmann 6 | */ 7 | package net.finmath.marketdata.model.curves.locallinearregression; 8 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/marketdata/model/curves/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides interface specification and implementation of curves, e.g., interest rate 3 | * curves like discount curves and forward curves. 4 | * 5 | * Curves are mappings t → f(t), usually given by a discrete set of points and an interpolation 6 | * and extrapolation methods. 7 | * 8 | * @author Christian Fries 9 | */ 10 | package net.finmath.marketdata.model.curves; 11 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/marketdata/model/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides interface specification and implementation of a model, which is essentially 3 | * a collection of curves. A model exposes the parameters of its elements (curves) 4 | * as a single parameter an can be calibrated using a generic solver. 5 | * 6 | * @author Christian Fries 7 | */ 8 | package net.finmath.marketdata.model; 9 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/marketdata/model/volatilities/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides interface specification and implementation of volatility surfaces, e.g., 3 | * interest rate volatility surfaces like (implied) caplet volatilities and swaption 4 | * volatilities. 5 | * Volatility surfaces are mappings (t,K) → f(t,K), usually given by a discrete 6 | * set of points and an interpolation and extrapolation method or a functional form 7 | * (like the SABR model). 8 | * 9 | * 10 | * @author Christian Fries 11 | */ 12 | package net.finmath.marketdata.model.volatilities; 13 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/marketdata/model/volatility/caplet/CapTenorStructure.java: -------------------------------------------------------------------------------- 1 | package net.finmath.marketdata.model.volatility.caplet; 2 | 3 | /** 4 | * Enum determining the currency of the observed cap or caplet prices. 5 | */ 6 | public enum CapTenorStructure { 7 | EUR, 8 | USD 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/marketdata/model/volatility/caplet/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Algorithms related to bootstrapping and interpolation of caplet implied volatilities. 3 | * 4 | * @TODO The code in this package is still under development and needs some polishing. 5 | */ 6 | package net.finmath.marketdata.model.volatility.caplet; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/marketdata/model/volatility/caplet/smile/SmileInterpolationExtrapolationMethod.java: -------------------------------------------------------------------------------- 1 | package net.finmath.marketdata.model.volatility.caplet.smile; 2 | 3 | /** 4 | * Interface for a Smile inter and extrapolation. 5 | */ 6 | public interface SmileInterpolationExtrapolationMethod { 7 | 8 | double calculateInterpolatedExtrapolatedSmileVolatility(double strike, int rowIndex); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/marketdata/model/volatility/caplet/smile/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Algorithms related to caplet smile interpolation. 3 | */ 4 | package net.finmath.marketdata.model.volatility.caplet.smile; 5 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/marketdata/model/volatility/caplet/tenorconversion/CorrelationProvider.java: -------------------------------------------------------------------------------- 1 | package net.finmath.marketdata.model.volatility.caplet.tenorconversion; 2 | 3 | import net.finmath.exception.CalculationException; 4 | import net.finmath.marketdata.model.AnalyticModel; 5 | 6 | /** 7 | * Interface for a correlation provider for forward curves. 8 | */ 9 | public interface CorrelationProvider { 10 | double getCorrelation(int newTenor, double firstForwardFixingTimeVectorInYears, double secondForwardFixingTimeVectorInYears, AnalyticModel analyticModel, String indexForDiscount) throws CalculationException; 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/marketdata/model/volatility/caplet/tenorconversion/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Algorithms related to caplet tenor conversion. 3 | */ 4 | package net.finmath.marketdata.model.volatility.caplet.tenorconversion; 5 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/marketdata/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Algorithms and methodologies related to market data, e.g., calibration of interest rate curves, interpolation of volatility surfaces. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.marketdata; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/marketdata/products/AbstractAnalyticProduct.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 12.10.2013 5 | */ 6 | 7 | package net.finmath.marketdata.products; 8 | 9 | import net.finmath.marketdata.model.AnalyticModel; 10 | import net.finmath.modelling.Model; 11 | 12 | /** 13 | * @author Christian Fries 14 | * @version 1.0 15 | */ 16 | public abstract class AbstractAnalyticProduct implements AnalyticProduct { 17 | 18 | /* (non-Javadoc) 19 | * @see net.finmath.marketdata.products.ProductInterface#getValue(double, net.finmath.marketdata.products.ModelInterface) 20 | */ 21 | @Override 22 | public Object getValue(final double evaluationTime, final Model model) { 23 | throw new IllegalArgumentException("The product " + this.getClass() 24 | + " cannot be valued against a model " + model.getClass() + "." 25 | + "It requires a model of type " + AnalyticModel.class + "."); 26 | } 27 | 28 | public double getValue(final AnalyticModel model) { 29 | return getValue(0.0, model); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/marketdata/products/AnalyticProduct.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 26.11.2012 5 | */ 6 | package net.finmath.marketdata.products; 7 | 8 | import net.finmath.marketdata.model.AnalyticModel; 9 | import net.finmath.modelling.Product; 10 | 11 | /** 12 | * The interface which has to be implemented by a product which may 13 | * be evaluated using an AnalyticModelFromCurvesAndVols. 14 | * 15 | * @author Christian Fries 16 | * @version 1.0 17 | */ 18 | public interface AnalyticProduct extends Product { 19 | 20 | /** 21 | * Return the valuation of the product using the given model. 22 | * The model has to implement the modes of AnalyticModel. 23 | * 24 | * @param evaluationTime The evaluation time as double. Cash flows prior and including this time are not considered. 25 | * @param model The model under which the product is valued. 26 | * @return The value of the product using the given model. 27 | */ 28 | double getValue(double evaluationTime, AnalyticModel model); 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/marketdata/products/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides interface specification and implementation of products, e.g., calibration products. 3 | * Products can be valued using the model (which provides valuation curves). 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.marketdata.products; 8 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/marketdata2/calibration/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes to create a calibrated model of curves from a collection of calibration 3 | * products and corresponding target values. 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.marketdata2.calibration; 8 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/marketdata2/interpolation/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Basic methodologies to interpolate of curves and surfaces are provided here. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.marketdata2.interpolation; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/marketdata2/model/curves/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides interface specification and implementation of curves, e.g., interest rate 3 | * curves like discount curves and forward curves. 4 | * 5 | * Curves are mappings t → f(t), usually given by a discrete set of points and an interpolation 6 | * and extrapolation methods. 7 | * 8 | * @author Christian Fries 9 | */ 10 | package net.finmath.marketdata2.model.curves; 11 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/marketdata2/model/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides interface specification and implementation of a model, which is essentially 3 | * a collection of curves. A model exposes the parameters of its elements (curves) 4 | * as a single parameter an can be calibrated using a generic solver. 5 | * 6 | * @author Christian Fries 7 | */ 8 | package net.finmath.marketdata2.model; 9 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/marketdata2/model/volatilities/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides interface specification and implementation of volatility surfaces, e.g., 3 | * interest rate volatility surfaces like (implied) caplet volatilities and swaption 4 | * volatilities. 5 | * Volatility surfaces are mappings (t,K) → f(t,K), usually given by a discrete 6 | * set of points and an interpolation and extrapolation method or a functional form 7 | * (like the SABR model). 8 | * 9 | * 10 | * @author Christian Fries 11 | */ 12 | package net.finmath.marketdata2.model.volatilities; 13 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/marketdata2/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Algorithms and methodologies related to market data, e.g., calibration of interest rate curves, interpolation of volatility surfaces. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.marketdata2; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/marketdata2/products/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides interface specification and implementation of products, e.g., calibration products. 3 | * Products can be valued using the model (which provides valuation curves). 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.marketdata2.products; 8 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/modelling/DescribedModel.java: -------------------------------------------------------------------------------- 1 | package net.finmath.modelling; 2 | 3 | /** 4 | * Interface for models which can provide a complete description of their model parameters (independent of the implementation of the numerical method). 5 | * 6 | * @author Christian Fries 7 | * 8 | * @param An interface extending the ModelDescriptor interface, being rich enough to describe the model implementing this interface. 9 | * @version 1.0 10 | */ 11 | public interface DescribedModel extends Model { 12 | 13 | /** 14 | * Return a model descriptor representing this model. 15 | * 16 | * @return The model descriptor of this model. 17 | */ 18 | M getDescriptor(); 19 | 20 | /** 21 | * Construct a product from a product descriptor, which may be valued by this model. 22 | * 23 | * @param productDescriptor Given product descriptor. 24 | * @return An instance of a product implementation. 25 | */ 26 | DescribedProduct getProductFromDescriptor(ProductDescriptor productDescriptor); 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/modelling/DescribedProduct.java: -------------------------------------------------------------------------------- 1 | package net.finmath.modelling; 2 | 3 | /** 4 | * Interface for products which can provide a complete description of themself, i.e. the model parameters (independent of the implementation of the numerical method). 5 | * 6 | * @author Christian Fries 7 | * 8 | * @param An interface extending the ProductDescriptor interface, being rich enough to describe the product implementing this interface. 9 | * @version 1.0 10 | */ 11 | public interface DescribedProduct extends Product { 12 | 13 | /** 14 | * Return a product descriptor representing this product. 15 | * 16 | * @return The product descriptor of this product. 17 | */ 18 | T getDescriptor(); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/modelling/InterestRateProductDescriptor.java: -------------------------------------------------------------------------------- 1 | package net.finmath.modelling; 2 | 3 | /** 4 | * Marker interface for interest rate product descriptors. 5 | * 6 | * @author Christian Fries 7 | * @author Roland Bachl 8 | * @version 1.0 9 | */ 10 | public interface InterestRateProductDescriptor extends ProductDescriptor { 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/modelling/Model.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 11.10.2013 5 | */ 6 | 7 | package net.finmath.modelling; 8 | 9 | /** 10 | * Interface to be implemented by all model. 11 | * Used in specification of the Product. 12 | * For a description of the general concept see http://finmath.net/finmath-lib/concepts/separationofproductandmodel. 13 | * 14 | * @author Christian Fries 15 | * @version 1.0 16 | */ 17 | public interface Model { 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/modelling/ModelDescriptor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 09.02.2018 5 | */ 6 | 7 | package net.finmath.modelling; 8 | 9 | /** 10 | * Interface for a model descriptor. 11 | * For a description of the general concept see http://finmath.net/finmath-lib/concepts/separationofproductandmodel. 12 | * 13 | * @author Christian Fries 14 | * @version 1.0 15 | */ 16 | public interface ModelDescriptor { 17 | 18 | /** 19 | * Return the version of the model description. 20 | * 21 | * @return Version number. 22 | */ 23 | Integer version(); 24 | 25 | /** 26 | * Return the name of the model represented by this descriptor. 27 | * 28 | * @return Name of the model. 29 | */ 30 | String name(); 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/modelling/ModelFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 09.02.2018 5 | */ 6 | 7 | package net.finmath.modelling; 8 | 9 | /** 10 | * A factory to instantiate a model from a given descriptor. 11 | * 12 | * Factories are specific to a numerical method. 13 | * 14 | * @author Christian Fries 15 | * @author Luca Del Re 16 | * 17 | * @param An interface extending model descriptor given the descriptor describing the class impelmenting this interface. 18 | * @version 1.0 19 | */ 20 | public interface ModelFactory { 21 | 22 | /** 23 | * Get the model for the given descriptor. 24 | * 25 | * @param descriptor An object being able to describe the given model. 26 | * @return The model. 27 | */ 28 | DescribedModel getModelFromDescriptor(T descriptor); 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/modelling/ProductDescriptor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 09.02.2018 5 | */ 6 | 7 | package net.finmath.modelling; 8 | 9 | /** 10 | * Interface for a product descriptor. 11 | * For a description of the general concept see http://finmath.net/finmath-lib/concepts/separationofproductandmodel. 12 | * 13 | * @author Christian Fries 14 | * @version 1.0 15 | */ 16 | public interface ProductDescriptor { 17 | 18 | /** 19 | * Return the version of the model description. 20 | * 21 | * @return Version number. 22 | */ 23 | Integer version(); 24 | 25 | /** 26 | * Return the name of the model represented by this descriptor. 27 | * 28 | * @return Name of the model. 29 | */ 30 | String name(); 31 | 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/modelling/ProductFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 09.02.2018 5 | */ 6 | 7 | package net.finmath.modelling; 8 | 9 | /** 10 | * 11 | * @author Christian Fries 12 | * @author Luca Del Re 13 | * 14 | * @param

The base class of the product descriptors which can be handled by this ProductFactory. 15 | * @version 1.0 16 | */ 17 | public interface ProductFactory

{ 18 | 19 | /** 20 | * Constructs the product from a given product descriptor. 21 | * 22 | * @param descriptor A product descriptor. 23 | * @return An instance of the product describable by this descriptor. 24 | */ 25 | DescribedProduct getProductFromDescriptor(ProductDescriptor descriptor); 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/modelling/SingleAssetProductDescriptor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 09.02.2018 5 | */ 6 | 7 | package net.finmath.modelling; 8 | 9 | /** 10 | * Interface for a product descriptor. 11 | * For a description of the general concept see http://finmath.net/finmath-lib/concepts/separationofproductandmodel. 12 | * 13 | * @author Christian Fries 14 | * @version 1.0 15 | */ 16 | public interface SingleAssetProductDescriptor extends ProductDescriptor { 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/modelling/descriptor/AssetModelDescriptor.java: -------------------------------------------------------------------------------- 1 | package net.finmath.modelling.descriptor; 2 | 3 | import net.finmath.modelling.ModelDescriptor; 4 | 5 | /** 6 | * Marker interface for descriptors describing an asset model. 7 | * 8 | * @author Christian Fries 9 | * @author Roland Bachl 10 | * @version 1.0 11 | */ 12 | public interface AssetModelDescriptor extends ModelDescriptor { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/modelling/descriptor/InterestRateModelDescriptor.java: -------------------------------------------------------------------------------- 1 | package net.finmath.modelling.descriptor; 2 | 3 | import net.finmath.modelling.ModelDescriptor; 4 | 5 | /** 6 | * Marker interface for descriptors describing an interest rate model. 7 | * 8 | * @author Christian Fries 9 | * @author Roland Bachl 10 | * @version 1.0 11 | */ 12 | public interface InterestRateModelDescriptor extends ModelDescriptor { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/modelling/descriptor/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides interface separating implementation from specification (of models and products) 3 | * 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.modelling.descriptor; 8 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/modelling/descriptor/xmlparser/XMLParser.java: -------------------------------------------------------------------------------- 1 | package net.finmath.modelling.descriptor.xmlparser; 2 | 3 | import java.io.File; 4 | import java.io.IOException; 5 | 6 | import javax.xml.parsers.ParserConfigurationException; 7 | 8 | import org.xml.sax.SAXException; 9 | 10 | import net.finmath.modelling.ProductDescriptor; 11 | 12 | /** 13 | * Interface for XML parsers creating a product descriptor from an XML file. 14 | * 15 | * @author Christian Fries 16 | * @author Roland Bachl 17 | */ 18 | public interface XMLParser { 19 | 20 | /** 21 | * Parse a product descriptor from a file. 22 | * 23 | * @param file File containing a trade. 24 | * @return Product descriptor extracted from the file. 25 | * @throws SAXException Thrown by the xml parser. 26 | * @throws IOException Thrown if the file in not found or another IO error occured. 27 | * @throws ParserConfigurationException Thrown by the xml parser. 28 | */ 29 | ProductDescriptor getProductDescriptor(File file) throws SAXException, IOException, ParserConfigurationException; 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/modelling/descriptor/xmlparser/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides xml parsers to construct descriptors from XML 3 | * 4 | * @author Christian Fries 5 | * @author Roland Bachl 6 | */ 7 | package net.finmath.modelling.descriptor.xmlparser; 8 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/modelling/modelfactory/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes to build models from descriptors. 3 | * 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.modelling.modelfactory; 8 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/modelling/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides interface separating models and products. 3 | * 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.modelling; 8 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/modelling/productfactory/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes to build products from descriptors. 3 | * 4 | * 5 | * @author Christian Fries 6 | * @author Roland Bachl 7 | */ 8 | package net.finmath.modelling.productfactory; 9 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/modelling/products/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Interface and base classes related to products. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.modelling.products; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/RandomVariableFloatFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. All rights reserved. Contact: email@christianfries.com. 3 | * 4 | * Created on 21.06.2017 5 | */ 6 | 7 | package net.finmath.montecarlo; 8 | 9 | import net.finmath.stochastic.RandomVariable; 10 | 11 | /** 12 | * @author Christian Fries 13 | * 14 | */ 15 | public class RandomVariableFloatFactory extends AbstractRandomVariableFactory { 16 | 17 | private static final long serialVersionUID = 3368581641610610123L; 18 | 19 | public RandomVariableFloatFactory() { 20 | super(); 21 | } 22 | 23 | @Override 24 | public RandomVariable createRandomVariable(final double time, final double value) { 25 | return new RandomVariableFromFloatArray(time, value); 26 | } 27 | 28 | @Override 29 | public RandomVariable createRandomVariable(final double time, final double[] values) { 30 | return new RandomVariableFromFloatArray(time, values); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/RandomVariableLazyEvaluationFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 09.02.2004 5 | */ 6 | package net.finmath.montecarlo; 7 | 8 | import net.finmath.stochastic.RandomVariable; 9 | 10 | /** 11 | * 12 | * @author Christian Fries 13 | * @version 1.0 14 | */ 15 | public class RandomVariableLazyEvaluationFactory extends AbstractRandomVariableFactory { 16 | 17 | /** 18 | * 19 | */ 20 | private static final long serialVersionUID = 5474699190536441150L; 21 | 22 | @Override 23 | public RandomVariable createRandomVariable(final double time, final double value) { 24 | return new RandomVariableLazyEvaluation(time, value); 25 | } 26 | 27 | @Override 28 | public RandomVariable createRandomVariable(final double time, final double[] values) { 29 | return new RandomVariableLazyEvaluation(time, values); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/assetderivativevaluation/MonteCarloBlackScholesModelClassDiagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/finmath/finmath-lib/b7a1cb5ef752057feca7c048cc700a8f52e9676c/src/main/java8/net/finmath/montecarlo/assetderivativevaluation/MonteCarloBlackScholesModelClassDiagram.png -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/assetderivativevaluation/models/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Equity models implementing {@link net.finmath.montecarlo.model.ProcessModel} 3 | * e.g. by extending {@link net.finmath.montecarlo.model.AbstractProcessModel}. 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.montecarlo.assetderivativevaluation.models; 8 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/assetderivativevaluation/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Monte-Carlo models for asset value processes, like the Black Scholes model. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.montecarlo.assetderivativevaluation; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/assetderivativevaluation/products/AssetMonteCarloProduct.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 17.02.2013 5 | */ 6 | package net.finmath.montecarlo.assetderivativevaluation.products; 7 | 8 | import net.finmath.exception.CalculationException; 9 | import net.finmath.montecarlo.assetderivativevaluation.AssetModelMonteCarloSimulationModel; 10 | import net.finmath.stochastic.RandomVariable; 11 | 12 | /** 13 | * Interface for products requiring an AssetModelMonteCarloSimulationModel for valuation. 14 | * 15 | * @author Christian Fries 16 | * @version 1.0 17 | */ 18 | public interface AssetMonteCarloProduct { 19 | 20 | RandomVariable getValue(double evaluationTime, AssetModelMonteCarloSimulationModel model) throws CalculationException; 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/assetderivativevaluation/products/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Products which may be valued using an AssetModelMonteCarloSimulationModel. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.montecarlo.assetderivativevaluation.products; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/automaticdifferentiation/IndependentModelParameterProvider.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christianfries.com. 3 | * 4 | * Created on 02.07.2017 5 | */ 6 | 7 | package net.finmath.montecarlo.automaticdifferentiation; 8 | 9 | import java.util.Map; 10 | 11 | import net.finmath.stochastic.RandomVariable; 12 | 13 | /** 14 | * Interface implemented by model which can provide their independent model parameters. 15 | * 16 | * This is useful for the model independent calculation of derivatives using AAD. 17 | * 18 | * @author Christian Fries 19 | */ 20 | public interface IndependentModelParameterProvider { 21 | 22 | /** 23 | * Returns a map of independent model parameters of this model. 24 | * 25 | * @return Map of independent model parameters of this model. 26 | */ 27 | default Map getModelParameters() { 28 | // TODO Remove default implementation in 4.0.0 version to enforce models complying with this interface. NOTE: The default here is to allow backward compatibility. 29 | throw new UnsupportedOperationException(); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/automaticdifferentiation/backward/alternative/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides alternative implementation of backward automatic differentiation. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.montecarlo.automaticdifferentiation.backward.alternative; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/automaticdifferentiation/backward/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides the implementation of backward automatic differentiation. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.montecarlo.automaticdifferentiation.backward; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/automaticdifferentiation/forward/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides the implementation of forward automatic differentiation. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.montecarlo.automaticdifferentiation.forward; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/automaticdifferentiation/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes adding automatic differentiation capabilities to objects relying on RandomVariable objects. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.montecarlo.automaticdifferentiation; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/conditionalexpectation/MonteCarloConditionalExpectationLinearRegressionFactory.java: -------------------------------------------------------------------------------- 1 | package net.finmath.montecarlo.conditionalexpectation; 2 | 3 | import net.finmath.stochastic.ConditionalExpectationEstimator; 4 | import net.finmath.stochastic.RandomVariable; 5 | 6 | /** 7 | * Provides a linear regression for a vector of regression basis functions. 8 | * 9 | * @author Christian Fries 10 | */ 11 | public class MonteCarloConditionalExpectationLinearRegressionFactory implements MonteCarloConditionalExpectationRegressionFactory { 12 | 13 | @Override 14 | public ConditionalExpectationEstimator getConditionalExpectationEstimator(final RandomVariable[] basisFunctionsEstimator, final RandomVariable[] basisFunctionsPredictor) { 15 | return new MonteCarloConditionalExpectationRegression(basisFunctionsEstimator, basisFunctionsPredictor); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/conditionalexpectation/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Algorithms to perform the calculation of conditional expectations in Monte-Carlo simulations, 3 | * also known as "American Monte-Carlo". 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.montecarlo.conditionalexpectation; 8 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/crosscurrency/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes for Cross-Currency models to be implemented via Monte-Carlo 3 | * algorithms from net.finmath.montecarlo.process. 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.montecarlo.crosscurrency; 8 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/hybridassetinterestrate/HybridAssetLIBORModelMonteCarloSimulation.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 03.04.2015 5 | */ 6 | package net.finmath.montecarlo.hybridassetinterestrate; 7 | 8 | import net.finmath.montecarlo.MonteCarloSimulationModel; 9 | import net.finmath.montecarlo.assetderivativevaluation.AssetModelMonteCarloSimulationModel; 10 | import net.finmath.montecarlo.interestrate.LIBORModelMonteCarloSimulationModel; 11 | 12 | /** 13 | * Basic interface which has to be implemented by Monte Carlo models for hybrid processes. 14 | * 15 | * @author Christian Fries 16 | * @version 1.0 17 | */ 18 | public interface HybridAssetLIBORModelMonteCarloSimulation extends MonteCarloSimulationModel, LIBORModelMonteCarloSimulationModel, AssetModelMonteCarloSimulationModel { 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/hybridassetinterestrate/RiskFactorFX.java: -------------------------------------------------------------------------------- 1 | package net.finmath.montecarlo.hybridassetinterestrate; 2 | 3 | public class RiskFactorFX implements RiskFactorID { 4 | 5 | private final String name; 6 | 7 | public RiskFactorFX(String name) { 8 | super(); 9 | this.name = name; 10 | } 11 | 12 | @Override 13 | public String getName() { 14 | return name; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/hybridassetinterestrate/RiskFactorForwardRate.java: -------------------------------------------------------------------------------- 1 | package net.finmath.montecarlo.hybridassetinterestrate; 2 | 3 | public class RiskFactorForwardRate implements RiskFactorID { 4 | 5 | private final String name; 6 | private final double periodStart; 7 | private final double periodEnd; 8 | 9 | public RiskFactorForwardRate(String name, double periodStart, double periodEnd) { 10 | super(); 11 | this.name = name; 12 | this.periodStart = periodStart; 13 | this.periodEnd = periodEnd; 14 | } 15 | 16 | @Override 17 | public String getName() { 18 | return name; 19 | } 20 | 21 | public double getPeriodStart() { 22 | return periodStart; 23 | } 24 | 25 | public double getPeriodEnd() { 26 | return periodEnd; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/hybridassetinterestrate/RiskFactorID.java: -------------------------------------------------------------------------------- 1 | package net.finmath.montecarlo.hybridassetinterestrate; 2 | 3 | public interface RiskFactorID { 4 | 5 | /** 6 | * @return The name of the risk factor. 7 | */ 8 | String getName(); 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/hybridassetinterestrate/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides interfaces and classes needed to generate a Hybrid Asset LIBOR Market Model. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.montecarlo.hybridassetinterestrate; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/hybridassetinterestrate/products/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes which implement financial products which may be 3 | * valued using a net.finmath.montecarlo.hybridassetinterestrate.HybridAssetLIBORModelMonteCarloSimulation. 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.montecarlo.hybridassetinterestrate.products; 8 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/interestrate/LIBORModelCalibrationDiagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/finmath/finmath-lib/b7a1cb5ef752057feca7c048cc700a8f52e9676c/src/main/java8/net/finmath/montecarlo/interestrate/LIBORModelCalibrationDiagram.png -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/interestrate/models/covariance/TermStructureCovarianceModel.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 24.12.2016 5 | */ 6 | package net.finmath.montecarlo.interestrate.models.covariance; 7 | 8 | /** 9 | * A base class and interface description for the instantaneous covariance of 10 | * an forward rate interest rate model. 11 | * 12 | * @author Christian Fries 13 | * @version 1.0 14 | */ 15 | public interface TermStructureCovarianceModel extends TermStructureTenorTimeScaling, TermStructureFactorLoadingsModel { 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/interestrate/models/covariance/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Contains covariance models and their calibration as plug-ins for the LIBOR market model and volatility and correlation models which may be used to build a covariance model. 3 | * Covariance models provide they free parameters via an interface. The class AbstractLIBORCovarianceModelParametric provides a method that implements the generic calibration of the models. 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.montecarlo.interestrate.models.covariance; 8 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/interestrate/models/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Interest rate models implementing {@link net.finmath.montecarlo.model.ProcessModel} 3 | * e.g. by extending {@link net.finmath.montecarlo.model.AbstractProcessModel}. 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.montecarlo.interestrate.models; 8 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/interestrate/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes needed to generate a LIBOR market model (using numerical 3 | * algorithms from net.finmath.montecarlo.process. 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.montecarlo.interestrate; 8 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/interestrate/products/components/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides a set product components which allow to build financial products by composition. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.montecarlo.interestrate.products.components; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/interestrate/products/indices/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides a set of indices which can be used as part of a period. 3 | * 4 | * @see net.finmath.montecarlo.interestrate.products.components.Period 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.montecarlo.interestrate.products.indices; 8 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/interestrate/products/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes which implement financial products which may be 3 | * valued using a net.finmath.montecarlo.interestrate.LIBORModelMonteCarloSimulationModel. 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.montecarlo.interestrate.products; 8 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/interestrate/simple/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Simplified version of Monte-Carlo interest rate model - LIBOR Market Model. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.montecarlo.interestrate.simple; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/model/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides an interface and a base class for process models, i.e., models providing the parameters for 3 | * stochastic processes. 4 | * 5 | * The concept here is that we separate the numerical discretization scheme of an SDE from the parameterization of the SDE. 6 | * 7 | * @author Christian Fries 8 | */ 9 | package net.finmath.montecarlo.model; 10 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides basic interfaces and classes used in Monte-Carlo models (like LIBOR market model or Monte-Carlo simulation 3 | * of a Black-Scholes model), e.g., the Monte-Carlo random variable and the Brownian motion. 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.montecarlo; 8 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/process/ProcessTimeDiscretizationProvider.java: -------------------------------------------------------------------------------- 1 | package net.finmath.montecarlo.process; 2 | 3 | import java.time.LocalDateTime; 4 | 5 | import net.finmath.time.TimeDiscretization; 6 | 7 | /** 8 | * An object implementing this interfaces provides a suggestion for an optimal time-discretization 9 | * associated with this object. 10 | * 11 | * Examples are: 12 | *

    13 | *
  • 14 | * a European option can implement this interface and provide a time discretization with a single point, its exercise date. 15 | *
  • 16 | *
17 | * 18 | * @author Christian Fries 19 | */ 20 | public interface ProcessTimeDiscretizationProvider { 21 | 22 | /** 23 | * Returns a suggestion for a time discretization which is suited (or required) for the processing (e.g valuation) of this object. 24 | * 25 | * @param referenceDate A reference date relative to which the discretization is generated. 26 | * @return A time discretization. 27 | */ 28 | TimeDiscretization getProcessTimeDiscretization(LocalDateTime referenceDate); 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/process/component/barrier/ProcessWithBarrier.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Created on 29.06.2008 3 | * 4 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 5 | */ 6 | package net.finmath.montecarlo.process.component.barrier; 7 | 8 | 9 | /** 10 | * @author Christian Fries 11 | * @since finmath-lib 4.1.0 12 | * @version 1.0 13 | */ 14 | public interface ProcessWithBarrier { 15 | 16 | Barrier getBarrier(); 17 | 18 | void setBarrier(Barrier barrier); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/process/component/barrier/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Components providing the barrier in the Monte-Carlo simulation with barrier. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.montecarlo.process.component.barrier; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/process/component/factortransform/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Components providing the factor drift in the simulation of a proxy simulation scheme. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.montecarlo.process.component.factortransform; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/process/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Interfaced for stochastic processes and numerical schemes for stochastic processes (SDEs), like the Euler scheme. 3 | * The Euler scheme implementation is more generic and can be configured for 4 | * log-Euler scheme or predictor corrector scheme. 5 | * 6 | * The parameters have to be provided by a process model. 7 | * 8 | * @see net.finmath.montecarlo.model 9 | * @author Christian Fries 10 | */ 11 | package net.finmath.montecarlo.process; 12 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/products/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Products which are model independent, but assume a Monte-Carlo simulation. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.montecarlo.products; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/templatemethoddesign/MonteCalorBlackScholesModelTemplateMethodDesign.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/finmath/finmath-lib/b7a1cb5ef752057feca7c048cc700a8f52e9676c/src/main/java8/net/finmath/montecarlo/templatemethoddesign/MonteCalorBlackScholesModelTemplateMethodDesign.png -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/templatemethoddesign/assetderivativevaluation/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Legacy classes related to Monte-Carlo simulation - used for teaching only. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.montecarlo.templatemethoddesign.assetderivativevaluation; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/montecarlo/templatemethoddesign/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Legacy classes related to Monte-Carlo simulation - used for teaching only. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.montecarlo.templatemethoddesign; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/optimizer/OptimizerFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 29.05.2015 5 | */ 6 | 7 | package net.finmath.optimizer; 8 | 9 | import net.finmath.optimizer.Optimizer.ObjectiveFunction; 10 | 11 | /** 12 | * @author Christian Fries 13 | * 14 | * @version 1.0 15 | */ 16 | public interface OptimizerFactory { 17 | 18 | Optimizer getOptimizer(ObjectiveFunction objectiveFunction, double[] initialParameters, double[] targetValues); 19 | 20 | Optimizer getOptimizer(ObjectiveFunction objectiveFunction, double[] initialParameters, double[] lowerBound, double[] upperBound, double[] targetValues); 21 | 22 | Optimizer getOptimizer(ObjectiveFunction objectiveFunction, double[] initialParameters, double[] lowerBound, double[] upperBound, double[] parameterStep, double[] targetValues); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/parser/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Contains classes for parsing files. 3 | * 4 | * @author Roland Bachl 5 | */ 6 | package net.finmath.parser; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/randomnumbers/RandomNumberGenerator.java: -------------------------------------------------------------------------------- 1 | package net.finmath.randomnumbers; 2 | 3 | import java.io.Serializable; 4 | 5 | /** 6 | * Interface for an n-dimensional random number generator 7 | * generating a sequence of vectors sampling the space [0,1]^{n} 8 | * 9 | * @author Christian Fries 10 | * @version 1.0 11 | */ 12 | public interface RandomNumberGenerator extends Serializable { 13 | 14 | /** 15 | * Get the next sample vector of dimension n, where n is getDimension. 16 | * 17 | * An implementation has to be thread safe. 18 | * 19 | * @return The next sample vector of dimension n, where n is getDimension. 20 | */ 21 | double[] getNext(); 22 | 23 | /** 24 | * Get the sample vector dimension. 25 | * 26 | * @return The sample vector dimension n. 27 | */ 28 | int getDimension(); 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/randomnumbers/SobolSequence1D.java: -------------------------------------------------------------------------------- 1 | package net.finmath.randomnumbers; 2 | 3 | /** 4 | * Implements a multi-dimensional Sobol sequence. 5 | * 6 | * The class is just a wrapper to Apache commons-math implementation 7 | * in order to implement the interfaces RandomNumberGenerator1D 8 | * and {@link java.util.function.DoubleSupplier}. 9 | * 10 | * @author Christian Fries 11 | * @version 1.0 12 | */ 13 | public class SobolSequence1D implements RandomNumberGenerator1D { 14 | 15 | private static final long serialVersionUID = 1368710922067034251L; 16 | 17 | private final SobolSequence sobolSequence; 18 | 19 | /** 20 | * Create a Sobol sequence. 21 | */ 22 | public SobolSequence1D() { 23 | super(); 24 | sobolSequence = new SobolSequence(1); 25 | } 26 | 27 | @Override 28 | public double nextDouble() { 29 | return sobolSequence.getNext()[0]; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/randomnumbers/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Random number generators for samples of uniform distributed random variables and generators and transformation for other distriburtions. 3 | * 4 | * Classes in this package provide wrappers for random number generators from thirs party libraries (e.g. Mersenne-Twister from commons-math), 5 | * native implementation of quasi random number gerantors (e.g. Halton sequence) and algorithm to sample other distributions 6 | * (like the Acceptance-Rejection method). 7 | * 8 | * @author Christian Fries 9 | */ 10 | package net.finmath.randomnumbers; 11 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/rootfinder/AbstractRootFinder.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Created on 12.10.2007 3 | * 4 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 5 | */ 6 | package net.finmath.rootfinder; 7 | 8 | /** 9 | * @author Christian Fries 10 | * @version 1.0 11 | */ 12 | public abstract class AbstractRootFinder implements RootFinder, RootFinderWithDerivative { 13 | 14 | @Override 15 | public void setValueAndDerivative(final double value, final double derivative) { 16 | setValue(value); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/rootfinder/StochasticRootFinder.java: -------------------------------------------------------------------------------- 1 | package net.finmath.rootfinder; 2 | 3 | import net.finmath.stochastic.RandomVariable; 4 | 5 | /** 6 | * @author Christian Fries 7 | * @author Stefan Sedlmair 8 | * @version 1.0 9 | */ 10 | public interface StochasticRootFinder { 11 | 12 | /** 13 | * @return Next point for which a value should be set using setValue. 14 | */ 15 | RandomVariable getNextPoint(); 16 | 17 | /** 18 | * @param value Value corresponding to point returned 19 | * by previous getNextPoint call. 20 | */ 21 | void setValue(RandomVariable value); 22 | 23 | /** 24 | * @return Returns the numberOfIterations. 25 | */ 26 | int getNumberOfIterations(); 27 | 28 | /** 29 | * @return Best point obtained so far 30 | */ 31 | RandomVariable getBestPoint(); 32 | 33 | /** 34 | * @return Returns the accuracy. 35 | */ 36 | double getAccuracy(); 37 | 38 | /** 39 | * @return Returns true if further improvement is not possible. 40 | */ 41 | boolean isDone(); 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/rootfinder/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Interfaces and classes provided variantes of one dimensional root finder to solve 3 | * f(x) = 0, like Bisection Search, Newtons Method. 4 | * An application of the solver is the calculation of the implied volatiltiy. 5 | * 6 | * @author Christian Fries 7 | */ 8 | package net.finmath.rootfinder; 9 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/singleswaprate/annuitymapping/ConstantNormalizer.java: -------------------------------------------------------------------------------- 1 | package net.finmath.singleswaprate.annuitymapping; 2 | 3 | /** 4 | * Constant normalizer returning the value one. 5 | * 6 | * @author Christian Fries 7 | * @author Roland Bachl 8 | * 9 | */ 10 | public class ConstantNormalizer implements NormalizingFunction { 11 | 12 | @Override 13 | public double getValue(final double swapRate) { 14 | return 1; 15 | } 16 | 17 | @Override 18 | public double getFirstDerivative(final double swapRate) { 19 | return 0; 20 | } 21 | 22 | @Override 23 | public double getSecondDerivative(final double swapRate) { 24 | return 0; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/singleswaprate/annuitymapping/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Classes providing options for the annuity mapping function. These replace the annuity, which is dependent on bonds of multiple maturities, with a function that solely 3 | * depends on a single swap rate. Thus allowing to use vanilla models where otherwise term structure models would be necessary. 4 | * 5 | * @author Christian Fries 6 | * @author Roland Bachl 7 | */ 8 | package net.finmath.singleswaprate.annuitymapping; 9 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/singleswaprate/calibration/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Classes providing calibration to market data of volatility cubes. 3 | * 4 | * @author Christian Fries 5 | * @author Roland Bachl 6 | */ 7 | package net.finmath.singleswaprate.calibration; 8 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/singleswaprate/data/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes to store and interact with market data. 3 | * 4 | * @author Christian Fries 5 | * @author Roland Bachl 6 | */ 7 | package net.finmath.singleswaprate.data; 8 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/singleswaprate/model/curves/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Additional curves for use in an analytic model, {@link net.finmath.marketdata.model.AnalyticModel}. 3 | * 4 | * @author Christian Fries 5 | * @author Roland Bachl 6 | */ 7 | package net.finmath.singleswaprate.model.curves; 8 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/singleswaprate/model/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Classes extending the regular analytic model, see {@link net.finmath.marketdata.model}, with the capacity to hold volatility cubes, 3 | * see {@link net.finmath.singleswaprate.model.volatilities.VolatilityCube}. 4 | * 5 | * @author Christian Fries 6 | * @author Roland Bachl 7 | */ 8 | package net.finmath.singleswaprate.model; 9 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/singleswaprate/model/volatilities/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides interface specification and implementation of volatility cubes, as well as a factory to create these, either via calibration from market data or construction 3 | * from parameters. Generally these cubes store normal implied volatilities of physically settled swaptions. 4 | * 5 | * @author Christian Fries 6 | * @author Roland Bachl 7 | */ 8 | package net.finmath.singleswaprate.model.volatilities; 9 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/singleswaprate/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Contains all classes related to interest rate derivatives, which are evaluated by a change of measure to the annuity measure of a single swap rate. 3 | * Most notable examples include the cash settled swaption and the constant maturity swap. 4 | * 5 | * @author Christian Fries 6 | * @author Roland Bachl 7 | * 8 | */ 9 | package net.finmath.singleswaprate; 10 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/singleswaprate/products/AnalyticVolatilityCubeProduct.java: -------------------------------------------------------------------------------- 1 | package net.finmath.singleswaprate.products; 2 | 3 | import net.finmath.marketdata.products.AnalyticProduct; 4 | import net.finmath.singleswaprate.model.VolatilityCubeModel; 5 | 6 | /** 7 | * The interface of a product to be evaluated using a {@link VolatilityCubeModel}. 8 | * 9 | * @author Christian Fries 10 | * @author Roland Bachl 11 | * 12 | */ 13 | public interface AnalyticVolatilityCubeProduct extends AnalyticProduct { 14 | 15 | /** 16 | * Return the valuation of the product using the given model. 17 | * The model has to implement the modes of {@link VolatilityCubeModel}. 18 | * 19 | * @param evaluationTime The evaluation time as double. Cash flows prior and including this time are not considered. 20 | * @param model The model under which the product is valued. 21 | * @return The value of the product using the given model. 22 | */ 23 | double getValue(double evaluationTime, VolatilityCubeModel model); 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/singleswaprate/products/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides interface specification and implementation of product based on a single interest rate curve. 3 | * 4 | * @author Christian Fries 5 | * @author Roland Bachl 6 | */ 7 | package net.finmath.singleswaprate.products; 8 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/stochastic/ConditionalExpectationEstimator.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 13.08.2004 5 | */ 6 | package net.finmath.stochastic; 7 | 8 | /** 9 | * The interface which has to be implemented by a fixed conditional expectation operator, 10 | * i.e., E( · | Z ) for a fixed Z. 11 | * 12 | * @author Christian Fries 13 | * @version 1.0 14 | */ 15 | public interface ConditionalExpectationEstimator { 16 | 17 | /** 18 | * Return the conditional expectation of a given random variable. 19 | * The definition of the filtration time is part of the object implementing this interface. 20 | * 21 | * @param randomVariable Given random variable. 22 | * @return The conditional expectation of randomVariable. 23 | */ 24 | RandomVariable getConditionalExpectation(RandomVariable randomVariable); 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/stochastic/RandomVariable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/finmath/finmath-lib/b7a1cb5ef752057feca7c048cc700a8f52e9676c/src/main/java8/net/finmath/stochastic/RandomVariable.png -------------------------------------------------------------------------------- /src/main/java8/net/finmath/stochastic/RandomVariableAccumulator.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 29.06.2013 5 | */ 6 | package net.finmath.stochastic; 7 | 8 | 9 | /** 10 | * The interface implemented by a mutable random variable accumulator. 11 | * An object of this class accumulates other random variables. 12 | * The classical application is the accumulation of discounted cash flows. 13 | * 14 | * @author Christian Fries 15 | * @version 1.3 16 | */ 17 | public interface RandomVariableAccumulator extends RandomVariable { 18 | 19 | void accumulate(RandomVariable randomVariable); 20 | void accumulate(double time, RandomVariable randomVariable); 21 | 22 | RandomVariable get(); 23 | RandomVariable get(double fromTime, double toTime); 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/stochastic/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Interfaces specifying operations on random variables. For implementation see also 3 | * {@link net.finmath.montecarlo} e.g. {@link net.finmath.montecarlo.RandomVariableFromDoubleArray}. 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.stochastic; 8 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/time/Tenor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 07.09.2013 5 | */ 6 | 7 | package net.finmath.time; 8 | 9 | import java.time.LocalDate; 10 | 11 | /** 12 | * @author Christian Fries 13 | * 14 | * @version 1.0 15 | */ 16 | public interface Tenor { 17 | 18 | /** 19 | * @return The reference date of this tenor, i.e., the date mapped to 0.0 20 | */ 21 | LocalDate getReferenceDate(); 22 | 23 | /** 24 | * Returns the date for the given time index. 25 | * 26 | * @param timeIndex Time index 27 | * @return Returns the date for a given time index. 28 | */ 29 | LocalDate getDate(int timeIndex); 30 | 31 | /** 32 | * Returns the day count fraction for the period form timeIndex to to timeIndex+1. 33 | * 34 | * @param timeIndex Time index 35 | * @return Returns the day count fraction. 36 | */ 37 | double getDaycountFraction(int timeIndex); 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/time/businessdaycalendar/BusinessdayCalendarAny.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 15.09.2013 5 | */ 6 | 7 | package net.finmath.time.businessdaycalendar; 8 | 9 | import java.time.LocalDate; 10 | 11 | /** 12 | * A business day calendar, where every day is a business day. 13 | * 14 | * @author Christian Fries 15 | * @version 1.0 16 | */ 17 | public class BusinessdayCalendarAny extends AbstractBusinessdayCalendar { 18 | 19 | private static final long serialVersionUID = -2440422998196510638L; 20 | 21 | /** 22 | * Create a business day calendar, where every day is a business day. 23 | */ 24 | public BusinessdayCalendarAny() { 25 | } 26 | 27 | @Override 28 | public boolean isBusinessday(final LocalDate date) { 29 | return true; 30 | } 31 | 32 | @Override 33 | public String toString() { 34 | return "BusinessdayCalendarAny"; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/time/businessdaycalendar/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides business day calendars, e.g., as used in date roll conventions. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.time.businessdaycalendar; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/time/daycount/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides various day count conventions, e.g., as used in the definition of coupon payments of interest rate products. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.time.daycount; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/time/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides interfaces and classes for time discretizations, tenors and (swap) schedule generation. 3 | * The swap schedule generation used business day calendars from net.finmath.time.businessdaycalendar 4 | * for date roll conventions. 5 | * 6 | * @author Christian Fries 7 | */ 8 | package net.finmath.time; 9 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/timeseries/MarketData.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 13.04.2014 5 | */ 6 | 7 | package net.finmath.timeseries; 8 | 9 | import java.util.Calendar; 10 | import java.util.Map; 11 | 12 | /** 13 | * A set of raw data associated with a given date. 14 | * 15 | * @author Christian Fries 16 | * @version 1.0 17 | */ 18 | public class MarketData { 19 | 20 | private final Calendar date; 21 | private final Map valuesForSymbols; 22 | 23 | public MarketData(final Calendar date, final Map valuesForSymbols) { 24 | super(); 25 | this.date = date; 26 | this.valuesForSymbols = valuesForSymbols; 27 | } 28 | 29 | public Calendar getDate() { 30 | return date; 31 | } 32 | 33 | public double getValue(final String symbol) { 34 | return valuesForSymbols.get(symbol); 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/timeseries/TimeSeries.java: -------------------------------------------------------------------------------- 1 | package net.finmath.timeseries; 2 | 3 | /** 4 | * Interface to be implemented by finite time series. 5 | * 6 | * @author Christian Fries 7 | * @version 1.0 8 | */ 9 | public interface TimeSeries { 10 | 11 | double getTime(int index); 12 | double getValue(int index); 13 | 14 | int getNumberOfTimePoints(); 15 | 16 | Iterable getValues(); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/timeseries/TimeSeriesModelParametric.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Created on 12.08.2012 3 | * 4 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 5 | */ 6 | package net.finmath.timeseries; 7 | 8 | 9 | /** 10 | * A parametric time series model 11 | * 12 | * @author Christian Fries 13 | * @version 1.0 14 | */ 15 | public interface TimeSeriesModelParametric { 16 | 17 | double[] getParameters(); 18 | 19 | String[] getParameterNames(); 20 | 21 | TimeSeriesModelParametric getCloneCalibrated(TimeSeries timeSeries); 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/timeseries/models/parametric/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Classes related to estimation of time series. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.timeseries.models.parametric; 7 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/timeseries/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes related to time series modeling and estimation, e.g. maximum likelihood estimation of GARCH models. 3 | * Contains some aspects of estimating risk distribution from historical changes. 4 | * 5 | * @author Christian Fries 6 | */ 7 | package net.finmath.timeseries; 8 | -------------------------------------------------------------------------------- /src/main/java8/net/finmath/util/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides utility classes. 3 | * 4 | * @author Christian Fries 5 | */ 6 | package net.finmath.util; 7 | -------------------------------------------------------------------------------- /src/main/javadoc/resources/background.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/finmath/finmath-lib/b7a1cb5ef752057feca7c048cc700a8f52e9676c/src/main/javadoc/resources/background.gif -------------------------------------------------------------------------------- /src/main/javadoc/resources/inherit.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/finmath/finmath-lib/b7a1cb5ef752057feca7c048cc700a8f52e9676c/src/main/javadoc/resources/inherit.gif -------------------------------------------------------------------------------- /src/main/javadoc/resources/tab.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/finmath/finmath-lib/b7a1cb5ef752057feca7c048cc700a8f52e9676c/src/main/javadoc/resources/tab.gif -------------------------------------------------------------------------------- /src/main/javadoc/resources/titlebar.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/finmath/finmath-lib/b7a1cb5ef752057feca7c048cc700a8f52e9676c/src/main/javadoc/resources/titlebar.gif -------------------------------------------------------------------------------- /src/main/javadoc/resources/titlebar_end.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/finmath/finmath-lib/b7a1cb5ef752057feca7c048cc700a8f52e9676c/src/main/javadoc/resources/titlebar_end.gif -------------------------------------------------------------------------------- /src/main/resources/finmath-lib.properties: -------------------------------------------------------------------------------- 1 | finmath-lib.version=${project.version} 2 | finmath-lib.name=${project.name} 3 | finmath-lib.build=${buildNumber} 4 | -------------------------------------------------------------------------------- /src/site/markdown/eclipseproject.md: -------------------------------------------------------------------------------- 1 | # Pre-Configured Eclipse Project 2 | 3 | Although not recommended, the repository contains an Eclipse project and classpath file including all dependencies. We provide this for convenience. 4 | Of course, you may use the IDE of your choice by simply importing the maven pom. 5 | 6 | -------------------------------------------------------------------------------- /src/site/markdown/maven.md: -------------------------------------------------------------------------------- 1 | # Maven Build 2 | 3 | ## Source Repository 4 | 5 | Source code is available from the [source repository](source-repository.html). 6 | 7 | ## Building finmath lib 8 | 9 | ### Maven build 10 | 11 | The maven pom defaults to the Java 8 build. To build finmath lib for Java 6 use the maven profile "java-6". 12 | 13 | #### Java 8 14 | 15 | To build finmath lib via maven (on the command line) run 16 | 17 | mvn clean package 18 | 19 | This will use the code base in ``src/main/java`` 20 | 21 | #### Java 6 22 | 23 | To build finmath lib for Java 6 via maven (on the command line) run 24 | 25 | mvn clean package -P java-6 26 | 27 | This will use the code base in ``src/main/java-6` 28 | 29 | These builds may be performed via Maven the profiles "java-8" and "java6". 30 | 31 | -------------------------------------------------------------------------------- /src/site/resources/css/site.css: -------------------------------------------------------------------------------- 1 | a { 2 | color: #900; 3 | } 4 | 5 | .nav-list>.active>a, .nav-list>.active>a:hover { 6 | color: #fff; 7 | background-color: #900; 8 | } -------------------------------------------------------------------------------- /src/test/java/net/finmath/functions/JarqueBeraTestTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 14.02.2015 5 | */ 6 | 7 | package net.finmath.functions; 8 | 9 | import org.junit.Assert; 10 | import org.junit.Test; 11 | 12 | import net.finmath.montecarlo.BrownianMotion; 13 | import net.finmath.montecarlo.BrownianMotionFromMersenneRandomNumbers; 14 | import net.finmath.time.TimeDiscretizationFromArray; 15 | 16 | /** 17 | * Unit test, testing that the Brownian increment is normal distributed 18 | * using the Jarque-Bera test. 19 | * 20 | * @author Christian Fries 21 | */ 22 | public class JarqueBeraTestTest { 23 | 24 | @Test 25 | public void test() { 26 | final BrownianMotion bm = new BrownianMotionFromMersenneRandomNumbers(new TimeDiscretizationFromArray(0.0, 1.0, 2.0), 1 /* numberOfFactors */, 10000 /* numberOfPaths */, 2342 /* seed */); 27 | 28 | final double test = (new JarqueBeraTest()).test(bm.getBrownianIncrement(0 /* timeIndex */, 0 /* factor */)); 29 | 30 | Assert.assertTrue("Normal distributed (level of significance 0.10)", test < 4.6); 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/test/java/net/finmath/information/LibraryTest.java: -------------------------------------------------------------------------------- 1 | package net.finmath.information; 2 | 3 | import org.junit.Assert; 4 | import org.junit.Test; 5 | 6 | public class LibraryTest { 7 | 8 | @Test 9 | public void testBuildString() { 10 | final String buildString = Library.getBuildString(); 11 | 12 | System.out.println(buildString); 13 | Assert.assertNotNull("Build string", buildString); 14 | } 15 | 16 | @Test 17 | public void testVersionString() { 18 | final String versionString = Library.getVersionString(); 19 | 20 | System.out.println(versionString); 21 | Assert.assertNotNull("Version string", versionString); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/test/java/net/finmath/marketdata/model/curves/DiscountCurveNelsonSiegelSvenssonTest.java: -------------------------------------------------------------------------------- 1 | package net.finmath.marketdata.model.curves; 2 | 3 | import java.time.LocalDate; 4 | import java.time.Month; 5 | 6 | import org.junit.Assert; 7 | import org.junit.Test; 8 | 9 | public class DiscountCurveNelsonSiegelSvenssonTest { 10 | 11 | @Test 12 | public void test() { 13 | 14 | final LocalDate referenceDate = LocalDate.of(2014, Month.SEPTEMBER, 16); 15 | final double[] nssParameters = new double[] { 0.02 , -0.01, 0.16, -0.17, 4.5, 3.5 }; 16 | 17 | final DiscountCurve discountCurve = new DiscountCurveNelsonSiegelSvensson("EUR CurveFromInterpolationPoints", referenceDate, nssParameters, 1.0); 18 | 19 | final double df = discountCurve.getDiscountFactor(10.0); 20 | 21 | Assert.assertEquals("Discount factor", 0.847664288, df, 1E-8); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/test/java8/net/finmath/functions/JarqueBeraTestTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * (c) Copyright Christian P. Fries, Germany. Contact: email@christian-fries.de. 3 | * 4 | * Created on 14.02.2015 5 | */ 6 | 7 | package net.finmath.functions; 8 | 9 | import org.junit.Assert; 10 | import org.junit.Test; 11 | 12 | import net.finmath.montecarlo.BrownianMotion; 13 | import net.finmath.montecarlo.BrownianMotionFromMersenneRandomNumbers; 14 | import net.finmath.time.TimeDiscretizationFromArray; 15 | 16 | /** 17 | * Unit test, testing that the Brownian increment is normal distributed 18 | * using the Jarque-Bera test. 19 | * 20 | * @author Christian Fries 21 | */ 22 | public class JarqueBeraTestTest { 23 | 24 | @Test 25 | public void test() { 26 | final BrownianMotion bm = new BrownianMotionFromMersenneRandomNumbers(new TimeDiscretizationFromArray(0.0, 1.0, 2.0), 1 /* numberOfFactors */, 10000 /* numberOfPaths */, 2342 /* seed */); 27 | 28 | final double test = (new JarqueBeraTest()).test(bm.getBrownianIncrement(0 /* timeIndex */, 0 /* factor */)); 29 | 30 | Assert.assertTrue("Normal distributed (level of significance 0.10)", test < 4.6); 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/test/java8/net/finmath/information/LibraryTest.java: -------------------------------------------------------------------------------- 1 | package net.finmath.information; 2 | 3 | import org.junit.Assert; 4 | import org.junit.Test; 5 | 6 | public class LibraryTest { 7 | 8 | @Test 9 | public void testBuildString() { 10 | final String buildString = Library.getBuildString(); 11 | 12 | System.out.println(buildString); 13 | Assert.assertNotNull("Build string", buildString); 14 | } 15 | 16 | @Test 17 | public void testVersionString() { 18 | final String versionString = Library.getVersionString(); 19 | 20 | System.out.println(versionString); 21 | Assert.assertNotNull("Version string", versionString); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/test/java8/net/finmath/marketdata/model/curves/DiscountCurveNelsonSiegelSvenssonTest.java: -------------------------------------------------------------------------------- 1 | package net.finmath.marketdata.model.curves; 2 | 3 | import java.time.LocalDate; 4 | import java.time.Month; 5 | 6 | import org.junit.Assert; 7 | import org.junit.Test; 8 | 9 | public class DiscountCurveNelsonSiegelSvenssonTest { 10 | 11 | @Test 12 | public void test() { 13 | 14 | final LocalDate referenceDate = LocalDate.of(2014, Month.SEPTEMBER, 16); 15 | final double[] nssParameters = new double[] { 0.02 , -0.01, 0.16, -0.17, 4.5, 3.5 }; 16 | 17 | final DiscountCurve discountCurve = new DiscountCurveNelsonSiegelSvensson("EUR CurveFromInterpolationPoints", referenceDate, nssParameters, 1.0); 18 | 19 | final double df = discountCurve.getDiscountFactor(10.0); 20 | 21 | Assert.assertEquals("Discount factor", 0.847664288, df, 1E-8); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/test/resources/curves/EUR-EONIA.crv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/finmath/finmath-lib/b7a1cb5ef752057feca7c048cc700a8f52e9676c/src/test/resources/curves/EUR-EONIA.crv -------------------------------------------------------------------------------- /src/test/resources/curves/EUR-OIS6M.crv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/finmath/finmath-lib/b7a1cb5ef752057feca7c048cc700a8f52e9676c/src/test/resources/curves/EUR-OIS6M.crv -------------------------------------------------------------------------------- /src/test/resources/swaptions/CashPayerSwaptionPrice.sdl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/finmath/finmath-lib/b7a1cb5ef752057feca7c048cc700a8f52e9676c/src/test/resources/swaptions/CashPayerSwaptionPrice.sdl -------------------------------------------------------------------------------- /src/test/resources/swaptions/CashReceiverSwaptionPrice.sdl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/finmath/finmath-lib/b7a1cb5ef752057feca7c048cc700a8f52e9676c/src/test/resources/swaptions/CashReceiverSwaptionPrice.sdl -------------------------------------------------------------------------------- /src/test/resources/swaptions/PhysicalSwaptionPriceATM.sdl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/finmath/finmath-lib/b7a1cb5ef752057feca7c048cc700a8f52e9676c/src/test/resources/swaptions/PhysicalSwaptionPriceATM.sdl --------------------------------------------------------------------------------