Update of /cvsroot/quantlibaddin/QuantLibAddin/qlo
In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv21815/qlo
Modified Files:
marketmodels.cpp marketmodels.hpp
Log Message:
MarketModel refactoring
Index: marketmodels.hpp
===================================================================
RCS file: /cvsroot/quantlibaddin/QuantLibAddin/qlo/marketmodels.hpp,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -d -r1.13 -r1.14
*** marketmodels.hpp 18 Aug 2006 13:43:58 -0000 1.13
--- marketmodels.hpp 21 Aug 2006 08:17:07 -0000 1.14
***************
*** 29,33 ****
#include <ql/MarketModels/Products/marketmodelforwards.hpp>
#include <ql/MarketModels/Products/marketmodelcaplets.hpp>
! #include <ql/MarketModels/PseudoRoots/abcdvolatility.hpp>
namespace QuantLibAddin {
--- 29,33 ----
#include <ql/MarketModels/Products/marketmodelforwards.hpp>
#include <ql/MarketModels/Products/marketmodelcaplets.hpp>
! #include <ql/MarketModels/PseudoRoots/expcorrabcdvol.hpp>
namespace QuantLibAddin {
***************
*** 36,41 ****
public:
EvolutionDescription(
! const QuantLib::Array& rateTimes,
! const QuantLib::Array& evolutionTimes,
const std::vector<QuantLib::Size>& numeraires);
};
--- 36,41 ----
public:
EvolutionDescription(
! const std::vector<QuantLib::Time>& rateTimes,
! const std::vector<QuantLib::Time>& evolutionTimes,
const std::vector<QuantLib::Size>& numeraires);
};
***************
*** 49,55 ****
};
! class ExponentialCorrelation : public PseudoRoot {
public:
! ExponentialCorrelation(
double longTermCorr,
double beta,
--- 49,55 ----
};
! class ExpCorrFlatVol : public PseudoRoot {
public:
! ExpCorrFlatVol(
double longTermCorr,
double beta,
***************
*** 57,67 ****
const QuantLib::EvolutionDescription& evolution,
const QuantLib::Size numberOfFactors,
! const QuantLib::Array& initialRates,
! const QuantLib::Array& displacements);
};
! class AbcdVolatility : public PseudoRoot {
public:
! AbcdVolatility(
double a,
double b,
--- 57,67 ----
const QuantLib::EvolutionDescription& evolution,
const QuantLib::Size numberOfFactors,
! const std::vector<QuantLib::Rate>& initialRates,
! const std::vector<QuantLib::Rate>& displacements);
};
! class ExpCorrAbcdVol : public PseudoRoot {
public:
! ExpCorrAbcdVol(
double a,
double b,
***************
*** 73,78 ****
const QuantLib::EvolutionDescription& evolution,
const QuantLib::Size numberOfFactors,
! const QuantLib::Array& initialRates,
! const QuantLib::Array& displacements);
};
--- 73,78 ----
const QuantLib::EvolutionDescription& evolution,
const QuantLib::Size numberOfFactors,
! const std::vector<QuantLib::Rate>& initialRates,
! const std::vector<QuantLib::Rate>& displacements);
};
***************
*** 80,84 ****
class CurveState : public ObjHandler::LibraryObject<QuantLib::CurveState> {
public:
! CurveState(const QuantLib::Array& rateTimes);
};
--- 80,84 ----
class CurveState : public ObjHandler::LibraryObject<QuantLib::CurveState> {
public:
! CurveState(const std::vector<QuantLib::Time>& rateTimes);
};
***************
*** 87,96 ****
public:
DriftCalculator(const QuantLib::Matrix& pseudo,
! const QuantLib::Array& displacements,
! const QuantLib::Array& taus,
QuantLib::Size numeraire,
QuantLib::Size alive);
! QuantLib::Array compute(const QuantLib::Array& forwards) const;
! QuantLib::Array computeReduced(const QuantLib::Array& forwards,
QuantLib::Size factors) const;
private:
--- 87,96 ----
public:
DriftCalculator(const QuantLib::Matrix& pseudo,
! const std::vector<QuantLib::Rate>& displacements,
! const std::vector<QuantLib::Time>& taus,
QuantLib::Size numeraire,
QuantLib::Size alive);
! std::vector<QuantLib::Real> compute(const std::vector<QuantLib::Rate>& forwards) const;
! std::vector<QuantLib::Real> computeReduced(const std::vector<QuantLib::Rate>& forwards,
QuantLib::Size factors) const;
private:
***************
*** 107,122 ****
class MarketModelForwards : public MarketModelProduct {
public:
! MarketModelForwards(const QuantLib::Array& rateTimes,
! const QuantLib::Array& accruals,
! const QuantLib::Array& paymentTimes,
! const QuantLib::Array& strikes);
//EvolutionDescription suggestedEvolution() const;
};
class MarketModelCaplets : public MarketModelProduct {
public:
! MarketModelCaplets(const QuantLib::Array& rateTimes,
! const QuantLib::Array& accruals,
! const QuantLib::Array& paymentTimes,
! const QuantLib::Array& strikes);
};
--- 107,122 ----
class MarketModelForwards : public MarketModelProduct {
public:
! MarketModelForwards(const std::vector<QuantLib::Time>& rateTimes,
! const std::vector<QuantLib::Real>& accruals,
! const std::vector<QuantLib::Time>& paymentTimes,
! const std::vector<QuantLib::Rate>& strikes);
//EvolutionDescription suggestedEvolution() const;
};
class MarketModelCaplets : public MarketModelProduct {
public:
! MarketModelCaplets(const std::vector<QuantLib::Time>& rateTimes,
! const std::vector<QuantLib::Real>& accruals,
! const std::vector<QuantLib::Time>& paymentTimes,
! const std::vector<QuantLib::Rate>& strikes);
};
Index: marketmodels.cpp
===================================================================
RCS file: /cvsroot/quantlibaddin/QuantLibAddin/qlo/marketmodels.cpp,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -d -r1.14 -r1.15
*** marketmodels.cpp 18 Aug 2006 13:43:58 -0000 1.14
--- marketmodels.cpp 21 Aug 2006 08:17:07 -0000 1.15
***************
*** 20,25 ****
#endif
#include <qlo/marketmodels.hpp>
! #include <ql/MarketModels/PseudoRoots/exponentialcorrelation.hpp>
! #include <ql/MarketModels/PseudoRoots/abcdvolatility.hpp>
#include <ql/MarketModels/BrownianGenerators/mtbrowniangenerator.hpp>
#include <ql/MarketModels/Evolvers/forwardratepcevolver.hpp>
--- 20,25 ----
#endif
#include <qlo/marketmodels.hpp>
! #include <ql/MarketModels/PseudoRoots/expcorrflatvol.hpp>
! #include <ql/MarketModels/PseudoRoots/expcorrabcdvol.hpp>
#include <ql/MarketModels/BrownianGenerators/mtbrowniangenerator.hpp>
#include <ql/MarketModels/Evolvers/forwardratepcevolver.hpp>
***************
*** 28,32 ****
namespace QuantLibAddin {
! ExponentialCorrelation::ExponentialCorrelation(
double longTermCorr,
double beta,
--- 28,32 ----
namespace QuantLibAddin {
! ExpCorrFlatVol::ExpCorrFlatVol(
double longTermCorr,
double beta,
***************
*** 34,42 ****
const QuantLib::EvolutionDescription& evolution,
const QuantLib::Size numberOfFactors,
! const QuantLib::Array& initialRates,
! const QuantLib::Array& displacements)
{
libraryObject_ = boost::shared_ptr<QuantLib::PseudoRoot>(
! new QuantLib::ExponentialCorrelation(longTermCorr,
beta,
volatilities,
--- 34,42 ----
const QuantLib::EvolutionDescription& evolution,
const QuantLib::Size numberOfFactors,
! const std::vector<QuantLib::Rate>& initialRates,
! const std::vector<QuantLib::Rate>& displacements)
{
libraryObject_ = boost::shared_ptr<QuantLib::PseudoRoot>(
! new QuantLib::ExpCorrFlatVol(longTermCorr,
beta,
volatilities,
***************
*** 47,51 ****
}
! AbcdVolatility::AbcdVolatility(
double a,
double b,
--- 47,51 ----
}
! ExpCorrAbcdVol::ExpCorrAbcdVol(
double a,
double b,
***************
*** 57,65 ****
const QuantLib::EvolutionDescription& evolution,
const QuantLib::Size numberOfFactors,
! const QuantLib::Array& initialRates,
! const QuantLib::Array& displacements)
{
libraryObject_ = boost::shared_ptr<QuantLib::PseudoRoot>(
! new QuantLib::AbcdVolatility(a, b, c, d, ks,
longTermCorr,
beta,
--- 57,65 ----
const QuantLib::EvolutionDescription& evolution,
const QuantLib::Size numberOfFactors,
! const std::vector<QuantLib::Rate>& initialRates,
! const std::vector<QuantLib::Rate>& displacements)
{
libraryObject_ = boost::shared_ptr<QuantLib::PseudoRoot>(
! new QuantLib::ExpCorrAbcdVol(a, b, c, d, ks,
longTermCorr,
beta,
***************
*** 78,83 ****
EvolutionDescription::EvolutionDescription(
! const QuantLib::Array& rateTimes,
! const QuantLib::Array& evolutionTimes,
const std::vector<QuantLib::Size>& numeraires = std::vector<QuantLib::Size>())
{
--- 78,83 ----
EvolutionDescription::EvolutionDescription(
! const std::vector<QuantLib::Time>& rateTimes,
! const std::vector<QuantLib::Time>& evolutionTimes,
const std::vector<QuantLib::Size>& numeraires = std::vector<QuantLib::Size>())
{
***************
*** 89,93 ****
! CurveState::CurveState(const QuantLib::Array& rateTimes)
{
libraryObject_ = boost::shared_ptr<QuantLib::CurveState>(
--- 89,93 ----
! CurveState::CurveState(const std::vector<QuantLib::Time>& rateTimes)
{
libraryObject_ = boost::shared_ptr<QuantLib::CurveState>(
***************
*** 96,101 ****
DriftCalculator::DriftCalculator(const QuantLib::Matrix& pseudo,
! const QuantLib::Array& displacements,
! const QuantLib::Array& taus,
QuantLib::Size numeraire,
QuantLib::Size alive)
--- 96,101 ----
DriftCalculator::DriftCalculator(const QuantLib::Matrix& pseudo,
! const std::vector<QuantLib::Rate>& displacements,
! const std::vector<QuantLib::Time>& taus,
QuantLib::Size numeraire,
QuantLib::Size alive)
***************
*** 107,121 ****
}
! QuantLib::Array DriftCalculator::compute(const QuantLib::Array& forwards) const
{
! QuantLib::Array results(size_);
libraryObject_->compute(forwards, results);
return results;
}
! QuantLib::Array DriftCalculator::computeReduced(const QuantLib::Array& forwards,
QuantLib::Size factors) const
{
! QuantLib::Array results(size_);
libraryObject_->computeReduced(forwards, factors, results);
return results;
--- 107,121 ----
}
! std::vector<QuantLib::Real> DriftCalculator::compute(const std::vector<QuantLib::Rate>& forwards) const
{
! std::vector<QuantLib::Real> results(size_);
libraryObject_->compute(forwards, results);
return results;
}
! std::vector<QuantLib::Real> DriftCalculator::computeReduced(const std::vector<QuantLib::Rate>& forwards,
QuantLib::Size factors) const
{
! std::vector<QuantLib::Real> results(size_);
libraryObject_->computeReduced(forwards, factors, results);
return results;
***************
*** 125,132 ****
MarketModelForwards::MarketModelForwards(
! const QuantLib::Array& rateTimes,
! const QuantLib::Array& accruals,
! const QuantLib::Array& paymentTimes,
! const QuantLib::Array& strikes)
{
libraryObject_ = boost::shared_ptr<QuantLib::MarketModelProduct>(
--- 125,132 ----
MarketModelForwards::MarketModelForwards(
! const std::vector<QuantLib::Time>& rateTimes,
! const std::vector<QuantLib::Real>& accruals,
! const std::vector<QuantLib::Time>& paymentTimes,
! const std::vector<QuantLib::Rate>& strikes)
{
libraryObject_ = boost::shared_ptr<QuantLib::MarketModelProduct>(
***************
*** 143,150 ****
//}
! MarketModelCaplets::MarketModelCaplets(const QuantLib::Array& rateTimes,
! const QuantLib::Array& accruals,
! const QuantLib::Array& paymentTimes,
! const QuantLib::Array& strikes)
{
libraryObject_ = boost::shared_ptr<QuantLib::MarketModelProduct>(
--- 143,150 ----
//}
! MarketModelCaplets::MarketModelCaplets(const std::vector<QuantLib::Time>& rateTimes,
! const std::vector<QuantLib::Real>& accruals,
! const std::vector<QuantLib::Time>& paymentTimes,
! const std::vector<QuantLib::Rate>& strikes)
{
libraryObject_ = boost::shared_ptr<QuantLib::MarketModelProduct>(
|