From 85624fe9462e801b225b7f3c709c0c4dbc32264d Mon Sep 17 00:00:00 2001 From: Guillaume Horel Date: Thu, 25 Oct 2018 14:54:04 -0400 Subject: work in progress wip wip wip2 fix C++ --- c_layer/curve.hpp | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 c_layer/curve.hpp (limited to 'c_layer/curve.hpp') diff --git a/c_layer/curve.hpp b/c_layer/curve.hpp new file mode 100644 index 0000000..5479e72 --- /dev/null +++ b/c_layer/curve.hpp @@ -0,0 +1,61 @@ +#pragma once + +#include +#include +#include "isda/bastypes.h" +#include "isda/cdate.h" +#include "isda/tcurve.h" + +namespace pyisda { + class Curve { + + public: + Curve(TCurve* const curve) : ptr(curve) {}; + Curve(const Curve &curve2) : + ptr(JpmcdsCopyCurve(curve2.ptr)) {}; + + ~Curve() { + JpmcdsFreeTCurve(ptr); + } + explicit operator TCurve*() const { return ptr; } + unsigned char* serialize(unsigned char* buf); + double zeroPrice(const TDate date); + double zeroPrice(const TDate date1, const TDate date2); + double survivalProb(const TDate start_date, const TDate maturity_date); + double survivalProb(const TDate start_date, const TDate maturity_date, double eps); + static void tweak(TCurve* ptr, double epsilon); + static void tweak(TCurve* ptr, double epsilon, unsigned long mask); + void tweak(double epsilon); + void tweak(double epsilon, unsigned long mask); + size_t size(); + private: + TCurve* ptr; + }; + + class YieldCurve : public Curve { + public: + YieldCurve(TCurve* const curve, const std::vector& dates); + YieldCurve(const YieldCurve &curve2) : + Curve(curve2), + dates(curve2.dates) {}; + size_t size(); + unsigned char* serialize(unsigned char* buf); + std::vector dates; + }; + + class SpreadCurve : public Curve { + public: + SpreadCurve(TCurve* const curve, const std::vector& recovery_rates, + std::string ticker); + SpreadCurve(const SpreadCurve &curve2) : + Curve(curve2), + recovery_rates(curve2.recovery_rates), + ticker(curve2.ticker) {}; + + std::vector recovery_rates; + std::string ticker; + size_t size(); + unsigned char* serialize(unsigned char* buf); + }; + +} -- cgit v1.2.3-70-g09d2