{"id":18604969,"url":"https://github.com/finmath/finmath-lib","last_synced_at":"2025-05-14T23:06:29.494Z","repository":{"id":7484004,"uuid":"8832601","full_name":"finmath/finmath-lib","owner":"finmath","description":"Mathematical Finance Library: Algorithms and methodologies related to mathematical finance.","archived":false,"fork":false,"pushed_at":"2025-04-22T08:36:16.000Z","size":231289,"stargazers_count":519,"open_issues_count":12,"forks_count":173,"subscribers_count":44,"default_branch":"master","last_synced_at":"2025-04-22T09:45:35.132Z","etag":null,"topics":["finmath-lib","java","mathematical-modelling","monte-carlo-simulation","quantitative-finance","simulation"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/finmath.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-03-17T10:00:22.000Z","updated_at":"2025-04-22T08:36:22.000Z","dependencies_parsed_at":"2023-02-12T18:00:54.835Z","dependency_job_id":"c038e1bf-dd19-4a4d-82a3-e485a355c5d8","html_url":"https://github.com/finmath/finmath-lib","commit_stats":{"total_commits":4431,"total_committers":32,"mean_commits":138.46875,"dds":"0.054615211013315235","last_synced_commit":"af5fb8713e7e64abab41313bf7dd9bfa21ed852f"},"previous_names":[],"tags_count":138,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/finmath%2Ffinmath-lib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/finmath%2Ffinmath-lib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/finmath%2Ffinmath-lib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/finmath%2Ffinmath-lib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/finmath","download_url":"https://codeload.github.com/finmath/finmath-lib/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254243360,"owners_count":22038046,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["finmath-lib","java","mathematical-modelling","monte-carlo-simulation","quantitative-finance","simulation"],"created_at":"2024-11-07T02:19:31.620Z","updated_at":"2025-05-14T23:06:24.476Z","avatar_url":"https://github.com/finmath.png","language":"Java","readme":"About finmath lib\n==========\n\n****************************************\n\n**Mathematical Finance Library: Algorithms and methodologies related to mathematical finance.**\n\n****************************************\n\n[![Twitter](https://img.shields.io/twitter/url/https/github.com/finmath/finmath-lib.svg?style=social)](https://twitter.com/intent/tweet?text=Wow:\u0026url=https%3A%2F%2Fgithub.com%2Ffinmath%2Ffinmath-lib)\n[![GitHub license](https://img.shields.io/github/license/finmath/finmath-lib.svg)](https://github.com/finmath/finmath-lib/blob/master/LICENSE.txt)\n[![Latest release](https://img.shields.io/github/release/finmath/finmath-lib.svg)](https://github.com/finmath/finmath-lib/releases/latest)\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/net.finmath/finmath-lib/badge.svg)](https://maven-badges.herokuapp.com/maven-central/net.finmath/finmath-lib)\n[![Build Status](https://travis-ci.org/finmath/finmath-lib.svg?branch=master)](https://travis-ci.org/finmath/finmath-lib)\n[![javadoc](https://javadoc.io/badge2/net.finmath/finmath-lib/javadoc.svg)](https://javadoc.io/doc/net.finmath/finmath-lib)\n\n**Project home page: http://finmath.net/finmath-lib**\n\nThe finmath lib libraries provides (JVM) implementations of methodologies related to mathematical finance, but applicable to other fields. Examples are\n\n- Analytic Formulas\n    - Distributions: Normal, Gamma, Non-Central Chi-Squared (some functions are delegated to Apache commons-math).\n    - Models: Black Scholes, Bachelier, SABR, ZABR, CEV, etc.\n- General numerical algorithms like\n    - Generation of random numbers\n    - Optimization (a Levenberg–Marquardt algorithm is provided)\n- Valuation using **Fourier transforms** / **characteristic functions** (contributed by Alessandro Gnoatto, Lorenzo Torricelli and others)\n    - Black-Scholes model\n    - Heston model\n    - Bates model\n    - Two factor Bates model\n    - Merton model\n    - Variance Gamma model (contributed and maintained by Alessandro Gnoatto)\n- **Finite difference methods** (contributed by Ralph Rudd and Jörg Kienitz)\n    - Numerical schemes using finite differences\n        - Theta-scheme\n    - Models\n        - Black-Scholes model\n        - Constant Elasticity of Variance model\n    - Products\n        - European option\n- **Monte-Carlo simulation** of multi-dimensional, multi-factor stochastic differential equations (SDEs)\n    - Hull-White Short Rate Model (with time dependent parameters)\n    - LIBOR Market Model (Forward Rate Model) (in various forms)\n    - Time Homogeneous Forward Rate Model\n    - Cross-Currency LIBOR Market Model\n    - Black-Scholes type multi-asset model (multi-factor, multi-dimensional geometric Brownian motion)\n    - Equity Hybrid LIBOR Market Model\n    - Merton Model (as Monte-Carlo Simulation)\n    - Heston Model (as Monte-Carlo Simulation)\n    - Variance Gamma model (as Monte-Carlo Simulation, contributed and maintained by Alessandro Gnoatto)\n- **American Monte-Carlo**: Estimation of conditional expectations in a Monte-Carlo framework\n- **Stochastic Automatic Differentiation** (AAD) (part of the package `net.finmath.montecarlo.automaticdifferentiation`)\n- **Monte-Carlo Simulation on GPGPUs** (via Cuda) (requires finmath-lib-cuda-extensions https://github.com/finmath/finmath-lib-cuda-extensions )\n- Dependency injection on numerical algorithms (Monte-Carlo simulations) with custom return type priorities (see http://ssrn.com/abstract=3246127 ).\n- **Dividend model for equity option valuation** (European and American) (contributed by Andreas Grotz)\n- **Analytic valuation via curves and surfaces** \n    - Multi-Curve valuation of interest rate products (collateralization and funding) (Swaps, FRA).\n    - Bonds valuation using bond curves.\n    - CDS valuation.\n- **Calibration** of market data objects like curves (discount and forward curve) or volatility surfaces\n    - Rate Curves:\n        - **Multi-curve interest rate curve calibration** (OIS discounting, basis-swaps, cross-currency-swaps).\n        - **Bond curve calibration** using local linear regression (see https://ssrn.com/abstract=3073942 ).\n        - Various interpolation methods (linear, cubic spline, harmonic spline, Akima).\n        - Various interpolation entities (value, log-value, rate, etc.).\n        - Parametric curves like Nelson-Siegel and Nelson-Siegel-Svensson.\n    - Volatility Curves and Cubes:\n        - **SABR smile** parameterization.\n        - Swaption volatility cubes with SABR parameterization.\n        - **CMS replication** with various annuity mappings.\n- Simulation of **interest rate term structure models** (LIBOR market model with local and stochastic volatility)\n    - LIBOR market model with local and stochastic volatility\n    - Time-Homogeneous Forward Rate Model (LIBOR market model)\n    - Calibration of the **LIBOR market model**\n    - Cross-Currency LIBOR Market Model\n    - Equity Hybrid LIBOR Market Model\n    - Local and stochastic volatility models (SABR, ZABR)\n- Valuation of complex derivatives\n    - Bermudan options / multi-callables lower bound via regression estimation of the conditional expectation\n    - Bermudan options / multi-callables upper bound via dual method\n- **Hedge Simulation**\n- **Margin Valuation Adjustments** (MVA) though forward ISDA SIMM simulation (this is currently a separate project at https://github.com/finmath ).\n- **Integrated Assessment Models** / DICE Model. A version of the DICE model is part of the package net.finmath.climate.\n\nLanguages and Build\n--------------------------------------\n\nThe library is available for Java 11 and Java 8. We are starting to provide examples in Kotlin.\n\nThe Maven build file is provide. Import the project as Maven project.\n\nThe default Maven profile is Java 11 without Kotlin. To enable Java 8 version select the Maven profile 'java-8'. To enable Kotlin select the Maven profile 'kotlin'.\n\n\nReleases\n--------------------------------------\n\nBinary releases can be found at http://finmath.net/finmath-lib .\nThe version numbering of finmath-lib follows a the *[semantic versioning](https://semver.org)* \n(at least we try to).\n\n\nDistribution\n--------------------------------------\n\nfinmath lib is distributed through the central maven repository. It's coordinates are:\n\nFor the Java 11 version:\n\n    \u003cgroupId\u003enet.finmath\u003c/groupId\u003e\n    \u003cartifactId\u003efinmath-lib\u003c/artifactId\u003e\n    \u003cversion\u003e${project.version}\u003c/version\u003e\n    \nFor the Java 8 version:\n\n\t\u003cgroupId\u003enet.finmath\u003c/groupId\u003e\n\t\u003cartifactId\u003efinmath-lib\u003c/artifactId\u003e\n\t\u003cversion\u003e3.6.3\u003c/version\u003e\n\t\u003cclassifier\u003ejava8\u003c/classifier\u003e\n\n*Note: finmath-lib Version 4 and 5 is currently not available for Java 6. For Java 6 you may try version 3.6.3 with classifier java6.*\n\n\nYou may build the Java 11 version via Maven using\n\n\tmvn -P java-11\n\nand the Java 8 version using\n\n\tmvn -P java-8\n\t\nSource code\n-------------------------------------\n\nThe finmath lib Java library comes in two flavors which have a slightly different code base: a Java 11 version and a Java 8 version.\nWe will use Java 11 concepts in the future and try to provide Java 8 compatibility where possible.\n\nFor that reason, the source code is duplicated:\n-    src/main/java\t\t\t\tcontains the Java 11 compatible source files\n-    src/main/java8\t\t\t\tcontains the Java 8 compatible source files\n\nAlthough the two folder share some/many identical source files, we prefer this two folder layout\nover one with a third folder like java-common.\n\n\n### Building finmath lib\n\n-    To build finmath lib for Java 11 use src/main/java\n-    To build finmath lib for Java 8 use src/main/java8\n\nThese builds may be performed via Maven the profiles \"java-11\" and \"java-8\".\nThe eclipse project file is pre-configured to Java 11.\n\n#### Maven build\n\nThe maven pom defaults to the Java 11 build. To build finmath lib for Java 8 use the maven profile \"java-8\".\n\n\nRepositories\n-------------------------------------\n\nSource code and demos are provided via Github repository.\n\t\t\t\u003cul\u003e\n\t\t\t\t\u003cli\u003e\n\t\t\t\t\t\u003ci\u003eGit\u003c/i\u003e repositories with Java code:\n\t\t\t\t\t\u003cul\u003e\n\t\t\t\t\t\t\u003cli\u003e\n\t\t\t\t\t\t\tfinmath lib: [https://github.com/finmath/finmath-lib](https://github.com/finmath/finmath-lib)\n\t\t\t\t\t\t\u003c/li\u003e\n\t\t\t\t\t\t\u003cli\u003e\n\t\t\t\t\t\t\tfinmath experiments: [https://github.com/finmath/finmath-experiments](https://github.com/finmath/finmath-experiments)\n\t\t\t\t\t\t\u003c/li\u003e\n\t\t\t\t\t\t\u003cli\u003e\n\t\t\t\t\t\t\tfinmath spreadsheets: [https://github.com/finmath/finmath-spreadsheets](https://github.com/finmath/finmath-spreadsheets)\n\t\t\t\t\t\t\u003c/li\u003e\n\t\t\t\t\t\u003c/ul\u003e\n\t\t\t\t\u003c/li\u003e\n\t\t\t\u003c/ul\u003e\n\nAlthough not recommended, the repository contains an Eclipse project and classpath file including all dependencies.\n\nDocumentation\n-------\n\nFor documentation please check out\n\n-   [finmath lib Project documentation][]  \n    provides the documentation of the library api.\n-   [finmath lib API documentation][]  \n    provides the documentation of the library api.\n-   [finmath.net special topics][]  \n    cover some selected topics with demo spreadsheets and uml diagrams.\n    Some topics come with additional documentations (technical papers).\n\n\nLicense\n-------\n\nThe code of \"finmath lib\" and \"finmath experiments\" (packages\n`net.finmath.*`) are distributed under the [Apache License version\n2.0][], unless otherwise explicitly stated.\n \n\n  [finmath lib Project documentation]: http://finmath.net/finmath-lib/ \n  [finmath lib API documentation]: http://finmath.net/finmath-lib/apidocs/\n  [finmath.net special topics]: http://www.finmath.net/topics\n  [Apache License version 2.0]: http://www.apache.org/licenses/LICENSE-2.0.html\n\n\nExtensions\n-------------------------------------\n\nThe [finmath-lib-cuda-extensions](http://finmath.net/finmath-lib-cuda-extensions/) implement the interface `RandomVariable` via Cuda GPU code. This allows to perform Monte-Carlo simulations on the GPUs with a minimal change: a replacement of the random variable factory.\n\nThe finmath-lib-automaticdifferentiation-extensions implement the RandomVariableInterface via an AAD enabled version. This allows to access automatic differentiations with a minimal change: a replacement of the random variable factory.\nStarting with version 3.3.1 the finmath-lib-automaticdifferentiation-extensions is part of finmath-lib.\n\n\nCoding Conventions\n-------------------------------------\n\nWe follow losely the Eclipse coding conventions, which are a minimal modification of the original Java coding conventions. See https://wiki.eclipse.org/Coding_Conventions\n\nWe deviate in some places:\n\n-   We allow for long code lines. Some coding conventions limit the length of a line to something like 80 characters (like FORTRAN did in the 70'ies). Given widescreen monitors we believe that line wrapping makes code much harder to read than code with long(er) lines.\n\n-\tWe usually do not make a space after statements like `íf`, `for`. We interpret `íf` and `for` as functions and for functions and methods we do not have a space between the name and the argument list either. That is, we write\n\n    if(condition) {\n      // code\n    }\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffinmath%2Ffinmath-lib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffinmath%2Ffinmath-lib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffinmath%2Ffinmath-lib/lists"}