### Run All Tests in IntelliJ IDEA Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/gettingstarted.md Instructions on how to execute all unit tests for the finmath-lib project within the IntelliJ IDEA. This provides a quick way to verify the project's functionality. ```Instructions In IntelliJ right click on the project and select Run "All Tests" ``` -------------------------------- ### Clone finmath-lib Repository from GitHub Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/gettingstarted.md Instructions to clone the finmath-lib source code from its GitHub repository using the Git command line tool. This is the first step to obtain the project files locally. ```Bash git clone https://github.com/finmath/finmath-lib ``` -------------------------------- ### Import finmath-lib as Existing Maven Project in Eclipse Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/gettingstarted.md Steps to import the finmath-lib project into an Eclipse workspace as an existing Maven project. This method is recommended if the repository has already been cloned locally. ```Instructions File -> Import… -> Maven -> Existing Maven Projects Select the local git repository folder. ``` -------------------------------- ### Import finmath-lib from Version Control in IntelliJ IDEA Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/gettingstarted.md Steps to import the finmath-lib project into IntelliJ IDEA directly from its Git repository URL. After cloning, the project should be added as a Maven project for proper dependency management. ```Instructions File -> New -> Project from Version Control Enter the URL https://github.com/finmath/finmath-lib.git Select "Clone". After the project has been imported: Select "Add as Maven Project", e.g. by context menu (right click) on pom.xml or select "+" in the Maven projects tab. ``` -------------------------------- ### Run JUnit Tests in Eclipse Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/gettingstarted.md Instructions on how to execute unit tests for the finmath-lib project within the Eclipse IDE. Tests are typically located in the 'src/test/java' folder. ```Instructions In Eclipse right click on any class file in src/test/java and select Run As -> JUnit Test ``` -------------------------------- ### Create New Java Project with finmath-lib Dependency in Eclipse Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/gettingstarted.md Steps to create a new Java project in Eclipse and configure its build path to include the imported finmath-lib project as a dependency. This allows your new project to utilize classes from finmath-lib. ```Instructions File -> New -> Java Project Enter a name for the project Right click on the new project and select "Properties". Select "Java Build Path -> Projects" and add the (imported) finmath lib project. ``` -------------------------------- ### Clone and Import finmath-lib from Git URI in Eclipse Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/gettingstarted.md Alternative steps to clone the finmath-lib repository directly from its GitHub URI and import it into Eclipse. This method combines cloning and importing into a single process within the IDE. ```Instructions File -> Import… -> Git -> Projects from Git (with smart import) -> Clone URI Enter the URI https://github.com/finmath/finmath-lib.git Select "Next". Select "master". "Next" and "Finish". ``` -------------------------------- ### Build finmath-lib for Java 8 with Maven Source: https://github.com/finmath/finmath-lib/blob/master/README.md Command-line instruction to build the finmath-lib library specifically for Java 8 by activating the 'java-8' Maven profile. ```Bash mvn -P java-8 ``` -------------------------------- ### Build finmath-lib for Java 11 with Maven Source: https://github.com/finmath/finmath-lib/blob/master/README.md Command-line instruction to build the finmath-lib library specifically for Java 11 by activating the 'java-11' Maven profile. ```Bash mvn -P java-11 ``` -------------------------------- ### Java Class: Swap Implementations Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/concepts/separationofproductandmodel/modelandproductinterfaces.md Examples of Swap implementations, demonstrating its ability to be valued via both analytic and Monte Carlo (LIBOR) methods. ```APIDOC Swap extends AbstractAnalyticProduct implements AnalyticProductInterface Swap extends AbstractLIBORMonteCarloProduct ``` -------------------------------- ### Java Class: EuropeanOption Implementations Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/concepts/separationofproductandmodel/modelandproductinterfaces.md Examples of EuropeanOption implementations, showing its valuation capability via Fourier transform and asset-specific Monte Carlo methods. ```APIDOC EuropeanOption extends AbstractProductFourierTransform implements ProductInterface EuropeanOption extends AbstractAssetMonteCarloProduct implements ProductInterface ``` -------------------------------- ### Maven Dependency for finmath-lib (Java 11) Source: https://github.com/finmath/finmath-lib/blob/master/README.md Maven coordinates to include the Java 11 compatible version of finmath-lib as a dependency in your project's pom.xml file. ```XML net.finmath finmath-lib ${project.version} ``` -------------------------------- ### Maven Dependency for finmath-lib (Java 8) Source: https://github.com/finmath/finmath-lib/blob/master/README.md Maven coordinates to include the Java 8 compatible version of finmath-lib as a dependency in your project's pom.xml file, specifying the 'java8' classifier. ```XML net.finmath finmath-lib 3.6.3 java8 ``` -------------------------------- ### Java ProductFactory Interface for Financial Products Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/concepts/separationofproductandmodel/modelandproductdescriptors.md Defines a factory interface for constructing financial products. Implementations of this interface provide the specific logic for creating a `DescribedProduct` instance from a given `ProductDescriptor`. The `getProductFromDescription` method takes a descriptor and returns the corresponding product, encapsulating implementation details like integration methods or Monte-Carlo setups. ```Java public interface ProductFactory { /** * Constructs the product from a given product descriptor. * * @param descriptor A product descriptor. * @return An instance of the product describable by this descriptor. */ DescribedProduct getProductFromDescription(T descriptor); } ``` -------------------------------- ### Java Class: HestonMonteCarloModel Example Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/concepts/separationofproductandmodel/modelandproductinterfaces.md An example implementation of a Heston model for Monte Carlo simulations, extending MonteCarloAssetModel and implementing Model. ```APIDOC class HestonMonteCarloModel extends MonteCarloAssetModel implements Model - A HestonModel implementing AssetModelMonteCarloSimulationInterface and Model - The model can be used for valuation via AssetModelMonteCarloSimulationInterface. The model is build via a HestonModelDescriptor. ``` -------------------------------- ### Major Refactoring and Cleanup (5.0.0) Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md Version 5.0.0 represents a significant refactoring and cleanup effort from the previous 4.1.8 version, involving deprecations and architectural improvements. Further details can be found in the migration guide. ```APIDOC General: Extensive refactoring and cleanup from version 4.1.8. ``` -------------------------------- ### Java Coding Convention for Conditional Statements Source: https://github.com/finmath/finmath-lib/blob/master/README.md Illustrates the preferred coding style for 'if' statements in finmath-lib, where no space is used between the keyword and the opening parenthesis, treating 'if' as a function call. This deviates from some common Java coding conventions. ```Java if(condition) { // code } ``` -------------------------------- ### Avoiding Reference Reassignment That Alters Meaning (Java) Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/codingconventions.md This example illustrates how to avoid reassigning a variable with a different semantic meaning, which can lead to confusion and errors. The 'Wrong' example reuses 'discountFactor' for an intermediate calculation and then for the final result, while the 'Correct' example introduces a new variable 'forwardBond' for clarity, ensuring each variable holds a consistent meaning. ```Java (Wrong) var discountFactor = (1 + forwardRate * periodLength); discountFactor = 1.0/discountFactor; ``` ```Java (Correct) var forwardBond = (1 + forwardRate * periodLength); var discountFactor = 1.0/forwardBond; ``` -------------------------------- ### Java Interface Definition: RandomVariable for Measurability Tracking Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/concepts/automatictrackingofmeasurability/index.md This snippet defines the `RandomVariable` interface from `net.finmath.stochastic`, showcasing the `getFiltrationTime()` method which returns the time associated with the random variable's measurability. It also includes the `add()` method as an example of an operation that would propagate filtration times. ```APIDOC public interface RandomVariable { double getFiltrationTime(); public RandomVariable add(RandomVariable randomVariable); // ... (declaration of other methods) } ``` -------------------------------- ### General: Internal Configuration via Java System Properties Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md Allows configuration of some internal parameters via Java system properties, providing more flexibility for deployment and customization. ```APIDOC Configuration: - Added: Ability to configure some internals via Java system properties. ``` -------------------------------- ### General: OSGi MANIFEST File Added Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md Includes an OSGi MANIFEST file, enabling better modularity and deployment within OSGi environments. ```APIDOC General: - Added: OSGi MANIFEST file. ``` -------------------------------- ### Introduce ProcessTimeDiscretizationProvider Interface Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md The new interface `net.finmath.montecarlo.process.ProcessTimeDiscretizationProvider` allows products to suggest a preferred time discretization for a model. This provides a hint for model configuration. ```APIDOC Interface: net.finmath.montecarlo.process.ProcessTimeDiscretizationProvider - Purpose: Hint for preferred model time discretization ``` -------------------------------- ### Add Swap Constructor using SwapLegs (finmath-lib 1.3.6) Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md Version 1.3.6 introduces an additional constructor for the Swap class, allowing its instantiation directly using SwapLegs. ```APIDOC Swap: - Additional constructor using SwapLegs. ``` -------------------------------- ### Build finmath-lib for Java 8 using Maven Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/maven.md This command initiates a clean build and package operation for the finmath-lib project, targeting Java 8. It uses the default source code located in 'src/main/java'. ```Shell mvn clean package ``` -------------------------------- ### Multi-Asset Black-Scholes Model Construction Enhancements (5.0.4) Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md The Multi-asset Black-Scholes model now allows construction from factor loadings and directly from volatility-and-correlation, providing more flexible initialization options. ```APIDOC Multi-Asset Black-Scholes Model: Construction from factor loadings. Construction from volatility-and-correlation. ``` -------------------------------- ### Build finmath-lib for Java 6 using Maven Profile Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/maven.md This command performs a clean build and package for the finmath-lib project, specifically targeting Java 6. It activates the 'java-6' Maven profile, which directs the build to use the Java 6 compatible source code from 'src/main/java-6'. ```Shell mvn clean package -P java-6 ``` -------------------------------- ### Implement ProcessTimeDiscretizationProvider for Swaptions Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md Both `SwaptionFromSwapSchedules` and `BermudanSwaptionFromSwapSchedules` now implement the `ProcessTimeDiscretizationProvider` interface, allowing them to provide hints for model time discretization. ```APIDOC Classes implementing ProcessTimeDiscretizationProvider: - net.finmath.montecarlo.interestrate.products.SwaptionFromSwapSchedules - net.finmath.montecarlo.interestrate.products.BermudanSwaptionFromSwapSchedules ``` -------------------------------- ### Constructing a Monte-Carlo Simulation in finmath-lib 5.0 Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/migration/4.0.x-to-5.0.1.md This Java code snippet illustrates the revised approach for constructing a Monte-Carlo simulation in finmath-lib version 5.0. It demonstrates the new linear dependency flow where the model no longer holds a reference to the process, instead taking the process as an argument, simplifying the overall structure. ```Java var model = new XxxModel(…) var td = new TimeDiscretizationXxx(…. ) var brownianMotion = new BrownianMotionXxx(td,…) var process = new ProcessEurlerScheme(model, brownianMotion) var simulation = new MonteCarloAssetModel(process) ``` -------------------------------- ### General: Initial FPML Parser (finmath-lib 3.4.4) Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md An initial version of an FpML parser has been integrated, stemming from the product descriptors development branch. This adds capabilities for parsing FpML (Financial Products Markup Language) documents, enabling broader interoperability. ```APIDOC General: - Initial FpML parser added. ``` -------------------------------- ### Multi-Curve Calibration: Deposit and FRA Products Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md Adds Deposit and FRA instruments, which can now be used as calibration products within the multi-curve calibration framework, enhancing the flexibility of curve construction. ```APIDOC Market Data / Interest Rates Curve / Multi-Curve: - Added: Deposit (may be used as calibration product in multi-curve calibration). - Added: FRA (may be used as calibration product in multi-curve calibration). ``` -------------------------------- ### Monte-Carlo Simulation: RegressionBasisFunctionProvider Interface (finmath-lib 3.3.3) Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md A new interface, `RegressionBasisFunctionProvider`, has been added to support American Monte-Carlo algorithms. This interface standardizes the provision of basis functions for regression-based option pricing. ```APIDOC Monte-Carlo Simulation: - "RegressionBasisFunctionProvider": New interface for American Monte-Carlo. ``` -------------------------------- ### Implement Merton Model with Fourier Methods Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md Implementation of the Merton Model for financial calculations, leveraging Fourier methods. This model is contributed and maintained by Prof. A. Gnoatto. ```APIDOC Class: net.finmath.fouriermethod.models.MertonModel ``` -------------------------------- ### AnalyticFomulas and RandomVariable API Additions (5.0.3) Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md Convenient methods have been added to AnalyticFomulas for RandomVariable parameters. The RandomVariable interface now includes default methods for variance and covariance, and TimeDiscretization can be used as a DoubleStream. ```APIDOC AnalyticFomulas: New convenient methods consuming RandomVariable parameters. RandomVariable Interface: Default methods for variance and covariance. TimeDiscretization: Can be used as DoubleStream. ``` -------------------------------- ### Java Class: AbstractAnalyticProduct Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/concepts/separationofproductandmodel/modelandproductinterfaces.md An abstract base class for products valued using analytic formulas, extending AnalyticProductInterface and ProductInterface. ```APIDOC AbstractAnalyticProduct -> AnalyticProductInterface -> ProductInterface ``` -------------------------------- ### CDS Valuation Model (5.0.1) Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md A new Credit Default Swap (CDS) valuation model has been contributed, enhancing the analytic valuation capabilities of the library. ```APIDOC Analytic Valuation Models: New CDS valuation model. ``` -------------------------------- ### Equity Models: Merton, Heston, and Mean-Variance Hedging Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md Introduces Monte-Carlo simulations for the Merton and Heston single-asset models. Also adds hedge simulation based on mean-variance hedging, utilizing American Monte-Carlo / regression techniques. ```APIDOC Equity / Single Asset Models: - Added: Merton model (Monte-Carlo simulation). - Added: Heston model (Monte-Carlo simulation). - Added: Hedge simulation based on mean-variance hedging (using American Monte-Carlo / regression). ``` -------------------------------- ### Equity Options Valuation with Local Volatility and Dividends (5.0.5) Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md New valuation models for European and American options, incorporating Local Volatility (SVI) and Dividends (based on Bühler 2007), have been added under the net.finmath.equities package. ```APIDOC Package: net.finmath.equities New valuation models for European and American options with Local Volatility (SVI) and Dividends (Bühler 2007). ``` -------------------------------- ### Hull-White Model: Monte-Carlo Simulation Implementation Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md Adds a new implementation for Monte-Carlo simulation of the Hull-White model, expanding the range of available interest rate models. ```APIDOC Hull-White Model: - Added: Implementation of a Monte-Carlo simulation of the Hull-White model. ``` -------------------------------- ### Monte-Carlo Simulation: AbstractMonteCarloProduct as Basis Functions (finmath-lib 3.3.3) Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md Enhanced Monte-Carlo algorithms to allow products implementing `AbstractMonteCarloProduct` to be used as regression basis functions. This provides greater flexibility in defining basis functions for American option pricing. ```APIDOC Monte-Carlo Simulation: - "AbstractMonteCarloProduct": Can now be used as regression basis functions. ``` -------------------------------- ### RandomVariableInterface: Added choose Method (finmath-lib 3.6.0) Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md A new `choose` method has been added to the `RandomVariableInterface`. This method likely provides functionality for selecting values based on certain criteria within random variable operations. ```APIDOC RandomVariableInterface: - "choose()": New method added. ``` -------------------------------- ### Java Class: AbstractProductFourierTransform Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/concepts/separationofproductandmodel/modelandproductinterfaces.md An abstract base class for products valued using Fourier transform methods, implementing CharacteristicFunctionInterface. ```APIDOC AbstractProductFourierTransform implements CharacteristicFunctionInterface ``` -------------------------------- ### Implement Variance Gamma Process for Single Asset Models Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md Implementation of the Variance Gamma Process for single asset (Equity/FX) models using Monte-Carlo simulation. This feature is contributed and maintained by Prof. A. Gnoatto. ```APIDOC Class: net.finmath.montecarlo.VarianceGammaProcess ``` -------------------------------- ### Creating a Standard CPU-based AAD Random Variable Factory Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/concepts/stochasticautomaticdifferentiation/index.md Illustrates the instantiation of `RandomVariableDifferentiableAADFactory` to create a factory for standard (CPU-based) random variables that support automatic differentiation. This is the default way to enable AAD without specific hardware acceleration. ```Java AbstractRandomVariableFactory randomVariableFactory = new RandomVariableDifferentiableAADFactory(); ``` -------------------------------- ### Add SABR Analytic Approximations (finmath-lib 1.3.6) Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md SABR analytic approximations have been added to the net.finmath.functions.AnalyticFormulas package. ```APIDOC net.finmath.functions.AnalyticFormulas: - Added SABR analytic approximations. ``` -------------------------------- ### Market Data: Resettable Cross Currency Swap Valuation Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md Enables the valuation of Resettable Cross Currency Swaps, also known as Mark-to-Market Cross Currency Swaps, expanding the library's capabilities for complex swap instruments. ```APIDOC Valuation: - Added: Valuation of Resettable Cross Currency Swap (aka Mark-to-Market Cross Currency Swap). ``` -------------------------------- ### Refactoring Model and Product Interfaces (finmath-lib 3.2.5) Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md Details the refactoring of core model and product interfaces in version 3.2.5, including the reintroduction of `ModelInterface` and `ProductInterface`, and the addition of `DescribedModel` and `DescribedProduct` for descriptor-based construction. This partially reverts changes made in version 3.2.0. ```APIDOC Interface Renaming/Refactoring (3.2.5): - net.finmath.modelling.Model renamed to net.finmath.modelling.ModelInterface - net.finmath.modelling.Product renamed to net.finmath.modelling.ProductInterface New Interfaces (3.2.5): - DescribedModel - DescribedProduct ``` -------------------------------- ### Improve Serialization for ScheduleDescriptors and Swaps Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md Serialization capabilities have been improved for both `ScheduleDescriptors` and `Swaps`. This enhances data persistence and transfer for these financial instruments. ```APIDOC Improved Serialization: - ScheduleDescriptors - Swaps ``` -------------------------------- ### Dependencies: Replaced colt with commons-math Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md Replaces colt-1.2.0 with apache commons-math-3.6.1. This change, necessary for OSGi compliance, may cause minor differences in Monte-Carlo valuations and calibration parameters due to differing MersenneTwister and linear equation solver implementations. ```APIDOC Dependency Change: - Replaced: colt-1.2.0 with apache commons-math-3.6.1. - Impact: May lead to small changes in Monte-Carlo valuations and calibration parameters due to differing MersenneTwister and linear equation solver implementations. - Reason: Necessary for OSGi compliant setup. ``` -------------------------------- ### RandomVariableInterface: Deprecated barrier Method (finmath-lib 3.6.0) Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md The `barrier` method in `RandomVariableInterface` has been marked as deprecated. Users are advised to transition away from using this method, likely in favor of newer or more robust alternatives. ```APIDOC RandomVariableInterface: - "barrier()": Marked as deprecated. ``` -------------------------------- ### Add Unit Test for Hull-White Model Calibration Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md A new unit test has been added to verify the calibration process of the Hull-White model, ensuring its correctness and reliability. ```APIDOC Test: Unit test for Hull-White model calibration ``` -------------------------------- ### Addition of Quasi Random Number Generators (5.0.2) Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md New quasi random number generators have been added, expanding the available options for Monte-Carlo simulations and other numerical methods. ```APIDOC Random Number Generators: Added new quasi random number generators. ``` -------------------------------- ### Add Monte-Carlo Swaption Valuation from Swap Schedules Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md A new implementation, `net.finmath.montecarlo.interestrate.products.SwaptionFromSwapSchedules`, has been added for Monte-Carlo valuation of swaptions based on exact swap schedules. This implementation is compatible with Algorithmic Differentiation (AAD). ```APIDOC Class: net.finmath.montecarlo.interestrate.products.SwaptionFromSwapSchedules - Purpose: Monte-Carlo valuation of swaptions from swap schedules - Compatibility: AAD ``` -------------------------------- ### Add ProcessEulerScheme Predictor-Corrector Constructor (finmath-lib 1.3.6) Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md A new constructor has been added to ProcessEulerScheme, enabling direct construction of a predictor-corrector scheme. ```APIDOC ProcessEulerScheme: - Additional constructor to directly construct a predictor corrector scheme. ``` -------------------------------- ### Java Interface: TermStructureMonteCarloSimulationModel Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/concepts/separationofproductandmodel/modelandproductinterfaces.md Extends MonteCarloSimulationModel for interest rate term structure Monte Carlo simulations, providing methods to retrieve the numeraire and LIBOR rates. ```APIDOC TermStructureMonteCarloSimulationModel extends MonteCarloSimulationModel - provides getNumeraire, getLIBOR(double, double, double) ``` -------------------------------- ### Java Interface: MonteCarloSimulationModel Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/concepts/separationofproductandmodel/modelandproductinterfaces.md An interface for Monte Carlo simulation models, providing access to time discretization, number of paths, random variables, and Monte Carlo weights. ```APIDOC MonteCarloSimulationModel - provides getTimeDiscretization, getNumberOfPaths, getRandomVariableForConstant, getMonteCarloWeights ``` -------------------------------- ### Apache License 2.0 Boilerplate Notice Source: https://github.com/finmath/finmath-lib/blob/master/lib/LICENSE for commons-math3-3.6/LICENSE.txt Standard boilerplate notice to apply the Apache License, Version 2.0 to a work. Users should replace bracketed fields with their own information and enclose the text in the appropriate comment syntax for the file format. ```Text Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ``` -------------------------------- ### Java: Core Interfaces for Product and Model Separation Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/concepts/separationofproductandmodel/modelandproductdescriptors.md These Java interfaces define the fundamental contracts for product and model descriptors, and for products and models that can be described by these descriptors. They form the backbone of the framework for separating financial product and model definitions from their implementations, including the getProductFromDesciptor method for creating product instances from descriptors. ```Java interface ProductDescriptor { // Marker Interface } ``` ```Java interface ModelDescriptor { // Marker Interface } ``` ```Java public interface DescribedProduct { /** * Return a product descriptor representing this product. * * @return The product descriptor of this product. */ T getDescriptor(); } ``` ```Java public interface DescribedModel { /** * Return a model descriptor representing this model. * * @return The model descriptor of this model. */ T getDescriptor(); /** * Construct a product from a product descriptor, which may be valued by this mmodel. * * @param productDescriptor Given product descriptor. * @return An instance of a product implementation. */ DescribedProduct getProductFromDesciptor(ProductDescriptor productDescriptor); } ``` -------------------------------- ### LIBOR Market Model: Local Volatility for Hull-White Dynamics Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md Introduces a LIBOR Market Model (LMM) local volatility model designed to generate Hull-White model dynamics within an LMM framework. ```APIDOC LIBOR Market Model: - Added: LMM local volatility model to generate Hull-White model dynamic in an LMM. ``` -------------------------------- ### Dependencies: Switched to jblas for Linear Algebra Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md Replaces commons-math with jblas 1.2.4 as the default linear algebra solver due to performance improvements. Users can revert to commons-math by setting the net.finmath.functions.LinearAlgebra.isUseApacheCommonsMath system property to true. ```APIDOC Dependency Change: - Default Linear Algebra: Switched to jblas 1.2.4 (from commons-math). - Configuration: To use commons-math instead, set Java system property `net.finmath.functions.LinearAlgebra.isUseApacheCommonsMath` to `true`. - Note: jblas is currently not an OSGi bundle. ``` -------------------------------- ### Java Interface: AssetModelMonteCarloSimulationMode Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/concepts/separationofproductandmodel/modelandproductinterfaces.md Extends MonteCarloSimulationModel for asset-specific Monte Carlo simulations, providing methods to retrieve the numeraire and asset information. ```APIDOC AssetModelMonteCarloSimulationMode extends MonteCarloSimulationModel - provides getNumeraire, getAsset ``` -------------------------------- ### Exact Integration of Piecewise Constant Functions (5.0.1) Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md The library now supports exact integration of functions of piecewise constant functions, which is particularly useful for intensity models. Refer to net.finmath.integrationnet.finmath.integration.PiecewiseContantDoubleUnaryOperator for details. ```APIDOC Numerical Integration: Exact integration of functions of piecewise constant functions (useful for intensity models). See: net.finmath.integrationnet.finmath.integration.PiecewiseContantDoubleUnaryOperator. ``` -------------------------------- ### Java Class: AbstractMonteCarloProduct Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/concepts/separationofproductandmodel/modelandproductinterfaces.md An abstract base class for products that can be valued using a MonteCarloSimulationInterface. It primarily manages currency and acts as a marker. ```APIDOC AbstractMonteCarloProduct implements ProductInterface - product which can be values by a MonteCarloSimulationInterface - manages currency, otherwise nothing - looks more like a marker. ``` -------------------------------- ### Introduce MonteCarloConditionalExpectationRegressionFactory Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md A new factory class, `MonteCarloConditionalExpectationRegressionFactory`, has been introduced. This class likely facilitates the estimation of conditional expectations using regression methods within Monte-Carlo simulations. ```APIDOC Class: net.finmath.montecarlo.MonteCarloConditionalExpectationRegressionFactory ``` -------------------------------- ### Hull-White Model: Improved Monte-Carlo Simulation Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md Enhances the Monte-Carlo simulation for the Hull-White model, now utilizing Brownian motion as a factory for RandomVariableInterface objects, leading to improved implementation and unit testing. ```APIDOC Hull-White Model: - Improved: Monte-Carlo simulation implementation. - Enhancement: Uses Brownian motion as a factory for `RandomVariableInterface` objects. ``` -------------------------------- ### Add Support for Different Interest Rate Curve Interpolation Methods Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md The library now supports various interpolation methods for interest rate curves, providing greater flexibility in modeling. ```APIDOC Feature: Support for different interest rate curve interpolation methods ``` -------------------------------- ### Merge and Rename Interest Rate Model Covariance Packages Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md The packages `net.finmath.montecarlo.interestrate.models.modelplugins` and `net.finmath.montecarlo.interestrate.models.covariancemodels` have been merged. The resulting package is now renamed to `net.finmath.montecarlo.interestrate.models.covariance`. ```APIDOC Package Merging and Renaming: - Merged: net.finmath.montecarlo.interestrate.models.modelplugins, net.finmath.montecarlo.interestrate.models.covariancemodels - New Package: net.finmath.montecarlo.interestrate.models.covariance ``` -------------------------------- ### Java Interface: Model Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/concepts/separationofproductandmodel/modelandproductinterfaces.md A marker interface representing a generic financial model within the finmath-lib. ```APIDOC Model (interface) - marker interface ``` -------------------------------- ### Monte-Carlo Term Structure Model with Time-Dependent Tenor Discretization Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md Introduces a sample implementation of a term structure model that supports time-dependent tenor discretization, enhancing the flexibility of interest rate modeling. This model also includes calibration capabilities. ```APIDOC New Feature: - Term Structure Model with Time Dependent Tenor Discretization - Includes calibration functionality - Reference: http://ssrn.com/abstract=2884699 ``` -------------------------------- ### Add Trapezoidal Rule Constructor for Equi-Distant Grid (finmath-lib 1.3.6) Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md A new constructor has been added for the trapezoidal rule, specifically designed for use with an equi-distant grid. ```APIDOC Trapezoidal Rule: - Constructor for trapezoidal rule using equi-distant grid. ``` -------------------------------- ### New Features and API Additions in Apache Commons Lang 3.6 Source: https://github.com/finmath/finmath-lib/blob/master/lib/LICENSE for commons-lang3-3.7/RELEASE-NOTES.txt Lists new functionalities and API additions introduced in Apache Commons Lang 3.6, including new methods in `CharUtils`, `StringUtils`, `ArrayUtils`, `MethodUtils`, and new classes like `ArchUtils`, `ImmutablePair`, and `ImmutableTriple`. ```APIDOC New Features: - LANG-1336: Add NUL Byte To CharUtils. - LANG-1304: Add method in StringUtils to determine if string contains both mixed cased characters. - LANG-1325: Increase test coverage of ToStringBuilder class to 100%. - LANG-1307: Add a method in StringUtils to extract only digits out of input string. - LANG-1256: Add JMH maven dependencies. - LANG-1167: Add null filter to ReflectionToStringBuilder. - LANG-1299: Add method for converting string to an array of code points. - LANG-660: Add methods to insert arrays into arrays at an index (ArrayUtils). - LANG-1034: Add support for recursive comparison to EqualsBuilder#reflectionEquals. - LANG-1067: Add a reflection-based variant of DiffBuilder. - LANG-740: Implementation of a Memomizer. - LANG-1258: Add ArrayUtils#toStringArray method. - LANG-1160: StringUtils#abbreviate should support 'custom ellipses' parameter. - LANG-1293: Add StringUtils#isAllEmpty and #isAllBlank methods. - LANG-1313: Add ArchUtils - An utility class for the "os.arch" system property. - LANG-1272: Add shuffle methods to ArrayUtils. - LANG-1317: Add MethodUtils#findAnnotation and extend MethodUtils#getMethodsWithAnnotation for non-public, super-class and interface methods. - LANG-1331: Add ImmutablePair.nullPair(). - LANG-1332: Add ImmutableTriple.nullTriple(). ``` -------------------------------- ### Fix for DigitalOptionDeltaLikelihood in Weighted Monte-Carlo (5.0.5) Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md A bug in the implementation of DigitalOptionDeltaLikelihood related to weighted Monte-Carlo simulation has been fixed, addressing an issue where weights were incorrectly ignored. ```APIDOC DigitalOptionDeltaLikelihood: Fixed bug related to weighted Monte-Carlo simulation (weights were ignored). ``` -------------------------------- ### Refactor Monte-Carlo Model Package Hierarchy Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md The package hierarchy for Monte-Carlo models has been restructured. `net.finmath.montecarlo.interestrate.models` now contains `ProcessModel` implementations for Hull-White and LMM, including sub-packages like `covariance`. `net.finmath.montecarlo.assetderivativevaluation.models` now holds `ProcessModel` implementations for asset derivative models like Black-Scholes, Bachelier, Merton, and Bates. ```APIDOC Package Hierarchy Refactoring: - net.finmath.montecarlo.interestrate.models: - Contains: HullWhiteModel, LMM (ProcessModel/AbstractProcessModel implementations) - Includes: covariance (merged package) - net.finmath.montecarlo.assetderivativevaluation.models: - Contains: BlackScholes, Bachelier, Merton, Bates (ProcessModel/AbstractProcessModel implementations) ``` -------------------------------- ### AAD: Control Discontinuity Differentiation (finmath-lib 3.6.1) Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md Introduced new configuration keys to control the behavior of differentiation for discontinuities within the Automatic Differentiation framework. These keys allow fine-tuning of the Dirac Delta approximation method and width, providing more control over sensitivity calculations. ```APIDOC Configuration Keys (Automatic Differentiation): - "diracDeltaApproximationMethod": Controls method for Dirac Delta approximation. - "diracDeltaApproximationWidthPerStdDev": Sets width for Dirac Delta approximation. - "diracDeltaApproximationDensityRegressionWidthPerStdDev": Sets width for density regression in Dirac Delta approximation. ``` -------------------------------- ### Removal of Kotlin Dependency (5.0.4) Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md The Kotlin dependency has been removed from finmath-lib, with a separate project, finmath-lib-kotlin, now available for Kotlin-specific functionalities. ```APIDOC Dependency Change: Removed Kotlin dependency. Separate project: finmath-lib-kotlin. ``` -------------------------------- ### Retrieving Gradients and Derivatives from RandomVariableDifferentiable Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/concepts/stochasticautomaticdifferentiation/index.md Demonstrates how to obtain the full gradient of a `RandomVariableDifferentiable` object with respect to all its leaf nodes, and how to extract the derivative with respect to a specific input variable using its ID. This is a core usage pattern for analyzing differentiation results. ```Java /* Get the gradient of X with respect to all its leaf nodes: */ Map gradientOfX = X.getGradient(); /* Get the derivative of X with respect to Y: */ RandomVariable derivative = gradientOfX.get(Y.getID()); ``` -------------------------------- ### DatePrinter Interface Method Additions (Commons Lang 3.5) Source: https://github.com/finmath/finmath-lib/blob/master/lib/LICENSE for commons-lang3-3.7/RELEASE-NOTES.txt Documentation for new methods added to the `org.apache.commons.lang3.time.DatePrinter` interface in Apache Commons Lang 3.5, enhancing its formatting and parsing capabilities. These additions maintain binary compatibility but affect source compatibility for custom implementations. ```APIDOC org.apache.commons.lang3.time.DatePrinter interface: - public boolean parse(java.lang.String, java.text.ParsePosition, java.util.Calendar) - public java.lang.Appendable format(long, java.lang.Appendable) - public java.lang.Appendable format(java.util.Date, java.lang.Appendable) - public java.lang.Appendable format(java.util.Calendar, java.lang.Appendable) ``` -------------------------------- ### SABR Model: Analytic Skew and Curvature Formulas Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md Introduces analytic formulas for calculating SABR skew and SABR curvature, providing direct computational methods for these model parameters. ```APIDOC SABR Model: - Added: Analytic formulas for SABR skew. - Added: Analytic formulas for SABR curvature. ``` -------------------------------- ### Java Implementation: RandomVariableFromDoubleArray Filtration Time Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/concepts/automatictrackingofmeasurability/index.md This code demonstrates the implementation of the `RandomVariable` interface in `RandomVariableFromDoubleArray`. It shows how the `time` field stores the filtration time and how the `add()` method correctly calculates the new filtration time by taking the maximum of the operands' filtration times, adhering to the defined rules for operator augmentation. ```Java public class RandomVariableFromDoubleArray implements RandomVariable { private final double time; // Time (filtration) @Override public double getFiltrationTime() { return time; } // ... (implementation of other methods) @Override public RandomVariable add(RandomVariable randomVariable) { // Set time of this random variable to maximum of time with respect to which measurability is known. double newTime = Math.max(time, randomVariable.getFiltrationTime()); // ... (calculate newRealizations as sum of this and randomVariable) return new RandomVariable(newTime, newRealizations); } } ``` -------------------------------- ### Enhance Monte-Carlo Simulation with Duplicate Time Discretizations Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md The LIBOR Market Model and Hull White Model now support simulation time discretizations with duplicate entries. This feature is useful for ensuring path-consistent Monte-Carlo simulations. ```APIDOC Models supporting duplicate time discretizations: - LIBOR Market Model - Hull White Model ``` -------------------------------- ### Allow Custom RandomVariableFactory in BrownianMotion (finmath-lib 1.3.6) Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md The BrownianMotion class now supports the use of a custom AbstractRandomVariableFactory. This feature is particularly useful for optimizing memory usage by switching to single precision floating point numbers. ```APIDOC BrownianMotion: - Allows use of a custom AbstractRandomVariableFactory. - Useful for switching to single precision floating point numbers (memory saving). ``` -------------------------------- ### Monte-Carlo Merton Model AAD Support (5.0.6) Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md The Monte-Carlo Merton model now supports the use of RandomVariableFactory and consequently, Algorithmic Differentiation (AAD), enhancing its analytical capabilities. ```APIDOC Monte-Carlo Merton Model: Supports RandomVariableFactory. Supports AAD. ``` -------------------------------- ### Java 9 Versioning API Updates in JavaVersion and SystemUtils Source: https://github.com/finmath/finmath-lib/blob/master/lib/LICENSE for commons-lang3-3.7/RELEASE-NOTES.txt Documentation for changes in `org.apache.commons.lang3.JavaVersion` and `org.apache.commons.lang3.SystemUtils` to support Java 9's new version-string scheme (JEP-223). This includes deprecation of old constants and introduction of new ones for Java 9 detection. ```APIDOC org.apache.commons.lang3.JavaVersion: - deprecated enum constant JAVA_1_9 - introduced enum constant JAVA_9 org.apache.commons.lang3.SystemUtils: - deprecated constant IS_JAVA_1_9 - introduced constant IS_JAVA_9 ``` -------------------------------- ### Deprecated ArrayUtils Add Methods and Insert Replacements Source: https://github.com/finmath/finmath-lib/blob/master/lib/LICENSE for commons-lang3-3.7/RELEASE-NOTES.txt Details the deprecation of `add` methods in `org.apache.commons.lang3.ArrayUtils`, which are replaced by corresponding `insert` methods. It also highlights a difference in handling null inputs between the `add` and `insert` methods. ```APIDOC Deprecated org.apache.commons.lang3.ArrayUtils methods: - add(boolean[], int, boolean) -> insert(int, boolean[], boolean...) - add(byte[], int, boolean) -> insert(int, byte[], byte...) - add(char[], int, boolean) -> insert(int, char[], char...) - add(double[], int, boolean) -> insert(int, double[], double...) - add(float[], int, boolean) -> insert(int, float[], float...) - add(int[], int, boolean) -> insert(int, int[], int...) - add(long[], int, boolean) -> insert(int, long[], long...) - add(short[], int, boolean) -> insert(int, short[], short...) - add(T[], int, boolean) -> insert(int, T[], T...) Note: Null input handling differs between add and insert. ``` -------------------------------- ### Minpack Copyright and License Statement Source: https://github.com/finmath/finmath-lib/blob/master/lib/LICENSE for commons-math3-3.6/LICENSE.txt Copyright and license terms for the Minpack routines, including redistribution conditions, acknowledgment requirements, warranty disclaimers, and limitations of liability. This applies to derivative works like those in Apache Commons Math's LevenbergMarquardtOptimizer class. ```Text Minpack Copyright Notice (1999) University of Chicago. All rights reserved Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The end-user documentation included with the redistribution, if any, must include the following acknowledgment: "This product includes software developed by the University of Chicago, as Operator of Argonne National Laboratory. Alternately, this acknowledgment may appear in the software itself, if and wherever such third-party acknowledgments normally appear. 4. WARRANTY DISCLAIMER. THE SOFTWARE IS SUPPLIED "AS IS" WITHOUT WARRANTY OF ANY KIND. THE COPYRIGHT HOLDER, THE UNITED STATES, THE UNITED STATES DEPARTMENT OF ENERGY, AND THEIR EMPLOYEES: (1) DISCLAIM ANY WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE OR NON-INFRINGEMENT, (2) DO NOT ASSUME ANY LEGAL LIABILITY OR RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF THE SOFTWARE, (3) DO NOT REPRESENT THAT USE OF THE SOFTWARE WOULD NOT INFRINGE PRIVATELY OWNED RIGHTS, (4) DO NOT WARRANT THAT THE SOFTWARE WILL FUNCTION UNINTERRUPTED, THAT IT IS ERROR-FREE OR THAT ANY ERRORS WILL BE CORRECTED. 5. LIMITATION OF LIABILITY. IN NO EVENT WILL THE COPYRIGHT HOLDER, THE UNITED STATES, THE UNITED STATES DEPARTMENT OF ENERGY, OR THEIR EMPLOYEES: BE LIABLE FOR ANY INDIRECT, INCIDENTAL, CONSEQUENTIAL, SPECIAL OR PUNITIVE DAMAGES OF ``` -------------------------------- ### Refactor RandomVariable: Remove Barrier Method Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md The deprecated `barrier` method has been removed from the `RandomVariable` interface. Users should now use the `choose` method as its replacement for similar functionality. ```APIDOC Interface: net.finmath.RandomVariable - Removed method: barrier() - Replacement: choose() ``` -------------------------------- ### AnalyticModel: toString() NPE Fix (finmath-lib 3.4.4) Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md Fixed a minor bug where the `toString()` method in `AnalyticModel` could throw a NullPointerException if the `referenceDate` was missing. This improves the robustness of model representation. ```APIDOC AnalyticModel: - "toString()": Fixed NullPointerException when "referenceDate" is missing. ``` -------------------------------- ### Swaption Compatibility with Multi-Curve LMM (finmath-lib 1.3.6) Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md The Swaption class is now compatible with multi-curve LMM models, specifically when using a collateral curve. ```APIDOC Swaption: - Compatible with multi-curve LMM (using collateral curve). ``` -------------------------------- ### General: Interface for Independent Model Parameters (finmath-lib 3.6.2) Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md A new interface has been added to allow models to generically report their independent model parameters. This standardizes how model parameters are exposed, improving introspection and integration. ```APIDOC Interface: - New interface for models to report independent parameters. ``` -------------------------------- ### Hull-White Model: Generic Calibration (finmath-lib 3.6.3) Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md Implemented a generic calibration mechanism for the Hull-White model, adapted from the existing LIBOR Market Model (LMM) calibration. This enhancement provides a more flexible and robust way to calibrate the Hull-White model parameters. ```APIDOC Hull-White Model: - Generic calibration added (adapted from LMM calibration). ``` -------------------------------- ### Improve Bermudan Swaption Valuation for Interest Rate Models Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md Improved implementation for Monte-Carlo valuation of Bermudan Swaptions. This enhancement allows for arbitrary swap schedules, consistent with `AnalyticModel`, and supports the injection of custom methods for conditional expectation estimation. ```APIDOC Class: net.finmath.montecarlo.interestrate.products.BermudanSwaptionFromSwapSchedules - Features: Arbitrary swap schedules, custom conditional expectation estimation ``` -------------------------------- ### Enable AAD Models via getCloneWithModifiedData Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md The `getCloneWithModifiedData` method now allows creating copies of models with a modified random variable factory. This enables the creation of AAD-enabled models from non-AAD models, facilitating calibration without AAD and subsequent sensitivity calculation with AAD. ```APIDOC Method: getCloneWithModifiedData - Purpose: Create model copies with modified random variable factory - Use Case: Enable AAD for sensitivity calculations after non-AAD calibration ``` -------------------------------- ### Java ModelFactory Interface for Financial Models Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/concepts/separationofproductandmodel/modelandproductdescriptors.md Defines a factory interface for constructing financial models. Implementations of this interface provide the specific logic for creating a `DescribedModel` instance from a given `ModelDescriptor`. The `getModelFromDescriptor` method takes a model descriptor and returns the corresponding model, abstracting away the underlying numerical method or simulation details. ```Java public interface ModelFactory { DescribedModel getModelFromDescriptor(T description); } ``` -------------------------------- ### Monte-Carlo Interest Rate Models: Option Component Regression Basis (finmath-lib 3.3.3) Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md The `Option` component in Monte-Carlo Interest Rate Models now supports the specification of a `RegressionBasisFunctionsProvider`. This allows users to customize the basis functions used in pricing American-style options. ```APIDOC Monte-Carlo Interest Rate Models (Option component): - Allows specification of "RegressionBasisFunctionsProvider". ``` -------------------------------- ### Java 9 Module System Configuration for Apache Commons Lang 3.6 Source: https://github.com/finmath/finmath-lib/blob/master/lib/LICENSE for commons-lang3-3.7/RELEASE-NOTES.txt Illustrates the `Automatic-Module-Name` entry added to the `MANIFEST.MF` file, enabling Apache Commons Lang 3.6 to be used as a module within the Java 9 module system. ```Java MANIFEST.MF entry: Automatic-Module-Name: org.apache.commons.lang3 ``` -------------------------------- ### MonteCarloBlackScholesModel Extends MonteCarloAssetModel (5.0.3) Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md The MonteCarloBlackScholesModel now extends MonteCarloAssetModel, aligning its inheritance hierarchy with broader asset modeling capabilities. ```APIDOC MonteCarloBlackScholesModel: Extends MonteCarloAssetModel. ``` -------------------------------- ### Method Rename: getLIBOR to getForwardRate Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md The method getLIBOR has been renamed to getForwardRate for clarity. A default implementation of getLIBOR is provided for backward compatibility, ensuring existing code continues to function. ```APIDOC Method Renamed: Old: getLIBOR() New: getForwardRate() Backward Compatibility: getLIBOR() provides default implementation. ``` -------------------------------- ### Bond Valuation on Single Discount Curve (5.0.9) Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md Bonds can now be valued using a single discount curve, simplifying the valuation process compared to the previous requirement of three separate curves (risk-free, basis, survival probability). ```APIDOC Bond Valuation: Bonds can now be valued on a single discount curve. ``` -------------------------------- ### Add Trapezoidal Rule to net.finmath.integration (finmath-lib 1.3.5) Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md The trapezoidal rule has been added to the net.finmath.integration package, along with a corresponding unit test. ```APIDOC net.finmath.integration: - Added trapezoidal rule and corresponding unit test. ``` -------------------------------- ### API Compatibility: Default Methods in Interfaces (finmath-lib 3.6.3) Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/releasenotes.md Introduced default methods in certain interfaces to ensure backward compatibility with upcoming 4.0.0 classes. This change facilitates smoother transitions and reduces breaking changes for users upgrading the library. ```APIDOC Interfaces: - Added default methods for 4.0.0 compatibility. ``` -------------------------------- ### Java Interface: Product Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/concepts/separationofproductandmodel/modelandproductinterfaces.md An interface for financial products, providing a method to calculate its value given a model. Implementations should handle double-dispatch for model arguments. ```APIDOC Product (interface) - provides getValue(Model model). Objects implementing the getValue method should provide a double-dispatch on the model argument, i.e., casting to suitable models. ``` -------------------------------- ### Creating a CUDA GPU-enabled AAD Random Variable Factory Source: https://github.com/finmath/finmath-lib/blob/master/src/site/markdown/concepts/stochasticautomaticdifferentiation/index.md Shows how to combine the automatic differentiation capabilities with CUDA GPU acceleration. By passing a `RandomVariableCudaFactory` to `RandomVariableDifferentiableAADFactory`, the system will create CUDA-enabled random variables that also support automatic differentiation, leveraging GPU performance. ```Java AbstractRandomVariableFactory randomVariableFactory = new RandomVariableDifferentiableAADFactory(new RandomVariableCudaFactory()); ```