Skip to content

Commit

Permalink
QLNet 1.12.0
Browse files Browse the repository at this point in the history
  • Loading branch information
amaggiulli committed Nov 24, 2021
2 parents 08ab703 + daa7201 commit b6679ec
Show file tree
Hide file tree
Showing 206 changed files with 4,365 additions and 7,879 deletions.
706 changes: 429 additions & 277 deletions ChangeLog.txt

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
BSD 3-Clause QLNet License

Copyright (c) 2018, Andrea Maggiulli
Copyright (c) 2018-2021, Andrea Maggiulli
All rights reserved.

Redistribution and use in source and binary forms, with or without
Expand Down
43 changes: 20 additions & 23 deletions News.txt
Original file line number Diff line number Diff line change
@@ -1,38 +1,35 @@
QLNet 1.11.4
QLNet 1.12.0
=========================

QLNet 1.11.4
QLNet 1.12.0
A detailed list of changes is available in ChangeLog.txt.

WARNING : This is the last version supporting old Visual Studio projects, with
the upcoming version 1.12 the QLNetOld.sln will be removed and a general cleanup
will be done.

MATH

+ Added Cumulative Gamma distribution
FRAMEWORK

INSTRUMENTS
+ Removed QLNet old framework solution
+ Updated tests to use only xunit
+ Updated library to netstandard 2.1
+ Updated test suite to .Net Core 5
+ Updated samples to .Net Core 5

+ Fixed Weighted Average Life calculation for past dates
MATH

TERMSTRUCTURES
+ Fixed LineSearchBasedMethod.minimize, thx @hhaldn for spotting it.

+ Added Quanto Term Structure
CALENDARS

METHODS
+ Fixed Denmark holidays, thx @hhaldn
+ Added Austrian, French and Chilean calendars
+ Updated all existing calendars up to 2021

+ Added Cranck-Nicholson, Method of Lines & TrBDF2 schemes
TIME

ENGINES
+ Added utility Date.ToDateTime() method
+ Fixed ActualActualISMA daycounter calculation for long/short final periods, thanks @kristofferpagels.


+ Fixed Broadie-Kaya exact scheme [Heston process]
+ Added Monte Carlo Barrier Engine
+ Fixed AdaptiveRungeKutta
+ Added Cumulative & Inverse Cumulative Chi² Distrib
TERMSTRUCTURES

FRAMEWORK
+ Fixed helpers sort for Piecewise Curves

+ Added more QLNet Exceptions
+ Bug fixing and refactoring.

74 changes: 2 additions & 72 deletions QLNet.sln
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.26228.10
# Visual Studio Version 16
VisualStudioVersion = 16.0.30011.22
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{0E7C422B-F8C0-433E-9E54-D3D55968222D}"
EndProject
Expand All @@ -11,26 +11,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QLNet", "src\QLNet\QLNet.cs
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QLNet.Tests", "tests\QLNet.Tests\QLNet.Tests.csproj", "{5D0C9349-1A5B-455F-9485-0EF4860C8F62}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BermudanSwaption", "src\BermudanSwaption\BermudanSwaption.csproj", "{B616E3F5-7201-4BE2-801D-6A084F77690E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bonds", "src\Bonds\Bonds.csproj", "{39C6B719-526E-4BEF-98E6-8E48319ABF0B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CallableBonds", "src\CallableBonds\CallableBonds.csproj", "{0B96DC4B-9B75-4926-A583-1D049B88731E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CVAIRS", "src\CVAIRS\CVAIRS.csproj", "{C2D21176-2143-48C3-A364-D6ED28B0FAD7}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EquityOption", "src\EquityOption\EquityOption.csproj", "{A11F2EEA-C561-42C3-A3C0-BDBF8A8A0758}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FittedBondCurve", "src\FittedBondCurve\FittedBondCurve.csproj", "{4AB97803-A149-45C0-9D8B-5E93851E296B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FRA", "src\FRA\FRA.csproj", "{683CF269-1F05-4C9B-9DCC-877977BC8C25}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Repo", "src\Repo\Repo.csproj", "{40456B2A-0B05-4DF1-951E-504BB339452A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Swap", "src\Swap\Swap.csproj", "{A653D5D9-660D-4DB2-938C-1676F5E35033}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ConvertibleBonds", "src\ConvertibleBonds\ConvertibleBonds.csproj", "{F0F89FDF-F7D9-46CA-9177-A06BA64E306F}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand All @@ -45,63 +25,13 @@ Global
{5D0C9349-1A5B-455F-9485-0EF4860C8F62}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5D0C9349-1A5B-455F-9485-0EF4860C8F62}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5D0C9349-1A5B-455F-9485-0EF4860C8F62}.Release|Any CPU.Build.0 = Release|Any CPU
{B616E3F5-7201-4BE2-801D-6A084F77690E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B616E3F5-7201-4BE2-801D-6A084F77690E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B616E3F5-7201-4BE2-801D-6A084F77690E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B616E3F5-7201-4BE2-801D-6A084F77690E}.Release|Any CPU.Build.0 = Release|Any CPU
{39C6B719-526E-4BEF-98E6-8E48319ABF0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{39C6B719-526E-4BEF-98E6-8E48319ABF0B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{39C6B719-526E-4BEF-98E6-8E48319ABF0B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{39C6B719-526E-4BEF-98E6-8E48319ABF0B}.Release|Any CPU.Build.0 = Release|Any CPU
{0B96DC4B-9B75-4926-A583-1D049B88731E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0B96DC4B-9B75-4926-A583-1D049B88731E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0B96DC4B-9B75-4926-A583-1D049B88731E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0B96DC4B-9B75-4926-A583-1D049B88731E}.Release|Any CPU.Build.0 = Release|Any CPU
{C2D21176-2143-48C3-A364-D6ED28B0FAD7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C2D21176-2143-48C3-A364-D6ED28B0FAD7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C2D21176-2143-48C3-A364-D6ED28B0FAD7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C2D21176-2143-48C3-A364-D6ED28B0FAD7}.Release|Any CPU.Build.0 = Release|Any CPU
{A11F2EEA-C561-42C3-A3C0-BDBF8A8A0758}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A11F2EEA-C561-42C3-A3C0-BDBF8A8A0758}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A11F2EEA-C561-42C3-A3C0-BDBF8A8A0758}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A11F2EEA-C561-42C3-A3C0-BDBF8A8A0758}.Release|Any CPU.Build.0 = Release|Any CPU
{4AB97803-A149-45C0-9D8B-5E93851E296B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4AB97803-A149-45C0-9D8B-5E93851E296B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4AB97803-A149-45C0-9D8B-5E93851E296B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4AB97803-A149-45C0-9D8B-5E93851E296B}.Release|Any CPU.Build.0 = Release|Any CPU
{683CF269-1F05-4C9B-9DCC-877977BC8C25}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{683CF269-1F05-4C9B-9DCC-877977BC8C25}.Debug|Any CPU.Build.0 = Debug|Any CPU
{683CF269-1F05-4C9B-9DCC-877977BC8C25}.Release|Any CPU.ActiveCfg = Release|Any CPU
{683CF269-1F05-4C9B-9DCC-877977BC8C25}.Release|Any CPU.Build.0 = Release|Any CPU
{40456B2A-0B05-4DF1-951E-504BB339452A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{40456B2A-0B05-4DF1-951E-504BB339452A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{40456B2A-0B05-4DF1-951E-504BB339452A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{40456B2A-0B05-4DF1-951E-504BB339452A}.Release|Any CPU.Build.0 = Release|Any CPU
{A653D5D9-660D-4DB2-938C-1676F5E35033}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A653D5D9-660D-4DB2-938C-1676F5E35033}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A653D5D9-660D-4DB2-938C-1676F5E35033}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A653D5D9-660D-4DB2-938C-1676F5E35033}.Release|Any CPU.Build.0 = Release|Any CPU
{F0F89FDF-F7D9-46CA-9177-A06BA64E306F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F0F89FDF-F7D9-46CA-9177-A06BA64E306F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F0F89FDF-F7D9-46CA-9177-A06BA64E306F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F0F89FDF-F7D9-46CA-9177-A06BA64E306F}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{A12A9BB7-9C80-4ED2-ADA7-A267D1D36DA4} = {0E7C422B-F8C0-433E-9E54-D3D55968222D}
{5D0C9349-1A5B-455F-9485-0EF4860C8F62} = {7509F81A-396A-4765-AF64-F5DB3ECD227C}
{B616E3F5-7201-4BE2-801D-6A084F77690E} = {0E7C422B-F8C0-433E-9E54-D3D55968222D}
{39C6B719-526E-4BEF-98E6-8E48319ABF0B} = {0E7C422B-F8C0-433E-9E54-D3D55968222D}
{0B96DC4B-9B75-4926-A583-1D049B88731E} = {0E7C422B-F8C0-433E-9E54-D3D55968222D}
{C2D21176-2143-48C3-A364-D6ED28B0FAD7} = {0E7C422B-F8C0-433E-9E54-D3D55968222D}
{A11F2EEA-C561-42C3-A3C0-BDBF8A8A0758} = {0E7C422B-F8C0-433E-9E54-D3D55968222D}
{4AB97803-A149-45C0-9D8B-5E93851E296B} = {0E7C422B-F8C0-433E-9E54-D3D55968222D}
{683CF269-1F05-4C9B-9DCC-877977BC8C25} = {0E7C422B-F8C0-433E-9E54-D3D55968222D}
{40456B2A-0B05-4DF1-951E-504BB339452A} = {0E7C422B-F8C0-433E-9E54-D3D55968222D}
{A653D5D9-660D-4DB2-938C-1676F5E35033} = {0E7C422B-F8C0-433E-9E54-D3D55968222D}
{F0F89FDF-F7D9-46CA-9177-A06BA64E306F} = {0E7C422B-F8C0-433E-9E54-D3D55968222D}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {D4B9C389-D195-4E74-9536-587E7D349B67}
Expand Down
38 changes: 0 additions & 38 deletions QLNetOld.sln

This file was deleted.

14 changes: 9 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,15 @@ QLNet also contains new developments on the bond market like MBS, Amortized Cost
[![NuGet](https://buildstats.info/nuget/qlnet)](https://www.nuget.org/packages/qlnet/)
[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?item_name=Donation+to+QLNet&cmd=_donations&business=a.maggiulli%40gmail.com)

[![Quality Gate](https://sonarcloud.io/api/project_badges/measure?project=QLNet-develop&metric=alert_status)](https://sonarcloud.io/dashboard?id=QLNet-develop)
[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=QLNet-develop&metric=bugs)](https://sonarcloud.io/project/issues?id=QLNet-develop&resolved=false&types=BUG)
[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=QLNet-develop&metric=vulnerabilities)](https://sonarcloud.io/project/issues?id=QLNet-develop&resolved=false&types=VULNERABILITY)
[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=QLNet-develop&metric=code_smells)](https://sonarcloud.io/project/issues?id=QLNet-develop&resolved=false&types=CODE_SMELL)
[![Duplicated Lines](https://sonarcloud.io/api/project_badges/measure?project=QLNet-develop&metric=duplicated_lines_density)](https://sonarcloud.io/component_measures?id=QLNet-develop&metric=duplicated_lines_density)
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=QLNet&metric=alert_status)](https://sonarcloud.io/dashboard?id=QLNet)
[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=QLNet&metric=bugs)](https://sonarcloud.io/dashboard?id=QLNet)
[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=QLNet&metric=vulnerabilities)](https://sonarcloud.io/dashboard?id=QLNet)
[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=QLNet&metric=code_smells)](https://sonarcloud.io/dashboard?id=QLNet)
[![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=QLNet&metric=duplicated_lines_density)](https://sonarcloud.io/dashboard?id=QLNet)
[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=QLNet&metric=ncloc)](https://sonarcloud.io/dashboard?id=QLNet)
[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=QLNet&metric=sqale_rating)](https://sonarcloud.io/dashboard?id=QLNet)
[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=QLNet&metric=reliability_rating)](https://sonarcloud.io/dashboard?id=QLNet)
[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=QLNet&metric=security_rating)](https://sonarcloud.io/dashboard?id=QLNet)
[![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=QLNet-develop&metric=sqale_index)](https://sonarcloud.io/dashboard?id=QLNet-develop)

## Development workflow
Expand Down
87 changes: 33 additions & 54 deletions appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
branches:
only:
- master
version: 1.11.4
version: 1.12.0
configuration: Release
platform: Any CPU
image: Visual Studio 2019
Expand All @@ -16,42 +16,39 @@
do_not_increment_build_number: true
nuget:
disable_publish_on_pr: true
before_build:
- cmd: dotnet restore qlnet.sln
build:
project: QLNet.sln
verbosity: minimal
build_script:
- cmd: dotnet build -c Release
after_build:
- cmd: dotnet pack src/qlnet/qlnet.csproj -c Release -o ./
artifacts:
- path: src\QLNet\bin\Release\netstandard12\QLNet.dll
- path: src\QLNet\bin\Release\netstandard2.1\QLNet.dll
name: Windows
- path: .\*.nupkg
name: ng
deploy:
- provider: GitHub
tag: QLNet-v1.11.4
release: QLNet Version 1.11.4
description: QLNet 1.11.4
tag: QLNet-v1.12.0
release: QLNet Version 1.12.0
description: QLNet 1.12.0
auth_token:
secure: rK95hgNgZt9ybzXBJ/1W0nbqsG/aENQ22eyY2qxn5xjbi7ZEjv+5BmNjY/l1cAYH
artifact: src\QLNet\bin\Release\netstandard12\QLNet.dll
artifact: src\QLNet\bin\Release\netstandard2.1\QLNet.dll
draft: false
force_update: false
- provider: NuGet
api_key:
secure: HcilScZbZnJrCk5hoEPz9MSzKQanBzsQCfulI9gFpcT7wurwxIy3hwSwPfjXmr/v
secure: PfSWPcbGqOhlEhGG74+J7tmJMa5RU/N19DEyjVP2GUXGQG4MWBeTmrKE/W4A70dh
skip_symbols: true
artifact: ng

# Configuration for "develop" branch
# build in Debug mode, run tests , deploy to Sonar
# build in Release mode, run tests , deploy to Sonar
-
branches:
only:
- develop
version: 1.11.4-preview.{build}
configuration: Debug
version: 1.12.0-preview.{build}
configuration: Release
platform: Any CPU
image: Visual Studio 2019
skip_tags: true
Expand All @@ -60,20 +57,16 @@
do_not_increment_build_number: true
nuget:
disable_publish_on_pr: true
init:
- cmd: set JAVA_HOME=C:\Program Files\Java\jdk11
before_build:
- cmd: "dotnet tool install --global dotnet-sonarscanner\ndotnet restore qlnet.sln"
- cmd: "dotnet clean qlnet.sln"
- cmd: "dotnet tool install --global dotnet-sonarscanner"
- cmd: "SET runner_args=\"\""
- cmd: "if \"%APPVEYOR_PULL_REQUEST_NUMBER%\"==\"\" SET runner_args=%sonar_commit%"
- cmd: "if not \"%APPVEYOR_PULL_REQUEST_NUMBER%\"==\"\" SET runner_args=%sonar_pr%"
- cmd: "if \"%APPVEYOR_PULL_REQUEST_NUMBER%\"==\"\" SET runner_args=%sonar_commit_new%"
- cmd: "if not \"%APPVEYOR_PULL_REQUEST_NUMBER%\"==\"\" SET runner_args=%sonar_pr_new%"
- cmd: "dotnet sonarscanner begin %runner_args%"
- cmd: "dotnet build qlnet.sln /p:Configuration=Debug /logger:\"C:\\Program Files\\AppVeyor\\BuildAgent\\dotnetcore\\Appveyor.MSBuildLogger.dll\" /target:src\\qlnet"
- cmd: "dotnet sonarscanner end /d:\"sonar.login=%sonar_token%\""
build:
project: QLNet.sln
verbosity: minimal
after_build:
- cmd: dotnet pack src/qlnet/qlnet.csproj -c Debug -o ./
build_script:
- cmd: dotnet build -c Release
artifacts:
- path: .\*.nupkg
name: ng
Expand All @@ -86,39 +79,37 @@
file_version: '{version}'
informational_version: '{version}'
test_script:
- cmd: vstest.console /logger:Appveyor /TestCaseFilter:"TestCategory!=LongRun" "c:\projects\qlnet_develop\tests\QLNet.Tests\bin\Debug\net452\QLNet.Tests.dll"
- cmd: dotnet test -v=normal --no-build -p:Configuration=Release --collect "XPlat Code Coverage" -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=opencover
after_test:
- cmd: "dotnet sonarscanner end /d:\"sonar.login=%sonar_token_new%\""
- cmd: dotnet pack src/qlnet/qlnet.csproj -c Release -o ./
deploy:
- provider: NuGet
api_key:
secure: HcilScZbZnJrCk5hoEPz9MSzKQanBzsQCfulI9gFpcT7wurwxIy3hwSwPfjXmr/v
secure: PfSWPcbGqOhlEhGG74+J7tmJMa5RU/N19DEyjVP2GUXGQG4MWBeTmrKE/W4A70dh
skip_symbols: false
artifact: ng

# Configuration for "feature/*" branch
# build in Debug mode, run tests , deploy to Sonar
# build in Release mode, run tests , deploy to Nuget
-
branches:
only:
- /feature/
version: 1.11.4-{build}
configuration: Debug
version: 1.12.0-{build}
configuration: Release
platform: Any CPU
image: Visual Studio 2019
skip_tags: true
clone_folder: c:\projects\qlnet_feature
init:
- cmd: set JAVA_HOME=C:\Program Files\Java\jdk11
- cmd: "set branch=%APPVEYOR_REPO_BRANCH%\necho branch:%branch%\nset gitVersion=%branch:/=.%\necho gitversion:%gitVersion%\nset newVersion=%gitVersion%.%APPVEYOR_BUILD_NUMBER%\necho %newVersion%"
- cmd: appveyor UpdateBuild -Version "1.11.4-%newVersion%"
- cmd: appveyor UpdateBuild -Version "1.12.0-%newVersion%"
before_build:
- cmd: dotnet restore qlnet.sln
build:
project: QLNet.sln
verbosity: minimal
after_build:
- cmd: dotnet pack src/qlnet/qlnet.csproj -c Debug -o ./
artifacts:
- path: .\*.nupkg
name: ng
build_script:
- cmd: dotnet build -c Release
dotnet_csproj:
patch: true
file: '**\*.csproj'
Expand All @@ -131,18 +122,6 @@
do_not_increment_build_number: true
nuget:
disable_publish_on_pr: true
deploy:
- provider: NuGet
api_key:
secure: HcilScZbZnJrCk5hoEPz9MSzKQanBzsQCfulI9gFpcT7wurwxIy3hwSwPfjXmr/v
skip_symbols: true
artifact: ng
test: off
# test_script:
# - cmd: vstest.console /logger:Appveyor /TestCaseFilter:"TestCategory!=LongRun" "c:\projects\qlnet_feature\tests\QLNet.Tests\bin\Release\net45\QLNet.Tests.dll"
test_script:
- cmd: dotnet test -v=normal --no-build -p:Configuration=Release

# "fall back" configuration for all other branches
# no "branches" section defined
# do not deploy at all
-
configuration: Debug
File renamed without changes.
File renamed without changes.
Loading

0 comments on commit b6679ec

Please sign in to comment.