Update of /cvsroot/quantlibaddin/QuantLibAddin/qlo
In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv21308/qlo
Modified Files:
enumclassctors.cpp enumclassctors.hpp payoffs.cpp payoffs.hpp
typefactory.hpp
Log Message:
refactored Payoff class and enumeration
Index: payoffs.hpp
===================================================================
RCS file: /cvsroot/quantlibaddin/QuantLibAddin/qlo/payoffs.hpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** payoffs.hpp 29 Jun 2006 16:52:12 -0000 1.1
--- payoffs.hpp 13 Nov 2006 09:35:40 -0000 1.2
***************
*** 1,4 ****
--- 1,5 ----
/*
+ Copyright (C) 2006 Ferdinando Ametrano
Copyright (C) 2006 Eric Ehlers
***************
*** 24,38 ****
namespace QuantLibAddin {
! class StrikedTypePayoff : public ObjHandler::LibraryObject<QuantLib::StrikedTypePayoff> {
public:
- StrikedTypePayoff(
- const std::string& payoffID,
- const QuantLib::Option::Type& optionType,
- const double &strike);
StrikedTypePayoff(
const std::string& payoffID,
const QuantLib::Option::Type& optionType,
! const double &strike,
! const double &strikeIncrement);
};
--- 25,40 ----
namespace QuantLibAddin {
! class Payoff : public ObjHandler::LibraryObject<QuantLib::Payoff> {};
!
! class TypePayoff : public Payoff {};
!
! class StrikedTypePayoff : public TypePayoff {
public:
StrikedTypePayoff(
const std::string& payoffID,
const QuantLib::Option::Type& optionType,
! const QuantLib::Real strike,
! const QuantLib::Real thirdParameter);
! QuantLib::Real thirdParameter() const;
};
Index: payoffs.cpp
===================================================================
RCS file: /cvsroot/quantlibaddin/QuantLibAddin/qlo/payoffs.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** payoffs.cpp 29 Jun 2006 16:52:12 -0000 1.1
--- payoffs.cpp 13 Nov 2006 09:35:40 -0000 1.2
***************
*** 1,4 ****
--- 1,5 ----
/*
+ Copyright (C) 2006 Ferdinando Ametrano
Copyright (C) 2006 Eric Ehlers
***************
*** 25,44 ****
namespace QuantLibAddin {
- StrikedTypePayoff::StrikedTypePayoff(
- const std::string& payoffID,
- const QuantLib::Option::Type& optionType,
- const double &strike) {
- libraryObject_ = Create<boost::shared_ptr<QuantLib::StrikedTypePayoff> >()(
- payoffID, optionType, strike);
- }
-
StrikedTypePayoff::StrikedTypePayoff(
const std::string& payoffID,
const QuantLib::Option::Type& optionType,
! const double &strike,
! const double &strikeIncrement) {
! libraryObject_ = Create<boost::shared_ptr<QuantLib::StrikedTypePayoff> >()(
! payoffID, optionType, strike, strikeIncrement);
}
}
--- 26,44 ----
namespace QuantLibAddin {
StrikedTypePayoff::StrikedTypePayoff(
const std::string& payoffID,
const QuantLib::Option::Type& optionType,
! const QuantLib::Real strike,
! const QuantLib::Real thirdParameter) {
! if (thirdParameter==QuantLib::Null<QuantLib::Real>())
! libraryObject_ = Create<boost::shared_ptr<QuantLib::Payoff> >()(
! payoffID, optionType, strike);
! else
! libraryObject_ = Create<boost::shared_ptr<QuantLib::Payoff> >()(
! payoffID, optionType, strike, thirdParameter);
}
+ QuantLib::Real StrikedTypePayoff::thirdParameter() const {
+ return 0.0;
+ }
}
Index: enumclassctors.cpp
===================================================================
RCS file: /cvsroot/quantlibaddin/QuantLibAddin/qlo/enumclassctors.cpp,v
retrieving revision 1.29
retrieving revision 1.30
diff -C2 -d -r1.29 -r1.30
*** enumclassctors.cpp 20 Sep 2006 16:14:35 -0000 1.29
--- enumclassctors.cpp 13 Nov 2006 09:35:40 -0000 1.30
***************
*** 25,67 ****
/* *** StrikedTypePayoff - strike only *** */
! boost::shared_ptr<QuantLib::StrikedTypePayoff> VANILLA_Payoff(
const QuantLib::Option::Type& optionType,
! const double &strike) {
! return boost::shared_ptr<QuantLib::StrikedTypePayoff> (
new QuantLib::PlainVanillaPayoff(optionType, strike));
}
! boost::shared_ptr<QuantLib::StrikedTypePayoff> ASSETORNOTHING_Payoff(
const QuantLib::Option::Type& optionType,
! const double &strike) {
! return boost::shared_ptr<QuantLib::StrikedTypePayoff> (
new QuantLib::AssetOrNothingPayoff(optionType, strike));
}
! boost::shared_ptr<QuantLib::StrikedTypePayoff> PERCENTAGESTRIKE_Payoff(
const QuantLib::Option::Type& optionType,
! const double &moneyness) {
! return boost::shared_ptr<QuantLib::StrikedTypePayoff> (
new QuantLib::PercentageStrikePayoff(optionType, moneyness));
}
/* *** StrikedTypePayoff - strike & strikeIncrement *** */
! boost::shared_ptr<QuantLib::StrikedTypePayoff> SUPERSHARE_Payoff(
const QuantLib::Option::Type& optionType,
! const double &strike,
! const double &strikeIncrement) {
! return boost::shared_ptr<QuantLib::StrikedTypePayoff> (
new QuantLib::SuperSharePayoff(optionType, strike, strikeIncrement));
}
! boost::shared_ptr<QuantLib::StrikedTypePayoff> CASHORNOTHING_Payoff(
const QuantLib::Option::Type& optionType,
! const double &strike,
! const double &strikeIncrement) {
! return boost::shared_ptr<QuantLib::StrikedTypePayoff> (
! new QuantLib::CashOrNothingPayoff(optionType, strike, strikeIncrement));
}
! boost::shared_ptr<QuantLib::StrikedTypePayoff> GAP_Payoff(
const QuantLib::Option::Type& optionType,
! const double &strike,
! const double &strikeIncrement) {
! return boost::shared_ptr<QuantLib::StrikedTypePayoff> (
! new QuantLib::GapPayoff(optionType, strike, strikeIncrement));
}
--- 25,67 ----
/* *** StrikedTypePayoff - strike only *** */
! boost::shared_ptr<QuantLib::Payoff> VANILLA_Payoff(
const QuantLib::Option::Type& optionType,
! const double strike) {
! return boost::shared_ptr<QuantLib::Payoff> (
new QuantLib::PlainVanillaPayoff(optionType, strike));
}
! boost::shared_ptr<QuantLib::Payoff> ASSETORNOTHING_Payoff(
const QuantLib::Option::Type& optionType,
! const double strike) {
! return boost::shared_ptr<QuantLib::Payoff> (
new QuantLib::AssetOrNothingPayoff(optionType, strike));
}
! boost::shared_ptr<QuantLib::Payoff> PERCENTAGESTRIKE_Payoff(
const QuantLib::Option::Type& optionType,
! const double moneyness) {
! return boost::shared_ptr<QuantLib::Payoff> (
new QuantLib::PercentageStrikePayoff(optionType, moneyness));
}
/* *** StrikedTypePayoff - strike & strikeIncrement *** */
! boost::shared_ptr<QuantLib::Payoff> SUPERSHARE_Payoff(
const QuantLib::Option::Type& optionType,
! const double strike,
! const double strikeIncrement) {
! return boost::shared_ptr<QuantLib::Payoff> (
new QuantLib::SuperSharePayoff(optionType, strike, strikeIncrement));
}
! boost::shared_ptr<QuantLib::Payoff> CASHORNOTHING_Payoff(
const QuantLib::Option::Type& optionType,
! const double strike,
! const double cashPayoff) {
! return boost::shared_ptr<QuantLib::Payoff> (
! new QuantLib::CashOrNothingPayoff(optionType, strike, cashPayoff));
}
! boost::shared_ptr<QuantLib::Payoff> GAP_Payoff(
const QuantLib::Option::Type& optionType,
! const double strike,
! const double strikePayoff) {
! return boost::shared_ptr<QuantLib::Payoff> (
! new QuantLib::GapPayoff(optionType, strike, strikePayoff));
}
Index: enumclassctors.hpp
===================================================================
RCS file: /cvsroot/quantlibaddin/QuantLibAddin/qlo/enumclassctors.hpp,v
retrieving revision 1.26
retrieving revision 1.27
diff -C2 -d -r1.26 -r1.27
*** enumclassctors.hpp 20 Sep 2006 16:14:35 -0000 1.26
--- enumclassctors.hpp 13 Nov 2006 09:35:40 -0000 1.27
***************
*** 37,63 ****
/* *** StrikedTypePayoff - strike only *** */
! boost::shared_ptr<QuantLib::StrikedTypePayoff> VANILLA_Payoff(
const QuantLib::Option::Type& optionType,
! const double &strike);
! boost::shared_ptr<QuantLib::StrikedTypePayoff> ASSETORNOTHING_Payoff(
const QuantLib::Option::Type& optionType,
! const double &strike);
! boost::shared_ptr<QuantLib::StrikedTypePayoff> PERCENTAGESTRIKE_Payoff(
const QuantLib::Option::Type& optionType,
! const double &moneyness);
/* *** StrikedTypePayoff - strike & strikeIncrement *** */
! boost::shared_ptr<QuantLib::StrikedTypePayoff> SUPERSHARE_Payoff(
const QuantLib::Option::Type& optionType,
! const double &strike,
! const double &strikeIncrement);
! boost::shared_ptr<QuantLib::StrikedTypePayoff> CASHORNOTHING_Payoff(
const QuantLib::Option::Type& optionType,
! const double &strike,
! const double &strikeIncrement);
! boost::shared_ptr<QuantLib::StrikedTypePayoff> GAP_Payoff(
const QuantLib::Option::Type& optionType,
! const double &strike,
! const double &strikeIncrement);
/* *** PricingEngine - timesteps ignored *** */
--- 37,63 ----
/* *** StrikedTypePayoff - strike only *** */
! boost::shared_ptr<QuantLib::Payoff> VANILLA_Payoff(
const QuantLib::Option::Type& optionType,
! const double strike);
! boost::shared_ptr<QuantLib::Payoff> ASSETORNOTHING_Payoff(
const QuantLib::Option::Type& optionType,
! const double strike);
! boost::shared_ptr<QuantLib::Payoff> PERCENTAGESTRIKE_Payoff(
const QuantLib::Option::Type& optionType,
! const double moneyness);
/* *** StrikedTypePayoff - strike & strikeIncrement *** */
! boost::shared_ptr<QuantLib::Payoff> SUPERSHARE_Payoff(
const QuantLib::Option::Type& optionType,
! const double strike,
! const double strikeIncrement);
! boost::shared_ptr<QuantLib::Payoff> CASHORNOTHING_Payoff(
const QuantLib::Option::Type& optionType,
! const double strike,
! const double cashPayoff);
! boost::shared_ptr<QuantLib::Payoff> GAP_Payoff(
const QuantLib::Option::Type& optionType,
! const double strike,
! const double strikePayoff);
/* *** PricingEngine - timesteps ignored *** */
Index: typefactory.hpp
===================================================================
RCS file: /cvsroot/quantlibaddin/QuantLibAddin/qlo/typefactory.hpp,v
retrieving revision 1.46
retrieving revision 1.47
diff -C2 -d -r1.46 -r1.47
*** typefactory.hpp 4 Oct 2006 20:13:45 -0000 1.46
--- typefactory.hpp 13 Nov 2006 09:35:40 -0000 1.47
***************
*** 124,149 ****
/* *** StrikedTypePayoff *** */
! typedef boost::shared_ptr<QuantLib::StrikedTypePayoff>(*StrikedTypePayoffConstructor1)(
! const QuantLib::Option::Type&, const double&);
! typedef boost::shared_ptr<QuantLib::StrikedTypePayoff>(*StrikedTypePayoffConstructor2)(
! const QuantLib::Option::Type&, const double&, const double&);
template<>
! class Create<boost::shared_ptr<QuantLib::StrikedTypePayoff> > :
! private RegistryManager<QuantLib::StrikedTypePayoff, EnumClassRegistry> {
public:
! boost::shared_ptr<QuantLib::StrikedTypePayoff> operator()(
const std::string& payoffID,
const QuantLib::Option::Type& optionType,
! const double& strike) {
StrikedTypePayoffConstructor1 strikedTypePayoffConstructor =
(StrikedTypePayoffConstructor1)(getType(payoffID));
return strikedTypePayoffConstructor(optionType, strike);
}
! boost::shared_ptr<QuantLib::StrikedTypePayoff> operator()(
const std::string& payoffID,
const QuantLib::Option::Type& optionType,
! const double& strike,
! const double& strikeIncrement) {
StrikedTypePayoffConstructor2 strikedTypePayoffConstructor =
(StrikedTypePayoffConstructor2)(getType(payoffID));
--- 124,149 ----
/* *** StrikedTypePayoff *** */
! typedef boost::shared_ptr<QuantLib::Payoff>(*StrikedTypePayoffConstructor1)(
! const QuantLib::Option::Type&, const double);
! typedef boost::shared_ptr<QuantLib::Payoff>(*StrikedTypePayoffConstructor2)(
! const QuantLib::Option::Type&, const double, const double);
template<>
! class Create<boost::shared_ptr<QuantLib::Payoff> > :
! private RegistryManager<QuantLib::Payoff, EnumClassRegistry> {
public:
! boost::shared_ptr<QuantLib::Payoff> operator()(
const std::string& payoffID,
const QuantLib::Option::Type& optionType,
! const double strike) {
StrikedTypePayoffConstructor1 strikedTypePayoffConstructor =
(StrikedTypePayoffConstructor1)(getType(payoffID));
return strikedTypePayoffConstructor(optionType, strike);
}
! boost::shared_ptr<QuantLib::Payoff> operator()(
const std::string& payoffID,
const QuantLib::Option::Type& optionType,
! const double strike,
! const double strikeIncrement) {
StrikedTypePayoffConstructor2 strikedTypePayoffConstructor =
(StrikedTypePayoffConstructor2)(getType(payoffID));
|