Logo
Fully annotated reference manual - version 1.8.12
Loading...
Searching...
No Matches
adjustedinmemoryloader.cpp
Go to the documentation of this file.
1/*
2 Copyright (C) 2023 Quaternion Risk Management Ltd
3 All rights reserved.
4
5 This file is part of ORE, a free-software/open-source library
6 for transparent pricing and risk analysis - http://opensourcerisk.org
7
8 ORE is free software: you can redistribute it and/or modify it
9 under the terms of the Modified BSD License. You should have received a
10 copy of the license along with this program.
11 The license is also available online at <http://opensourcerisk.org>
12
13 This program is distributed on the basis that it will form a useful
14 contribution to risk analytics and model standardisation, but WITHOUT
15 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
16 FITNESS FOR A PARTICULAR PURPOSE. See the license for more details.
17 */
20
21namespace ore {
22namespace data {
23
24void AdjustedInMemoryLoader::add(Date date, const string& name, Real value) {
25 Real factor = 1.0;
26 try {
27 auto datum = parseMarketDatum(date, name, Null<Real>());
28 if (auto eqDatum = QuantLib::ext::dynamic_pointer_cast<EquitySpotQuote>(datum))
29 factor = factors_.getFactor(eqDatum->eqName(), date);
30 else if (auto eqDatum = QuantLib::ext::dynamic_pointer_cast<EquityForwardQuote>(datum))
31 factor = factors_.getFactor(eqDatum->eqName(), date);
32 } catch (const std::exception& e) {
33 DLOG("AdjustedInMemoryLoader failure on " << name << ": " << e.what());
34 }
35 InMemoryLoader::add(date, name, value * factor);
36}
37
38void AdjustedInMemoryLoader::addFixing(Date date, const string& name, Real value) {
39 Real factor = 1.0;
40 try {
41 auto ind = parseEquityIndex(name);
42 factor = factors_.getFactor(ind->name(), date);
43 } catch (...) {
44 }
45 InMemoryLoader::addFixing(date, name, value * factor);
46}
47
48} // namespace data
49} // namespace ore
virtual void add(QuantLib::Date date, const std::string &name, QuantLib::Real value) override
virtual void addFixing(QuantLib::Date date, const std::string &name, QuantLib::Real value) override
ore::data::AdjustmentFactors factors_
QuantLib::Real getFactor(const std::string &name, const QuantLib::Date &d) const
Returns the adjustment factor for a name on a given date.
virtual void addFixing(QuantLib::Date date, const string &name, QuantLib::Real value)
virtual void add(QuantLib::Date date, const string &name, QuantLib::Real value)
SafeStack< ValueType > value
QuantLib::ext::shared_ptr< MarketDatum > parseMarketDatum(const Date &asof, const string &datumName, const Real &value)
Function to parse a market datum.
QuantLib::ext::shared_ptr< QuantExt::EquityIndex2 > parseEquityIndex(const string &s)
Convert std::string (e.g SP5) to QuantExt::EquityIndex.
Map text representations to QuantLib/QuantExt types.
@ data
Definition: log.hpp:77
#define DLOG(text)
Logging Macro (Level = Debug)
Definition: log.hpp:554
Serializable Credit Default Swap.
Definition: namespaces.docs:23
string name