From ed122cf9a8022ac7dd7f4919cda8c79f8bfdbcab Mon Sep 17 00:00:00 2001 From: "arsen.podoba" Date: Fri, 17 Apr 2026 17:00:52 +0200 Subject: [PATCH 1/8] Add calendars (Croatia, Malta, Montenegro, North Macedonia, Serbia, Slovenia, Uzbekistan) --- QuantLib.vcxproj | 5806 +++++----- QuantLib.vcxproj.filters | 14724 +++++++++++++------------ ql/time/calendars/all.hpp | 7 + ql/time/calendars/croatia.cpp | 72 + ql/time/calendars/croatia.hpp | 71 + ql/time/calendars/malta.cpp | 84 + ql/time/calendars/malta.hpp | 83 + ql/time/calendars/montenegro.cpp | 74 + ql/time/calendars/montenegro.hpp | 62 + ql/time/calendars/northmacedonia.cpp | 87 + ql/time/calendars/northmacedonia.hpp | 68 + ql/time/calendars/serbia.cpp | 64 + ql/time/calendars/serbia.hpp | 65 + ql/time/calendars/slovenia.cpp | 68 + ql/time/calendars/slovenia.hpp | 71 + ql/time/calendars/uzbekistan.cpp | 110 + ql/time/calendars/uzbekistan.hpp | 66 + 17 files changed, 11331 insertions(+), 10251 deletions(-) create mode 100644 ql/time/calendars/croatia.cpp create mode 100644 ql/time/calendars/croatia.hpp create mode 100644 ql/time/calendars/malta.cpp create mode 100644 ql/time/calendars/malta.hpp create mode 100644 ql/time/calendars/montenegro.cpp create mode 100644 ql/time/calendars/montenegro.hpp create mode 100644 ql/time/calendars/northmacedonia.cpp create mode 100644 ql/time/calendars/northmacedonia.hpp create mode 100644 ql/time/calendars/serbia.cpp create mode 100644 ql/time/calendars/serbia.hpp create mode 100644 ql/time/calendars/slovenia.cpp create mode 100644 ql/time/calendars/slovenia.hpp create mode 100644 ql/time/calendars/uzbekistan.cpp create mode 100644 ql/time/calendars/uzbekistan.hpp diff --git a/QuantLib.vcxproj b/QuantLib.vcxproj index 68a2051320b..ada42e44fb8 100644 --- a/QuantLib.vcxproj +++ b/QuantLib.vcxproj @@ -1,2896 +1,2910 @@ - - - - - Debug (static runtime) - Win32 - - - Debug (static runtime) - x64 - - - Debug - Win32 - - - Debug - x64 - - - Release (static runtime) - Win32 - - - Release (static runtime) - x64 - - - Release - Win32 - - - Release - x64 - - - - QuantLib - {AD0A27DA-91DA-46A2-ACBD-296C419ED3AA} - QuantLib - - - - - StaticLibrary - false - MultiByte - - - StaticLibrary - false - MultiByte - - - StaticLibrary - false - MultiByte - - - StaticLibrary - false - MultiByte - - - StaticLibrary - false - MultiByte - - - StaticLibrary - false - MultiByte - - - StaticLibrary - false - MultiByte - - - StaticLibrary - false - MultiByte - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>11.0.1 - .\lib\ - .\lib\ - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - .\lib\ - .\lib\ - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - .\lib\ - .\lib\ - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - .\lib\ - .\lib\ - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - QuantLib-mt-sgd - QuantLib-x64-mt-sgd - QuantLib-mt-gd - QuantLib-x64-mt-gd - QuantLib-mt-s - QuantLib-x64-mt-s - QuantLib-mt - QuantLib-x64-mt - - - - MaxSpeed - stdcpp17 - AnySuitable - false - Speed - .;%(AdditionalIncludeDirectories) - NDEBUG;WIN32;_LIB;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - false - true - true - - - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\QuantLib.pch - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - - - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - Level3 - true - Default - true - true - true - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - Make build directory - if not exist lib mkdir lib - - - $(OutDir)$(TargetName)$(TargetExt) - true - - - false - - - - - MaxSpeed - stdcpp17 - AnySuitable - false - Speed - .;%(AdditionalIncludeDirectories) - NDEBUG;WIN32;_LIB;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - false - true - true - - - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\QuantLib.pch - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - - - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - Level3 - true - Default - true - true - true - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - Make build directory - if not exist lib mkdir lib - - - $(OutDir)$(TargetName)$(TargetExt) - true - - - false - - - - - Disabled - stdcpp17 - false - .;%(AdditionalIncludeDirectories) - _DEBUG;WIN32;_LIB;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - false - true - true - - - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\QuantLib.pch - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - - - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - Level3 - true - EditAndContinue - Default - true - true - true - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - Make build directory - if not exist lib mkdir lib - - - $(OutDir)$(TargetName)$(TargetExt) - true - - - false - - - - - Disabled - stdcpp17 - false - .;%(AdditionalIncludeDirectories) - _DEBUG;WIN32;_LIB;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - false - true - true - - - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\QuantLib.pch - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - - - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - Level3 - true - ProgramDatabase - Default - true - true - true - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - Make build directory - if not exist lib mkdir lib - - - $(OutDir)$(TargetName)$(TargetExt) - true - - - false - - - - - MaxSpeed - stdcpp17 - AnySuitable - false - Speed - .;%(AdditionalIncludeDirectories) - NDEBUG;WIN32;_LIB;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS;%(PreprocessorDefinitions) - true - MultiThreaded - true - false - true - true - - - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\QuantLib.pch - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - - - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - Level3 - true - Default - true - true - true - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - Make build directory - if not exist lib mkdir lib - - - $(OutDir)$(TargetName)$(TargetExt) - true - - - false - - - - - MaxSpeed - stdcpp17 - AnySuitable - false - Speed - .;%(AdditionalIncludeDirectories) - NDEBUG;WIN32;_LIB;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS;%(PreprocessorDefinitions) - true - MultiThreaded - true - false - true - true - - - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\QuantLib.pch - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - - - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - Level3 - true - Default - true - true - true - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - Make build directory - if not exist lib mkdir lib - - - $(OutDir)$(TargetName)$(TargetExt) - true - - - false - - - - - Disabled - stdcpp17 - false - .;%(AdditionalIncludeDirectories) - _DEBUG;WIN32;_LIB;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebug - false - true - true - - - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\QuantLib.pch - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - - - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - Level3 - true - EditAndContinue - Default - true - true - true - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - Make build directory - if not exist lib mkdir lib - - - $(OutDir)$(TargetName)$(TargetExt) - true - - - false - - - - - Disabled - stdcpp17 - false - .;%(AdditionalIncludeDirectories) - _DEBUG;WIN32;_LIB;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebug - false - true - true - - - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\QuantLib.pch - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - - - .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ - Level3 - true - ProgramDatabase - Default - true - true - true - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - Make build directory - if not exist lib mkdir lib - - - $(OutDir)$(TargetName)$(TargetExt) - true - - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug (static runtime) + Win32 + + + Debug (static runtime) + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release (static runtime) + Win32 + + + Release (static runtime) + x64 + + + Release + Win32 + + + Release + x64 + + + + QuantLib + {AD0A27DA-91DA-46A2-ACBD-296C419ED3AA} + QuantLib + + + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>11.0.1 + .\lib\ + .\lib\ + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + .\lib\ + .\lib\ + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + .\lib\ + .\lib\ + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + .\lib\ + .\lib\ + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + QuantLib-mt-sgd + QuantLib-x64-mt-sgd + QuantLib-mt-gd + QuantLib-x64-mt-gd + QuantLib-mt-s + QuantLib-x64-mt-s + QuantLib-mt + QuantLib-x64-mt + + + + MaxSpeed + stdcpp17 + AnySuitable + false + Speed + .;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_LIB;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + false + true + true + + + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\QuantLib.pch + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + + + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + Level3 + true + Default + true + true + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Make build directory + if not exist lib mkdir lib + + + $(OutDir)$(TargetName)$(TargetExt) + true + + + false + + + + + MaxSpeed + stdcpp17 + AnySuitable + false + Speed + .;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_LIB;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + false + true + true + + + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\QuantLib.pch + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + + + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + Level3 + true + Default + true + true + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Make build directory + if not exist lib mkdir lib + + + $(OutDir)$(TargetName)$(TargetExt) + true + + + false + + + + + Disabled + stdcpp17 + false + .;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_LIB;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + false + true + true + + + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\QuantLib.pch + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + + + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + Level3 + true + EditAndContinue + Default + true + true + true + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Make build directory + if not exist lib mkdir lib + + + $(OutDir)$(TargetName)$(TargetExt) + true + + + false + + + + + Disabled + stdcpp17 + false + .;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_LIB;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + false + true + true + + + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\QuantLib.pch + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + + + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + Level3 + true + ProgramDatabase + Default + true + true + true + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Make build directory + if not exist lib mkdir lib + + + $(OutDir)$(TargetName)$(TargetExt) + true + + + false + + + + + MaxSpeed + stdcpp17 + AnySuitable + false + Speed + .;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_LIB;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS;%(PreprocessorDefinitions) + true + MultiThreaded + true + false + true + true + + + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\QuantLib.pch + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + + + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + Level3 + true + Default + true + true + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Make build directory + if not exist lib mkdir lib + + + $(OutDir)$(TargetName)$(TargetExt) + true + + + false + + + + + MaxSpeed + stdcpp17 + AnySuitable + false + Speed + .;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_LIB;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS;%(PreprocessorDefinitions) + true + MultiThreaded + true + false + true + true + + + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\QuantLib.pch + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + + + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + Level3 + true + Default + true + true + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Make build directory + if not exist lib mkdir lib + + + $(OutDir)$(TargetName)$(TargetExt) + true + + + false + + + + + Disabled + stdcpp17 + false + .;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_LIB;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + false + true + true + + + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\QuantLib.pch + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + + + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + Level3 + true + EditAndContinue + Default + true + true + true + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Make build directory + if not exist lib mkdir lib + + + $(OutDir)$(TargetName)$(TargetExt) + true + + + false + + + + + Disabled + stdcpp17 + false + .;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_LIB;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + false + true + true + + + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\QuantLib.pch + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + + + .\build\$(PlatformToolset)\$(Platform)\$(Configuration)\ + Level3 + true + ProgramDatabase + Default + true + true + true + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Make build directory + if not exist lib mkdir lib + + + $(OutDir)$(TargetName)$(TargetExt) + true + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/QuantLib.vcxproj.filters b/QuantLib.vcxproj.filters index 4e5e678dc9d..3559f7a5196 100644 --- a/QuantLib.vcxproj.filters +++ b/QuantLib.vcxproj.filters @@ -1,7355 +1,7369 @@ - - - - - - - - {b8aa1a7a-0199-4243-94e9-44c79da50099} - - - {aea49e67-9408-4620-89d3-037c781cba11} - - - {31939e69-d4cf-4754-8226-2b55bd65ee25} - - - {c7ee75dd-b0c1-40c1-b672-eb15b51fb2b2} - - - {7a76183f-0ac9-49e9-a574-d83fa3ca88eb} - - - {0f08b9f0-9002-4f9b-bf66-c9e73d2ca13b} - - - {9d53bbc0-3213-471b-9b14-01c9bbef411c} - - - {1886f7fd-2357-47aa-bc92-84d13b48a913} - - - {f4ad9f82-7463-4af1-973a-ab13fddba354} - - - {bdda7538-22a4-44ac-925a-6c95afb05c55} - - - {692074d7-b624-441f-b7da-a660d59f5fb8} - - - {7c2dcbda-48ea-48eb-bd23-b1d88d45dbc3} - - - {b42ab6bf-67e2-4186-8a69-9de38642fe9e} - - - {c69725ed-ff73-4e74-9777-d3fd2c4b0f48} - - - {a591a398-d145-47e3-9d70-3586402ef751} - - - {0235f1b9-babc-41ec-b0c7-ee8ea60090e1} - - - {37bc9da0-bb2a-4e61-ae73-1fd8cd26b466} - - - {6853f0b6-f5cb-475a-bb31-b7d03ffa0685} - - - {627e33e9-8709-415d-b7a8-b6c3f680c241} - - - {d7c675a7-76b5-4ef4-ad8f-e64de99c39c7} - - - {fe3e871d-733d-4497-9d95-fa5248f1b5ab} - - - {8ee72e86-e0bd-4390-b4ef-8a60dad32991} - - - {0a0e9ecd-4c8e-4e72-8195-123ef41301be} - - - {483b4555-8ff3-4f29-a747-ef06e274fd73} - - - {4df7c636-1015-4420-b49b-d084fd0813db} - - - {73f36670-3ee6-4af8-9a8b-45ca71a8293d} - - - {88b6dfd9-e5f9-4f0d-8143-ab75b68cf472} - - - {1e4d1b00-7be4-4b86-b8ab-4e13c7d8d2d3} - - - {6b816a6e-05ec-4faa-9943-83bb71d84e23} - - - {01775f02-a000-4176-b7ec-d98d70a365b7} - - - {d5ea26ea-a326-48a2-90b8-7f1c8a126a98} - - - {3a3f097f-0d50-4527-86b5-548bbc1c20cd} - - - {aa3f5c77-d466-43ab-b063-9be4cd44c900} - - - {f3557c7e-8b6b-486b-acf2-1340ff7431f9} - - - {e9089237-fe8c-4d55-914d-52d7d327f3bd} - - - {5ba48137-364c-4ea0-8ed4-2345d82d471c} - - - {eb617bd5-2e6b-4c09-b151-ee5162072000} - - - {89a29868-6250-48c4-9114-49d231bbb022} - - - {0b0b5594-c9af-4db2-b1af-6f72ac6418db} - - - {3f3a5a66-d590-4175-90b3-96cb391e5fad} - - - {8b4b44b7-fa7b-4b04-8186-b74a4b4553ff} - - - {146d248f-eca5-4d6e-a41c-56f68851c964} - - - {b72a4d22-c381-4ed5-b6a3-97285fc789d0} - - - {1b0ea6af-abd5-4c8d-9ac1-f513efc372fd} - - - {55f020ff-1b2f-4f56-8194-6fe99d69e9f1} - - - {0bf280b6-d895-40ff-b988-65ad2880c1ff} - - - {abef9afa-8a52-4aa4-919f-9783ff8f1007} - - - {be944554-fbaf-47f3-beee-c441a7e8f1ce} - - - {88309f41-e501-4c74-90ab-22e8cca7f0ca} - - - {f5650187-c37a-4a98-8a24-8836f0f11324} - - - {159ec8ea-6958-4f60-a716-62915d2cef63} - - - {539e9341-cf4e-499c-9828-cf406c5c7e4b} - - - {e31e697b-bed3-4d0c-b1e0-15747249a105} - - - {af9827f7-274b-43da-a2a2-40fc4c80c194} - - - {25fb83ed-1731-4cd6-aa3a-d8027a0eca9f} - - - {717cf2d6-0581-4aa8-a21f-34e9700bc89e} - - - {d8199c0f-73e6-47e0-8444-57267a6112c4} - - - {b134ed97-6567-422a-b13e-21ce2e9abdd5} - - - {7d2cb293-d738-4289-ba74-fd7445bf6749} - - - {23b3f559-6e47-4fbe-846d-4dc9002560f3} - - - {4b67a796-2576-42be-89cc-b751a07e3973} - - - {50c1f3c8-4281-11ee-be56-0242ac120002} - - - {25671919-a7a3-4197-943c-23a5df4e8146} - - - {817c0417-9b08-4702-9b00-af51445dce2a} - - - {4c3b4a0c-5a68-4167-8e21-bfaf6b75563b} - - - {8606a756-ea3a-44ee-a9ed-f5e76761023e} - - - {5b92aca1-b394-4001-83a3-bc2d58fba28f} - - - {39b63159-982e-48fa-8723-def3612fce0d} - - - {3ec47a48-746e-4e8f-ae78-a5e1f154bb71} - - - {79361c8f-2a4f-4cae-97b3-b6762c33ff63} - - - {147286c4-32fb-4540-9752-f9eb5d165cd6} - - - {d754981c-0ab8-4c35-bd77-ad78c78e9b41} - - - {083a46bb-a18c-4a14-8d21-baad35f27df5} - - - {a709110c-73f5-4b2e-b44c-46a909a89b31} - - - {36727168-b97c-4f82-aeb7-e397627499a6} - - - {d076d7be-7ff0-4df0-829a-73dc1cfaa7ae} - - - {3346f5d8-7c2e-4444-bca0-837abbec52da} - - - {5eb5dffa-ec4b-4d24-acbd-9c5e7c2fa072} - - - {41c18bb1-d892-4994-b699-cd644c6421e8} - - - {4eadb3fc-a4ce-4e0c-bfe5-f23777a30a8d} - - - {33f1be16-e858-4cfe-ba9c-483609826221} - - - {aad1cf31-2c29-47a1-9461-ee71b1dd9a6a} - - - {fceaa051-43f2-4c81-9bf5-a38d88b661ad} - - - {1b920d53-9803-4152-8653-c855397066d4} - - - {38f8ad14-f839-425e-b711-68a9acd361f9} - - - {aae4b1e6-d6bd-44d9-af3d-4e5efcfd0b57} - - - {d7d44f55-80bf-4af8-9367-5c903022d99e} - - - {ae60e960-e1e8-49f4-9a18-bc976b60f165} - - - {7d489132-7d03-49f7-bad4-bde084e20bbe} - - - {d42ff6e1-a70e-4fe7-a35a-db4ca5ef1c95} - - - {936a8947-d2c0-4bdd-95c5-8b52daf92cc4} - - - {c046c970-45d0-4156-b587-ff2bc881bf04} - - - {aa33a8b9-0ac4-49d9-ad88-a7810d0532dd} - - - {db6b7309-6e3f-4eb2-bce2-6f45a933a788} - - - {51b20bfb-087c-4623-be3c-647010d4e809} - - - {9eeb0683-3147-4850-9eba-645af86b58e4} - - - {fffa1e10-7b29-41f9-a775-b2bb61638f39} - - - {8cc2e654-d55c-41e3-8005-e6222102f717} - - - {e29388ea-045b-43fe-95f7-0973b8537907} - - - {63ee57ce-bf68-4a4a-b5c8-29d11c2a11ee} - - - {8a1123c5-a617-4cf2-93df-e554735531ae} - - - {12b22ebc-4102-4d94-b640-8490b20365b7} - - - {8fd699bb-f489-4e96-a998-54b5612a9aa7} - - - {d18be44d-a78a-4109-a3f8-757c4737d267} - - - {02219e9b-59b0-458f-9937-397f83864a9e} - - - {209ea670-7502-4ccc-a3fd-5d793608356b} - - - {8bb09d36-55a0-4496-8e78-989117257790} - - - {5d212607-989f-42d9-ae9d-a54f29d74dfc} - - - {2c4b39a7-b606-4f9f-9df6-70685dbde95f} - - - {be723df5-2e58-41de-8071-8d2e2f62410a} - - - {743389ec-4f1b-48ee-98f5-d46f4684b688} - - - {0abb3851-b409-4ea6-8e55-120d00a9fcdb} - - - {ac3d075b-c62b-4d89-a091-2f66a70b33d0} - - - - - methods - - - methods\montecarlo - - - methods\montecarlo - - - methods\montecarlo - - - methods\montecarlo - - - methods\montecarlo - - - methods\montecarlo - - - methods\montecarlo - - - methods\montecarlo - - - methods\montecarlo - - - methods\montecarlo - - - methods\montecarlo - - - methods\montecarlo - - - methods\montecarlo - - - methods\montecarlo - - - methods\montecarlo - - - methods\montecarlo - - - methods\montecarlo - - - methods\finitedifferences - - - methods\finitedifferences - - - methods\finitedifferences - - - methods\finitedifferences - - - methods\finitedifferences - - - methods\finitedifferences - - - methods\finitedifferences - - - methods\finitedifferences - - - methods\finitedifferences - - - methods\finitedifferences - - - methods\finitedifferences - - - methods\finitedifferences - - - methods\finitedifferences - - - methods\finitedifferences - - - methods\finitedifferences - - - methods\finitedifferences - - - methods\finitedifferences - - - methods\finitedifferences - - - methods\finitedifferences - - - methods\lattices - - - methods\lattices - - - methods\lattices - - - methods\lattices - - - methods\lattices - - - methods\lattices - - - methods\lattices - - - methods\lattices - - - methods\lattices - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - indexes - - - indexes - - - indexes - - - indexes - - - indexes - - - indexes - - - indexes - - - indexes - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\swap - - - indexes\swap - - - indexes\swap - - - indexes\swap - - - indexes\swap - - - indexes\swap - - - indexes\swap - - - indexes\inflation - - - indexes\inflation - - - indexes\inflation - - - indexes\inflation - - - indexes\inflation - - - indexes\inflation - - - indexes\inflation - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments\bonds - - - instruments\bonds - - - instruments\bonds - - - instruments\bonds - - - instruments\bonds - - - instruments\bonds - - - instruments\bonds - - - instruments\bonds - - - instruments\bonds - - - instruments\bonds - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math\interpolations - - - math\interpolations - - - math\interpolations - - - math\interpolations - - - math\interpolations - - - math\interpolations - - - math\interpolations - - - math\interpolations - - - math\interpolations - - - math\interpolations - - - math\interpolations - - - math\interpolations - - - math\interpolations - - - math\interpolations - - - math\interpolations - - - math\interpolations - - - math\interpolations - - - math\interpolations - - - math\interpolations - - - math\interpolations - - - math\interpolations - - - math\interpolations - - - math\statistics - - - math\statistics - - - math\statistics - - - math\statistics - - - math\statistics - - - math\statistics - - - math\statistics - - - math\statistics - - - math\statistics - - - math\statistics - - - math\distributions - - - math\distributions - - - math\distributions - - - math\distributions - - - math\distributions - - - math\distributions - - - math\distributions - - - math\distributions - - - math\distributions - - - math\integrals - - - math\integrals - - - math\integrals - - - math\integrals - - - math\integrals - - - math\integrals - - - math\integrals - - - math\integrals - - - math\integrals - - - math\integrals - - - math\integrals - - - math\integrals - - - math\integrals - - - math\matrixutilities - - - math\matrixutilities - - - math\matrixutilities - - - math\matrixutilities - - - math\matrixutilities - - - math\matrixutilities - - - math\matrixutilities - - - math\matrixutilities - - - math\matrixutilities - - - math\matrixutilities - - - math\matrixutilities - - - math\matrixutilities - - - math\randomnumbers - - - math\randomnumbers - - - math\randomnumbers - - - math\randomnumbers - - - math\randomnumbers - - - math\randomnumbers - - - math\randomnumbers - - - math\randomnumbers - - - math\randomnumbers - - - math\randomnumbers - - - math\randomnumbers - - - math\randomnumbers - - - math\randomnumbers - - - math\randomnumbers - - - math\randomnumbers - - - math\randomnumbers - - - math\randomnumbers - - - math\randomnumbers - - - math\randomnumbers - - - math\randomnumbers - - - math\randomnumbers - - - math\randomnumbers - - - math\randomnumbers - - - math\solvers1D - - - math\solvers1D - - - math\solvers1D - - - math\solvers1D - - - math\solvers1D - - - math\solvers1D - - - math\solvers1D - - - math\solvers1D - - - math\solvers1D - - - math\optimization - - - math\optimization - - - math\optimization - - - math\optimization - - - math\optimization - - - math\optimization - - - math\optimization - - - math\optimization - - - math\optimization - - - math\optimization - - - math\optimization - - - math\optimization - - - math\optimization - - - math\optimization - - - math\optimization - - - math\optimization - - - math\optimization - - - math\optimization - - - math\optimization - - - math\optimization - - - math\optimization - - - math\copulas - - - math\copulas - - - math\copulas - - - math\copulas - - - math\copulas - - - math\copulas - - - math\copulas - - - math\copulas - - - math\copulas - - - math\copulas - - - math\copulas - - - math\copulas - - - math\copulas - - - math\copulas - - - patterns - - - patterns - - - patterns - - - patterns - - - patterns - - - patterns - - - models - - - models - - - models - - - models - - - models\marketmodels - - - models\marketmodels - - - models\marketmodels - - - models\marketmodels - - - models\marketmodels - - - models\marketmodels - - - models\marketmodels - - - models\marketmodels - - - models\marketmodels - - - models\marketmodels - - - models\marketmodels - - - models\marketmodels - - - models\marketmodels - - - models\marketmodels - - - models\marketmodels - - - models\marketmodels - - - models\marketmodels - - - models\marketmodels - - - models\marketmodels - - - models\marketmodels - - - models\marketmodels - - - models\marketmodels\browniangenerators - - - models\marketmodels\browniangenerators - - - models\marketmodels\browniangenerators - - - models\marketmodels\curvestates - - - models\marketmodels\curvestates - - - models\marketmodels\curvestates - - - models\marketmodels\curvestates - - - models\marketmodels\driftcomputation - - - models\marketmodels\driftcomputation - - - models\marketmodels\driftcomputation - - - models\marketmodels\driftcomputation - - - models\marketmodels\driftcomputation - - - models\marketmodels\evolvers - - - models\marketmodels\evolvers - - - models\marketmodels\evolvers - - - models\marketmodels\evolvers - - - models\marketmodels\evolvers - - - models\marketmodels\evolvers - - - models\marketmodels\evolvers - - - models\marketmodels\evolvers - - - models\marketmodels\evolvers - - - models\marketmodels\evolvers - - - models\marketmodels\evolvers - - - models\marketmodels\evolvers - - - models\marketmodels\evolvers\volprocesses - - - models\marketmodels\evolvers\volprocesses - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\products - - - models\marketmodels\products - - - models\marketmodels\products - - - models\marketmodels\products - - - models\marketmodels\products - - - models\marketmodels\products - - - models\marketmodels\products\multistep - - - models\marketmodels\products\multistep - - - models\marketmodels\products\multistep - - - models\marketmodels\products\multistep - - - models\marketmodels\products\multistep - - - models\marketmodels\products\multistep - - - models\marketmodels\products\multistep - - - models\marketmodels\products\multistep - - - models\marketmodels\products\multistep - - - models\marketmodels\products\multistep - - - models\marketmodels\products\multistep - - - models\marketmodels\products\multistep - - - models\marketmodels\products\multistep - - - models\marketmodels\products\multistep - - - models\marketmodels\products\multistep - - - models\marketmodels\products\multistep - - - models\marketmodels\products\multistep - - - models\marketmodels\products\onestep - - - models\marketmodels\products\onestep - - - models\marketmodels\products\onestep - - - models\marketmodels\products\onestep - - - models\marketmodels\products\onestep - - - models\marketmodels\products\pathwise - - - models\marketmodels\products\pathwise - - - models\marketmodels\products\pathwise - - - models\marketmodels\products\pathwise - - - models\marketmodels\products\pathwise - - - models\marketmodels\products\pathwise - - - models\marketmodels\products\pathwise - - - models\marketmodels\correlations - - - models\marketmodels\correlations - - - models\marketmodels\correlations - - - models\marketmodels\correlations - - - models\marketmodels\callability - - - models\marketmodels\callability - - - models\marketmodels\callability - - - models\marketmodels\callability - - - models\marketmodels\callability - - - models\marketmodels\callability - - - models\marketmodels\callability - - - models\marketmodels\callability - - - models\marketmodels\callability - - - models\marketmodels\callability - - - models\marketmodels\callability - - - models\marketmodels\callability - - - models\marketmodels\callability - - - models\marketmodels\callability - - - models\marketmodels\callability - - - models\marketmodels\pathwisegreeks - - - models\marketmodels\pathwisegreeks - - - models\marketmodels\pathwisegreeks - - - models\marketmodels\pathwisegreeks - - - models\marketmodels\pathwisegreeks - - - models\shortrate - - - models\shortrate - - - models\shortrate - - - models\shortrate\calibrationhelpers - - - models\shortrate\calibrationhelpers - - - models\shortrate\calibrationhelpers - - - models\shortrate\onefactormodels - - - models\shortrate\onefactormodels - - - models\shortrate\onefactormodels - - - models\shortrate\onefactormodels - - - models\shortrate\onefactormodels - - - models\shortrate\onefactormodels - - - models\shortrate\twofactorsmodels - - - models\shortrate\twofactorsmodels - - - models\volatility - - - models\volatility - - - models\volatility - - - models\volatility - - - models\volatility - - - models\equity - - - models\equity - - - models\equity - - - models\equity - - - models\equity - - - models\equity - - - termstructures - - - termstructures - - - termstructures - - - termstructures - - - termstructures - - - termstructures - - - termstructures - - - termstructures - - - termstructures - - - termstructures - - - termstructures - - - termstructures - - - termstructures - - - termstructures\volatility - - - termstructures\volatility - - - termstructures\volatility - - - termstructures\volatility - - - termstructures\volatility - - - termstructures\volatility - - - termstructures\volatility - - - termstructures\volatility - - - termstructures\volatility - - - termstructures\volatility - - - termstructures\volatility - - - termstructures\volatility - - - termstructures\volatility - - - termstructures\volatility - - - termstructures\volatility\capfloor - - - termstructures\volatility\capfloor - - - termstructures\volatility\capfloor - - - termstructures\volatility\capfloor - - - termstructures\volatility\capfloor - - - termstructures\volatility\equityfx - - - termstructures\volatility\equityfx - - - termstructures\volatility\equityfx - - - termstructures\volatility\equityfx - - - termstructures\volatility\equityfx - - - termstructures\volatility\equityfx - - - termstructures\volatility\equityfx - - - termstructures\volatility\equityfx - - - termstructures\volatility\equityfx - - - termstructures\volatility\equityfx - - - termstructures\volatility\equityfx - - - termstructures\volatility\equityfx - - - termstructures\volatility\equityfx - - - termstructures\volatility\equityfx - - - termstructures\volatility\equityfx - - - termstructures\volatility\optionlet - - - termstructures\volatility\optionlet - - - termstructures\volatility\optionlet - - - termstructures\volatility\optionlet - - - termstructures\volatility\optionlet - - - termstructures\volatility\optionlet - - - termstructures\volatility\optionlet - - - termstructures\volatility\optionlet - - - termstructures\volatility\optionlet - - - termstructures\volatility\optionlet - - - termstructures\volatility\optionlet - - - termstructures\volatility\swaption - - - termstructures\volatility\swaption - - - termstructures\volatility\swaption - - - termstructures\volatility\swaption - - - termstructures\volatility\swaption - - - termstructures\volatility\swaption - - - termstructures\volatility\swaption - - - termstructures\volatility\swaption - - - termstructures\volatility\swaption - - - termstructures\volatility\swaption - - - termstructures\volatility\swaption - - - termstructures\volatility\swaption - - - termstructures\volatility\inflation - - - termstructures\volatility\inflation - - - termstructures\volatility\inflation - - - termstructures\volatility\inflation - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\inflation - - - termstructures\inflation - - - termstructures\inflation - - - termstructures\inflation - - - termstructures\inflation - - - termstructures\inflation - - - termstructures\inflation - - - termstructures\inflation - - - termstructures\credit - - - termstructures\credit - - - termstructures\credit - - - termstructures\credit - - - termstructures\credit - - - termstructures\credit - - - termstructures\credit - - - termstructures\credit - - - termstructures\credit - - - termstructures\credit - - - termstructures\credit - - - utilities - - - utilities - - - utilities - - - utilities - - - utilities - - - utilities - - - utilities - - - utilities - - - utilities - - - utilities - - - utilities - - - currencies - - - currencies - - - currencies - - - currencies - - - currencies - - - currencies - - - currencies - - - currencies - - - processes - - - processes - - - processes - - - processes - - - processes - - - processes - - - processes - - - processes - - - processes - - - processes - - - processes - - - processes - - - processes - - - processes - - - processes - - - processes - - - processes - - - processes - - - pricingengines - - - pricingengines - - - pricingengines - - - pricingengines - - - pricingengines - - - pricingengines - - - pricingengines - - - pricingengines - - - pricingengines - - - pricingengines - - - pricingengines - - - pricingengines - - - pricingengines\asian - - - pricingengines\asian - - - pricingengines\asian - - - pricingengines\asian - - - pricingengines\asian - - - pricingengines\asian - - - pricingengines\asian - - - pricingengines\asian - - - pricingengines\asian - - - pricingengines\asian - - - pricingengines\barrier - - - pricingengines\barrier - - - pricingengines\barrier - - - pricingengines\barrier - - - pricingengines\barrier - - - pricingengines\barrier - - - pricingengines\basket - - - pricingengines\basket - - - pricingengines\basket - - - pricingengines\basket - - - pricingengines\basket - - - pricingengines\exotic - - - pricingengines\exotic - - - pricingengines\exotic - - - pricingengines\exotic - - - pricingengines\exotic - - - pricingengines\exotic - - - pricingengines\exotic - - - pricingengines\exotic - - - pricingengines\exotic - - - pricingengines\forward - - - pricingengines\forward - - - pricingengines\forward - - - pricingengines\forward - - - pricingengines\forward - - - pricingengines\forward - - - pricingengines\forward - - - pricingengines\forward - - - pricingengines\forward - - - pricingengines\quanto - - - pricingengines\quanto - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\capfloor - - - pricingengines\capfloor - - - pricingengines\capfloor - - - pricingengines\capfloor - - - pricingengines\capfloor - - - pricingengines\capfloor - - - pricingengines\capfloor - - - pricingengines\swaption - - - pricingengines\swaption - - - pricingengines\swaption - - - pricingengines\swaption - - - pricingengines\swaption - - - pricingengines\swaption - - - pricingengines\cliquet - - - pricingengines\cliquet - - - pricingengines\cliquet - - - pricingengines\cliquet - - - pricingengines\lookback - - - pricingengines\lookback - - - pricingengines\lookback - - - pricingengines\lookback - - - pricingengines\lookback - - - pricingengines\lookback - - - pricingengines\bond - - - pricingengines\bond - - - pricingengines\bond - - - pricingengines\bond - - - pricingengines\bond - - - pricingengines\swap - - - pricingengines\swap - - - pricingengines\swap - - - pricingengines\swap - - - pricingengines\swap - - - pricingengines\credit - - - pricingengines\credit - - - pricingengines\credit - - - pricingengines\credit - - - pricingengines\inflation - - - pricingengines\inflation - - - quotes - - - quotes - - - quotes - - - quotes - - - quotes - - - quotes - - - quotes - - - quotes - - - quotes - - - quotes - - - quotes - - - quotes - - - time - - - time - - - time - - - time - - - time - - - time - - - time - - - time - - - time - - - time - - - time - - - time - - - time - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\daycounters - - - time\daycounters - - - time\daycounters - - - time\daycounters - - - time\daycounters - - - time\daycounters - - - time\daycounters - - - time\daycounters - - - time\daycounters - - - time\daycounters - - - time\daycounters - - - time\daycounters - - - legacy - - - legacy\libormarketmodels - - - legacy\libormarketmodels - - - legacy\libormarketmodels - - - legacy\libormarketmodels - - - legacy\libormarketmodels - - - legacy\libormarketmodels - - - legacy\libormarketmodels - - - legacy\libormarketmodels - - - legacy\libormarketmodels - - - legacy\libormarketmodels - - - legacy\libormarketmodels - - - legacy\libormarketmodels - - - legacy\libormarketmodels - - - legacy\libormarketmodels - - - legacy\libormarketmodels - - - legacy\libormarketmodels - - - experimental - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\callablebonds - - - experimental\callablebonds - - - experimental\callablebonds - - - experimental\callablebonds - - - experimental\callablebonds - - - experimental\callablebonds - - - experimental\callablebonds - - - experimental\catbonds - - - experimental\catbonds - - - experimental\catbonds - - - experimental\catbonds - - - experimental\catbonds - - - experimental\coupons - - - experimental\coupons - - - experimental\coupons - - - cashflows - - - experimental\coupons - - - experimental\coupons - - - experimental\coupons - - - experimental\coupons - - - experimental\coupons - - - experimental\fx - - - experimental\fx - - - experimental\fx - - - experimental\exoticoptions - - - pricingengines\barrier - - - pricingengines\barrier - - - experimental\exoticoptions - - - experimental\exoticoptions - - - experimental\exoticoptions - - - experimental\exoticoptions - - - experimental\exoticoptions - - - experimental\exoticoptions - - - experimental\exoticoptions - - - experimental\exoticoptions - - - experimental\exoticoptions - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\mcbasket - - - experimental\mcbasket - - - experimental\mcbasket - - - experimental\mcbasket - - - experimental\mcbasket - - - experimental\mcbasket - - - experimental\mcbasket - - - experimental\mcbasket - - - math\ode - - - termstructures\volatility - - - termstructures\volatility - - - pricingengines\swaption - - - instruments - - - instruments - - - pricingengines\capfloor - - - pricingengines\swaption - - - pricingengines\swaption - - - pricingengines\swaption - - - termstructures\volatility - - - pricingengines\swaption - - - termstructures\volatility\swaption - - - processes - - - processes - - - termstructures\volatility - - - processes - - - instruments - - - instruments - - - termstructures\volatility - - - experimental\processes - - - experimental\processes - - - experimental\processes - - - experimental\processes - - - experimental\risk - - - experimental\risk - - - experimental\risk - - - experimental\shortrate - - - experimental\shortrate - - - experimental\shortrate - - - experimental\swaptions - - - experimental\swaptions - - - experimental\swaptions - - - experimental\swaptions - - - experimental\termstructures - - - experimental\varianceoption - - - experimental\varianceoption - - - experimental\varianceoption - - - experimental\variancegamma - - - experimental\variancegamma - - - experimental\variancegamma - - - experimental\variancegamma - - - experimental\variancegamma - - - experimental\variancegamma - - - experimental\variancegamma - - - experimental\lattices - - - experimental\lattices - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\averageois - - - experimental\averageois - - - experimental\averageois - - - experimental\averageois - - - experimental\barrieroption - - - experimental\barrieroption - - - experimental\barrieroption - - - experimental\barrieroption - - - experimental\barrieroption - - - experimental\barrieroption - - - experimental\barrieroption - - - experimental\barrieroption - - - experimental\barrieroption - - - experimental\barrieroption - - - experimental\inflation - - - experimental\inflation - - - experimental\inflation - - - experimental\inflation - - - experimental\inflation - - - experimental\inflation - - - experimental\inflation - - - experimental\inflation - - - experimental\inflation - - - experimental\inflation - - - experimental\math - - - math\ode - - - experimental\math - - - experimental\math - - - experimental\math - - - experimental\math - - - experimental\math - - - experimental\math - - - experimental\math - - - experimental\math - - - experimental\math - - - experimental\math - - - methods\finitedifferences\operators - - - methods\finitedifferences\operators - - - experimental\math - - - experimental\math - - - experimental\math - - - math\optimization - - - experimental\math - - - experimental\math - - - pricingengines\barrier - - - pricingengines\barrier - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cashflows - - - cashflows - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments\bonds - - - experimental\finitedifferences - - - experimental\finitedifferences - - - experimental\finitedifferences - - - experimental\finitedifferences - - - experimental\finitedifferences - - - experimental\finitedifferences - - - experimental\finitedifferences - - - experimental\finitedifferences - - - experimental\finitedifferences - - - experimental\finitedifferences - - - methods\finitedifferences\solvers - - - experimental\finitedifferences - - - experimental\finitedifferences - - - experimental\processes - - - experimental\processes - - - experimental\inflation - - - experimental\inflation - - - experimental\finitedifferences - - - experimental\finitedifferences - - - experimental\finitedifferences - - - experimental\finitedifferences - - - experimental\finitedifferences - - - experimental\processes - - - processes - - - experimental\finitedifferences - - - experimental\finitedifferences - - - math\matrixutilities - - - methods\finitedifferences\meshers - - - methods\finitedifferences\meshers - - - methods\finitedifferences\meshers - - - pricingengines\basket - - - pricingengines\vanilla - - - pricingengines\asian - - - pricingengines\asian - - - pricingengines\asian - - - pricingengines\barrier - - - pricingengines\barrier - - - pricingengines\barrier - - - pricingengines\barrier - - - pricingengines\barrier - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - methods\finitedifferences\meshers - - - methods\finitedifferences\operators - - - methods\finitedifferences\operators - - - methods\finitedifferences\solvers - - - methods\finitedifferences\solvers - - - methods\finitedifferences\solvers - - - methods\finitedifferences\solvers - - - methods\finitedifferences\stepconditions - - - methods\finitedifferences\stepconditions - - - methods\finitedifferences\stepconditions - - - methods\finitedifferences\stepconditions - - - methods\finitedifferences\stepconditions - - - methods\finitedifferences\stepconditions - - - methods\finitedifferences\stepconditions - - - methods\finitedifferences\solvers - - - methods\finitedifferences\operators - - - methods\finitedifferences\operators - - - methods\finitedifferences\operators - - - methods\finitedifferences\operators - - - methods\finitedifferences\operators - - - methods\finitedifferences\solvers - - - methods\finitedifferences\solvers - - - methods\finitedifferences\solvers - - - methods\finitedifferences\solvers - - - methods\finitedifferences\solvers - - - methods\finitedifferences\meshers - - - methods\finitedifferences\meshers - - - methods\finitedifferences\meshers - - - methods\finitedifferences\meshers - - - methods\finitedifferences\meshers - - - methods\finitedifferences\utilities - - - methods\finitedifferences\utilities - - - methods\finitedifferences\utilities - - - methods\finitedifferences\utilities - - - methods\finitedifferences\utilities - - - methods\finitedifferences\utilities - - - methods\finitedifferences\operators - - - methods\finitedifferences\operators - - - methods\finitedifferences\operators - - - methods\finitedifferences\operators - - - methods\finitedifferences\operators - - - methods\finitedifferences\operators - - - methods\finitedifferences\operators - - - methods\finitedifferences\operators - - - methods\finitedifferences\operators - - - methods\finitedifferences\solvers - - - methods\finitedifferences\solvers - - - methods\finitedifferences\meshers - - - methods\finitedifferences\meshers - - - methods\finitedifferences\meshers - - - methods\finitedifferences\meshers - - - methods\finitedifferences\schemes - - - methods\finitedifferences\schemes - - - methods\finitedifferences\schemes - - - methods\finitedifferences\schemes - - - methods\finitedifferences\schemes - - - methods\finitedifferences\schemes - - - methods\finitedifferences\schemes - - - methods\finitedifferences\schemes - - - methods\finitedifferences\schemes - - - methods\finitedifferences\schemes - - - experimental\finitedifferences - - - math\matrixutilities - - - pricingengines\vanilla - - - methods\finitedifferences\stepconditions - - - pricingengines\vanilla - - - methods\finitedifferences\solvers - - - pricingengines\swaption - - - pricingengines\swaption - - - methods\finitedifferences\solvers - - - methods\finitedifferences\solvers - - - methods\finitedifferences\operators - - - methods\finitedifferences\operators - - - methods\finitedifferences\utilities - - - methods\finitedifferences\utilities - - - experimental\finitedifferences - - - experimental\finitedifferences - - - experimental\finitedifferences - - - experimental\finitedifferences - - - math\matrixutilities - - - math\optimization - - - math\randomnumbers - - - math - - - methods\finitedifferences\utilities - - - methods\finitedifferences\utilities - - - methods\finitedifferences\utilities - - - pricingengines\vanilla - - - time - - - instruments - - - experimental\models - - - experimental\models - - - termstructures\volatility\equityfx - - - methods\finitedifferences\operators - - - experimental\finitedifferences - - - termstructures\volatility\equityfx - - - termstructures\volatility\equityfx - - - math - - - math - - - models\shortrate\onefactormodels - - - models\shortrate\onefactormodels - - - models\shortrate\onefactormodels - - - experimental\math - - - experimental\math - - - experimental\math - - - experimental\math - - - experimental\math - - - experimental\math - - - termstructures\volatility\equityfx - - - termstructures\volatility\equityfx - - - methods\finitedifferences\operators - - - math\matrixutilities - - - experimental\volatility - - - experimental\models - - - experimental\math - - - experimental\basismodels - - - experimental\basismodels - - - experimental\basismodels - - - experimental\basismodels - - - methods\finitedifferences\meshers - - - methods\finitedifferences\operators - - - methods\finitedifferences\operators - - - methods\finitedifferences\utilities - - - methods\finitedifferences\utilities - - - methods\finitedifferences\utilities - - - methods\finitedifferences\utilities - - - methods\finitedifferences\utilities - - - methods\finitedifferences\utilities - - - methods\finitedifferences\utilities - - - methods\finitedifferences\utilities - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - methods\finitedifferences\schemes - - - math\integrals - - - math\integrals - - - pricingengines\vanilla - - - math\integrals - - - termstructures\yield - - - experimental\forward - - - experimental\forward - - - experimental\asian - - - experimental\asian - - - experimental\asian - - - experimental\termstructures - - - experimental\termstructures - - - pricingengines\vanilla - - - methods\finitedifferences\utilities - - - methods\finitedifferences\utilities - - - methods\finitedifferences\utilities - - - instruments - - - pricingengines\bond - - - pricingengines\asian - - - math\integrals - - - math\interpolations - - - pricingengines\vanilla - - - pricingengines\vanilla - - - models\equity - - - models\equity - - - pricingengines\barrier - - - pricingengines\barrier - - - pricingengines\barrier - - - instruments - - - instruments - - - methods\finitedifferences\operators - - - methods\finitedifferences\operators - - - methods\finitedifferences\operators - - - methods\finitedifferences\utilities - - - methods\finitedifferences\operators - - - indexes\inflation - - - indexes - - - instruments - - - cashflows - - - time\daycounters - - - indexes\ibor - - - indexes\ibor - - - math\matrixutilities - - - math\solvers1D - - - methods\finitedifferences\operators - - - pricingengines\basket - - - pricingengines\basket - - - pricingengines\basket - - - pricingengines\basket - - - pricingengines\basket - - - pricingengines\basket - - - pricingengines\basket - - - pricingengines\basket - - - instruments - - - pricingengines\futures - - - pricingengines\futures - - - pricingengines - - - pricingengines\vanilla - - - - - methods\montecarlo - - - methods\montecarlo - - - methods\montecarlo - - - methods\montecarlo - - - methods\finitedifferences - - - methods\finitedifferences - - - methods\lattices - - - methods\lattices - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - cashflows - - - indexes - - - indexes - - - indexes - - - indexes - - - indexes - - - indexes - - - indexes - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\ibor - - - indexes\swap - - - indexes\swap - - - indexes\swap - - - indexes\swap - - - indexes\swap - - - indexes\swap - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments - - - instruments\bonds - - - instruments\bonds - - - instruments\bonds - - - instruments\bonds - - - instruments\bonds - - - instruments\bonds - - - instruments\bonds - - - instruments\bonds - - - instruments\bonds - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math\statistics - - - math\statistics - - - math\statistics - - - math\statistics - - - math\distributions - - - math\distributions - - - math\distributions - - - math\distributions - - - math\distributions - - - math\distributions - - - math\integrals - - - math\integrals - - - math\integrals - - - math\integrals - - - math\integrals - - - math\integrals - - - math\integrals - - - math\integrals - - - math\matrixutilities - - - math\matrixutilities - - - math\matrixutilities - - - math\matrixutilities - - - math\matrixutilities - - - math\matrixutilities - - - math\matrixutilities - - - math\matrixutilities - - - math\matrixutilities - - - math\matrixutilities - - - math\matrixutilities - - - math\randomnumbers - - - math\randomnumbers - - - math\randomnumbers - - - math\randomnumbers - - - math\randomnumbers - - - math\randomnumbers - - - math\randomnumbers - - - math\randomnumbers - - - math\randomnumbers - - - math\randomnumbers - - - math\randomnumbers - - - math\randomnumbers - - - math\randomnumbers - - - math\optimization - - - math\optimization - - - math\optimization - - - math\optimization - - - math\optimization - - - math\optimization - - - math\optimization - - - math\optimization - - - math\optimization - - - math\optimization - - - math\optimization - - - math\optimization - - - math\optimization - - - math\optimization - - - math\optimization - - - math\optimization - - - math\copulas - - - math\copulas - - - math\copulas - - - math\copulas - - - math\copulas - - - math\copulas - - - math\copulas - - - math\copulas - - - math\copulas - - - math\copulas - - - math\copulas - - - math\copulas - - - math\copulas - - - models - - - models - - - models\marketmodels - - - models\marketmodels - - - models\marketmodels - - - models\marketmodels - - - models\marketmodels - - - models\marketmodels - - - models\marketmodels - - - models\marketmodels - - - models\marketmodels - - - models\marketmodels - - - models\marketmodels - - - models\marketmodels - - - models\marketmodels - - - models\marketmodels\browniangenerators - - - models\marketmodels\browniangenerators - - - models\marketmodels\curvestates - - - models\marketmodels\curvestates - - - models\marketmodels\curvestates - - - models\marketmodels\driftcomputation - - - models\marketmodels\driftcomputation - - - models\marketmodels\driftcomputation - - - models\marketmodels\driftcomputation - - - models\marketmodels\evolvers - - - models\marketmodels\evolvers - - - models\marketmodels\evolvers - - - models\marketmodels\evolvers - - - models\marketmodels\evolvers - - - models\marketmodels\evolvers - - - models\marketmodels\evolvers - - - models\marketmodels\evolvers - - - models\marketmodels\evolvers - - - models\marketmodels\evolvers - - - models\marketmodels\evolvers\volprocesses - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\models - - - models\marketmodels\products - - - models\marketmodels\products - - - models\marketmodels\products - - - models\marketmodels\products - - - models\marketmodels\products - - - models\marketmodels\products\multistep - - - models\marketmodels\products\multistep - - - models\marketmodels\products\multistep - - - models\marketmodels\products\multistep - - - models\marketmodels\products\multistep - - - models\marketmodels\products\multistep - - - models\marketmodels\products\multistep - - - models\marketmodels\products\multistep - - - models\marketmodels\products\multistep - - - models\marketmodels\products\multistep - - - models\marketmodels\products\multistep - - - models\marketmodels\products\multistep - - - models\marketmodels\products\multistep - - - models\marketmodels\products\multistep - - - models\marketmodels\products\multistep - - - models\marketmodels\products\multistep - - - models\marketmodels\products\onestep - - - models\marketmodels\products\onestep - - - models\marketmodels\products\onestep - - - models\marketmodels\products\onestep - - - models\marketmodels\products\pathwise - - - models\marketmodels\products\pathwise - - - models\marketmodels\products\pathwise - - - models\marketmodels\products\pathwise - - - models\marketmodels\products\pathwise - - - models\marketmodels\products\pathwise - - - models\marketmodels\correlations - - - models\marketmodels\correlations - - - models\marketmodels\correlations - - - models\marketmodels\callability - - - models\marketmodels\callability - - - models\marketmodels\callability - - - models\marketmodels\callability - - - models\marketmodels\callability - - - models\marketmodels\callability - - - models\marketmodels\callability - - - models\marketmodels\callability - - - models\marketmodels\callability - - - models\marketmodels\callability - - - models\marketmodels\pathwisegreeks - - - models\marketmodels\pathwisegreeks - - - models\marketmodels\pathwisegreeks - - - models\marketmodels\pathwisegreeks - - - models\shortrate - - - models\shortrate - - - models\shortrate\calibrationhelpers - - - models\shortrate\calibrationhelpers - - - models\shortrate\onefactormodels - - - models\shortrate\onefactormodels - - - models\shortrate\onefactormodels - - - models\shortrate\onefactormodels - - - models\shortrate\onefactormodels - - - models\shortrate\twofactorsmodels - - - models\volatility - - - models\volatility - - - models\equity - - - models\equity - - - models\equity - - - models\equity - - - models\equity - - - termstructures - - - termstructures - - - termstructures - - - termstructures - - - termstructures - - - termstructures - - - termstructures - - - termstructures\volatility - - - termstructures\volatility - - - termstructures\volatility - - - termstructures\volatility - - - termstructures\volatility - - - termstructures\volatility - - - termstructures\volatility - - - termstructures\volatility - - - termstructures\volatility - - - termstructures\volatility\capfloor - - - termstructures\volatility\capfloor - - - termstructures\volatility\capfloor - - - termstructures\volatility\capfloor - - - termstructures\volatility\equityfx - - - termstructures\volatility\equityfx - - - termstructures\volatility\equityfx - - - termstructures\volatility\equityfx - - - termstructures\volatility\equityfx - - - termstructures\volatility\equityfx - - - termstructures\volatility\equityfx - - - termstructures\volatility\equityfx - - - termstructures\volatility\equityfx - - - termstructures\volatility\equityfx - - - termstructures\volatility\equityfx - - - termstructures\volatility\optionlet - - - termstructures\volatility\optionlet - - - termstructures\volatility\optionlet - - - termstructures\volatility\optionlet - - - termstructures\volatility\optionlet - - - termstructures\volatility\optionlet - - - termstructures\volatility\optionlet - - - termstructures\volatility\optionlet - - - termstructures\volatility\swaption - - - termstructures\volatility\swaption - - - termstructures\volatility\swaption - - - termstructures\volatility\swaption - - - termstructures\volatility\swaption - - - termstructures\volatility\swaption - - - termstructures\volatility\swaption - - - termstructures\volatility\swaption - - - termstructures\volatility\swaption - - - termstructures\volatility\inflation - - - termstructures\volatility\inflation - - - termstructures\volatility\inflation - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\yield - - - termstructures\inflation - - - termstructures\inflation - - - termstructures\credit - - - termstructures\credit - - - termstructures\credit - - - termstructures\credit - - - termstructures\credit - - - utilities - - - utilities - - - utilities - - - currencies - - - currencies - - - currencies - - - currencies - - - currencies - - - currencies - - - currencies - - - processes - - - processes - - - processes - - - processes - - - processes - - - processes - - - processes - - - processes - - - processes - - - processes - - - processes - - - processes - - - processes - - - processes - - - processes - - - processes - - - processes - - - pricingengines - - - pricingengines - - - pricingengines - - - pricingengines - - - pricingengines - - - pricingengines - - - pricingengines - - - pricingengines\asian - - - pricingengines\asian - - - pricingengines\asian - - - pricingengines\asian - - - pricingengines\asian - - - pricingengines\asian - - - pricingengines\asian - - - pricingengines\asian - - - pricingengines\barrier - - - pricingengines\barrier - - - pricingengines\barrier - - - pricingengines\barrier - - - pricingengines\barrier - - - pricingengines\basket - - - pricingengines\basket - - - pricingengines\basket - - - pricingengines\basket - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\capfloor - - - pricingengines\capfloor - - - pricingengines\capfloor - - - pricingengines\capfloor - - - pricingengines\capfloor - - - pricingengines\capfloor - - - pricingengines\swaption - - - pricingengines\swaption - - - pricingengines\swaption - - - pricingengines\swaption - - - pricingengines\cliquet - - - pricingengines\cliquet - - - pricingengines\cliquet - - - pricingengines\exotic - - - pricingengines\exotic - - - pricingengines\exotic - - - pricingengines\exotic - - - pricingengines\exotic - - - pricingengines\exotic - - - pricingengines\exotic - - - pricingengines\exotic - - - pricingengines\lookback - - - pricingengines\lookback - - - pricingengines\lookback - - - pricingengines\lookback - - - pricingengines\lookback - - - pricingengines\bond - - - pricingengines\bond - - - pricingengines\bond - - - pricingengines\swap - - - pricingengines\swap - - - pricingengines\swap - - - pricingengines\swap - - - pricingengines\credit - - - pricingengines\credit - - - pricingengines\credit - - - pricingengines\forward - - - pricingengines\forward - - - pricingengines\forward - - - pricingengines\inflation - - - quotes - - - quotes - - - quotes - - - quotes - - - quotes - - - quotes - - - quotes - - - time - - - time - - - time - - - time - - - time - - - time - - - time - - - time - - - time - - - time - - - time - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\calendars - - - time\daycounters - - - time\daycounters - - - time\daycounters - - - time\daycounters - - - time\daycounters - - - legacy\libormarketmodels - - - legacy\libormarketmodels - - - legacy\libormarketmodels - - - legacy\libormarketmodels - - - legacy\libormarketmodels - - - legacy\libormarketmodels - - - legacy\libormarketmodels - - - legacy\libormarketmodels - - - legacy\libormarketmodels - - - legacy\libormarketmodels - - - legacy\libormarketmodels - - - legacy\libormarketmodels - - - legacy\libormarketmodels - - - experimental\math - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\volatility - - - experimental\callablebonds - - - experimental\callablebonds - - - experimental\callablebonds - - - experimental\callablebonds - - - experimental\callablebonds - - - experimental\callablebonds - - - experimental\catbonds - - - experimental\catbonds - - - experimental\catbonds - - - experimental\catbonds - - - experimental\coupons - - - experimental\coupons - - - cashflows - - - experimental\coupons - - - experimental\coupons - - - experimental\coupons - - - experimental\coupons - - - experimental\coupons - - - experimental\exoticoptions - - - experimental\exoticoptions - - - experimental\exoticoptions - - - experimental\exoticoptions - - - experimental\exoticoptions - - - experimental\exoticoptions - - - experimental\exoticoptions - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\credit - - - experimental\mcbasket - - - experimental\mcbasket - - - experimental\mcbasket - - - experimental\mcbasket - - - termstructures\volatility - - - termstructures\volatility - - - pricingengines\swaption - - - instruments - - - instruments - - - pricingengines\capfloor - - - pricingengines\swaption - - - pricingengines\swaption - - - pricingengines\swaption - - - termstructures\volatility - - - pricingengines\swaption - - - termstructures\volatility\swaption - - - processes - - - processes - - - termstructures\volatility - - - processes - - - instruments - - - instruments - - - termstructures\volatility - - - experimental\processes - - - experimental\processes - - - experimental\processes - - - experimental\shortrate - - - experimental\shortrate - - - experimental\swaptions - - - experimental\swaptions - - - experimental\swaptions - - - experimental\varianceoption - - - experimental\varianceoption - - - experimental\variancegamma - - - experimental\variancegamma - - - experimental\variancegamma - - - experimental\variancegamma - - - experimental\variancegamma - - - experimental\variancegamma - - - experimental\lattices - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\commodities - - - experimental\barrieroption - - - experimental\barrieroption - - - experimental\barrieroption - - - experimental\barrieroption - - - experimental\barrieroption - - - experimental\barrieroption - - - experimental\inflation - - - experimental\inflation - - - experimental\math - - - experimental\math - - - experimental\math - - - experimental\math - - - methods\finitedifferences\operators - - - methods\finitedifferences\operators - - - experimental\math - - - experimental\math - - - experimental\math - - - - - - - - - - - - - - - - - - - - - - - cashflows - - - cashflows - - - instruments - - - instruments - - - instruments\bonds - - - experimental\finitedifferences - - - experimental\finitedifferences - - - experimental\finitedifferences - - - experimental\finitedifferences - - - experimental\finitedifferences - - - experimental\finitedifferences - - - experimental\finitedifferences - - - experimental\finitedifferences - - - experimental\processes - - - experimental\processes - - - experimental\inflation - - - experimental\inflation - - - experimental\finitedifferences - - - experimental\finitedifferences - - - experimental\finitedifferences - - - experimental\processes - - - processes - - - instruments - - - experimental\finitedifferences - - - experimental\finitedifferences - - - math\matrixutilities - - - methods\finitedifferences\meshers - - - methods\finitedifferences\meshers - - - pricingengines\basket - - - pricingengines\vanilla - - - pricingengines\asian - - - pricingengines\asian - - - pricingengines\asian - - - pricingengines\barrier - - - pricingengines\barrier - - - pricingengines\barrier - - - pricingengines\barrier - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - methods\finitedifferences\operators - - - methods\finitedifferences\solvers - - - methods\finitedifferences\solvers - - - methods\finitedifferences\solvers - - - methods\finitedifferences\stepconditions - - - methods\finitedifferences\stepconditions - - - methods\finitedifferences\stepconditions - - - methods\finitedifferences\stepconditions - - - methods\finitedifferences\stepconditions - - - methods\finitedifferences\stepconditions - - - methods\finitedifferences\solvers - - - methods\finitedifferences\operators - - - methods\finitedifferences\operators - - - methods\finitedifferences\operators - - - methods\finitedifferences\operators - - - methods\finitedifferences\operators - - - methods\finitedifferences\solvers - - - methods\finitedifferences\solvers - - - methods\finitedifferences\solvers - - - methods\finitedifferences\solvers - - - methods\finitedifferences\solvers - - - methods\finitedifferences\meshers - - - methods\finitedifferences\meshers - - - methods\finitedifferences\meshers - - - methods\finitedifferences\meshers - - - methods\finitedifferences\utilities - - - methods\finitedifferences\utilities - - - methods\finitedifferences\utilities - - - methods\finitedifferences\utilities - - - methods\finitedifferences\utilities - - - methods\finitedifferences\operators - - - methods\finitedifferences\operators - - - methods\finitedifferences\operators - - - methods\finitedifferences\operators - - - methods\finitedifferences\operators - - - methods\finitedifferences\operators - - - methods\finitedifferences\solvers - - - methods\finitedifferences\meshers - - - methods\finitedifferences\meshers - - - methods\finitedifferences\schemes - - - methods\finitedifferences\schemes - - - methods\finitedifferences\schemes - - - methods\finitedifferences\schemes - - - methods\finitedifferences\schemes - - - methods\finitedifferences\schemes - - - methods\finitedifferences\schemes - - - math\matrixutilities - - - pricingengines\vanilla - - - methods\finitedifferences\stepconditions - - - pricingengines\vanilla - - - methods\finitedifferences\solvers - - - pricingengines\swaption - - - pricingengines\swaption - - - methods\finitedifferences\solvers - - - methods\finitedifferences\solvers - - - methods\finitedifferences\operators - - - methods\finitedifferences\operators - - - methods\finitedifferences\utilities - - - methods\finitedifferences\utilities - - - experimental\finitedifferences - - - experimental\finitedifferences - - - experimental\finitedifferences - - - experimental\finitedifferences - - - math\optimization - - - math\randomnumbers - - - math - - - methods\finitedifferences\utilities - - - methods\finitedifferences\utilities - - - pricingengines\vanilla - - - time - - - instruments - - - experimental\finitedifferences - - - termstructures\volatility\equityfx - - - methods\finitedifferences\operators - - - math - - - math - - - models\shortrate\onefactormodels - - - models\shortrate\onefactormodels - - - models\shortrate\onefactormodels - - - termstructures\volatility\equityfx - - - termstructures\volatility\equityfx - - - patterns - - - experimental\math - - - experimental\math - - - math\matrixutilities - - - experimental\models - - - methods\finitedifferences\operators - - - experimental\models - - - experimental\math - - - time\daycounters - - - experimental\basismodels - - - experimental\basismodels - - - experimental\basismodels - - - methods\finitedifferences\meshers - - - methods\finitedifferences\operators - - - methods\finitedifferences\operators - - - methods\finitedifferences\utilities - - - methods\finitedifferences\utilities - - - methods\finitedifferences\utilities - - - methods\finitedifferences\utilities - - - methods\finitedifferences\utilities - - - methods\finitedifferences\utilities - - - methods\finitedifferences\utilities - - - methods\finitedifferences\utilities - - - pricingengines\vanilla - - - pricingengines\vanilla - - - pricingengines\vanilla - - - methods\finitedifferences\schemes - - - pricingengines\vanilla - - - math\integrals - - - experimental\forward - - - experimental\termstructures - - - experimental\termstructures - - - experimental\asian - - - experimental\asian - - - pricingengines\vanilla - - - methods\finitedifferences\utilities - - - methods\finitedifferences\utilities - - - methods\finitedifferences\utilities - - - instruments - - - pricingengines\bond - - - pricingengines\asian - - - math\interpolations - - - pricingengines\vanilla - - - pricingengines\vanilla - - - models\equity - - - models\equity - - - pricingengines\barrier - - - pricingengines\barrier - - - pricingengines\barrier - - - instruments - - - instruments - - - methods\finitedifferences\operators - - - methods\finitedifferences\operators - - - methods\finitedifferences\operators - - - methods\finitedifferences\utilities - - - indexes - - - instruments - - - cashflows - - - time\daycounters - - - math\matrixutilities - - - methods\finitedifferences\operators - - - pricingengines\basket - - - pricingengines\basket - - - pricingengines\basket - - - pricingengines\basket - - - pricingengines\basket - - - pricingengines\basket - - - pricingengines\basket - - - pricingengines\basket - - - instruments - - - pricingengines\futures - - - pricingengines - - - pricingengines\vanilla - - - + + + + + + + + {b8aa1a7a-0199-4243-94e9-44c79da50099} + + + {aea49e67-9408-4620-89d3-037c781cba11} + + + {31939e69-d4cf-4754-8226-2b55bd65ee25} + + + {c7ee75dd-b0c1-40c1-b672-eb15b51fb2b2} + + + {7a76183f-0ac9-49e9-a574-d83fa3ca88eb} + + + {0f08b9f0-9002-4f9b-bf66-c9e73d2ca13b} + + + {9d53bbc0-3213-471b-9b14-01c9bbef411c} + + + {1886f7fd-2357-47aa-bc92-84d13b48a913} + + + {f4ad9f82-7463-4af1-973a-ab13fddba354} + + + {bdda7538-22a4-44ac-925a-6c95afb05c55} + + + {692074d7-b624-441f-b7da-a660d59f5fb8} + + + {7c2dcbda-48ea-48eb-bd23-b1d88d45dbc3} + + + {b42ab6bf-67e2-4186-8a69-9de38642fe9e} + + + {c69725ed-ff73-4e74-9777-d3fd2c4b0f48} + + + {a591a398-d145-47e3-9d70-3586402ef751} + + + {0235f1b9-babc-41ec-b0c7-ee8ea60090e1} + + + {37bc9da0-bb2a-4e61-ae73-1fd8cd26b466} + + + {6853f0b6-f5cb-475a-bb31-b7d03ffa0685} + + + {627e33e9-8709-415d-b7a8-b6c3f680c241} + + + {d7c675a7-76b5-4ef4-ad8f-e64de99c39c7} + + + {fe3e871d-733d-4497-9d95-fa5248f1b5ab} + + + {8ee72e86-e0bd-4390-b4ef-8a60dad32991} + + + {0a0e9ecd-4c8e-4e72-8195-123ef41301be} + + + {483b4555-8ff3-4f29-a747-ef06e274fd73} + + + {4df7c636-1015-4420-b49b-d084fd0813db} + + + {73f36670-3ee6-4af8-9a8b-45ca71a8293d} + + + {88b6dfd9-e5f9-4f0d-8143-ab75b68cf472} + + + {1e4d1b00-7be4-4b86-b8ab-4e13c7d8d2d3} + + + {6b816a6e-05ec-4faa-9943-83bb71d84e23} + + + {01775f02-a000-4176-b7ec-d98d70a365b7} + + + {d5ea26ea-a326-48a2-90b8-7f1c8a126a98} + + + {3a3f097f-0d50-4527-86b5-548bbc1c20cd} + + + {aa3f5c77-d466-43ab-b063-9be4cd44c900} + + + {f3557c7e-8b6b-486b-acf2-1340ff7431f9} + + + {e9089237-fe8c-4d55-914d-52d7d327f3bd} + + + {5ba48137-364c-4ea0-8ed4-2345d82d471c} + + + {eb617bd5-2e6b-4c09-b151-ee5162072000} + + + {89a29868-6250-48c4-9114-49d231bbb022} + + + {0b0b5594-c9af-4db2-b1af-6f72ac6418db} + + + {3f3a5a66-d590-4175-90b3-96cb391e5fad} + + + {8b4b44b7-fa7b-4b04-8186-b74a4b4553ff} + + + {146d248f-eca5-4d6e-a41c-56f68851c964} + + + {b72a4d22-c381-4ed5-b6a3-97285fc789d0} + + + {1b0ea6af-abd5-4c8d-9ac1-f513efc372fd} + + + {55f020ff-1b2f-4f56-8194-6fe99d69e9f1} + + + {0bf280b6-d895-40ff-b988-65ad2880c1ff} + + + {abef9afa-8a52-4aa4-919f-9783ff8f1007} + + + {be944554-fbaf-47f3-beee-c441a7e8f1ce} + + + {88309f41-e501-4c74-90ab-22e8cca7f0ca} + + + {f5650187-c37a-4a98-8a24-8836f0f11324} + + + {159ec8ea-6958-4f60-a716-62915d2cef63} + + + {539e9341-cf4e-499c-9828-cf406c5c7e4b} + + + {e31e697b-bed3-4d0c-b1e0-15747249a105} + + + {af9827f7-274b-43da-a2a2-40fc4c80c194} + + + {25fb83ed-1731-4cd6-aa3a-d8027a0eca9f} + + + {717cf2d6-0581-4aa8-a21f-34e9700bc89e} + + + {d8199c0f-73e6-47e0-8444-57267a6112c4} + + + {b134ed97-6567-422a-b13e-21ce2e9abdd5} + + + {7d2cb293-d738-4289-ba74-fd7445bf6749} + + + {23b3f559-6e47-4fbe-846d-4dc9002560f3} + + + {4b67a796-2576-42be-89cc-b751a07e3973} + + + {50c1f3c8-4281-11ee-be56-0242ac120002} + + + {25671919-a7a3-4197-943c-23a5df4e8146} + + + {817c0417-9b08-4702-9b00-af51445dce2a} + + + {4c3b4a0c-5a68-4167-8e21-bfaf6b75563b} + + + {8606a756-ea3a-44ee-a9ed-f5e76761023e} + + + {5b92aca1-b394-4001-83a3-bc2d58fba28f} + + + {39b63159-982e-48fa-8723-def3612fce0d} + + + {3ec47a48-746e-4e8f-ae78-a5e1f154bb71} + + + {79361c8f-2a4f-4cae-97b3-b6762c33ff63} + + + {147286c4-32fb-4540-9752-f9eb5d165cd6} + + + {d754981c-0ab8-4c35-bd77-ad78c78e9b41} + + + {083a46bb-a18c-4a14-8d21-baad35f27df5} + + + {a709110c-73f5-4b2e-b44c-46a909a89b31} + + + {36727168-b97c-4f82-aeb7-e397627499a6} + + + {d076d7be-7ff0-4df0-829a-73dc1cfaa7ae} + + + {3346f5d8-7c2e-4444-bca0-837abbec52da} + + + {5eb5dffa-ec4b-4d24-acbd-9c5e7c2fa072} + + + {41c18bb1-d892-4994-b699-cd644c6421e8} + + + {4eadb3fc-a4ce-4e0c-bfe5-f23777a30a8d} + + + {33f1be16-e858-4cfe-ba9c-483609826221} + + + {aad1cf31-2c29-47a1-9461-ee71b1dd9a6a} + + + {fceaa051-43f2-4c81-9bf5-a38d88b661ad} + + + {1b920d53-9803-4152-8653-c855397066d4} + + + {38f8ad14-f839-425e-b711-68a9acd361f9} + + + {aae4b1e6-d6bd-44d9-af3d-4e5efcfd0b57} + + + {d7d44f55-80bf-4af8-9367-5c903022d99e} + + + {ae60e960-e1e8-49f4-9a18-bc976b60f165} + + + {7d489132-7d03-49f7-bad4-bde084e20bbe} + + + {d42ff6e1-a70e-4fe7-a35a-db4ca5ef1c95} + + + {936a8947-d2c0-4bdd-95c5-8b52daf92cc4} + + + {c046c970-45d0-4156-b587-ff2bc881bf04} + + + {aa33a8b9-0ac4-49d9-ad88-a7810d0532dd} + + + {db6b7309-6e3f-4eb2-bce2-6f45a933a788} + + + {51b20bfb-087c-4623-be3c-647010d4e809} + + + {9eeb0683-3147-4850-9eba-645af86b58e4} + + + {fffa1e10-7b29-41f9-a775-b2bb61638f39} + + + {8cc2e654-d55c-41e3-8005-e6222102f717} + + + {e29388ea-045b-43fe-95f7-0973b8537907} + + + {63ee57ce-bf68-4a4a-b5c8-29d11c2a11ee} + + + {8a1123c5-a617-4cf2-93df-e554735531ae} + + + {12b22ebc-4102-4d94-b640-8490b20365b7} + + + {8fd699bb-f489-4e96-a998-54b5612a9aa7} + + + {d18be44d-a78a-4109-a3f8-757c4737d267} + + + {02219e9b-59b0-458f-9937-397f83864a9e} + + + {209ea670-7502-4ccc-a3fd-5d793608356b} + + + {8bb09d36-55a0-4496-8e78-989117257790} + + + {5d212607-989f-42d9-ae9d-a54f29d74dfc} + + + {2c4b39a7-b606-4f9f-9df6-70685dbde95f} + + + {be723df5-2e58-41de-8071-8d2e2f62410a} + + + {743389ec-4f1b-48ee-98f5-d46f4684b688} + + + {0abb3851-b409-4ea6-8e55-120d00a9fcdb} + + + {ac3d075b-c62b-4d89-a091-2f66a70b33d0} + + + + + methods + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\lattices + + + methods\lattices + + + methods\lattices + + + methods\lattices + + + methods\lattices + + + methods\lattices + + + methods\lattices + + + methods\lattices + + + methods\lattices + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + indexes + + + indexes + + + indexes + + + indexes + + + indexes + + + indexes + + + indexes + + + indexes + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\swap + + + indexes\swap + + + indexes\swap + + + indexes\swap + + + indexes\swap + + + indexes\swap + + + indexes\swap + + + indexes\inflation + + + indexes\inflation + + + indexes\inflation + + + indexes\inflation + + + indexes\inflation + + + indexes\inflation + + + indexes\inflation + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments\bonds + + + instruments\bonds + + + instruments\bonds + + + instruments\bonds + + + instruments\bonds + + + instruments\bonds + + + instruments\bonds + + + instruments\bonds + + + instruments\bonds + + + instruments\bonds + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\interpolations + + + math\statistics + + + math\statistics + + + math\statistics + + + math\statistics + + + math\statistics + + + math\statistics + + + math\statistics + + + math\statistics + + + math\statistics + + + math\statistics + + + math\distributions + + + math\distributions + + + math\distributions + + + math\distributions + + + math\distributions + + + math\distributions + + + math\distributions + + + math\distributions + + + math\distributions + + + math\integrals + + + math\integrals + + + math\integrals + + + math\integrals + + + math\integrals + + + math\integrals + + + math\integrals + + + math\integrals + + + math\integrals + + + math\integrals + + + math\integrals + + + math\integrals + + + math\integrals + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\solvers1D + + + math\solvers1D + + + math\solvers1D + + + math\solvers1D + + + math\solvers1D + + + math\solvers1D + + + math\solvers1D + + + math\solvers1D + + + math\solvers1D + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + patterns + + + patterns + + + patterns + + + patterns + + + patterns + + + patterns + + + models + + + models + + + models + + + models + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels\browniangenerators + + + models\marketmodels\browniangenerators + + + models\marketmodels\browniangenerators + + + models\marketmodels\curvestates + + + models\marketmodels\curvestates + + + models\marketmodels\curvestates + + + models\marketmodels\curvestates + + + models\marketmodels\driftcomputation + + + models\marketmodels\driftcomputation + + + models\marketmodels\driftcomputation + + + models\marketmodels\driftcomputation + + + models\marketmodels\driftcomputation + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers\volprocesses + + + models\marketmodels\evolvers\volprocesses + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\products + + + models\marketmodels\products + + + models\marketmodels\products + + + models\marketmodels\products + + + models\marketmodels\products + + + models\marketmodels\products + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\onestep + + + models\marketmodels\products\onestep + + + models\marketmodels\products\onestep + + + models\marketmodels\products\onestep + + + models\marketmodels\products\onestep + + + models\marketmodels\products\pathwise + + + models\marketmodels\products\pathwise + + + models\marketmodels\products\pathwise + + + models\marketmodels\products\pathwise + + + models\marketmodels\products\pathwise + + + models\marketmodels\products\pathwise + + + models\marketmodels\products\pathwise + + + models\marketmodels\correlations + + + models\marketmodels\correlations + + + models\marketmodels\correlations + + + models\marketmodels\correlations + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\pathwisegreeks + + + models\marketmodels\pathwisegreeks + + + models\marketmodels\pathwisegreeks + + + models\marketmodels\pathwisegreeks + + + models\marketmodels\pathwisegreeks + + + models\shortrate + + + models\shortrate + + + models\shortrate + + + models\shortrate\calibrationhelpers + + + models\shortrate\calibrationhelpers + + + models\shortrate\calibrationhelpers + + + models\shortrate\onefactormodels + + + models\shortrate\onefactormodels + + + models\shortrate\onefactormodels + + + models\shortrate\onefactormodels + + + models\shortrate\onefactormodels + + + models\shortrate\onefactormodels + + + models\shortrate\twofactorsmodels + + + models\shortrate\twofactorsmodels + + + models\volatility + + + models\volatility + + + models\volatility + + + models\volatility + + + models\volatility + + + models\equity + + + models\equity + + + models\equity + + + models\equity + + + models\equity + + + models\equity + + + termstructures + + + termstructures + + + termstructures + + + termstructures + + + termstructures + + + termstructures + + + termstructures + + + termstructures + + + termstructures + + + termstructures + + + termstructures + + + termstructures + + + termstructures + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility\capfloor + + + termstructures\volatility\capfloor + + + termstructures\volatility\capfloor + + + termstructures\volatility\capfloor + + + termstructures\volatility\capfloor + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\inflation + + + termstructures\volatility\inflation + + + termstructures\volatility\inflation + + + termstructures\volatility\inflation + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\inflation + + + termstructures\inflation + + + termstructures\inflation + + + termstructures\inflation + + + termstructures\inflation + + + termstructures\inflation + + + termstructures\inflation + + + termstructures\inflation + + + termstructures\credit + + + termstructures\credit + + + termstructures\credit + + + termstructures\credit + + + termstructures\credit + + + termstructures\credit + + + termstructures\credit + + + termstructures\credit + + + termstructures\credit + + + termstructures\credit + + + termstructures\credit + + + utilities + + + utilities + + + utilities + + + utilities + + + utilities + + + utilities + + + utilities + + + utilities + + + utilities + + + utilities + + + utilities + + + currencies + + + currencies + + + currencies + + + currencies + + + currencies + + + currencies + + + currencies + + + currencies + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + pricingengines + + + pricingengines + + + pricingengines + + + pricingengines + + + pricingengines + + + pricingengines + + + pricingengines + + + pricingengines + + + pricingengines + + + pricingengines + + + pricingengines + + + pricingengines + + + pricingengines\asian + + + pricingengines\asian + + + pricingengines\asian + + + pricingengines\asian + + + pricingengines\asian + + + pricingengines\asian + + + pricingengines\asian + + + pricingengines\asian + + + pricingengines\asian + + + pricingengines\asian + + + pricingengines\barrier + + + pricingengines\barrier + + + pricingengines\barrier + + + pricingengines\barrier + + + pricingengines\barrier + + + pricingengines\barrier + + + pricingengines\basket + + + pricingengines\basket + + + pricingengines\basket + + + pricingengines\basket + + + pricingengines\basket + + + pricingengines\exotic + + + pricingengines\exotic + + + pricingengines\exotic + + + pricingengines\exotic + + + pricingengines\exotic + + + pricingengines\exotic + + + pricingengines\exotic + + + pricingengines\exotic + + + pricingengines\exotic + + + pricingengines\forward + + + pricingengines\forward + + + pricingengines\forward + + + pricingengines\forward + + + pricingengines\forward + + + pricingengines\forward + + + pricingengines\forward + + + pricingengines\forward + + + pricingengines\forward + + + pricingengines\quanto + + + pricingengines\quanto + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\capfloor + + + pricingengines\capfloor + + + pricingengines\capfloor + + + pricingengines\capfloor + + + pricingengines\capfloor + + + pricingengines\capfloor + + + pricingengines\capfloor + + + pricingengines\swaption + + + pricingengines\swaption + + + pricingengines\swaption + + + pricingengines\swaption + + + pricingengines\swaption + + + pricingengines\swaption + + + pricingengines\cliquet + + + pricingengines\cliquet + + + pricingengines\cliquet + + + pricingengines\cliquet + + + pricingengines\lookback + + + pricingengines\lookback + + + pricingengines\lookback + + + pricingengines\lookback + + + pricingengines\lookback + + + pricingengines\lookback + + + pricingengines\bond + + + pricingengines\bond + + + pricingengines\bond + + + pricingengines\bond + + + pricingengines\bond + + + pricingengines\swap + + + pricingengines\swap + + + pricingengines\swap + + + pricingengines\swap + + + pricingengines\swap + + + pricingengines\credit + + + pricingengines\credit + + + pricingengines\credit + + + pricingengines\credit + + + pricingengines\inflation + + + pricingengines\inflation + + + quotes + + + quotes + + + quotes + + + quotes + + + quotes + + + quotes + + + quotes + + + quotes + + + quotes + + + quotes + + + quotes + + + quotes + + + time + + + time + + + time + + + time + + + time + + + time + + + time + + + time + + + time + + + time + + + time + + + time + + + time + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\daycounters + + + time\daycounters + + + time\daycounters + + + time\daycounters + + + time\daycounters + + + time\daycounters + + + time\daycounters + + + time\daycounters + + + time\daycounters + + + time\daycounters + + + time\daycounters + + + time\daycounters + + + legacy + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + experimental + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\callablebonds + + + experimental\callablebonds + + + experimental\callablebonds + + + experimental\callablebonds + + + experimental\callablebonds + + + experimental\callablebonds + + + experimental\callablebonds + + + experimental\catbonds + + + experimental\catbonds + + + experimental\catbonds + + + experimental\catbonds + + + experimental\catbonds + + + experimental\coupons + + + experimental\coupons + + + experimental\coupons + + + cashflows + + + experimental\coupons + + + experimental\coupons + + + experimental\coupons + + + experimental\coupons + + + experimental\coupons + + + experimental\fx + + + experimental\fx + + + experimental\fx + + + experimental\exoticoptions + + + pricingengines\barrier + + + pricingengines\barrier + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\mcbasket + + + experimental\mcbasket + + + experimental\mcbasket + + + experimental\mcbasket + + + experimental\mcbasket + + + experimental\mcbasket + + + experimental\mcbasket + + + experimental\mcbasket + + + math\ode + + + termstructures\volatility + + + termstructures\volatility + + + pricingengines\swaption + + + instruments + + + instruments + + + pricingengines\capfloor + + + pricingengines\swaption + + + pricingengines\swaption + + + pricingengines\swaption + + + termstructures\volatility + + + pricingengines\swaption + + + termstructures\volatility\swaption + + + processes + + + processes + + + termstructures\volatility + + + processes + + + instruments + + + instruments + + + termstructures\volatility + + + experimental\processes + + + experimental\processes + + + experimental\processes + + + experimental\processes + + + experimental\risk + + + experimental\risk + + + experimental\risk + + + experimental\shortrate + + + experimental\shortrate + + + experimental\shortrate + + + experimental\swaptions + + + experimental\swaptions + + + experimental\swaptions + + + experimental\swaptions + + + experimental\termstructures + + + experimental\varianceoption + + + experimental\varianceoption + + + experimental\varianceoption + + + experimental\variancegamma + + + experimental\variancegamma + + + experimental\variancegamma + + + experimental\variancegamma + + + experimental\variancegamma + + + experimental\variancegamma + + + experimental\variancegamma + + + experimental\lattices + + + experimental\lattices + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\averageois + + + experimental\averageois + + + experimental\averageois + + + experimental\averageois + + + experimental\barrieroption + + + experimental\barrieroption + + + experimental\barrieroption + + + experimental\barrieroption + + + experimental\barrieroption + + + experimental\barrieroption + + + experimental\barrieroption + + + experimental\barrieroption + + + experimental\barrieroption + + + experimental\barrieroption + + + experimental\inflation + + + experimental\inflation + + + experimental\inflation + + + experimental\inflation + + + experimental\inflation + + + experimental\inflation + + + experimental\inflation + + + experimental\inflation + + + experimental\inflation + + + experimental\inflation + + + experimental\math + + + math\ode + + + experimental\math + + + experimental\math + + + experimental\math + + + experimental\math + + + experimental\math + + + experimental\math + + + experimental\math + + + experimental\math + + + experimental\math + + + experimental\math + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + experimental\math + + + experimental\math + + + experimental\math + + + math\optimization + + + experimental\math + + + experimental\math + + + pricingengines\barrier + + + pricingengines\barrier + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cashflows + + + cashflows + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments\bonds + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + methods\finitedifferences\solvers + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\processes + + + experimental\processes + + + experimental\inflation + + + experimental\inflation + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\processes + + + processes + + + experimental\finitedifferences + + + experimental\finitedifferences + + + math\matrixutilities + + + methods\finitedifferences\meshers + + + methods\finitedifferences\meshers + + + methods\finitedifferences\meshers + + + pricingengines\basket + + + pricingengines\vanilla + + + pricingengines\asian + + + pricingengines\asian + + + pricingengines\asian + + + pricingengines\barrier + + + pricingengines\barrier + + + pricingengines\barrier + + + pricingengines\barrier + + + pricingengines\barrier + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + methods\finitedifferences\meshers + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\solvers + + + methods\finitedifferences\solvers + + + methods\finitedifferences\solvers + + + methods\finitedifferences\solvers + + + methods\finitedifferences\stepconditions + + + methods\finitedifferences\stepconditions + + + methods\finitedifferences\stepconditions + + + methods\finitedifferences\stepconditions + + + methods\finitedifferences\stepconditions + + + methods\finitedifferences\stepconditions + + + methods\finitedifferences\stepconditions + + + methods\finitedifferences\solvers + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\solvers + + + methods\finitedifferences\solvers + + + methods\finitedifferences\solvers + + + methods\finitedifferences\solvers + + + methods\finitedifferences\solvers + + + methods\finitedifferences\meshers + + + methods\finitedifferences\meshers + + + methods\finitedifferences\meshers + + + methods\finitedifferences\meshers + + + methods\finitedifferences\meshers + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\solvers + + + methods\finitedifferences\solvers + + + methods\finitedifferences\meshers + + + methods\finitedifferences\meshers + + + methods\finitedifferences\meshers + + + methods\finitedifferences\meshers + + + methods\finitedifferences\schemes + + + methods\finitedifferences\schemes + + + methods\finitedifferences\schemes + + + methods\finitedifferences\schemes + + + methods\finitedifferences\schemes + + + methods\finitedifferences\schemes + + + methods\finitedifferences\schemes + + + methods\finitedifferences\schemes + + + methods\finitedifferences\schemes + + + methods\finitedifferences\schemes + + + experimental\finitedifferences + + + math\matrixutilities + + + pricingengines\vanilla + + + methods\finitedifferences\stepconditions + + + pricingengines\vanilla + + + methods\finitedifferences\solvers + + + pricingengines\swaption + + + pricingengines\swaption + + + methods\finitedifferences\solvers + + + methods\finitedifferences\solvers + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + math\matrixutilities + + + math\optimization + + + math\randomnumbers + + + math + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + pricingengines\vanilla + + + time + + + instruments + + + experimental\models + + + experimental\models + + + termstructures\volatility\equityfx + + + methods\finitedifferences\operators + + + experimental\finitedifferences + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + math + + + math + + + models\shortrate\onefactormodels + + + models\shortrate\onefactormodels + + + models\shortrate\onefactormodels + + + experimental\math + + + experimental\math + + + experimental\math + + + experimental\math + + + experimental\math + + + experimental\math + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + methods\finitedifferences\operators + + + math\matrixutilities + + + experimental\volatility + + + experimental\models + + + experimental\math + + + experimental\basismodels + + + experimental\basismodels + + + experimental\basismodels + + + experimental\basismodels + + + methods\finitedifferences\meshers + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + methods\finitedifferences\schemes + + + math\integrals + + + math\integrals + + + pricingengines\vanilla + + + math\integrals + + + termstructures\yield + + + experimental\forward + + + experimental\forward + + + experimental\asian + + + experimental\asian + + + experimental\asian + + + experimental\termstructures + + + experimental\termstructures + + + pricingengines\vanilla + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + instruments + + + pricingengines\bond + + + pricingengines\asian + + + math\integrals + + + math\interpolations + + + pricingengines\vanilla + + + pricingengines\vanilla + + + models\equity + + + models\equity + + + pricingengines\barrier + + + pricingengines\barrier + + + pricingengines\barrier + + + instruments + + + instruments + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\utilities + + + methods\finitedifferences\operators + + + indexes\inflation + + + indexes + + + instruments + + + cashflows + + + time\daycounters + + + indexes\ibor + + + indexes\ibor + + + math\matrixutilities + + + math\solvers1D + + + methods\finitedifferences\operators + + + pricingengines\basket + + + pricingengines\basket + + + pricingengines\basket + + + pricingengines\basket + + + pricingengines\basket + + + pricingengines\basket + + + pricingengines\basket + + + pricingengines\basket + + + instruments + + + pricingengines\futures + + + pricingengines\futures + + + pricingengines + + + pricingengines\vanilla + + + + + + + + + + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\montecarlo + + + methods\finitedifferences + + + methods\finitedifferences + + + methods\lattices + + + methods\lattices + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + cashflows + + + indexes + + + indexes + + + indexes + + + indexes + + + indexes + + + indexes + + + indexes + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\ibor + + + indexes\swap + + + indexes\swap + + + indexes\swap + + + indexes\swap + + + indexes\swap + + + indexes\swap + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments + + + instruments\bonds + + + instruments\bonds + + + instruments\bonds + + + instruments\bonds + + + instruments\bonds + + + instruments\bonds + + + instruments\bonds + + + instruments\bonds + + + instruments\bonds + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math\statistics + + + math\statistics + + + math\statistics + + + math\statistics + + + math\distributions + + + math\distributions + + + math\distributions + + + math\distributions + + + math\distributions + + + math\distributions + + + math\integrals + + + math\integrals + + + math\integrals + + + math\integrals + + + math\integrals + + + math\integrals + + + math\integrals + + + math\integrals + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\matrixutilities + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\randomnumbers + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\optimization + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + math\copulas + + + models + + + models + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels + + + models\marketmodels\browniangenerators + + + models\marketmodels\browniangenerators + + + models\marketmodels\curvestates + + + models\marketmodels\curvestates + + + models\marketmodels\curvestates + + + models\marketmodels\driftcomputation + + + models\marketmodels\driftcomputation + + + models\marketmodels\driftcomputation + + + models\marketmodels\driftcomputation + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers + + + models\marketmodels\evolvers\volprocesses + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\models + + + models\marketmodels\products + + + models\marketmodels\products + + + models\marketmodels\products + + + models\marketmodels\products + + + models\marketmodels\products + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\multistep + + + models\marketmodels\products\onestep + + + models\marketmodels\products\onestep + + + models\marketmodels\products\onestep + + + models\marketmodels\products\onestep + + + models\marketmodels\products\pathwise + + + models\marketmodels\products\pathwise + + + models\marketmodels\products\pathwise + + + models\marketmodels\products\pathwise + + + models\marketmodels\products\pathwise + + + models\marketmodels\products\pathwise + + + models\marketmodels\correlations + + + models\marketmodels\correlations + + + models\marketmodels\correlations + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\callability + + + models\marketmodels\pathwisegreeks + + + models\marketmodels\pathwisegreeks + + + models\marketmodels\pathwisegreeks + + + models\marketmodels\pathwisegreeks + + + models\shortrate + + + models\shortrate + + + models\shortrate\calibrationhelpers + + + models\shortrate\calibrationhelpers + + + models\shortrate\onefactormodels + + + models\shortrate\onefactormodels + + + models\shortrate\onefactormodels + + + models\shortrate\onefactormodels + + + models\shortrate\onefactormodels + + + models\shortrate\twofactorsmodels + + + models\volatility + + + models\volatility + + + models\equity + + + models\equity + + + models\equity + + + models\equity + + + models\equity + + + termstructures + + + termstructures + + + termstructures + + + termstructures + + + termstructures + + + termstructures + + + termstructures + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility + + + termstructures\volatility\capfloor + + + termstructures\volatility\capfloor + + + termstructures\volatility\capfloor + + + termstructures\volatility\capfloor + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\optionlet + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\swaption + + + termstructures\volatility\inflation + + + termstructures\volatility\inflation + + + termstructures\volatility\inflation + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\yield + + + termstructures\inflation + + + termstructures\inflation + + + termstructures\credit + + + termstructures\credit + + + termstructures\credit + + + termstructures\credit + + + termstructures\credit + + + utilities + + + utilities + + + utilities + + + currencies + + + currencies + + + currencies + + + currencies + + + currencies + + + currencies + + + currencies + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + processes + + + pricingengines + + + pricingengines + + + pricingengines + + + pricingengines + + + pricingengines + + + pricingengines + + + pricingengines + + + pricingengines\asian + + + pricingengines\asian + + + pricingengines\asian + + + pricingengines\asian + + + pricingengines\asian + + + pricingengines\asian + + + pricingengines\asian + + + pricingengines\asian + + + pricingengines\barrier + + + pricingengines\barrier + + + pricingengines\barrier + + + pricingengines\barrier + + + pricingengines\barrier + + + pricingengines\basket + + + pricingengines\basket + + + pricingengines\basket + + + pricingengines\basket + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\capfloor + + + pricingengines\capfloor + + + pricingengines\capfloor + + + pricingengines\capfloor + + + pricingengines\capfloor + + + pricingengines\capfloor + + + pricingengines\swaption + + + pricingengines\swaption + + + pricingengines\swaption + + + pricingengines\swaption + + + pricingengines\cliquet + + + pricingengines\cliquet + + + pricingengines\cliquet + + + pricingengines\exotic + + + pricingengines\exotic + + + pricingengines\exotic + + + pricingengines\exotic + + + pricingengines\exotic + + + pricingengines\exotic + + + pricingengines\exotic + + + pricingengines\exotic + + + pricingengines\lookback + + + pricingengines\lookback + + + pricingengines\lookback + + + pricingengines\lookback + + + pricingengines\lookback + + + pricingengines\bond + + + pricingengines\bond + + + pricingengines\bond + + + pricingengines\swap + + + pricingengines\swap + + + pricingengines\swap + + + pricingengines\swap + + + pricingengines\credit + + + pricingengines\credit + + + pricingengines\credit + + + pricingengines\forward + + + pricingengines\forward + + + pricingengines\forward + + + pricingengines\inflation + + + quotes + + + quotes + + + quotes + + + quotes + + + quotes + + + quotes + + + quotes + + + time + + + time + + + time + + + time + + + time + + + time + + + time + + + time + + + time + + + time + + + time + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\calendars + + + time\daycounters + + + time\daycounters + + + time\daycounters + + + time\daycounters + + + time\daycounters + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + legacy\libormarketmodels + + + experimental\math + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\volatility + + + experimental\callablebonds + + + experimental\callablebonds + + + experimental\callablebonds + + + experimental\callablebonds + + + experimental\callablebonds + + + experimental\callablebonds + + + experimental\catbonds + + + experimental\catbonds + + + experimental\catbonds + + + experimental\catbonds + + + experimental\coupons + + + experimental\coupons + + + cashflows + + + experimental\coupons + + + experimental\coupons + + + experimental\coupons + + + experimental\coupons + + + experimental\coupons + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\exoticoptions + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\credit + + + experimental\mcbasket + + + experimental\mcbasket + + + experimental\mcbasket + + + experimental\mcbasket + + + termstructures\volatility + + + termstructures\volatility + + + pricingengines\swaption + + + instruments + + + instruments + + + pricingengines\capfloor + + + pricingengines\swaption + + + pricingengines\swaption + + + pricingengines\swaption + + + termstructures\volatility + + + pricingengines\swaption + + + termstructures\volatility\swaption + + + processes + + + processes + + + termstructures\volatility + + + processes + + + instruments + + + instruments + + + termstructures\volatility + + + experimental\processes + + + experimental\processes + + + experimental\processes + + + experimental\shortrate + + + experimental\shortrate + + + experimental\swaptions + + + experimental\swaptions + + + experimental\swaptions + + + experimental\varianceoption + + + experimental\varianceoption + + + experimental\variancegamma + + + experimental\variancegamma + + + experimental\variancegamma + + + experimental\variancegamma + + + experimental\variancegamma + + + experimental\variancegamma + + + experimental\lattices + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\commodities + + + experimental\barrieroption + + + experimental\barrieroption + + + experimental\barrieroption + + + experimental\barrieroption + + + experimental\barrieroption + + + experimental\barrieroption + + + experimental\inflation + + + experimental\inflation + + + experimental\math + + + experimental\math + + + experimental\math + + + experimental\math + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + experimental\math + + + experimental\math + + + experimental\math + + + + + + + + + + + + + + + + + + + + + + + cashflows + + + cashflows + + + instruments + + + instruments + + + instruments\bonds + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\processes + + + experimental\processes + + + experimental\inflation + + + experimental\inflation + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\processes + + + processes + + + instruments + + + experimental\finitedifferences + + + experimental\finitedifferences + + + math\matrixutilities + + + methods\finitedifferences\meshers + + + methods\finitedifferences\meshers + + + pricingengines\basket + + + pricingengines\vanilla + + + pricingengines\asian + + + pricingengines\asian + + + pricingengines\asian + + + pricingengines\barrier + + + pricingengines\barrier + + + pricingengines\barrier + + + pricingengines\barrier + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + methods\finitedifferences\operators + + + methods\finitedifferences\solvers + + + methods\finitedifferences\solvers + + + methods\finitedifferences\solvers + + + methods\finitedifferences\stepconditions + + + methods\finitedifferences\stepconditions + + + methods\finitedifferences\stepconditions + + + methods\finitedifferences\stepconditions + + + methods\finitedifferences\stepconditions + + + methods\finitedifferences\stepconditions + + + methods\finitedifferences\solvers + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\solvers + + + methods\finitedifferences\solvers + + + methods\finitedifferences\solvers + + + methods\finitedifferences\solvers + + + methods\finitedifferences\solvers + + + methods\finitedifferences\meshers + + + methods\finitedifferences\meshers + + + methods\finitedifferences\meshers + + + methods\finitedifferences\meshers + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\solvers + + + methods\finitedifferences\meshers + + + methods\finitedifferences\meshers + + + methods\finitedifferences\schemes + + + methods\finitedifferences\schemes + + + methods\finitedifferences\schemes + + + methods\finitedifferences\schemes + + + methods\finitedifferences\schemes + + + methods\finitedifferences\schemes + + + methods\finitedifferences\schemes + + + math\matrixutilities + + + pricingengines\vanilla + + + methods\finitedifferences\stepconditions + + + pricingengines\vanilla + + + methods\finitedifferences\solvers + + + pricingengines\swaption + + + pricingengines\swaption + + + methods\finitedifferences\solvers + + + methods\finitedifferences\solvers + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + experimental\finitedifferences + + + math\optimization + + + math\randomnumbers + + + math + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + pricingengines\vanilla + + + time + + + instruments + + + experimental\finitedifferences + + + termstructures\volatility\equityfx + + + methods\finitedifferences\operators + + + math + + + math + + + models\shortrate\onefactormodels + + + models\shortrate\onefactormodels + + + models\shortrate\onefactormodels + + + termstructures\volatility\equityfx + + + termstructures\volatility\equityfx + + + patterns + + + experimental\math + + + experimental\math + + + math\matrixutilities + + + experimental\models + + + methods\finitedifferences\operators + + + experimental\models + + + experimental\math + + + time\daycounters + + + experimental\basismodels + + + experimental\basismodels + + + experimental\basismodels + + + methods\finitedifferences\meshers + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + pricingengines\vanilla + + + pricingengines\vanilla + + + pricingengines\vanilla + + + methods\finitedifferences\schemes + + + pricingengines\vanilla + + + math\integrals + + + experimental\forward + + + experimental\termstructures + + + experimental\termstructures + + + experimental\asian + + + experimental\asian + + + pricingengines\vanilla + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + methods\finitedifferences\utilities + + + instruments + + + pricingengines\bond + + + pricingengines\asian + + + math\interpolations + + + pricingengines\vanilla + + + pricingengines\vanilla + + + models\equity + + + models\equity + + + pricingengines\barrier + + + pricingengines\barrier + + + pricingengines\barrier + + + instruments + + + instruments + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\operators + + + methods\finitedifferences\utilities + + + indexes + + + instruments + + + cashflows + + + time\daycounters + + + math\matrixutilities + + + methods\finitedifferences\operators + + + pricingengines\basket + + + pricingengines\basket + + + pricingengines\basket + + + pricingengines\basket + + + pricingengines\basket + + + pricingengines\basket + + + pricingengines\basket + + + pricingengines\basket + + + instruments + + + pricingengines\futures + + + pricingengines + + + pricingengines\vanilla + + + + + + + + + + diff --git a/ql/time/calendars/all.hpp b/ql/time/calendars/all.hpp index 0653edf9131..09deedc7714 100644 --- a/ql/time/calendars/all.hpp +++ b/ql/time/calendars/all.hpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -24,16 +25,21 @@ #include #include #include +#include #include +#include #include +#include #include #include #include #include #include #include +#include #include #include +#include #include #include #include @@ -45,5 +51,6 @@ #include #include #include +#include #include diff --git a/ql/time/calendars/croatia.cpp b/ql/time/calendars/croatia.cpp new file mode 100644 index 00000000000..9bba0159a81 --- /dev/null +++ b/ql/time/calendars/croatia.cpp @@ -0,0 +1,72 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2005 StatPro Italia srl + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +#include + +namespace QuantLib { + + Croatia::Croatia(Market) { + // all calendar instances share the same implementation instance + static ext::shared_ptr impl( + new Croatia::ZseImpl); + impl_ = impl; + } + + bool Croatia::ZseImpl::isBusinessDay(const Date& date) const { + Weekday w = date.weekday(); + Day d = date.dayOfMonth(), dd = date.dayOfYear(); + Month m = date.month(); + Year y = date.year(); + Day em = easterMonday(y); + // Croatian holidays + if (isWeekend(w) + // New Year's Day + || (d == 1 && m == January) + // Epiphany + || (d == 6 && m == January) + // Good Friday + || (dd == em - 3 && y >= 2016) + // Easter Monday + || (dd == em) + // Labour Day + || (d == 1 && m == May) + // National Day + || (d == 30 && m == May) + // Corpus Christi + || (d == 19 && m == June) + // Victory and Homeland Thanksgiving Day and the Day of Croatian Defenders + || (d == 5 && m == August) + // Assumption of Mary + || (d == 15 && m == August) + // Remembrance Day for the Victims of the Vukovar and Škabrnja War Memorials + || (d == 18 && m == November) + // Christmas Eve + || (d == 24 && m == December) + // Christmas + || (d == 25 && m == December) + // St. Stephen + || (d == 26 && m == December) + // New Year's Eve + || (d == 31 && m == December)) + return false; // NOLINT(readability-simplify-boolean-expr) + return true; + } + +} + diff --git a/ql/time/calendars/croatia.hpp b/ql/time/calendars/croatia.hpp new file mode 100644 index 00000000000..d0cfb501030 --- /dev/null +++ b/ql/time/calendars/croatia.hpp @@ -0,0 +1,71 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2005 StatPro Italia srl + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +/*! \file croatia.hpp + \brief Croatia calendars +*/ + +#ifndef quantlib_croatia_calendar_hpp +#define quantlib_croatia_calendar_hpp + +#include + +namespace QuantLib { + + //! Croatian calendars + /*! Holidays for the Zagreb stock exchange (see https://zse.hr/en/non-trading-days/110): +
    +
  • Saturdays
  • +
  • Sundays
  • +
  • New Year's Day, January 1st
  • +
  • Epiphany, January 6th
  • +
  • Good Friday
  • +
  • Easter Monday
  • +
  • Labour Day, May 1st
  • +
  • National Day May 30th
  • +
  • Corpus Christi, June 19 th
  • +
  • Victory and Homeland Thanksgiving Day and the Day of Croatian Defenders August 5th
  • +
  • Assumption of Mary, August 15th
  • +
  • Remembrance Day for the Victims of the Vukovar and Škabrnja War Memorials, November 18th
  • +
  • Christmas Eve, December 24th
  • +
  • Christmas, December 25th
  • +
  • St. Stephen, December 26th
  • +
  • New Year's Eve, December 31st
  • +
+ + \ingroup calendars + */ + class Croatia : public Calendar { + private: + class ZseImpl final : public Calendar::WesternImpl { + public: + std::string name() const override { return "Zagreb stock exchange"; } + bool isBusinessDay(const Date&) const override; + }; + public: + enum Market { + ZSE //!< Zagreb stock exchange + }; + Croatia(Market m = ZSE); + }; + +} + + +#endif // quantlib_croatia_calendar_hpp diff --git a/ql/time/calendars/malta.cpp b/ql/time/calendars/malta.cpp new file mode 100644 index 00000000000..f1407717fcb --- /dev/null +++ b/ql/time/calendars/malta.cpp @@ -0,0 +1,84 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2005 StatPro Italia srl + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +#include +#include + +namespace QuantLib { + + Malta::Malta(Market) { + static ext::shared_ptr impl(new Malta::MseImpl); + impl_ = impl; + } + + bool Malta::MseImpl::isWeekend(Weekday w) const { + return w == Friday || w == Saturday; + } + + bool Malta::MseImpl::isBusinessDay(const Date& date) const { + Weekday w = date.weekday(); + Day d = date.dayOfMonth(); + Month m = date.month(); + Year y = date.year(); + Day em = easterMonday(y); + Day gf = em - 3; // Good Friday + + + if (isWeekend(w) + // New Year's Day + || (d == 1 && m == January) + // St. Paul's Shipwreck + || (d == 10 && m == February) + // St. Joseph's Day + || (d == 19 && m == March) + // Freedom Day + || (d == 31 && m == March) + // Good Friday + || (date.dayOfYear() == gf) + // Easter Monday (exchange holiday) + || (date.dayOfYear() == em) + // Labour Day + || (d == 1 && m == May) + // Imnarja (Feast of Saints Peter & Paul) + || (d == 29 && m == June) + // Assumption of Mary + || (d == 15 && m == August) + // Our Lady of Victories (Nativity of Mary) + || (d == 8 && m == September) + // Independence Day + || (d == 21 && m == September) + // Immaculate Conception + || (d == 8 && m == December) + // Republic Day + || (d == 13 && m == December) + // Christmas Vigil + || (d == 24 && m == December) + // Christmas Day + || (d == 25 && m == December) + // Boxing Day (occasionally observed by MSE) + || (d == 26 && m == December) + // New Year's Eve (non-trading) + || (d == 31 && m == December)) { + return false; + } + + return true; + } + +} diff --git a/ql/time/calendars/malta.hpp b/ql/time/calendars/malta.hpp new file mode 100644 index 00000000000..fd766999d7e --- /dev/null +++ b/ql/time/calendars/malta.hpp @@ -0,0 +1,83 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2005 StatPro Italia srl + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +/*! \file malta.hpp + \brief Maltese calendar +*/ + +#ifndef quantlib_malta_calendar_hpp +#define quantlib_malta_calendar_hpp + +#include + +namespace QuantLib { + + //! Malta calendar + /*! Holidays for the Malta Stock Exchange (https://borzamalta.com.mt): + Calendars here https://borzamalta.com.mt/publications-and-statistics?category=54 + https://cdn.borzamalta.com.mt/download/2025%20Trading%20Calendar%20EUR_GBP_USD%20Final.pdf +
    +
  • Saturdays
  • +
  • Sundays
  • +
  • New Year's Day, January 1st
  • +
  • St. Paul's Shipwreck, February 10th
  • +
  • St. Joseph's Day, March 19th
  • +
  • Freedom Day, March 31st
  • +
  • Good Friday (Orthodox calendar, variable date)
  • +
  • Easter Monday (variable date)
  • +
  • Labour Day, May 1st
  • +
  • Feast of Saints Peter and Paul (Imnarja), June 29th
  • +
  • Assumption of Mary, August 15th
  • +
  • Feast of Our Lady of Victories (Nativity of Mary), September 8th
  • +
  • Independence Day, September 21st
  • +
  • Immaculate Conception, December 8th
  • +
  • Republic Day, December 13th
  • +
  • Christmas Vigil, December 24th
  • +
  • Christmas Day, December 25th
  • +
  • Boxing Day, December 26th (occasionally observed)
  • +
  • New Year's Eve, December 31st (non-trading day)
  • +
+ + Notes: + - Holidays falling on a weekend are generally not shifted. + - Trading hours and holiday observance are set by the Malta Stock Exchange each year. + \ingroup calendars + */ + + + class Malta : public Calendar { + private: + class MseImpl final : public Calendar::WesternImpl { + public: + std::string name() const override { return "Malta Stock Exchange"; } + bool isWeekend(Weekday) const override; + bool isBusinessDay(const Date&) const override; + }; + + public: + enum Market { + MSE //!< Malta Stock Exchange + }; + Malta(Market market = MSE); + }; + +} + + +#endif // quantlib_malta_calendar_hpp diff --git a/ql/time/calendars/montenegro.cpp b/ql/time/calendars/montenegro.cpp new file mode 100644 index 00000000000..7249707189b --- /dev/null +++ b/ql/time/calendars/montenegro.cpp @@ -0,0 +1,74 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2005 StatPro Italia srl + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +#include + +namespace QuantLib { + + Montenegro::Montenegro(Market) { + static ext::shared_ptr impl(new Montenegro::MnseImpl); + impl_ = impl; + } + + bool Montenegro::MnseImpl::isBusinessDay(const Date& date) const { + Weekday w = date.weekday(); + Day d = date.dayOfMonth(); + Month m = date.month(); + Year y = date.year(); + Day em = easterMonday(y); + Day gf = em - 3; // Good Friday + Date jul13(y, July, 13); + Date jul14(y, July, 14); + Date jul15(y, July, 15); + Date may21(y, May, 21); + Weekday wd21 = may21.weekday(); + + // Weekday logic + bool isJul13Weekend = isWeekend(jul13.weekday()); + bool isJul14Weekend = isWeekend(jul14.weekday()); + + if (isWeekend(w) + // New Year and Orthodox Christmas period: Jan 1–8 + || (m == January && d >= 1 && d <= 8) + // Good Friday (Orthodox calendar) + || (date.dayOfYear() == gf) + // Easter Monday + || (date.dayOfYear() == em) + // Labour Day: May 1–2 + || (d == 1 && m == May) || + (d == 2 && m == May) + // Independence Day: May 21–22 + || (d == 21 && m == May) || (d == 22 && m == May) || + // Shift to 22–23 if 21st is a Sunday + (d == 22 && m == May && wd21 == Sunday) || (d == 23 && m == May && wd21 == Sunday) || + // Statehood Day: July 14–15 (per updated calendar) + // Normal fixed case: 13 and/or 14 July + (d == 13 && m == July && !isJul13Weekend) || + (d == 14 && m == July && !isJul14Weekend) || + // Special case: both fall on weekend ? Monday 15th becomes observed holiday + (d == 15 && m == July && isJul13Weekend && isJul14Weekend) + // Njegoš Day: Nov 13–14 + || (d == 13 && m == November) || (d == 14 && m == November)) { + return false; + } + + return true; + } + +} \ No newline at end of file diff --git a/ql/time/calendars/montenegro.hpp b/ql/time/calendars/montenegro.hpp new file mode 100644 index 00000000000..38e6f68bd9b --- /dev/null +++ b/ql/time/calendars/montenegro.hpp @@ -0,0 +1,62 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2005 StatPro Italia srl + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +/*! \file montenegro.hpp + \brief Montenegro calendars +*/ + +#ifndef quantlib_montenegro_calendar_hpp +#define quantlib_montenegro_calendar_hpp + +#include + +namespace QuantLib { + + //! Montenegro calendar + /*! Holidays for the Montenegrin Stock Exchange (https://mnse.me): +
    +
  • Saturdays
  • +
  • Sundays
  • +
  • New Year, Christmas Eve and Christmas: Jan 1–8
  • +
  • Good Friday
  • +
  • Orthodox Easter Monday
  • +
  • Labour Day: May 1–2
  • +
  • Independence Day: May 21–22
  • +
  • Statehood Day: July 14-15
  • +
  • Day of Njegoš, Montenegrin cultural holiday: November 13th and 14th
  • +
+ */ + class Montenegro : public Calendar { + private: + class MnseImpl final : public Calendar::WesternImpl { + public: + std::string name() const override { return "Montenegro Stock Exchange"; } + bool isBusinessDay(const Date& date) const override; + }; + + public: + enum Market { + MNSE //!< Montenegro Stock Exchange + }; + Montenegro(Market m = MNSE); + }; + +} + +#endif // quantlib_montenegro_calendar_hpp \ No newline at end of file diff --git a/ql/time/calendars/northmacedonia.cpp b/ql/time/calendars/northmacedonia.cpp new file mode 100644 index 00000000000..668629daa40 --- /dev/null +++ b/ql/time/calendars/northmacedonia.cpp @@ -0,0 +1,87 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2005 StatPro Italia srl + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +#include + +namespace QuantLib { + + NorthMacedonia::NorthMacedonia(Market) { + static ext::shared_ptr impl(new NorthMacedonia::MseImpl); + impl_ = impl; + } + + bool NorthMacedonia::MseImpl::isBusinessDay(const Date& date) const { + Weekday w = date.weekday(); + Day d = date.dayOfMonth(); + Month m = date.month(); + Year y = date.year(); + + // Observance rule: if a holiday falls on a Sunday, it is observed on Monday + const Date prev = date - 1; + const bool sundayObserved = (prev.weekday() == Sunday); + + // Holidays + if (isWeekend(w) + // January 1 – New Year + || (d == 1 && m == January) + // January 6 – Epiphany + || (d == 6 && m == January) + // January 7 – Orthodox Christmas + || (d == 7 && m == January) + // March 31 – (Ramadan Bajram (Eid al-Fitr) + || (d == 31 && m == March) + // April 18 – Good Friday + || (d == 18 && m == April) + // April 21 – Easter Monday + || (d == 21 && m == April) + // May 1 – Labour Day + || (d == 1 && m == May) + // June 6 – religious holiday + || (d == 6 && m == June) + // August 28 – religious holiday + || (d == 28 && m == August) + // September 8 – Independence Day + || (d == 8 && m == September) + // October 23 – Uprising Day + || (d == 23 && m == October) + // December 8 – Saint Clement of Ohrid + || (d == 8 && m == December) + // December 31 – Non-trading day + || (d == 31 && m == December) + // Observed holidays (if the fixed holiday was Sunday) + || (sundayObserved && ((prev.dayOfMonth() == 1 && prev.month() == January) || + (prev.dayOfMonth() == 6 && prev.month() == January) || + (prev.dayOfMonth() == 7 && prev.month() == January) || + (prev.dayOfMonth() == 31 && prev.month() == March) || + (prev.dayOfMonth() == 18 && prev.month() == April) || + (prev.dayOfMonth() == 21 && prev.month() == April) || + (prev.dayOfMonth() == 1 && prev.month() == May) || + (prev.dayOfMonth() == 6 && prev.month() == June) || + (prev.dayOfMonth() == 28 && prev.month() == August) || + (prev.dayOfMonth() == 8 && prev.month() == September) || + (prev.dayOfMonth() == 23 && prev.month() == October) || + (prev.dayOfMonth() == 8 && prev.month() == December) || + (prev.dayOfMonth() == 31 && prev.month() == December)))) { + return false; + } + + return true; + } + +} diff --git a/ql/time/calendars/northmacedonia.hpp b/ql/time/calendars/northmacedonia.hpp new file mode 100644 index 00000000000..4826d2064dc --- /dev/null +++ b/ql/time/calendars/northmacedonia.hpp @@ -0,0 +1,68 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2005 StatPro Italia srl + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +/*! \file northmacedonia.hpp + \brief North Macedonia calendars +*/ + +#ifndef quantlib_northmacedonia_calendar_hpp +#define quantlib_northmacedonia_calendar_hpp + +#include + +namespace QuantLib { + + //! North Macedonian calendars + /*! Holidays for the Macedonian Stock Exchange (see https://www.mse.mk): +
    +
  • Saturdays
  • +
  • Sundays
  • +
  • New Year, January 1st & 2nd
  • +
  • Orthodox Christmas, January 7th
  • +
  • Ramadan Bajram (Eid al-Fitr), March 31st
  • +
  • Good Friday
  • +
  • Orthodox Easter Monday
  • +
  • Labour Day, May 1st
  • +
  • Saints Cyril and Methodius Day, May 24th
  • +
  • Republic Day, August 2nd
  • +
  • Independence Day, September 8th
  • +
  • Revolution Day, October 11th
  • +
  • Day of the Macedonian Uprising, October 23rd
  • +
  • Saint Clement of Ohrid Day, December 8th
  • +
+ \ingroup calendars + */ + class NorthMacedonia : public Calendar { + private: + class MseImpl final : public Calendar::WesternImpl { + public: + std::string name() const override { return "Macedonian Stock Exchange"; } + bool isBusinessDay(const Date&) const override; + }; + + public: + enum Market { + MSE //!< Macedonian Stock Exchange + }; + NorthMacedonia(Market m = MSE); + }; + +} + +#endif // quantlib_northmacedonia_calendar_hpp diff --git a/ql/time/calendars/serbia.cpp b/ql/time/calendars/serbia.cpp new file mode 100644 index 00000000000..e1c66a1f4ab --- /dev/null +++ b/ql/time/calendars/serbia.cpp @@ -0,0 +1,64 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2005 StatPro Italia srl + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +#include + +namespace QuantLib { + + Serbia::Serbia(Market) { + // all calendar instances share the same implementation instance + static ext::shared_ptr impl( + new Serbia::BseImpl); + impl_ = impl; + } + + bool Serbia::BseImpl::isBusinessDay(const Date& date) const { + Weekday w = date.weekday(); + Day d = date.dayOfMonth(), dd = date.dayOfYear(); + Month m = date.month(); + Year y = date.year(); + Day em = easterMonday(y); + // Serbian holidays + if (isWeekend(w) + // New Year + || (d == 1 && m == January) + || (d == 2 && m == January) + // Serbian Orthodox Christmas + || (d == 7 && m == January) + // Serbian Statehood Day + || (d == 15 && m == February) + || (d == 16 && m == February) + // Serbian Statehood Day (observed) + // Serbia's Statehood Day (Sretenje) is officially observed on February 15 and February 16. However, since these dates fall on a Saturday and Sunday, the government designates Monday, February 17, as an additional non-working day. This practice ensures that citizens receive a weekday off when public holidays coincide with weekends. + || (d == 17 && m == February) && (isWeekend(Date(15, February, y).weekday()) && isWeekend(Date(16, February, y).weekday())) + // Good Friday + || (dd == em - 3 && y >= 2016) + // Easter Monday + || (dd == em) + // Labour Day + || (d == 1 && m == May) + // Armistice Day in World War I + || (d == 11 && m == November) + // Trading system maintenance, statistics and data migration + || (d == 31 && m == December)) + return false; // NOLINT(readability-simplify-boolean-expr) + return true; + } + +} \ No newline at end of file diff --git a/ql/time/calendars/serbia.hpp b/ql/time/calendars/serbia.hpp new file mode 100644 index 00000000000..cdfbb8a8c37 --- /dev/null +++ b/ql/time/calendars/serbia.hpp @@ -0,0 +1,65 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2005 StatPro Italia srl + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +/*! \file serbia.hpp + \brief Serbia calendars +*/ + +#ifndef quantlib_serbia_calendar_hpp +#define quantlib_serbia_calendar_hpp + +#include + +namespace QuantLib { + + //! Serbian calendars + /*! Holidays for the Belgrade stock exchange (see https://www.belex.rs/eng/trzista_i_hartije/kalendar): +
    +
  • Saturdays
  • +
  • Sundays
  • +
  • New Year, January 1st
  • +
  • New Year, January 2nd
  • +
  • Serbian Orthodox Christmas, January 7th
  • +
  • Serbian Statehood Day, February 15 & 16th
  • +
  • Good Friday
  • +
  • Easter Monday
  • +
  • Labour Day, May 1st
  • +
  • Armistice Day in World War I, Novemeber 11th
  • +
  • Trading system maintenance, statistics and data migration, December 31st
  • +
+ \ingroup calendars + */ + class Serbia : public Calendar { + private: + class BseImpl final : public Calendar::WesternImpl { + public: + std::string name() const override { return "Belgrade stock exchange"; } + bool isBusinessDay(const Date&) const override; + }; + public: + enum Market { + BSE //!< Belgrade stock exchange + }; + Serbia(Market m = BSE); + }; + +} + + +#endif // quantlib_serbia_calendar_hpp diff --git a/ql/time/calendars/slovenia.cpp b/ql/time/calendars/slovenia.cpp new file mode 100644 index 00000000000..5ac495fd9b8 --- /dev/null +++ b/ql/time/calendars/slovenia.cpp @@ -0,0 +1,68 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2005 StatPro Italia srl + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +#include + +namespace QuantLib { + + Slovenia::Slovenia(Market) { + // all calendar instances share the same implementation instance + static ext::shared_ptr impl(new Slovenia::LseImpl); + impl_ = impl; + } + + bool Slovenia::LseImpl::isBusinessDay(const Date& date) const { + Weekday w = date.weekday(); + Day d = date.dayOfMonth(), dd = date.dayOfYear(); + Month m = date.month(); + Year y = date.year(); + Day em = easterMonday(y); + if (isWeekend(w) + // New Year's Day + || (d == 1 && m == January) + // New Year's Holiday + || (d == 2 && m == January) + // Good Friday + || (dd == em - 3) + // Easter Monday + || (dd == em) + // May Day + || (d == 1 && m == May) + // May Day Holiday + || (d == 2 && m == May) + // Statehood Day + || (d == 25 && m == June) + // Assumption of Mary + || (d == 15 && m == August) + // Reformation Day + || (d == 31 && m == October) + // Christmas Eve + || (d == 24 && m == December) + // Christmas + || (d == 25 && m == December) + // St. Stephen + || (d == 26 && m == December) + // New Year's Eve + || (d == 31 && m == December)) + return false; // NOLINT(readability-simplify-boolean-expr) + return true; + } + +} + diff --git a/ql/time/calendars/slovenia.hpp b/ql/time/calendars/slovenia.hpp new file mode 100644 index 00000000000..001531c88f4 --- /dev/null +++ b/ql/time/calendars/slovenia.hpp @@ -0,0 +1,71 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2005 StatPro Italia srl + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +/*! \file slovenia.hpp + \brief Slovenia calendars +*/ + +#ifndef quantlib_slovenia_calendar_hpp +#define quantlib_slovenia_calendar_hpp + +#include + +namespace QuantLib { + + //! Slovenia calendars + /*! Holidays for the Slovenia stock exchange + (data from ): +
    +
  • Saturdays
  • +
  • Sundays
  • +
  • New Year's Day, January 1st
  • +
  • New Year's Holiday, January 2nd
  • +
  • Good Friday
  • +
  • Easter Monday
  • +
  • May Day, May 1st
  • +
  • May Day Holiday, May 2nd
  • +
  • Statehood Day, June 25th
  • +
  • Assumption of Mary, August 15th
  • +
  • Reformation Day, October 31st
  • +
  • Christmas Eve, December 24th
  • +
  • Christmas, December 25th
  • +
  • St. Stephen, December 26th
  • +
  • New Year's Eve, December 31st
  • +
+ + \ingroup calendars + */ + class Slovenia : public Calendar { + private: + class LseImpl final : public Calendar::WesternImpl { + public: + std::string name() const override { return "Ljubljana stock exchange"; } + bool isBusinessDay(const Date&) const override; + }; + public: + enum Market { + LSE //!< Ljubljana stock exchange + }; + Slovenia(Market m = LSE); + }; + +} + + +#endif diff --git a/ql/time/calendars/uzbekistan.cpp b/ql/time/calendars/uzbekistan.cpp new file mode 100644 index 00000000000..6b788a2eff3 --- /dev/null +++ b/ql/time/calendars/uzbekistan.cpp @@ -0,0 +1,110 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2015 Paolo Mazzocchi + Copyright (C) 2015 Riccardo Barone + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +#include +#include +#include + +namespace QuantLib { + + bool isRamazonHayit(const Date& d) { + // Eid al-Fitr (Ramazon Hayit) dates + static std::vector RamazonHayit = { + Date(20, March, 2026), + Date(10, March, 2027), + Date(27, February, 2028), + Date(15, February, 2029), + Date(5, February, 2030), + Date(25, January, 2031), + Date(14, January, 2032), + Date(2, January, 2033), + Date(23, December, 2033), // two Eids in 2033 + Date(12, December, 2034), + Date(1, December, 2035), + Date(19, November, 2036), + Date(8, November, 2037), + Date(29, October, 2038), + Date(19, October, 2039), + Date(7, October, 2040) + }; + + return std::any_of(RamazonHayit.begin(), RamazonHayit.end(), + [&d](const Date& p) { return d == p; }); + } + + bool isQurbonHayit(const Date& d) { + // Eid al-Adha (Qurbon Hayit) dates + static std::vector QurbonHayit = { + Date(27, May, 2026), + Date(17, May, 2027), + Date(5, May, 2028), + Date(24, April, 2029), + Date(13, April, 2030), + Date(3, April, 2031), + Date(22, March, 2032), + Date(11, March, 2033), + Date(28, February, 2034), + Date(18, February, 2035), + Date(7, February, 2036), + Date(27, January, 2037), + Date(16, January, 2038), + Date(5, January, 2039), + Date(26, December, 2039), // two Eids in 2039 + Date(15, December, 2040) + }; + + return std::any_of(QurbonHayit.begin(), QurbonHayit.end(), + [&d](const Date& p) { return d == p; }); + } + + Uzbekistan::Uzbekistan(Market) { + static ext::shared_ptr impl(new Uzbekistan::Impl); + impl_ = impl; + } + + bool Uzbekistan::Impl::isBusinessDay(const Date& date) const { + Weekday w = date.weekday(); + Day d = date.dayOfMonth(); + Month m = date.month(); + Year y = date.year(); + + if (isWeekend(w) + || isRamazonHayit(date) + || isQurbonHayit(date) + // New Year's Day + || (d == 1 && m == January) + // International Womens Day + || (d == 8 && m == March) + // Navruz(Persian New Year) + || (d == 21 && m == March) + // Day of Remembrance and Honors + || (d == 9 && m == May) + // Independence Day + || (d == 1 && m == September) + // Teachers Day + || (d == 1 && m == October) + // Constitution Day + || (d == 8 && m == December)) { + return false; + } + return true; + } + +} diff --git a/ql/time/calendars/uzbekistan.hpp b/ql/time/calendars/uzbekistan.hpp new file mode 100644 index 00000000000..179c4cc2c65 --- /dev/null +++ b/ql/time/calendars/uzbekistan.hpp @@ -0,0 +1,66 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2025 + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +/*! \file uzbekistan.hpp + \brief Uzbekistan calendar +*/ + +#ifndef quantlib_uzbekistan_calendar_hpp +#define quantlib_uzbekistan_calendar_hpp + +#include + +namespace QuantLib { + + //! Uzbekistan calendar + /*! Holidays for the Uzbekistan exchanges + (data from https://www.advantour.com/uzbekistan/holidays.htm): +
    +
  • Saturdays
  • +
  • Sundays
  • +
  • New Year's Day, January 1st
  • +
  • International Women's Day, March 8th
  • +
  • Navruz (Persian New Year), March 21st
  • +
  • Day of Remembrance and Honors, May 9th
  • +
  • Independence Day, September 1st
  • +
  • Teachers' Day, October 1st
  • +
  • Constitution Day, December 8th
  • +
  • Eid al-Fitr (Ramazon Hayit), variable date
  • +
  • Eid al-Adha (Qurbon Hayit), variable date
  • +
+ \ingroup calendars + */ + + class Uzbekistan : public Calendar { + private: + class Impl final : public Calendar::WesternImpl { + public: + std::string name() const override { return "Uzbekistan Stock Exchange"; } + bool isBusinessDay(const Date&) const override; + }; + public: + enum Market { + UZSE, //!< Uzbekistan Stock Exchange + }; + Uzbekistan(Market market = UZSE); + }; + +} + +#endif // quantlib_uzbekistan_calendar_hpp From 593ad972cb315e0a8eca81f0034d35a7820aa70e Mon Sep 17 00:00:00 2001 From: "arsen.podoba" Date: Tue, 21 Apr 2026 17:09:17 +0200 Subject: [PATCH 2/8] Add calendars (Croatia, Malta, Montenegro, North Macedonia, Serbia, Slovenia, Uzbekistan) --- ql/time/calendars/Makefile.am | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/ql/time/calendars/Makefile.am b/ql/time/calendars/Makefile.am index ed09c37b030..cba33ce2f83 100644 --- a/ql/time/calendars/Makefile.am +++ b/ql/time/calendars/Makefile.am @@ -13,6 +13,7 @@ this_include_HEADERS = \ canada.hpp \ chile.hpp \ china.hpp \ + croatia.hpp \ czechrepublic.hpp \ denmark.hpp \ finland.hpp \ @@ -27,16 +28,21 @@ this_include_HEADERS = \ italy.hpp \ japan.hpp \ jointcalendar.hpp \ + malta.hpp \ mexico.hpp \ + montenegro.hpp \ newzealand.hpp \ + northmacedonia.hpp \ norway.hpp \ nullcalendar.hpp \ poland.hpp \ romania.hpp \ russia.hpp \ saudiarabia.hpp \ + serbia.hpp \ singapore.hpp \ slovakia.hpp \ + slovenia.hpp \ southafrica.hpp \ southkorea.hpp \ sweden.hpp \ @@ -48,6 +54,7 @@ this_include_HEADERS = \ ukraine.hpp \ unitedkingdom.hpp \ unitedstates.hpp \ + uzbekistan.hpp \ weekendsonly.hpp cpp_files = \ @@ -60,6 +67,7 @@ cpp_files = \ canada.cpp \ chile.cpp \ china.cpp \ + croatia.cpp \ czechrepublic.cpp \ denmark.cpp \ finland.cpp \ @@ -74,15 +82,20 @@ cpp_files = \ italy.cpp \ japan.cpp \ jointcalendar.cpp \ + malta.cpp \ mexico.cpp \ + montenegro.cpp \ newzealand.cpp \ + northmacedonia.cpp \ norway.cpp \ poland.cpp \ romania.cpp \ russia.cpp \ saudiarabia.cpp \ + serbia.cpp \ singapore.cpp \ slovakia.cpp \ + slovenia.cpp \ southafrica.cpp \ southkorea.cpp \ sweden.cpp \ @@ -94,6 +107,7 @@ cpp_files = \ ukraine.cpp \ unitedkingdom.cpp \ unitedstates.cpp \ + uzbekistan.cpp \ weekendsonly.cpp if UNITY_BUILD From 51716c28d1590e950f4bc00956492ee1e6c68ebc Mon Sep 17 00:00:00 2001 From: ArsenP0doba Date: Wed, 22 Apr 2026 11:42:06 +0200 Subject: [PATCH 3/8] Add calendars (Croatia, Malta, Montenegro, North Macedonia, Serbia, Slovenia, Uzbekistan) --- ql/CMakeLists.txt | 14 ++++++++++++++ ql/time/calendars/croatia.hpp | 2 +- ql/time/calendars/montenegro.cpp | 12 ++++++------ ql/time/calendars/montenegro.hpp | 8 ++++---- ql/time/calendars/northmacedonia.cpp | 27 +++++++++++++-------------- ql/time/calendars/serbia.cpp | 7 +++++-- ql/time/calendars/uzbekistan.cpp | 1 - ql/time/calendars/uzbekistan.hpp | 4 ++-- 8 files changed, 45 insertions(+), 30 deletions(-) diff --git a/ql/CMakeLists.txt b/ql/CMakeLists.txt index d3cbf0ff2eb..c563693b606 100644 --- a/ql/CMakeLists.txt +++ b/ql/CMakeLists.txt @@ -900,6 +900,7 @@ set(QL_SOURCES time/calendars/canada.cpp time/calendars/chile.cpp time/calendars/china.cpp + time/calendars/croatia.cpp time/calendars/czechrepublic.cpp time/calendars/denmark.cpp time/calendars/finland.cpp @@ -914,15 +915,20 @@ set(QL_SOURCES time/calendars/italy.cpp time/calendars/japan.cpp time/calendars/jointcalendar.cpp + time/calendars/malta.cpp time/calendars/mexico.cpp + time/calendars/montenegro.cpp time/calendars/newzealand.cpp + time/calendars/northmacedonia.cpp time/calendars/norway.cpp time/calendars/poland.cpp time/calendars/romania.cpp time/calendars/russia.cpp time/calendars/saudiarabia.cpp + time/calendars/serbia.cpp time/calendars/singapore.cpp time/calendars/slovakia.cpp + time/calendars/slovenia.cpp time/calendars/southafrica.cpp time/calendars/southkorea.cpp time/calendars/sweden.cpp @@ -934,6 +940,7 @@ set(QL_SOURCES time/calendars/ukraine.cpp time/calendars/unitedkingdom.cpp time/calendars/unitedstates.cpp + time/calendars/uzbekistan.cpp time/calendars/weekendsonly.cpp time/date.cpp time/dategenerationrule.cpp @@ -2190,6 +2197,7 @@ set(QL_HEADERS time/calendars/canada.hpp time/calendars/chile.hpp time/calendars/china.hpp + time/calendars/croatia.hpp time/calendars/czechrepublic.hpp time/calendars/denmark.hpp time/calendars/finland.hpp @@ -2204,16 +2212,21 @@ set(QL_HEADERS time/calendars/italy.hpp time/calendars/japan.hpp time/calendars/jointcalendar.hpp + time/calendars/malta.hpp time/calendars/mexico.hpp + time/calendars/montenegro.hpp time/calendars/newzealand.hpp + time/calendars/northmacedonia.hpp time/calendars/norway.hpp time/calendars/nullcalendar.hpp time/calendars/poland.hpp time/calendars/romania.hpp time/calendars/russia.hpp time/calendars/saudiarabia.hpp + time/calendars/serbia.hpp time/calendars/singapore.hpp time/calendars/slovakia.hpp + time/calendars/slovenia.hpp time/calendars/southafrica.hpp time/calendars/southkorea.hpp time/calendars/sweden.hpp @@ -2225,6 +2238,7 @@ set(QL_HEADERS time/calendars/ukraine.hpp time/calendars/unitedkingdom.hpp time/calendars/unitedstates.hpp + time/calendars/uzbekistan.hpp time/calendars/weekendsonly.hpp time/date.hpp time/dategenerationrule.hpp diff --git a/ql/time/calendars/croatia.hpp b/ql/time/calendars/croatia.hpp index d0cfb501030..c8fdf0f59ab 100644 --- a/ql/time/calendars/croatia.hpp +++ b/ql/time/calendars/croatia.hpp @@ -42,7 +42,7 @@ namespace QuantLib {
  • Corpus Christi, June 19 th
  • Victory and Homeland Thanksgiving Day and the Day of Croatian Defenders August 5th
  • Assumption of Mary, August 15th
  • -
  • Remembrance Day for the Victims of the Vukovar and Škabrnja War Memorials, November 18th
  • +
  • Remembrance Day for the Victims of the Vukovar and kabrnja War Memorials, November 18th
  • Christmas Eve, December 24th
  • Christmas, December 25th
  • St. Stephen, December 26th
  • diff --git a/ql/time/calendars/montenegro.cpp b/ql/time/calendars/montenegro.cpp index 7249707189b..f7332eb387e 100644 --- a/ql/time/calendars/montenegro.cpp +++ b/ql/time/calendars/montenegro.cpp @@ -44,26 +44,26 @@ namespace QuantLib { bool isJul14Weekend = isWeekend(jul14.weekday()); if (isWeekend(w) - // New Year and Orthodox Christmas period: Jan 1–8 + // New Year and Orthodox Christmas period: Jan 1-8 || (m == January && d >= 1 && d <= 8) // Good Friday (Orthodox calendar) || (date.dayOfYear() == gf) // Easter Monday || (date.dayOfYear() == em) - // Labour Day: May 1–2 + // Labour Day: May 1-2 || (d == 1 && m == May) || (d == 2 && m == May) - // Independence Day: May 21–22 + // Independence Day: May 21-22 || (d == 21 && m == May) || (d == 22 && m == May) || - // Shift to 22–23 if 21st is a Sunday + // Shift to 22-23 if 21st is a Sunday (d == 22 && m == May && wd21 == Sunday) || (d == 23 && m == May && wd21 == Sunday) || - // Statehood Day: July 14–15 (per updated calendar) + // Statehood Day: July 14-15 (per updated calendar) // Normal fixed case: 13 and/or 14 July (d == 13 && m == July && !isJul13Weekend) || (d == 14 && m == July && !isJul14Weekend) || // Special case: both fall on weekend ? Monday 15th becomes observed holiday (d == 15 && m == July && isJul13Weekend && isJul14Weekend) - // Njegoš Day: Nov 13–14 + // Njego� Day: Nov 13-14 || (d == 13 && m == November) || (d == 14 && m == November)) { return false; } diff --git a/ql/time/calendars/montenegro.hpp b/ql/time/calendars/montenegro.hpp index 38e6f68bd9b..090438afa51 100644 --- a/ql/time/calendars/montenegro.hpp +++ b/ql/time/calendars/montenegro.hpp @@ -33,13 +33,13 @@ namespace QuantLib {
    • Saturdays
    • Sundays
    • -
    • New Year, Christmas Eve and Christmas: Jan 1–8
    • +
    • New Year, Christmas Eve and Christmas: Jan 1-8
    • Good Friday
    • Orthodox Easter Monday
    • -
    • Labour Day: May 1–2
    • -
    • Independence Day: May 21–22
    • +
    • Labour Day: May 1-2
    • +
    • Independence Day: May 21-22
    • Statehood Day: July 14-15
    • -
    • Day of Njegoš, Montenegrin cultural holiday: November 13th and 14th
    • +
    • Day of Njego, Montenegrin cultural holiday: November 13th and 14th
    */ class Montenegro : public Calendar { diff --git a/ql/time/calendars/northmacedonia.cpp b/ql/time/calendars/northmacedonia.cpp index 668629daa40..1efbe49584a 100644 --- a/ql/time/calendars/northmacedonia.cpp +++ b/ql/time/calendars/northmacedonia.cpp @@ -30,7 +30,6 @@ namespace QuantLib { Weekday w = date.weekday(); Day d = date.dayOfMonth(); Month m = date.month(); - Year y = date.year(); // Observance rule: if a holiday falls on a Sunday, it is observed on Monday const Date prev = date - 1; @@ -38,31 +37,31 @@ namespace QuantLib { // Holidays if (isWeekend(w) - // January 1 – New Year + // January 1 New Year || (d == 1 && m == January) - // January 6 – Epiphany + // January 6 Epiphany || (d == 6 && m == January) - // January 7 – Orthodox Christmas + // January 7 Orthodox Christmas || (d == 7 && m == January) - // March 31 – (Ramadan Bajram (Eid al-Fitr) + // March 31 (Ramadan Bajram (Eid al-Fitr) || (d == 31 && m == March) - // April 18 – Good Friday + // April 18 Good Friday || (d == 18 && m == April) - // April 21 – Easter Monday + // April 21 Easter Monday || (d == 21 && m == April) - // May 1 – Labour Day + // May 1 Labour Day || (d == 1 && m == May) - // June 6 – religious holiday + // June 6 religious holiday || (d == 6 && m == June) - // August 28 – religious holiday + // August 28 religious holiday || (d == 28 && m == August) - // September 8 – Independence Day + // September 8 Independence Day || (d == 8 && m == September) - // October 23 – Uprising Day + // October 23 Uprising Day || (d == 23 && m == October) - // December 8 – Saint Clement of Ohrid + // December 8 Saint Clement of Ohrid || (d == 8 && m == December) - // December 31 – Non-trading day + // December 31 Non-trading day || (d == 31 && m == December) // Observed holidays (if the fixed holiday was Sunday) || (sundayObserved && ((prev.dayOfMonth() == 1 && prev.month() == January) || diff --git a/ql/time/calendars/serbia.cpp b/ql/time/calendars/serbia.cpp index e1c66a1f4ab..1fc54abb067 100644 --- a/ql/time/calendars/serbia.cpp +++ b/ql/time/calendars/serbia.cpp @@ -45,8 +45,11 @@ namespace QuantLib { || (d == 15 && m == February) || (d == 16 && m == February) // Serbian Statehood Day (observed) - // Serbia's Statehood Day (Sretenje) is officially observed on February 15 and February 16. However, since these dates fall on a Saturday and Sunday, the government designates Monday, February 17, as an additional non-working day. This practice ensures that citizens receive a weekday off when public holidays coincide with weekends. - || (d == 17 && m == February) && (isWeekend(Date(15, February, y).weekday()) && isWeekend(Date(16, February, y).weekday())) + // Serbia's Statehood Day (Sretenje) is officially observed on February 15 and February 16. + // However, since these dates fall on a Saturday and Sunday, the government designates Monday, + // February 17, as an additional non-working day. This practice ensures that citizens receive a weekday off + // when public holidays coincide with weekends. + || ((d == 17 && m == February) && isWeekend(Date(15, February, y).weekday()) && isWeekend(Date(16, February, y).weekday())) // Good Friday || (dd == em - 3 && y >= 2016) // Easter Monday diff --git a/ql/time/calendars/uzbekistan.cpp b/ql/time/calendars/uzbekistan.cpp index 6b788a2eff3..cd1852522a7 100644 --- a/ql/time/calendars/uzbekistan.cpp +++ b/ql/time/calendars/uzbekistan.cpp @@ -83,7 +83,6 @@ namespace QuantLib { Weekday w = date.weekday(); Day d = date.dayOfMonth(); Month m = date.month(); - Year y = date.year(); if (isWeekend(w) || isRamazonHayit(date) diff --git a/ql/time/calendars/uzbekistan.hpp b/ql/time/calendars/uzbekistan.hpp index 179c4cc2c65..3479c2afebd 100644 --- a/ql/time/calendars/uzbekistan.hpp +++ b/ql/time/calendars/uzbekistan.hpp @@ -1,7 +1,7 @@ /* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* - Copyright (C) 2025 + Copyright (C) 2005 StatPro Italia srl This file is part of QuantLib, a free-software/open-source library for financial quantitative analysts and developers - http://quantlib.org/ @@ -10,7 +10,7 @@ under the terms of the QuantLib license. You should have received a copy of the license along with this program; if not, please email . The license is also available online at - . + . This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS From a4e324138053f14167c3c03753feb5cee17d5e6c Mon Sep 17 00:00:00 2001 From: ArsenP0doba Date: Wed, 22 Apr 2026 18:30:54 +0200 Subject: [PATCH 4/8] Add calendars (Croatia, Malta, Montenegro, North Macedonia, Serbia, Slovenia, Uzbekistan) --- ql/time/calendars/croatia.hpp | 2 +- ql/time/calendars/montenegro.cpp | 2 +- ql/time/calendars/montenegro.hpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ql/time/calendars/croatia.hpp b/ql/time/calendars/croatia.hpp index c8fdf0f59ab..466a70e59e0 100644 --- a/ql/time/calendars/croatia.hpp +++ b/ql/time/calendars/croatia.hpp @@ -42,7 +42,7 @@ namespace QuantLib {
  • Corpus Christi, June 19 th
  • Victory and Homeland Thanksgiving Day and the Day of Croatian Defenders August 5th
  • Assumption of Mary, August 15th
  • -
  • Remembrance Day for the Victims of the Vukovar and kabrnja War Memorials, November 18th
  • +
  • Remembrance Day for the Victims of the Vukovar and Skabrnja War Memorials, November 18th
  • Christmas Eve, December 24th
  • Christmas, December 25th
  • St. Stephen, December 26th
  • diff --git a/ql/time/calendars/montenegro.cpp b/ql/time/calendars/montenegro.cpp index f7332eb387e..a5d2a09f402 100644 --- a/ql/time/calendars/montenegro.cpp +++ b/ql/time/calendars/montenegro.cpp @@ -63,7 +63,7 @@ namespace QuantLib { (d == 14 && m == July && !isJul14Weekend) || // Special case: both fall on weekend ? Monday 15th becomes observed holiday (d == 15 && m == July && isJul13Weekend && isJul14Weekend) - // Njego� Day: Nov 13-14 + // Njegos Day: Nov 13-14 || (d == 13 && m == November) || (d == 14 && m == November)) { return false; } diff --git a/ql/time/calendars/montenegro.hpp b/ql/time/calendars/montenegro.hpp index 090438afa51..aa3b9b21555 100644 --- a/ql/time/calendars/montenegro.hpp +++ b/ql/time/calendars/montenegro.hpp @@ -39,7 +39,7 @@ namespace QuantLib {
  • Labour Day: May 1-2
  • Independence Day: May 21-22
  • Statehood Day: July 14-15
  • -
  • Day of Njego, Montenegrin cultural holiday: November 13th and 14th
  • +
  • Day of Njegos, Montenegrin cultural holiday: November 13th and 14th
  • */ class Montenegro : public Calendar { From b398597e6555749e8f34f506363873b5c6c93093 Mon Sep 17 00:00:00 2001 From: ArsenP0doba Date: Wed, 22 Apr 2026 18:58:14 +0200 Subject: [PATCH 5/8] Add calendars (Croatia, Malta, Montenegro, North Macedonia, Serbia, Slovenia, Uzbekistan) --- .github/workflows/includes.yml | 38 +++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/.github/workflows/includes.yml b/.github/workflows/includes.yml index 6844f23273c..0a60c9af928 100644 --- a/.github/workflows/includes.yml +++ b/.github/workflows/includes.yml @@ -3,21 +3,31 @@ on: push: branches-ignore: - 'dependabot/**' + +permissions: + contents: write + pull-requests: write + jobs: check-includes: runs-on: ubuntu-latest + steps: - - uses: actions/checkout@v6 - - name: Check - run: | - shopt -s globstar - sed -i -E -e 's|#include *"(ql/.*\.hpp)"|#include <\1>|g' **/*.[hc]pp - - uses: peter-evans/create-pull-request@v8 - with: - token: ${{ secrets.MACHINE_ACCOUNT_PAT }} - push-to-fork: ${{ vars.MACHINE_ACCOUNT }}/QuantLib - branch: fix-include-in-quotes-${{ github.ref_name }} - delete-branch: true - commit-message: 'Fix inclusions of ql headers in double quotes' - title: 'Fix inclusions of ql headers in double quotes' - author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com> + - name: Checkout + uses: actions/checkout@v4 + + - name: Fix includes + shell: bash + run: | + shopt -s globstar + sed -i -E -e 's|#include "(ql/.\.hpp)"|#include <\1>|g' **/*.[hc]pp + + - name: Create Pull Request + uses: peter-evans/create-pull-request@v8 + with: + token: ${{ secrets.GITHUB_TOKEN }} + branch: fix-include-in-quotes-${{ github.ref_name }} + delete-branch: true + commit-message: "Fix inclusions of ql headers in double quotes" + title: "Fix inclusions of ql headers in double quotes" + body: "Automated fix of ql header inclusions." \ No newline at end of file From 07ff4514fa74177832209d0c89a082992ab1c077 Mon Sep 17 00:00:00 2001 From: ArsenP0doba Date: Mon, 27 Apr 2026 11:39:56 +0200 Subject: [PATCH 6/8] Add calendars (Croatia, Malta, Montenegro, North Macedonia, Serbia, Slovenia, Uzbekistan) --- .github/workflows/generated-headers.yml | 50 ++-- .github/workflows/misspell.yml | 28 ++- .github/workflows/namespaces.yml | 49 ++-- .github/workflows/sync-qldefines.yml | 38 +-- .github/workflows/test-macros.yml | 41 ++-- QuantLib.vcxproj | 2 + ql/CMakeLists.txt | 2 + ql/time/calendars/Makefile.am | 4 +- ql/time/calendars/all.hpp | 1 + ql/time/calendars/croatia.cpp | 9 +- ql/time/calendars/croatia.hpp | 3 +- ql/time/calendars/islamicholidays.cpp | 71 ++++++ ql/time/calendars/islamicholidays.hpp | 36 +++ ql/time/calendars/malta.cpp | 4 +- ql/time/calendars/montenegro.cpp | 55 ++--- ql/time/calendars/montenegro.hpp | 17 +- ql/time/calendars/northmacedonia.cpp | 64 ++--- ql/time/calendars/northmacedonia.hpp | 10 +- ql/time/calendars/serbia.cpp | 3 +- ql/time/calendars/uzbekistan.cpp | 59 +---- test-suite/calendars.cpp | 312 ++++++++++++++++++++++++ 21 files changed, 615 insertions(+), 243 deletions(-) create mode 100644 ql/time/calendars/islamicholidays.cpp create mode 100644 ql/time/calendars/islamicholidays.hpp diff --git a/.github/workflows/generated-headers.yml b/.github/workflows/generated-headers.yml index 5638a09f055..2549272b5f5 100644 --- a/.github/workflows/generated-headers.yml +++ b/.github/workflows/generated-headers.yml @@ -3,31 +3,33 @@ on: push: branches-ignore: - 'dependabot/**' +permissions: + contents: write + pull-requests: write jobs: generate-headers: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v6 - - name: Setup - run: | - sudo rm /etc/apt/sources.list.d/microsoft-prod.list - sudo apt update - sudo apt install -y libboost-dev - - name: Configure - run: | - ./autogen.sh - ./configure - - name: Update headers - run: | - find ql -name *.am | xargs touch - make dist - rm QuantLib-*.tar.gz - - uses: peter-evans/create-pull-request@v8 - with: - token: ${{ secrets.MACHINE_ACCOUNT_PAT }} - push-to-fork: ${{ vars.MACHINE_ACCOUNT }}/QuantLib - branch: update-generated-headers-${{ github.ref_name }} - delete-branch: true - commit-message: 'Update generated headers' - title: 'Update generated headers' - author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com> + - uses: actions/checkout@v4 + - name: Setup + run: | + sudo rm /etc/apt/sources.list.d/microsoft-prod.list + sudo apt update + sudo apt install -y libboost-dev + - name: Configure + run: | + ./autogen.sh + ./configure + - name: Update headers + run: | + find ql -name *.am | xargs touch + make dist + rm QuantLib-*.tar.gz + - uses: peter-evans/create-pull-request@v8 + with: + token: ${{ secrets.GITHUB_TOKEN }} + branch: update-generated-headers-${{ github.ref_name }} + delete-branch: true + commit-message: "Update generated headers" + title: "Update generated headers" + body: "Automated update of generated headers." \ No newline at end of file diff --git a/.github/workflows/misspell.yml b/.github/workflows/misspell.yml index 05cd921da9d..dac27dee97e 100644 --- a/.github/workflows/misspell.yml +++ b/.github/workflows/misspell.yml @@ -1,20 +1,26 @@ name: Misspell fixer + on: push: branches-ignore: - 'dependabot/**' + +permissions: + contents: write + pull-requests: write + jobs: check: runs-on: ubuntu-latest + steps: - - uses: actions/checkout@v6 - - uses: sobolevn/misspell-fixer-action@master - - uses: peter-evans/create-pull-request@v8 - with: - token: ${{ secrets.MACHINE_ACCOUNT_PAT }} - push-to-fork: ${{ vars.MACHINE_ACCOUNT }}/QuantLib - branch: misspell-fixes-${{ github.ref_name }} - delete-branch: true - commit-message: 'Fixes by misspell-fixer' - title: 'Typos fixed by misspell-fixer' - author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com> + - uses: actions/checkout@v4 + - uses: sobolevn/misspell-fixer-action@master + - uses: peter-evans/create-pull-request@v8 + with: + token: ${{ secrets.GITHUB_TOKEN }} + branch: misspell-fixes-${{ github.ref_name }} + delete-branch: true + commit-message: "Fixes by misspell-fixer" + title: "Typos fixed by misspell-fixer" + body: "Automated typo fixes by misspell-fixer." \ No newline at end of file diff --git a/.github/workflows/namespaces.yml b/.github/workflows/namespaces.yml index b77cef5c5ee..b144c75c996 100644 --- a/.github/workflows/namespaces.yml +++ b/.github/workflows/namespaces.yml @@ -3,29 +3,34 @@ on: push: branches-ignore: - 'dependabot/**' +permissions: + contents: write + pull-requests: write jobs: check-namespaces: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v6 - - name: Check - run: | - shopt -s globstar - sed -i -e 's/ext::function\b/std::function/g' **/*.[hc]pp - sed -i -e 's/ext::bind\b/std::bind/g' **/*.[hc]pp - sed -i -e 's/ext::ref\b/std::ref/g' **/*.[hc]pp - sed -i -e 's/ext::cref\b/std::cref/g' **/*.[hc]pp - sed -i -e 's/ext::placeholders\b/std::placeholders/g' **/*.[hc]pp - sed -i -e 's/ext::tuple\b/std::tuple/g' **/*.[hc]pp - sed -i -e 's/ext::make_tuple\b/std::make_tuple/g' **/*.[hc]pp - sed -i -e 's/ext::get\b/std::get/g' **/*.[hc]pp - sed -i -e 's/ext::tie\b/std::tie/g' **/*.[hc]pp - - uses: peter-evans/create-pull-request@v8 - with: - token: ${{ secrets.MACHINE_ACCOUNT_PAT }} - push-to-fork: ${{ vars.MACHINE_ACCOUNT }}/QuantLib - branch: fix-ext-namespace-${{ github.ref_name }} - delete-branch: true - commit-message: 'Fix deprecated uses of ext namespace' - title: 'Fix deprecated uses of ext namespace' - author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com> + - name: Checkout + uses: actions/checkout@v4 + - name: Fix ext namespace + shell: bash + run: | + shopt -s globstar + sed -i -e 's/ext::function\b/std::function/g' **/*.[hc]pp + sed -i -e 's/ext::bind\b/std::bind/g' **/*.[hc]pp + sed -i -e 's/ext::ref\b/std::ref/g' **/*.[hc]pp + sed -i -e 's/ext::cref\b/std::cref/g' **/*.[hc]pp + sed -i -e 's/ext::placeholders\b/std::placeholders/g' **/*.[hc]pp + sed -i -e 's/ext::tuple\b/std::tuple/g' **/*.[hc]pp + sed -i -e 's/ext::make_tuple\b/std::make_tuple/g' **/*.[hc]pp + sed -i -e 's/ext::get\b/std::get/g' **/*.[hc]pp + sed -i -e 's/ext::tie\b/std::tie/g' **/*.[hc]pp + - name: Create Pull Request + uses: peter-evans/create-pull-request@v8 + with: + token: ${{ secrets.GITHUB_TOKEN }} + branch: fix-ext-namespace-${{ github.ref_name }} + delete-branch: true + commit-message: "Fix deprecated uses of ext namespace" + title: "Fix deprecated uses of ext namespace" + body: "Automated fix of deprecated ext namespace usages to std equivalents." \ No newline at end of file diff --git a/.github/workflows/sync-qldefines.yml b/.github/workflows/sync-qldefines.yml index 6d691c4441e..bb7ec4efd36 100644 --- a/.github/workflows/sync-qldefines.yml +++ b/.github/workflows/sync-qldefines.yml @@ -3,22 +3,30 @@ on: push: branches-ignore: - 'dependabot/**' +permissions: + contents: write + pull-requests: write jobs: sync-files: runs-on: ubuntu-latest + steps: - - uses: actions/checkout@v6 - - name: Check - run: | - cp ql/qldefines.hpp ql/qldefines.hpp.cfg - sed -i -e 's|^#if defined(HAVE_CONFIG_H).*$|#if defined(QL_HAVE_CONFIG_H) // Dynamically created by cmake|g' ql/qldefines.hpp.cfg - sed -i -e 's|^/\* install-hook \*/.*$|#cmakedefine QL_HAVE_CONFIG_H|g' ql/qldefines.hpp.cfg - - uses: peter-evans/create-pull-request@v8 - with: - token: ${{ secrets.MACHINE_ACCOUNT_PAT }} - push-to-fork: ${{ vars.MACHINE_ACCOUNT }}/QuantLib - branch: sync-qldefine-${{ github.ref_name }} - delete-branch: true - commit-message: 'Sync qldefines.hpp.cfg with original header' - title: 'Sync qldefines.hpp.cfg with original header' - author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com> + - name: Checkout + uses: actions/checkout@v4 + + - name: Sync files + shell: bash + run: | + cp ql/qldefines.hpp ql/qldefines.hpp.cfg + sed -i -e 's|^#if defined(HAVE_CONFIG_H).*$|#if defined(QL_HAVE_CONFIG_H) // Dynamically created by cmake|g' ql/qldefines.hpp.cfg + sed -i -e 's|^/\* install-hook \*/.*$|#cmakedefine QL_HAVE_CONFIG_H|g' ql/qldefines.hpp.cfg + + - name: Create Pull Request + uses: peter-evans/create-pull-request@v8 + with: + token: ${{ secrets.GITHUB_TOKEN }} + branch: sync-qldefine-${{ github.ref_name }} + delete-branch: true + commit-message: "Sync qldefines.hpp.cfg with original header" + title: "Sync qldefines.hpp.cfg with original header" + body: "Automated sync of qldefines.hpp.cfg with original header." \ No newline at end of file diff --git a/.github/workflows/test-macros.yml b/.github/workflows/test-macros.yml index 3f645374de1..eb023395d0a 100644 --- a/.github/workflows/test-macros.yml +++ b/.github/workflows/test-macros.yml @@ -1,24 +1,35 @@ name: Replace Boost macros that might not work with AAD types + on: push: branches-ignore: - 'dependabot/**' + +permissions: + contents: write + pull-requests: write + jobs: check-namespaces: runs-on: ubuntu-latest + steps: - - uses: actions/checkout@v6 - - name: Check - run: | - sed -i -e 's/BOOST_CHECK_SMALL\b/QL_CHECK_SMALL/g' test-suite/*.cpp - sed -i -e 's/BOOST_CHECK_CLOSE\b/QL_CHECK_CLOSE/g' test-suite/*.cpp - sed -i -e 's/BOOST_CHECK_CLOSE_FRACTION\b/QL_CHECK_CLOSE_FRACTION/g' test-suite/*.cpp - - uses: peter-evans/create-pull-request@v8 - with: - token: ${{ secrets.MACHINE_ACCOUNT_PAT }} - push-to-fork: ${{ vars.MACHINE_ACCOUNT }}/QuantLib - branch: fix-boost-test-macros-${{ github.ref_name }} - delete-branch: true - commit-message: 'Replace Boost macros that might not work with AAD types' - title: 'Replace Boost macros that might not work with AAD types' - author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com> + - name: Checkout + uses: actions/checkout@v4 + + - name: Replace Boost macros + shell: bash + run: | + sed -i -e 's/BOOST_CHECK_SMALL\b/QL_CHECK_SMALL/g' test-suite/*.cpp + sed -i -e 's/BOOST_CHECK_CLOSE\b/QL_CHECK_CLOSE/g' test-suite/*.cpp + sed -i -e 's/BOOST_CHECK_CLOSE_FRACTION\b/QL_CHECK_CLOSE_FRACTION/g' test-suite/*.cpp + + - name: Create Pull Request + uses: peter-evans/create-pull-request@v8 + with: + token: ${{ secrets.GITHUB_TOKEN }} + branch: fix-boost-test-macros-${{ github.ref_name }} + delete-branch: true + commit-message: "Replace Boost macros that might not work with AAD types" + title: "Replace Boost macros that might not work with AAD types" + body: "Automated replacement of Boost test macros with QL equivalents." \ No newline at end of file diff --git a/QuantLib.vcxproj b/QuantLib.vcxproj index ada42e44fb8..6029f4b6e5a 100644 --- a/QuantLib.vcxproj +++ b/QuantLib.vcxproj @@ -1825,6 +1825,7 @@ + @@ -2832,6 +2833,7 @@ + diff --git a/ql/CMakeLists.txt b/ql/CMakeLists.txt index c563693b606..1202b99d1a5 100644 --- a/ql/CMakeLists.txt +++ b/ql/CMakeLists.txt @@ -915,6 +915,7 @@ set(QL_SOURCES time/calendars/italy.cpp time/calendars/japan.cpp time/calendars/jointcalendar.cpp + time/calendars/islamicholidays.cpp time/calendars/malta.cpp time/calendars/mexico.cpp time/calendars/montenegro.cpp @@ -2212,6 +2213,7 @@ set(QL_HEADERS time/calendars/italy.hpp time/calendars/japan.hpp time/calendars/jointcalendar.hpp + time/calendars/islamicholidays.hpp time/calendars/malta.hpp time/calendars/mexico.hpp time/calendars/montenegro.hpp diff --git a/ql/time/calendars/Makefile.am b/ql/time/calendars/Makefile.am index cba33ce2f83..9e1cfe1fc5c 100644 --- a/ql/time/calendars/Makefile.am +++ b/ql/time/calendars/Makefile.am @@ -25,6 +25,7 @@ this_include_HEADERS = \ india.hpp \ indonesia.hpp \ israel.hpp \ + islamicholidays.hpp \ italy.hpp \ japan.hpp \ jointcalendar.hpp \ @@ -79,12 +80,13 @@ cpp_files = \ india.cpp \ indonesia.cpp \ israel.cpp \ + islamicholidays.cpp \ italy.cpp \ japan.cpp \ jointcalendar.cpp \ malta.cpp \ mexico.cpp \ - montenegro.cpp \ + montenegro.cpp \ newzealand.cpp \ northmacedonia.cpp \ norway.cpp \ diff --git a/ql/time/calendars/all.hpp b/ql/time/calendars/all.hpp index 09deedc7714..f54787730e4 100644 --- a/ql/time/calendars/all.hpp +++ b/ql/time/calendars/all.hpp @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include diff --git a/ql/time/calendars/croatia.cpp b/ql/time/calendars/croatia.cpp index 9bba0159a81..089de05e873 100644 --- a/ql/time/calendars/croatia.cpp +++ b/ql/time/calendars/croatia.cpp @@ -23,8 +23,7 @@ namespace QuantLib { Croatia::Croatia(Market) { // all calendar instances share the same implementation instance - static ext::shared_ptr impl( - new Croatia::ZseImpl); + static ext::shared_ptr impl(new Croatia::ZseImpl); impl_ = impl; } @@ -49,12 +48,14 @@ namespace QuantLib { // National Day || (d == 30 && m == May) // Corpus Christi - || (d == 19 && m == June) + || (dd == em + 59) + // Anti-Fascist Struggle Day + || (d == 22 && m == June) // Victory and Homeland Thanksgiving Day and the Day of Croatian Defenders || (d == 5 && m == August) // Assumption of Mary || (d == 15 && m == August) - // Remembrance Day for the Victims of the Vukovar and Škabrnja War Memorials + // Remembrance Day for the Victims of the Vukovar and �kabrnja War Memorials || (d == 18 && m == November) // Christmas Eve || (d == 24 && m == December) diff --git a/ql/time/calendars/croatia.hpp b/ql/time/calendars/croatia.hpp index 466a70e59e0..9c3396cc1c1 100644 --- a/ql/time/calendars/croatia.hpp +++ b/ql/time/calendars/croatia.hpp @@ -39,7 +39,8 @@ namespace QuantLib {
  • Easter Monday
  • Labour Day, May 1st
  • National Day May 30th
  • -
  • Corpus Christi, June 19 th
  • +
  • Corpus Christi, 60 days after Easter Sunday.
  • +
  • Anti-Fascist Struggle Day, June 22nd
  • Victory and Homeland Thanksgiving Day and the Day of Croatian Defenders August 5th
  • Assumption of Mary, August 15th
  • Remembrance Day for the Victims of the Vukovar and Skabrnja War Memorials, November 18th
  • diff --git a/ql/time/calendars/islamicholidays.cpp b/ql/time/calendars/islamicholidays.cpp new file mode 100644 index 00000000000..c8ca97aaf7f --- /dev/null +++ b/ql/time/calendars/islamicholidays.cpp @@ -0,0 +1,71 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2025 QuantLib contributors + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +#include +#include + +namespace QuantLib { + + bool isEidAlFitr(const Date& d) { + static std::vector dates = { + Date(20, March, 2026), + Date(10, March, 2027), + Date(27, February, 2028), + Date(15, February, 2029), + Date(5, February, 2030), + Date(25, January, 2031), + Date(14, January, 2032), + Date(2, January, 2033), + Date(23, December, 2033), + Date(12, December, 2034), + Date(1, December, 2035), + Date(19, November, 2036), + Date(8, November, 2037), + Date(29, October, 2038), + Date(19, October, 2039), + Date(7, October, 2040), + }; + return std::any_of(dates.begin(), dates.end(), + [&d](const Date& p) { return d == p; }); + } + + bool isEidAlAdha(const Date& d) { + static std::vector dates = { + Date(27, May, 2026), + Date(17, May, 2027), + Date(5, May, 2028), + Date(24, April, 2029), + Date(13, April, 2030), + Date(3, April, 2031), + Date(22, March, 2032), + Date(11, March, 2033), + Date(28, February, 2034), + Date(18, February, 2035), + Date(7, February, 2036), + Date(27, January, 2037), + Date(16, January, 2038), + Date(5, January, 2039), + Date(26, December, 2039), + Date(15, December, 2040), + }; + return std::any_of(dates.begin(), dates.end(), + [&d](const Date& p) { return d == p; }); + } + +} diff --git a/ql/time/calendars/islamicholidays.hpp b/ql/time/calendars/islamicholidays.hpp new file mode 100644 index 00000000000..57d7560a4ed --- /dev/null +++ b/ql/time/calendars/islamicholidays.hpp @@ -0,0 +1,36 @@ +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2025 QuantLib contributors + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +/*! \file islamicholidays.hpp + \brief Shared Islamic holiday date lookup tables (Eid al-Fitr, Eid al-Adha) +*/ + +#ifndef quantlib_islamic_holidays_hpp +#define quantlib_islamic_holidays_hpp + +#include + +namespace QuantLib { + + bool isEidAlFitr(const Date&); + bool isEidAlAdha(const Date&); + +} + +#endif // quantlib_islamic_holidays_hpp diff --git a/ql/time/calendars/malta.cpp b/ql/time/calendars/malta.cpp index f1407717fcb..136fb332874 100644 --- a/ql/time/calendars/malta.cpp +++ b/ql/time/calendars/malta.cpp @@ -74,10 +74,8 @@ namespace QuantLib { // Boxing Day (occasionally observed by MSE) || (d == 26 && m == December) // New Year's Eve (non-trading) - || (d == 31 && m == December)) { + || (d == 31 && m == December)) return false; - } - return true; } diff --git a/ql/time/calendars/montenegro.cpp b/ql/time/calendars/montenegro.cpp index a5d2a09f402..579ae3806b2 100644 --- a/ql/time/calendars/montenegro.cpp +++ b/ql/time/calendars/montenegro.cpp @@ -30,44 +30,29 @@ namespace QuantLib { Weekday w = date.weekday(); Day d = date.dayOfMonth(); Month m = date.month(); - Year y = date.year(); - Day em = easterMonday(y); - Day gf = em - 3; // Good Friday - Date jul13(y, July, 13); - Date jul14(y, July, 14); - Date jul15(y, July, 15); - Date may21(y, May, 21); - Weekday wd21 = may21.weekday(); - - // Weekday logic - bool isJul13Weekend = isWeekend(jul13.weekday()); - bool isJul14Weekend = isWeekend(jul14.weekday()); if (isWeekend(w) - // New Year and Orthodox Christmas period: Jan 1-8 - || (m == January && d >= 1 && d <= 8) - // Good Friday (Orthodox calendar) - || (date.dayOfYear() == gf) - // Easter Monday - || (date.dayOfYear() == em) - // Labour Day: May 1-2 - || (d == 1 && m == May) || - (d == 2 && m == May) - // Independence Day: May 21-22 - || (d == 21 && m == May) || (d == 22 && m == May) || - // Shift to 22-23 if 21st is a Sunday - (d == 22 && m == May && wd21 == Sunday) || (d == 23 && m == May && wd21 == Sunday) || - // Statehood Day: July 14-15 (per updated calendar) - // Normal fixed case: 13 and/or 14 July - (d == 13 && m == July && !isJul13Weekend) || - (d == 14 && m == July && !isJul14Weekend) || - // Special case: both fall on weekend ? Monday 15th becomes observed holiday - (d == 15 && m == July && isJul13Weekend && isJul14Weekend) - // Njegos Day: Nov 13-14 - || (d == 13 && m == November) || (d == 14 && m == November)) { + // New Year’s Day + || (d == 1 && m == January) + // New Year Holiday + || (d == 2 && m == January) + // Labour Day + || (d == 1 && m == May) + // Labour Day Holiday + || (d == 2 && m == May) + // Independence Day + || (d == 21 && m == May) + // Independence Day Holiday + || (d == 22 && m == May) + // Statehood Day + || (d == 13 && m == July) + // Statehood Day Holiday + || (d == 14 && m == July) + // Njegos Day + || (d == 13 && m == November) + // Njegos Day Holiday + || (d == 14 && m == November)) return false; - } - return true; } diff --git a/ql/time/calendars/montenegro.hpp b/ql/time/calendars/montenegro.hpp index aa3b9b21555..0f2b660976e 100644 --- a/ql/time/calendars/montenegro.hpp +++ b/ql/time/calendars/montenegro.hpp @@ -33,13 +33,16 @@ namespace QuantLib {
    • Saturdays
    • Sundays
    • -
    • New Year, Christmas Eve and Christmas: Jan 1-8
    • -
    • Good Friday
    • -
    • Orthodox Easter Monday
    • -
    • Labour Day: May 1-2
    • -
    • Independence Day: May 21-22
    • -
    • Statehood Day: July 14-15
    • -
    • Day of Njegos, Montenegrin cultural holiday: November 13th and 14th
    • +
    • New Year’s Day, January 1st<\li> +
    • New Year Holiday, January 2nd<\li> +
    • Labour Day, May 1st<\li> +
    • Labour Day Holiday, May 2nd<\li> +
    • Independence Day, May 21st<\li> +
    • Independence Day Holiday, May 22nd<\li> +
    • Statehood Day, July 13th<\li> +
    • Statehood Day Holiday, July 14th<\li> +
    • Njegos Day, November 13th<\li> +
    • Njegos Day Holiday, November 14th<\li>
    */ class Montenegro : public Calendar { diff --git a/ql/time/calendars/northmacedonia.cpp b/ql/time/calendars/northmacedonia.cpp index 1efbe49584a..f2528e8ef51 100644 --- a/ql/time/calendars/northmacedonia.cpp +++ b/ql/time/calendars/northmacedonia.cpp @@ -17,6 +17,7 @@ FOR A PARTICULAR PURPOSE. See the license for more details. */ +#include #include namespace QuantLib { @@ -28,58 +29,35 @@ namespace QuantLib { bool NorthMacedonia::MseImpl::isBusinessDay(const Date& date) const { Weekday w = date.weekday(); - Day d = date.dayOfMonth(); + Day d = date.dayOfMonth(), dd = date.dayOfYear(); Month m = date.month(); + Year y = date.year(); + Day em = easterMonday(y); - // Observance rule: if a holiday falls on a Sunday, it is observed on Monday - const Date prev = date - 1; - const bool sundayObserved = (prev.weekday() == Sunday); - - // Holidays if (isWeekend(w) - // January 1 New Year + || isEidAlFitr(date) + || isEidAlAdha(date) + // New Year || (d == 1 && m == January) - // January 6 Epiphany - || (d == 6 && m == January) - // January 7 Orthodox Christmas + // Orthodox Christmas || (d == 7 && m == January) - // March 31 (Ramadan Bajram (Eid al-Fitr) - || (d == 31 && m == March) - // April 18 Good Friday - || (d == 18 && m == April) - // April 21 Easter Monday - || (d == 21 && m == April) - // May 1 Labour Day + // Easter Monday + || (dd == em) + // Labour Day || (d == 1 && m == May) - // June 6 religious holiday - || (d == 6 && m == June) - // August 28 religious holiday - || (d == 28 && m == August) - // September 8 Independence Day + // Saints Cyril and Methodius Day + || (d == 24 && m == May) + // Republic Day + || (d == 2 && m == August) + // Independence Day || (d == 8 && m == September) - // October 23 Uprising Day + // Day of People’s Uprising + || (d == 11 && m == October) + // Day of the Macedonian Revolutionary Struggle || (d == 23 && m == October) - // December 8 Saint Clement of Ohrid - || (d == 8 && m == December) - // December 31 Non-trading day - || (d == 31 && m == December) - // Observed holidays (if the fixed holiday was Sunday) - || (sundayObserved && ((prev.dayOfMonth() == 1 && prev.month() == January) || - (prev.dayOfMonth() == 6 && prev.month() == January) || - (prev.dayOfMonth() == 7 && prev.month() == January) || - (prev.dayOfMonth() == 31 && prev.month() == March) || - (prev.dayOfMonth() == 18 && prev.month() == April) || - (prev.dayOfMonth() == 21 && prev.month() == April) || - (prev.dayOfMonth() == 1 && prev.month() == May) || - (prev.dayOfMonth() == 6 && prev.month() == June) || - (prev.dayOfMonth() == 28 && prev.month() == August) || - (prev.dayOfMonth() == 8 && prev.month() == September) || - (prev.dayOfMonth() == 23 && prev.month() == October) || - (prev.dayOfMonth() == 8 && prev.month() == December) || - (prev.dayOfMonth() == 31 && prev.month() == December)))) { + // Saint Clement of Ohrid Day, + || (d == 8 && m == December)) return false; - } - return true; } diff --git a/ql/time/calendars/northmacedonia.hpp b/ql/time/calendars/northmacedonia.hpp index 4826d2064dc..da9b725b5b6 100644 --- a/ql/time/calendars/northmacedonia.hpp +++ b/ql/time/calendars/northmacedonia.hpp @@ -29,15 +29,13 @@ namespace QuantLib { //! North Macedonian calendars - /*! Holidays for the Macedonian Stock Exchange (see https://www.mse.mk): + /*! Holidays for the North Macedonian (see https://www.timeanddate.com/holidays/macedonia/2026?hol=1):
    • Saturdays
    • Sundays
    • New Year, January 1st & 2nd
    • Orthodox Christmas, January 7th
    • -
    • Ramadan Bajram (Eid al-Fitr), March 31st
    • -
    • Good Friday
    • -
    • Orthodox Easter Monday
    • +
    • Orthodox Easter Monday, variable date<
    • Labour Day, May 1st
    • Saints Cyril and Methodius Day, May 24th
    • Republic Day, August 2nd
    • @@ -45,12 +43,14 @@ namespace QuantLib {
    • Revolution Day, October 11th
    • Day of the Macedonian Uprising, October 23rd
    • Saint Clement of Ohrid Day, December 8th
    • +
    • Eid al-Fitr (Ramazan Bajram), variable date
    • +
    • Eid al-Adha (Kurban Bayram), variable date
    \ingroup calendars */ class NorthMacedonia : public Calendar { private: - class MseImpl final : public Calendar::WesternImpl { + class MseImpl final : public Calendar::OrthodoxImpl { public: std::string name() const override { return "Macedonian Stock Exchange"; } bool isBusinessDay(const Date&) const override; diff --git a/ql/time/calendars/serbia.cpp b/ql/time/calendars/serbia.cpp index 1fc54abb067..f2894cd2b88 100644 --- a/ql/time/calendars/serbia.cpp +++ b/ql/time/calendars/serbia.cpp @@ -23,8 +23,7 @@ namespace QuantLib { Serbia::Serbia(Market) { // all calendar instances share the same implementation instance - static ext::shared_ptr impl( - new Serbia::BseImpl); + static ext::shared_ptr impl(new Serbia::BseImpl); impl_ = impl; } diff --git a/ql/time/calendars/uzbekistan.cpp b/ql/time/calendars/uzbekistan.cpp index cd1852522a7..45cc5633888 100644 --- a/ql/time/calendars/uzbekistan.cpp +++ b/ql/time/calendars/uzbekistan.cpp @@ -19,61 +19,11 @@ */ #include +#include #include -#include namespace QuantLib { - bool isRamazonHayit(const Date& d) { - // Eid al-Fitr (Ramazon Hayit) dates - static std::vector RamazonHayit = { - Date(20, March, 2026), - Date(10, March, 2027), - Date(27, February, 2028), - Date(15, February, 2029), - Date(5, February, 2030), - Date(25, January, 2031), - Date(14, January, 2032), - Date(2, January, 2033), - Date(23, December, 2033), // two Eids in 2033 - Date(12, December, 2034), - Date(1, December, 2035), - Date(19, November, 2036), - Date(8, November, 2037), - Date(29, October, 2038), - Date(19, October, 2039), - Date(7, October, 2040) - }; - - return std::any_of(RamazonHayit.begin(), RamazonHayit.end(), - [&d](const Date& p) { return d == p; }); - } - - bool isQurbonHayit(const Date& d) { - // Eid al-Adha (Qurbon Hayit) dates - static std::vector QurbonHayit = { - Date(27, May, 2026), - Date(17, May, 2027), - Date(5, May, 2028), - Date(24, April, 2029), - Date(13, April, 2030), - Date(3, April, 2031), - Date(22, March, 2032), - Date(11, March, 2033), - Date(28, February, 2034), - Date(18, February, 2035), - Date(7, February, 2036), - Date(27, January, 2037), - Date(16, January, 2038), - Date(5, January, 2039), - Date(26, December, 2039), // two Eids in 2039 - Date(15, December, 2040) - }; - - return std::any_of(QurbonHayit.begin(), QurbonHayit.end(), - [&d](const Date& p) { return d == p; }); - } - Uzbekistan::Uzbekistan(Market) { static ext::shared_ptr impl(new Uzbekistan::Impl); impl_ = impl; @@ -85,8 +35,8 @@ namespace QuantLib { Month m = date.month(); if (isWeekend(w) - || isRamazonHayit(date) - || isQurbonHayit(date) + || isEidAlFitr(date) + || isEidAlAdha(date) // New Year's Day || (d == 1 && m == January) // International Womens Day @@ -100,9 +50,8 @@ namespace QuantLib { // Teachers Day || (d == 1 && m == October) // Constitution Day - || (d == 8 && m == December)) { + || (d == 8 && m == December)) return false; - } return true; } diff --git a/test-suite/calendars.cpp b/test-suite/calendars.cpp index ae54e2c3607..3e76cedd14f 100644 --- a/test-suite/calendars.cpp +++ b/test-suite/calendars.cpp @@ -33,19 +33,26 @@ #include #include #include +#include #include #include #include #include #include #include +#include #include +#include #include +#include #include +#include +#include #include #include #include #include +#include #include #include @@ -3889,6 +3896,311 @@ BOOST_AUTO_TEST_CASE(testDayLists) { } } +BOOST_AUTO_TEST_CASE(testMalta) { + + BOOST_TEST_MESSAGE("Testing Malta holiday list..."); + + std::vector expectedHol; + + expectedHol.emplace_back(1, January, 2026); + expectedHol.emplace_back(10, February, 2026); + expectedHol.emplace_back(19, March, 2026); + expectedHol.emplace_back(31, March, 2026); + expectedHol.emplace_back(6, April, 2026); + expectedHol.emplace_back(29, June, 2026); + expectedHol.emplace_back(8, September, 2026); + expectedHol.emplace_back(21, September, 2026); + expectedHol.emplace_back(8, December, 2026); + expectedHol.emplace_back(13, December, 2026); + expectedHol.emplace_back(24, December, 2026); + expectedHol.emplace_back(31, December, 2026); + + expectedHol.emplace_back(10, February, 2027); + expectedHol.emplace_back(29, March, 2027); + expectedHol.emplace_back(31, March, 2027); + expectedHol.emplace_back(29, June, 2027); + expectedHol.emplace_back(15, August, 2027); + expectedHol.emplace_back(8, September, 2027); + expectedHol.emplace_back(21, September, 2027); + expectedHol.emplace_back(8, December, 2027); + expectedHol.emplace_back(13, December, 2027); + expectedHol.emplace_back(26, December, 2027); + + Calendar c = Malta(); + checkHolidays( + c.holidayList(Date(1, January, 2026), Date(31, December, 2027)), + expectedHol); +} + +BOOST_AUTO_TEST_CASE(testMontenegro) { + + BOOST_TEST_MESSAGE("Testing Montenegro holiday list..."); + + std::vector expectedHol; + + expectedHol.emplace_back(1, January, 2026); + expectedHol.emplace_back(2, January, 2026); + expectedHol.emplace_back(1, May, 2026); + expectedHol.emplace_back(21, May, 2026); + expectedHol.emplace_back(22, May, 2026); + expectedHol.emplace_back(13, July, 2026); + expectedHol.emplace_back(14, July, 2026); + expectedHol.emplace_back(13, November, 2026); + + expectedHol.emplace_back(1, January, 2027); + expectedHol.emplace_back(21, May, 2027); + expectedHol.emplace_back(13, July, 2027); + expectedHol.emplace_back(14, July, 2027); + + Calendar c = Montenegro(); + checkHolidays( + c.holidayList(Date(1, January, 2026), Date(31, December, 2027)), + expectedHol); +} + +BOOST_AUTO_TEST_CASE(testNorthMacedonia) { + + BOOST_TEST_MESSAGE("Testing North Macedonia holiday list..."); + + std::vector expectedHol; + + expectedHol.emplace_back(1, January, 2026); + expectedHol.emplace_back(7, January, 2026); + expectedHol.emplace_back(20, March, 2026); + expectedHol.emplace_back(13, April, 2026); + expectedHol.emplace_back(1, May, 2026); + expectedHol.emplace_back(27, May, 2026); + expectedHol.emplace_back(8, September, 2026); + expectedHol.emplace_back(23, October, 2026); + expectedHol.emplace_back(8, December, 2026); + + expectedHol.emplace_back(1, January, 2027); + expectedHol.emplace_back(7, January, 2027); + expectedHol.emplace_back(10, March, 2027); + expectedHol.emplace_back(3, May, 2027); + expectedHol.emplace_back(17, May, 2027); + expectedHol.emplace_back(24, May, 2027); + expectedHol.emplace_back(2, August, 2027); + expectedHol.emplace_back(8, September, 2027); + expectedHol.emplace_back(11, October, 2027); + expectedHol.emplace_back(8, December, 2027); + + Calendar c = NorthMacedonia(); + checkHolidays( + c.holidayList(Date(1, January, 2026), Date(31, December, 2027)), + expectedHol); +} + +BOOST_AUTO_TEST_CASE(testNorthMacedoniaRamazanBajram) { + + BOOST_TEST_MESSAGE("Testing North Macedonia Ramazan Bajram (Eid al-Fitr) dates..."); + + Calendar c = NorthMacedonia(); + + BOOST_CHECK(c.isHoliday(Date(20, March, 2026))); + BOOST_CHECK(c.isHoliday(Date(10, March, 2027))); + BOOST_CHECK(c.isHoliday(Date(27, February, 2028))); + BOOST_CHECK(c.isHoliday(Date(15, February, 2029))); + BOOST_CHECK(c.isHoliday(Date(5, February, 2030))); + BOOST_CHECK(c.isHoliday(Date(25, January, 2031))); + BOOST_CHECK(c.isHoliday(Date(14, January, 2032))); + BOOST_CHECK(c.isHoliday(Date(2, January, 2033))); + BOOST_CHECK(c.isHoliday(Date(23, December, 2033))); + BOOST_CHECK(c.isHoliday(Date(12, December, 2034))); + BOOST_CHECK(c.isHoliday(Date(1, December, 2035))); + BOOST_CHECK(c.isHoliday(Date(19, November, 2036))); +} + +BOOST_AUTO_TEST_CASE(testNorthMacedoniaKurbanBajram) { + + BOOST_TEST_MESSAGE("Testing North Macedonia Kurban Bajram (Eid al-Adha) dates..."); + + Calendar c = NorthMacedonia(); + + BOOST_CHECK(c.isHoliday(Date(27, May, 2026))); + BOOST_CHECK(c.isHoliday(Date(17, May, 2027))); + BOOST_CHECK(c.isHoliday(Date(5, May, 2028))); + BOOST_CHECK(c.isHoliday(Date(24, April, 2029))); + BOOST_CHECK(c.isHoliday(Date(13, April, 2030))); + BOOST_CHECK(c.isHoliday(Date(3, April, 2031))); + BOOST_CHECK(c.isHoliday(Date(22, March, 2032))); + BOOST_CHECK(c.isHoliday(Date(11, March, 2033))); + BOOST_CHECK(c.isHoliday(Date(28, February, 2034))); + BOOST_CHECK(c.isHoliday(Date(18, February, 2035))); + BOOST_CHECK(c.isHoliday(Date(7, February, 2036))); + BOOST_CHECK(c.isHoliday(Date(27, January, 2037))); + BOOST_CHECK(c.isHoliday(Date(16, January, 2038))); + BOOST_CHECK(c.isHoliday(Date(5, January, 2039))); + BOOST_CHECK(c.isHoliday(Date(26, December, 2039))); + BOOST_CHECK(c.isHoliday(Date(15, December, 2040))); +} + +BOOST_AUTO_TEST_CASE(testSerbia) { + + BOOST_TEST_MESSAGE("Testing Serbia holiday list..."); + + std::vector expectedHol; + + expectedHol.emplace_back(1, January, 2026); + expectedHol.emplace_back(2, January, 2026); + expectedHol.emplace_back(7, January, 2026); + expectedHol.emplace_back(16, February, 2026); + expectedHol.emplace_back(3, April, 2026); + expectedHol.emplace_back(6, April, 2026); + expectedHol.emplace_back(1, May, 2026); + expectedHol.emplace_back(11, November, 2026); + expectedHol.emplace_back(31, December, 2026); + + expectedHol.emplace_back(1, January, 2027); + expectedHol.emplace_back(7, January, 2027); + expectedHol.emplace_back(15, February, 2027); + expectedHol.emplace_back(16, February, 2027); + expectedHol.emplace_back(26, March, 2027); + expectedHol.emplace_back(29, March, 2027); + expectedHol.emplace_back(11, November, 2027); + expectedHol.emplace_back(31, December, 2027); + + Calendar c = Serbia(); + checkHolidays( + c.holidayList(Date(1, January, 2026), Date(31, December, 2027)), + expectedHol); +} + +BOOST_AUTO_TEST_CASE(testSlovenia) { + + BOOST_TEST_MESSAGE("Testing Slovenia holiday list..."); + + std::vector expectedHol; + + expectedHol.emplace_back(1, January, 2026); + expectedHol.emplace_back(2, January, 2026); + expectedHol.emplace_back(3, April, 2026); + expectedHol.emplace_back(6, April, 2026); + expectedHol.emplace_back(1, May, 2026); + expectedHol.emplace_back(25, June, 2026); + expectedHol.emplace_back(24, December, 2026); + expectedHol.emplace_back(25, December, 2026); + expectedHol.emplace_back(31, December, 2026); + + expectedHol.emplace_back(1, January, 2027); + expectedHol.emplace_back(26, March, 2027); + expectedHol.emplace_back(29, March, 2027); + expectedHol.emplace_back(25, June, 2027); + expectedHol.emplace_back(24, December, 2027); + expectedHol.emplace_back(31, December, 2027); + + Calendar c = Slovenia(); + checkHolidays( + c.holidayList(Date(1, January, 2026), Date(31, December, 2027)), + expectedHol); +} + +BOOST_AUTO_TEST_CASE(testCroatia) { + + BOOST_TEST_MESSAGE("Testing Croatia holiday list..."); + + std::vector expectedHol; + + expectedHol.emplace_back(1, January, 2026); + expectedHol.emplace_back(6, January, 2026); + expectedHol.emplace_back(3, April, 2026); + expectedHol.emplace_back(6, April, 2026); + expectedHol.emplace_back(1, May, 2026); + expectedHol.emplace_back(4, June, 2026); + expectedHol.emplace_back(22, June, 2026); + expectedHol.emplace_back(5, August, 2026); + expectedHol.emplace_back(18, November, 2026); + expectedHol.emplace_back(24, December, 2026); + expectedHol.emplace_back(25, December, 2026); + expectedHol.emplace_back(31, December, 2026); + + expectedHol.emplace_back(1, January, 2027); + expectedHol.emplace_back(6, January, 2027); + expectedHol.emplace_back(26, March, 2027); + expectedHol.emplace_back(29, March, 2027); + expectedHol.emplace_back(27, May, 2027); + expectedHol.emplace_back(22, June, 2027); + expectedHol.emplace_back(5, August, 2027); + expectedHol.emplace_back(18, November, 2027); + expectedHol.emplace_back(24, December, 2027); + expectedHol.emplace_back(31, December, 2027); + + Calendar c = Croatia(); + checkHolidays( + c.holidayList(Date(1, January, 2026), Date(31, December, 2027)), + expectedHol); +} + +BOOST_AUTO_TEST_CASE(testUzbekistan) { + + BOOST_TEST_MESSAGE("Testing Uzbekistan holiday list..."); + + std::vector expectedHol; + + expectedHol.emplace_back(1, January, 2026); + expectedHol.emplace_back(20, March, 2026); + expectedHol.emplace_back(27, May, 2026); + expectedHol.emplace_back(1, September, 2026); + expectedHol.emplace_back(1, October, 2026); + expectedHol.emplace_back(8, December, 2026); + expectedHol.emplace_back(1, January, 2027); + expectedHol.emplace_back(8, March, 2027); + expectedHol.emplace_back(10, March, 2027); + expectedHol.emplace_back(17, May, 2027); + expectedHol.emplace_back(1, September, 2027); + expectedHol.emplace_back(1, October, 2027); + expectedHol.emplace_back(8, December, 2027); + + Calendar c = Uzbekistan(); + checkHolidays( + c.holidayList(Date(1, January, 2026), Date(31, December, 2027)), + expectedHol); +} + +BOOST_AUTO_TEST_CASE(testUzbekistanRamazonHayit) { + + BOOST_TEST_MESSAGE("Testing Uzbekistan Ramazon Hayit (Eid al-Fitr) dates..."); + + Calendar c = Uzbekistan(); + + BOOST_CHECK(c.isHoliday(Date(20, March, 2026))); + BOOST_CHECK(c.isHoliday(Date(10, March, 2027))); + BOOST_CHECK(c.isHoliday(Date(27, February, 2028))); + BOOST_CHECK(c.isHoliday(Date(15, February, 2029))); + BOOST_CHECK(c.isHoliday(Date(5, February, 2030))); + BOOST_CHECK(c.isHoliday(Date(25, January, 2031))); + BOOST_CHECK(c.isHoliday(Date(14, January, 2032))); + BOOST_CHECK(c.isHoliday(Date(2, January, 2033))); + BOOST_CHECK(c.isHoliday(Date(23, December, 2033))); + BOOST_CHECK(c.isHoliday(Date(12, December, 2034))); + BOOST_CHECK(c.isHoliday(Date(1, December, 2035))); + BOOST_CHECK(c.isHoliday(Date(19, November, 2036))); +} + +BOOST_AUTO_TEST_CASE(testUzbekistanQurbonHayit) { + + BOOST_TEST_MESSAGE("Testing Uzbekistan Qurbon Hayit (Eid al-Adha) dates..."); + + Calendar c = Uzbekistan(); + + BOOST_CHECK(c.isHoliday(Date(27, May, 2026))); + BOOST_CHECK(c.isHoliday(Date(17, May, 2027))); + BOOST_CHECK(c.isHoliday(Date(5, May, 2028))); + BOOST_CHECK(c.isHoliday(Date(24, April, 2029))); + BOOST_CHECK(c.isHoliday(Date(13, April, 2030))); + BOOST_CHECK(c.isHoliday(Date(3, April, 2031))); + BOOST_CHECK(c.isHoliday(Date(22, March, 2032))); + BOOST_CHECK(c.isHoliday(Date(11, March, 2033))); + BOOST_CHECK(c.isHoliday(Date(28, February, 2034))); + BOOST_CHECK(c.isHoliday(Date(18, February, 2035))); + BOOST_CHECK(c.isHoliday(Date(7, February, 2036))); + BOOST_CHECK(c.isHoliday(Date(27, January, 2037))); + BOOST_CHECK(c.isHoliday(Date(16, January, 2038))); + BOOST_CHECK(c.isHoliday(Date(5, January, 2039))); + BOOST_CHECK(c.isHoliday(Date(26, December, 2039))); + BOOST_CHECK(c.isHoliday(Date(15, December, 2040))); +} + BOOST_AUTO_TEST_SUITE_END() BOOST_AUTO_TEST_SUITE_END() From 7ee608f4019148df17e1d01f52415db1419724aa Mon Sep 17 00:00:00 2001 From: ArsenP0doba Date: Mon, 27 Apr 2026 15:07:43 +0200 Subject: [PATCH 7/8] Add calendars (Croatia, Malta, Montenegro, North Macedonia, Serbia, Slovenia, Uzbekistan) --- QuantLib.vcxproj.filters | 6 ++ ql/time/calendars/islamicholidays.cpp | 92 ++++++++++++++------------- ql/time/calendars/islamicholidays.hpp | 12 +++- ql/time/calendars/northmacedonia.cpp | 4 +- ql/time/calendars/uzbekistan.cpp | 4 +- 5 files changed, 68 insertions(+), 50 deletions(-) diff --git a/QuantLib.vcxproj.filters b/QuantLib.vcxproj.filters index 3559f7a5196..a640b163009 100644 --- a/QuantLib.vcxproj.filters +++ b/QuantLib.vcxproj.filters @@ -2907,6 +2907,9 @@ time\calendars + + ql\time\calendars + time\calendars @@ -6195,6 +6198,9 @@ time\calendars + + ql\time\calendars + time\calendars diff --git a/ql/time/calendars/islamicholidays.cpp b/ql/time/calendars/islamicholidays.cpp index c8ca97aaf7f..94cf25f6a2f 100644 --- a/ql/time/calendars/islamicholidays.cpp +++ b/ql/time/calendars/islamicholidays.cpp @@ -22,50 +22,54 @@ namespace QuantLib { - bool isEidAlFitr(const Date& d) { - static std::vector dates = { - Date(20, March, 2026), - Date(10, March, 2027), - Date(27, February, 2028), - Date(15, February, 2029), - Date(5, February, 2030), - Date(25, January, 2031), - Date(14, January, 2032), - Date(2, January, 2033), - Date(23, December, 2033), - Date(12, December, 2034), - Date(1, December, 2035), - Date(19, November, 2036), - Date(8, November, 2037), - Date(29, October, 2038), - Date(19, October, 2039), - Date(7, October, 2040), - }; - return std::any_of(dates.begin(), dates.end(), - [&d](const Date& p) { return d == p; }); - } + namespace MoonSightingMethod { - bool isEidAlAdha(const Date& d) { - static std::vector dates = { - Date(27, May, 2026), - Date(17, May, 2027), - Date(5, May, 2028), - Date(24, April, 2029), - Date(13, April, 2030), - Date(3, April, 2031), - Date(22, March, 2032), - Date(11, March, 2033), - Date(28, February, 2034), - Date(18, February, 2035), - Date(7, February, 2036), - Date(27, January, 2037), - Date(16, January, 2038), - Date(5, January, 2039), - Date(26, December, 2039), - Date(15, December, 2040), - }; - return std::any_of(dates.begin(), dates.end(), - [&d](const Date& p) { return d == p; }); - } + bool isEidAlFitr(const Date& d) { + static std::vector dates = { + Date(20, March, 2026), + Date(10, March, 2027), + Date(27, February, 2028), + Date(15, February, 2029), + Date(5, February, 2030), + Date(25, January, 2031), + Date(14, January, 2032), + Date(2, January, 2033), + Date(23, December, 2033), + Date(12, December, 2034), + Date(1, December, 2035), + Date(19, November, 2036), + Date(8, November, 2037), + Date(29, October, 2038), + Date(19, October, 2039), + Date(7, October, 2040), + }; + return std::any_of(dates.begin(), dates.end(), + [&d](const Date& p) { return d == p; }); + } + + bool isEidAlAdha(const Date& d) { + static std::vector dates = { + Date(27, May, 2026), + Date(17, May, 2027), + Date(5, May, 2028), + Date(24, April, 2029), + Date(13, April, 2030), + Date(3, April, 2031), + Date(22, March, 2032), + Date(11, March, 2033), + Date(28, February, 2034), + Date(18, February, 2035), + Date(7, February, 2036), + Date(27, January, 2037), + Date(16, January, 2038), + Date(5, January, 2039), + Date(26, December, 2039), + Date(15, December, 2040), + }; + return std::any_of(dates.begin(), dates.end(), + [&d](const Date& p) { return d == p; }); + } + + } } diff --git a/ql/time/calendars/islamicholidays.hpp b/ql/time/calendars/islamicholidays.hpp index 57d7560a4ed..b334061b021 100644 --- a/ql/time/calendars/islamicholidays.hpp +++ b/ql/time/calendars/islamicholidays.hpp @@ -28,8 +28,16 @@ namespace QuantLib { - bool isEidAlFitr(const Date&); - bool isEidAlAdha(const Date&); + /*! For calculating Eid al-Fitr and Eid al-Adha, there are two main approaches (calendars) used in practice, and they sometimes overlap. + Umm al-Qura calendar is used by Saudi Arabia (primary user) and some Gulf countries. + Moon sighting calendar is used by South Asia, Central Asia, Middle East and North Africa. + */ + namespace MoonSightingMethod { + + bool isEidAlFitr(const Date&); + bool isEidAlAdha(const Date&); + + } } diff --git a/ql/time/calendars/northmacedonia.cpp b/ql/time/calendars/northmacedonia.cpp index f2528e8ef51..bd341185494 100644 --- a/ql/time/calendars/northmacedonia.cpp +++ b/ql/time/calendars/northmacedonia.cpp @@ -35,8 +35,8 @@ namespace QuantLib { Day em = easterMonday(y); if (isWeekend(w) - || isEidAlFitr(date) - || isEidAlAdha(date) + || MoonSightingMethod::isEidAlFitr(date) + || MoonSightingMethod::isEidAlAdha(date) // New Year || (d == 1 && m == January) // Orthodox Christmas diff --git a/ql/time/calendars/uzbekistan.cpp b/ql/time/calendars/uzbekistan.cpp index 45cc5633888..ce094e350f9 100644 --- a/ql/time/calendars/uzbekistan.cpp +++ b/ql/time/calendars/uzbekistan.cpp @@ -35,8 +35,8 @@ namespace QuantLib { Month m = date.month(); if (isWeekend(w) - || isEidAlFitr(date) - || isEidAlAdha(date) + || MoonSightingMethod::isEidAlFitr(date) + || MoonSightingMethod::isEidAlAdha(date) // New Year's Day || (d == 1 && m == January) // International Womens Day From 091984ba856243bc69e383881fc1811ec914ce30 Mon Sep 17 00:00:00 2001 From: ArsenP0doba Date: Wed, 29 Apr 2026 19:06:38 +0200 Subject: [PATCH 8/8] Add calendars (Croatia, Malta, Montenegro, North Macedonia, Serbia, Slovenia, Uzbekistan) --- ql/currencies/asia.cpp | 7 +++++++ ql/currencies/asia.hpp | 10 ++++++++++ ql/currencies/europe.cpp | 9 +++++++++ ql/currencies/europe.hpp | 11 +++++++++++ 4 files changed, 37 insertions(+) diff --git a/ql/currencies/asia.cpp b/ql/currencies/asia.cpp index b0c50679ced..8765ce20309 100644 --- a/ql/currencies/asia.cpp +++ b/ql/currencies/asia.cpp @@ -255,5 +255,12 @@ namespace QuantLib { data_ = lkrData; } + // Uzbekistani Som + UZSCurrency::UZSCurrency() + { + static auto uzsData = ext::make_shared("Uzbekistani Som", "UZS", 860, "UZS", "", 100, Rounding()); + data_ = uzsData; + } + } diff --git a/ql/currencies/asia.hpp b/ql/currencies/asia.hpp index fb3ac6e09fd..19ad13c6ead 100644 --- a/ql/currencies/asia.hpp +++ b/ql/currencies/asia.hpp @@ -331,6 +331,16 @@ namespace QuantLib { LKRCurrency(); }; + //! Uzbekistani Som + /*! The ISO three-letter code is UZS; there numeric code is 860. + It is divided into 100 tiyin. + \ingroup currencies + */ + class UZSCurrency : public Currency { + public: + UZSCurrency(); + }; + } #if defined(QL_PATCH_MSVC) diff --git a/ql/currencies/europe.cpp b/ql/currencies/europe.cpp index 1a6ecdaa88c..fb93d09776c 100644 --- a/ql/currencies/europe.cpp +++ b/ql/currencies/europe.cpp @@ -144,6 +144,15 @@ namespace QuantLib { data_ = lvlData; } + // Macedonian denar + /* The ISO three-letter code is MKD; the numeric code is 807. + It is divided in 100 deni. + */ + MKDCurrency::MKDCurrency() { + static auto mkdData = ext::make_shared("Macedonian denar", "MKD", 807, "den", "", 100, Rounding()); + data_ = mkdData; + } + // Norwegian krone /* The ISO three-letter code is NOK; the numeric code is 578. It is divided in 100 øre. diff --git a/ql/currencies/europe.hpp b/ql/currencies/europe.hpp index baa268dc6b6..019ebd4933e 100644 --- a/ql/currencies/europe.hpp +++ b/ql/currencies/europe.hpp @@ -191,6 +191,17 @@ namespace QuantLib { LVLCurrency(); }; + //! Macedonian denar + /*! The ISO three-letter code is MKD; the numeric code is 807. + It is divided in 100 deni. + + \ingroup currencies + */ + class MKDCurrency : public Currency { + public: + MKDCurrency(); + }; + //! Norwegian krone /*! The ISO three-letter code is NOK; the numeric code is 578. It is divided in 100 øre.