CFL
Brownian.hpp
Go to the documentation of this file.
1 //Copyright (c) Dmitry Kramkov, 2000-2006. All rights reserved.
2 
3 #ifndef __cflBrownian_hpp__
4 #define __cflBrownian_hpp__
5 
6 #include "Slice.hpp"
7 #include "GaussRollback.hpp"
8 #include "Interp.hpp"
9 #include "Ind.hpp"
10 
23 namespace cfl
24 {
33 
35 
41  class IBrownian: public IModel
42  {
43  public:
47  virtual ~IBrownian(){};
48 
62  virtual IBrownian * newModel(const std::vector<double> & rVar,
63  const std::vector<double> & rEventTimes,
64  double dInterval) const = 0;
65  };
66 
68 
75  class Brownian: public IModel
76  {
77  public:
85  explicit Brownian(IBrownian * pNewP);
86 
98  void assign(const std::vector<double> & rVar,
99  const std::vector<double> & rEventTimes,
100  double dInterval);
101 
105  const std::vector<double> & eventTimes() const;
106 
110  unsigned numberOfStates() const;
111 
115  unsigned numberOfNodes(unsigned iEventTime,
116  const std::vector<unsigned> & rStates) const;
117 
122 
126  Slice state(unsigned iEventTime, unsigned iState) const;
127 
131  void addDependence(Slice & rSlice,
132  const std::vector<unsigned> & rStates) const;
133 
137  void rollback(Slice & rSlice, unsigned iEventTime) const;
138 
142  void indicator(Slice & rSlice, double dBarrier) const;
143 
147  MultiFunction interpolate(const Slice & rSlice) const;
148 
149  private:
150  std::shared_ptr<IBrownian> m_pBrownian;
151  };
152 
154 
159  namespace NBrownian
160  {
171  Brownian model(double dQuality,
172  const GaussRollback & rRollback = NGaussRollback::improved(),
173  const Ind & rInd = NInd::smart(),
174  const Interp & rInterp = NInterp::spline()
175  );
176  }
178 }
179 
180 #include "cfl/Inline/iBrownian.hpp"
181 #endif // of __cflBrownian_hpp__
182 
One-dimensional indicator functions.
Concrete class for the operator of conditional expectation with respect to gaussian distribution...
Definition: GaussRollback.hpp:77
Interface class for the basic financial model with Brownian motion.
Definition: Brownian.hpp:41
Standard concrete class for interpolation of one-dimensional functions.
Definition: Interp.hpp:57
Brownian model(double dQuality, const GaussRollback &rRollback=NGaussRollback::improved(), const Ind &rInd=NInd::smart(), const Interp &rInterp=NInterp::spline())
Ind smart()
Interface class for financial models.
Definition: Model.hpp:31
virtual ~IBrownian()
Definition: Brownian.hpp:47
virtual void addDependence(Slice &rSlice, const std::vector< unsigned > &rStates) const =0
virtual void indicator(Slice &rSlice, double dBarrier) const =0
Conditional expectation with respect to gaussian distribution.
virtual unsigned numberOfNodes(unsigned iEventTime, const std::vector< unsigned > &rStates) const =0
GaussRollback improved(const GaussRollback &rFast=crankNicolson(), const Function &rUniformSteps=Function(c_iImprovedExplicitSteps), const Function &rImplicitSteps=Function(c_iImprovedImplicitSteps))
virtual IBrownian * newModel(const std::vector< double > &rVar, const std::vector< double > &rEventTimes, double dInterval) const =0
Representation of random payoffs in the library.
Definition: Slice.hpp:40
Standard concrete class for indicator functions.
Definition: Ind.hpp:67
Interpolation of one-dimensional functions.
virtual const std::vector< double > & eventTimes() const =0
virtual std::valarray< double > origin() const =0
Main namespace for cfl library.
Definition: Approx.hpp:22
Standard concrete class for multi-dimensional function object.
Definition: MultiFunction.hpp:79
STL class.
Random payoffs in cfl library.
virtual unsigned numberOfStates() const =0
Concrete class for the basic financial model with Brownian motion.
Definition: Brownian.hpp:75
virtual Slice state(unsigned iEventTime, unsigned iState) const =0
Interp spline()
virtual void rollback(Slice &rSlice, unsigned iEventTime) const =0
virtual MultiFunction interpolate(const Slice &rSlice) const =0