Skip to content

Commit 6f07f78

Browse files
Roland Lichtersjenkins
authored andcommitted
move implyBondSpreads function
1 parent aa8e5a6 commit 6f07f78

2 files changed

Lines changed: 31 additions & 0 deletions

File tree

OREAnalytics/orea/app/analytic.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
#include <orea/aggregation/dimregressioncalculator.hpp>
3131

3232
#include <ored/marketdata/todaysmarket.hpp>
33+
#include <ored/marketdata/bondspreadimply.hpp>
3334
#include <ored/portfolio/builders/currencyswap.hpp>
3435
#include <ored/portfolio/builders/fxoption.hpp>
3536
#include <ored/portfolio/builders/multilegoption.hpp>
@@ -242,5 +243,28 @@ void MarketDataAnalyticImpl::runAnalytic(
242243
CONSOLE("OK");
243244
}
244245

246+
boost::shared_ptr<Loader> implyBondSpreads(const Date& asof,
247+
const boost::shared_ptr<ore::analytics::InputParameters>& params,
248+
const boost::shared_ptr<TodaysMarketParameters>& todaysMarketParams,
249+
const boost::shared_ptr<Loader>& loader,
250+
const boost::shared_ptr<CurveConfigurations>& curveConfigs,
251+
const std::string& excludeRegex) {
252+
253+
auto securities = BondSpreadImply::requiredSecurities(asof, todaysMarketParams, curveConfigs, *loader,
254+
true, excludeRegex);
255+
256+
if (!securities.empty()) {
257+
// always continue on error and always use lazy market building
258+
boost::shared_ptr<Market> market =
259+
boost::make_shared<TodaysMarket>(asof, todaysMarketParams, loader, curveConfigs, true, true, true,
260+
params->refDataManager(), false, *params->iborFallbackConfig());
261+
return BondSpreadImply::implyBondSpreads(securities, params->refDataManager(), market, params->pricingEngine(),
262+
Market::defaultConfiguration, *params->iborFallbackConfig());
263+
} else {
264+
// no bonds that require a spread imply => return null ptr
265+
return boost::shared_ptr<Loader>();
266+
}
267+
}
268+
245269
} // namespace analytics
246270
} // namespace ore

OREAnalytics/orea/app/analytic.hpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,5 +241,12 @@ template <class T> inline QuantLib::ext::shared_ptr<T> Analytic::dependentAnalyt
241241
return analytic;
242242
}
243243

244+
boost::shared_ptr<ore::data::Loader> implyBondSpreads(const Date& asof,
245+
const boost::shared_ptr<InputParameters>& params,
246+
const boost::shared_ptr<ore::data::TodaysMarketParameters>& todaysMarketParams,
247+
const boost::shared_ptr<ore::data::Loader>& loader,
248+
const boost::shared_ptr<ore::data::CurveConfigurations>& curveConfigs,
249+
const std::string& excludeRegex);
250+
244251
} // namespace analytics
245252
} // namespace oreplus

0 commit comments

Comments
 (0)