Adapt Yield Curve and Volatility Surface and Market Data, to be better compatible with unit test.
Some checks failed
C++ CI / build (push) Has been cancelled
Some checks failed
C++ CI / build (push) Has been cancelled
This commit is contained in:
@@ -9,8 +9,7 @@
|
||||
|
||||
class BlackScholesProcess : public StochasticProcess{
|
||||
public:
|
||||
BlackScholesProcess() = default;
|
||||
BlackScholesProcess(std::unique_ptr<MarketData> data) : StochasticProcess(std::move(data)){}
|
||||
explicit BlackScholesProcess(MarketData data) : StochasticProcess(std::move(data)){}
|
||||
|
||||
double drift(double t, double s) override;
|
||||
|
||||
@@ -21,4 +20,4 @@ public:
|
||||
};
|
||||
|
||||
|
||||
#endif //QUANTENGINE_BLACKSCHOLESPROCESS_HPP
|
||||
#endif //QUANTENGINE_BLACKSCHOLESPROCESS_HPP
|
||||
|
||||
@@ -5,5 +5,5 @@
|
||||
#include "MarketData.hpp"
|
||||
|
||||
double MarketData::spot() const { return spot_; }
|
||||
YieldCurve& MarketData::yield_curve() { return *yield_curve_; }
|
||||
VolatilitySurface& MarketData::volatility_surface() { return *volatility_surface_; }
|
||||
const YieldCurve& MarketData::yield_curve() const { return *yield_curve_; }
|
||||
const VolatilitySurface& MarketData::volatility_surface() const { return *volatility_surface_; }
|
||||
|
||||
@@ -10,24 +10,24 @@
|
||||
|
||||
class MarketData {
|
||||
public:
|
||||
MarketData() = default;
|
||||
MarketData() = delete;
|
||||
|
||||
MarketData(double spot, std::unique_ptr<YieldCurve> yield_curve,
|
||||
std::unique_ptr<VolatilitySurface> volatility_surface)
|
||||
MarketData(double spot, std::shared_ptr<const YieldCurve> yield_curve,
|
||||
std::shared_ptr<const VolatilitySurface> volatility_surface)
|
||||
: spot_(spot),
|
||||
yield_curve_(std::move(yield_curve)),
|
||||
volatility_surface_(std::move(volatility_surface)) {
|
||||
}
|
||||
|
||||
double spot() const;
|
||||
YieldCurve& yield_curve();
|
||||
VolatilitySurface& volatility_surface();
|
||||
const YieldCurve& yield_curve() const;
|
||||
const VolatilitySurface& volatility_surface() const;
|
||||
|
||||
private:
|
||||
double spot_;
|
||||
std::unique_ptr<YieldCurve> yield_curve_;
|
||||
std::unique_ptr<VolatilitySurface> volatility_surface_;
|
||||
std::shared_ptr<const YieldCurve> yield_curve_;
|
||||
std::shared_ptr<const VolatilitySurface> volatility_surface_;
|
||||
};
|
||||
|
||||
|
||||
#endif //QUANTENGINE_MARKETDATA_HPP
|
||||
#endif //QUANTENGINE_MARKETDATA_HPP
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
class Statistics {
|
||||
public:
|
||||
Statistics() : moments_({0., 0., 0.}), max_(0.), min_(0.) {}
|
||||
Statistics() : moments_({0., 0., 0.}), n(0), max_(0.), min_(0.) {}
|
||||
void dump(double value);
|
||||
void clear();
|
||||
double mean();
|
||||
@@ -27,4 +27,4 @@ private:
|
||||
};
|
||||
|
||||
|
||||
#endif //QUANTENGINE_STATISTICS_HPP
|
||||
#endif //QUANTENGINE_STATISTICS_HPP
|
||||
|
||||
@@ -9,20 +9,20 @@
|
||||
|
||||
class StochasticProcess {
|
||||
public:
|
||||
StochasticProcess() = default;
|
||||
StochasticProcess(std::unique_ptr<MarketData> data) : data_(std::move(data)){}
|
||||
StochasticProcess() = delete;
|
||||
explicit StochasticProcess(MarketData data) : data_(std::move(data)){}
|
||||
|
||||
virtual ~StochasticProcess() = default;
|
||||
virtual double drift(double t, double s) = 0;
|
||||
virtual double diffusion(double t, double s) = 0;
|
||||
virtual double step(double t, double s, double dt, double dW) = 0;
|
||||
MarketData& data() const {return *data_;}
|
||||
const MarketData& data() const {return data_;}
|
||||
|
||||
|
||||
private:
|
||||
std::shared_ptr<MarketData> data_;
|
||||
MarketData data_;
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif //QUANTENGINE_STOCHASTICPROCESS_HPP
|
||||
#endif //QUANTENGINE_STOCHASTICPROCESS_HPP
|
||||
|
||||
@@ -9,10 +9,10 @@
|
||||
class VolatilitySurface {
|
||||
public:
|
||||
virtual ~VolatilitySurface() = default;
|
||||
virtual double sigma(double K, double T) = 0;
|
||||
virtual double sigma(double K, double T) const = 0;
|
||||
private:
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif //QUANTENGINE_VOLATILITYSURFACE_HPP
|
||||
#endif //QUANTENGINE_VOLATILITYSURFACE_HPP
|
||||
|
||||
@@ -28,10 +28,10 @@ public:
|
||||
return *this;
|
||||
}
|
||||
virtual ~YieldCurve() = default;
|
||||
virtual double discount(double t) = 0;
|
||||
virtual double zeroRate(double t) = 0;
|
||||
virtual double discount(double t) const = 0;
|
||||
virtual double zeroRate(double t) const = 0;
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif //QUANTENGINE_YIELDCURVE_HPP
|
||||
#endif //QUANTENGINE_YIELDCURVE_HPP
|
||||
|
||||
Reference in New Issue
Block a user