57 {
58 BOOST_TEST_MESSAGE("Testing Fx TaRF...");
59
63
64 Settings::instance().evaluationDate() = Date(31, Dec, 2018);
65 Date asof = Settings::instance().evaluationDate();
66
68 conventions->fromFile(TEST_INPUT_FILE("conventions.xml"));
70
72 todaysMarketParams->fromFile(TEST_INPUT_FILE("todaysmarket.xml"));
74 curveConfigs->fromFile(TEST_INPUT_FILE("curveconfig.xml"));
75 auto loader =
QuantLib::ext::make_shared<
CSVLoader>(TEST_INPUT_FILE("market.txt"), TEST_INPUT_FILE("fixings.txt"), false);
77
78
80 engineData->fromFile(TEST_INPUT_FILE("pricingengine.xml"));
82
83
84 struct cleanup {
85 ~cleanup() { ore::data::ScriptLibraryStorage::instance().
clear(); }
86 } cleanup;
88 library.
fromFile(TEST_INPUT_FILE(
"scriptlibrary.xml"));
89 ore::data::ScriptLibraryStorage::instance().set(std::move(library));
90
91
93 string trade = "FX_TaRF";
94 string portfolioFile = trade + ".xml";
95 p.
fromFile(TEST_INPUT_FILE(portfolioFile));
96 BOOST_CHECK_NO_THROW(p.
build(factory));
97
98 const Real spot = 1.1469;
99 const Real tol = 0.01;
100
101
102
103 BOOST_CHECK_NO_THROW(p.
get(
"FX_TARF_1")->instrument()->NPV());
104 BOOST_TEST_MESSAGE(p.
get(
"FX_TARF_1")->instrument()->NPV() * spot);
105 BOOST_TEST_MESSAGE(p.
get(
"FX_FORWARD_1")->instrument()->NPV());
106
107 BOOST_CHECK_CLOSE(p.
get(
"FX_TARF_1")->instrument()->NPV() * spot, p.
get(
"FX_FORWARD_1")->instrument()->NPV(), tol);
108
109
110
111 BOOST_CHECK_CLOSE(p.
get(
"FX_TARF_2")->instrument()->NPV() * spot,
112 p.
get(
"FX_FORWARD_2A")->instrument()->NPV() + p.
get(
"FX_FORWARD_2B")->instrument()->NPV() +
113 p.
get(
"FX_FORWARD_2C")->instrument()->NPV(),
114 tol);
115
116
117
118 BOOST_CHECK_CLOSE(p.
get(
"FX_TARF_3")->instrument()->NPV() * spot,
119 (p.
get(
"FX_TARF_3A")->instrument()->NPV() + p.
get(
"FX_TARF_3B")->instrument()->NPV() +
120 p.
get(
"FX_TARF_3C")->instrument()->NPV()) *
121 spot,
122 tol);
123}
Utility class for loading market quotes and fixings from a file.
Repository for currency dependent market conventions.
Container class for all Curve Configurations.
Pricing engine description.
Pricing Engine Factory class.
void clear()
Clear all builders.
Singleton to hold conventions.
void build(const QuantLib::ext::shared_ptr< EngineFactory > &, const std::string &context="unspecified", const bool emitStructuredError=true)
Call build on all trades in the portfolio, the context is included in error messages.
QuantLib::ext::shared_ptr< Trade > get(const std::string &id) const
Today's Market Parameters.
void fromFile(const std::string &filename)
#define ORE_REGISTER_TRADE_BUILDER(NAME, CLASS, OVERWRITE)
#define ORE_REGISTER_ENGINE_BUILDER(CLASS, OVERWRITE)
Serializable Credit Default Swap.
vector< string > curveConfigs