Resource ownership: document for each matrix function returning a reference if the user has to deallocate the resource (if you are reading this: the answer is most likely YES, meanwhile check the source code if the resource is allocated in the function on the heap).
Option::isExercisable(Real t)uses continuous time t, the lattice pricing code in Pricing.h relies on the comparison of floats when instantiated for Bermudan swaptions. This is fragile and works only if the exercise times are exact integral multiples of the lattice time step. Reflect upon alternatives.
Control variates: seem to have an adverse effect despite extremely high correlation. Investigate this by computing the mean and variance of the caplet price over say 20 runs for caplets in a PC LMM (where we have exact analytics) with and without control variates.
LiborMarketModel and derived classes: the use of the cache XLvec is the only reason that the member function XLvec(t,p) is not constant and that propagates through basically all the Libor quantity member functions. Reflect upon wether it's worth it or wether we should return from the stack.
UTRMatrix<Real> is not the same as
This is due to the fact that there are no templated typdefs.
Affects: RandomObject. The covariation matrix has type
Thus the functionality of
UTRRealMatrix is not available for RandomObjects
with Real scalars (factor analysis, matrix functions). Possible solutions:
Move the functionality of
UTRRealMatrix to the more general type
UTRMatrix<S> or limit RandomObjects to Real scalars.
Headers: clear up the problem with the typedef in forward declarations and remove "#include Matrix.h" from headers if it is not really needed.
kk-MT_D. This writes off the end of the array
mt. Fixed: 9-22-03.