Skip to content

Commit 3c99da3

Browse files
author
jenkins
committed
git subrepo pull (merge) ore
subrepo: subdir: "ore" merged: "76c1b6f923" upstream: origin: "git@gitlab.acadiasoft.net:qs/ore.git" branch: "master" commit: "c0036c32ab" git-subrepo: version: "0.4.6" origin: "https://github.com/ingydotnet/git-subrepo" commit: "110b9eb"
2 parents c509b44 + c0036c3 commit 3c99da3

8 files changed

Lines changed: 54 additions & 22 deletions

File tree

App/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.15)
22

33
project(App CXX)
44

5-
include("../cmake/commonSettings.cmake")
5+
include(commonSettings)
66

77
get_library_name("OREPlusBase" OREPBASE_LIB_NAME)
88
get_library_name("OREAnalytics" OREA_LIB_NAME)

CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,11 @@ option(ORE_USE_ZLIB "Use compression for boost::iostreams" OFF)
1414

1515
include(CTest)
1616

17-
include("cmake/commonSettings.cmake")
17+
# Path for local cmake modules
18+
if(NOT "${CMAKE_CURRENT_LIST_DIR}/cmake" IN_LIST CMAKE_MODULE_PATH)
19+
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
20+
endif()
21+
include(commonSettings)
1822

1923
set(USE_GLOBAL_ORE_BUILD ON)
2024

Docker/CMakeLists_ORE.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,11 @@ option(ORE_USE_ZLIB "Use compression for boost::iostreams" ON)
1010

1111
include(CTest)
1212

13-
include("cmake/commonSettings.cmake")
13+
# Path for local cmake modules
14+
if(NOT "${CMAKE_CURRENT_LIST_DIR}/cmake" IN_LIST CMAKE_MODULE_PATH)
15+
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
16+
endif()
17+
include(commonSettings)
1418

1519
add_link_directory_if_exists("${QUANTLIB_SOURCE_DIR}/build/ql")
1620

OREAnalytics/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ project(OREAnalytics CXX)
44

55
enable_testing()
66

7-
include("../cmake/writeAll.cmake")
8-
include("../cmake/commonSettings.cmake")
7+
include(writeAll)
8+
include(commonSettings)
99

1010
get_library_name("OREAnalytics" OREA_LIB_NAME)
1111
get_library_name("OREData" ORED_LIB_NAME)

OREAnalytics/orea/simm/simmcalculator.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,12 @@ SimmCalculator::SimmCalculator(const ore::analytics::Crif& crif,
108108

109109
// Make sure we have CRIF amount denominated in the result ccy
110110
CrifRecord newCrifRecord = cr;
111-
if (resultCcy_ == "USD" && cr.hasAmountUsd()) {
111+
112+
if (cr.requiresAmountUsd() && resultCcy_ == "USD" && cr.hasAmountUsd()) {
112113
newCrifRecord.amountResultCcy = newCrifRecord.amountUsd;
113-
} else {
114+
} else if(cr.requiresAmountUsd()) {
115+
// ProductClassMultiplier and AddOnNotionalFactor don't have a currency and dont need to be converted,
116+
// we use the amount
114117
const Real fxSpot = market_->fxRate(newCrifRecord.amountCurrency + resultCcy_)->value();
115118
newCrifRecord.amountResultCcy = fxSpot * newCrifRecord.amount;
116119
}

OREData/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ project(OREData CXX)
44

55
enable_testing()
66

7-
include("../cmake/writeAll.cmake")
8-
include("../cmake/commonSettings.cmake")
7+
include(writeAll)
8+
include(commonSettings)
99

1010
get_library_name("OREData" ORED_LIB_NAME)
1111
get_library_name("QuantExt" QLE_LIB_NAME)

OREData/ored/portfolio/trs.cpp

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -572,20 +572,41 @@ void TRS::build(const boost::shared_ptr<EngineFactory>& engineFactory) {
572572
DLOG("add required fixings for fundings legs with daily resets (if any)");
573573

574574
for (Size i = 0; i < fundingLegs.size(); ++i) {
575-
if (fundingNotionalTypes[i] != TRS::FundingData::NotionalType::DailyReset)
576-
continue;
577-
for (auto const& c : fundingLegs[i]) {
578-
if (auto cpn = boost::dynamic_pointer_cast<QuantLib::Coupon>(c)) {
579-
QL_REQUIRE(boost::dynamic_pointer_cast<QuantLib::FixedRateCoupon>(c),
580-
"daily reset funding legs support fixed rate coupons only");
581-
for (QuantLib::Date d = cpn->accrualStartDate(); d < cpn->accrualEndDate(); ++d) {
575+
if (fundingNotionalTypes[i] == TRS::FundingData::NotionalType::DailyReset) {
576+
for (auto const& c : fundingLegs[i]) {
577+
if (auto cpn = boost::dynamic_pointer_cast<QuantLib::Coupon>(c)) {
578+
QL_REQUIRE(boost::dynamic_pointer_cast<QuantLib::FixedRateCoupon>(c),
579+
"daily reset funding legs support fixed rate coupons only");
580+
for (QuantLib::Date d = cpn->accrualStartDate(); d < cpn->accrualEndDate(); ++d) {
581+
for (Size j = 0; j < underlying_.size(); ++j) {
582+
Date fixingDate = underlyingIndex[j]->fixingCalendar().adjust(d, Preceding);
583+
for (auto const& [n, _] : indexNamesAndQty)
584+
requiredFixings_.addFixingDate(fixingDate, n, cpn->date(), false, false);
585+
for (auto const& n : fxIndices) {
586+
requiredFixings_.addFixingDate(n.second->fixingCalendar().adjust(fixingDate, Preceding),
587+
n.first, cpn->date(), false, false);
588+
}
589+
}
590+
}
591+
}
592+
}
593+
} else if (fundingNotionalTypes[i] == TRS::FundingData::NotionalType::PeriodReset) {
594+
for (auto const& c : fundingLegs[i]) {
595+
if (auto cpn = boost::dynamic_pointer_cast<QuantLib::Coupon>(c)) {
582596
for (Size j = 0; j < underlying_.size(); ++j) {
583-
Date fixingDate = underlyingIndex[j]->fixingCalendar().adjust(d, Preceding);
597+
Date fundingStartDate = cpn->accrualStartDate();
598+
Size currentIdx = std::distance(valuationDates.begin(),
599+
std::upper_bound(valuationDates.begin(),
600+
valuationDates.end(),
601+
fundingStartDate + fundingData_.fundingResetGracePeriod()));
602+
if (currentIdx > 0)
603+
--currentIdx;
604+
Date fixingDate = valuationDates[currentIdx];
584605
for (auto const& [n, _] : indexNamesAndQty)
585-
requiredFixings_.addFixingDate(fixingDate, n, cpn->date());
606+
requiredFixings_.addFixingDate(fixingDate, n, cpn->date(), false, false);
586607
for (auto const& n : fxIndices) {
587608
requiredFixings_.addFixingDate(n.second->fixingCalendar().adjust(fixingDate, Preceding),
588-
n.first, cpn->date());
609+
n.first, cpn->date(), false, false);
589610
}
590611
}
591612
}

QuantExt/CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ project(QuantExt CXX)
44

55
enable_testing()
66

7-
include("../cmake/writeAll.cmake")
8-
include("../cmake/writeTestSuiteMain.cmake")
9-
include("../cmake/commonSettings.cmake")
7+
include(writeAll)
8+
include(writeTestSuiteMain)
9+
include(commonSettings)
1010

1111
get_library_name("QuantExt" QLE_LIB_NAME)
1212
set_ql_library_name()

0 commit comments

Comments
 (0)