CFL
AssetModel.hpp
Go to the documentation of this file.
1 //Copyright (c) Dmitry Kramkov, 2006. All rights reserved.
2 
3 #ifndef __cflAssetModel_hpp__
4 #define __cflAssetModel_hpp__
5 
6 #include <valarray>
7 #include "cfl/Extended.hpp"
8 
19 namespace cfl
20 {
33 
35 
40  class IAssetModel: public IModel
41  {
42  public:
46  virtual ~IAssetModel(){};
47 
55  virtual IAssetModel * newModel(const std::vector<double> & rEventTimes) const = 0;
56 
60  virtual Slice discount(unsigned iEventTime, double dBondMaturity) const = 0;
61 
69  virtual Slice forward(unsigned iEventTime, double dForwardMaturity) const = 0;
70  };
71 
73 
77  class AssetModel
78  {
79  public:
88  AssetModel(IAssetModel * pNewModel, const Extended & rExtended);
89 
97  void assignEventTimes(const std::vector<double> & rEventTimes);
98 
102  unsigned addState(const PathDependent & rState);
103 
107  unsigned numberOfStates() const;
108 
112  const std::vector<double> & eventTimes() const;
113 
118  double initialTime() const;
119 
123  Slice state(unsigned iEventTime, unsigned iState) const;
124 
128  Slice cash(unsigned iEventTime, double dAmount) const;
129 
133  Slice discount(unsigned iEventTime, double dBondMaturity) const;
134 
138  Slice forward(unsigned iEventTime, double dForwardMaturity) const;
139 
145  Slice spot(unsigned iEventTime) const;
146 
147  private:
149  Extended m_uExtended;
150  };
152 }
153 
154 #include "cfl/Inline/iAssetModel.hpp"
155 #endif // of __cflAssetModel_hpp__
Interface class for a single asset model.
Definition: AssetModel.hpp:40
virtual Slice discount(unsigned iEventTime, double dBondMaturity) const =0
virtual Slice forward(unsigned iEventTime, double dForwardMaturity) const =0
Interface class for financial models.
Definition: Model.hpp:31
virtual ~IAssetModel()
Definition: AssetModel.hpp:46
Representation of random payoffs in the library.
Definition: Slice.hpp:40
virtual const std::vector< double > & eventTimes() const =0
Standard concrete class for path dependent functions.
Definition: PathDependent.hpp:64
Main namespace for cfl library.
Definition: Approx.hpp:22
Concrete class for the "extended" financial models.
Definition: Extended.hpp:68
STL class.
virtual IAssetModel * newModel(const std::vector< double > &rEventTimes) const =0
virtual unsigned numberOfStates() const =0
virtual Slice state(unsigned iEventTime, unsigned iState) const =0
Extension of models by path dependent state processes.
Concrete class for financial models with a single asset.
Definition: AssetModel.hpp:77