From: Dan K. <dan...@gm...> - 2011-03-25 01:32:12
|
Thanks! I very quickly tried to add a theta calculation to pricingengines/vanilla/fdstepconditionengine.hpp, but it gave crazy results. Here is the non-working code I added at the end of calculate(PricingEngine::results*): Time dt=0.001; model.rollback(arraySet, getResidualTime(),-dt, timeSteps_, conditionSet); SampledCurve earlyPrices(gridPoints_); SampledCurve earlyControl(gridPoints_); earlyPrices.values() = arraySet[0]; earlyControl.values() = arraySet[1]; Real earlyValue=earlyPrices.valueAtCenter()- earlyControl.valueAtCenter()+ black.value(); results->theta = (results->value - earlyValue)/dt; Am I not evolving the prices back in time correctly? I leave this here in case anybody wants to fix this and commit since it could be generally useful. Dan Dan On Wed, Mar 23, 2011 at 2:52 AM, Luigi Ballabio <lui...@gm...>wrote: > > Dan, > you probably gave a fixed reference date to your curves. Use the > constructors taking a calendar and a number of settlement days instead. > > Luigi > > > On Tue, 2011-03-22 at 23:42 -0500, Dan Krop wrote: > > Hello Quantlibbers, > > I am having a problem approximating theta because it seems the > > option I have has constant NPV over time for a given underlying > > price. > > > > > > Here is a test function, > > > > > > Real approximateTheta(VanillaOption & option) > > { > > DayCounter dc = Actual365Fixed(); > > > > > > Date today = Settings::instance().evaluationDate(); > > Time dT = dc.yearFraction(today-5,today+5); > > > > > > std::cout<<"today="<<today<<" dT="<<dT<<std::endl; > > > > Settings::instance().evaluationDate()=today-5; > > Real value_m=option.NPV(); > > > > Settings::instance().evaluationDate()=today+5; > > Real value_p=option.NPV(); > > > > > > Settings::instance().evaluationDate()=today; > > std::cout<<"m="<<value_m<<" p="<<value_p<<std::endl; > > > > > > Real theta=(value_p - value_m)/dT; > > return theta; > > } > > > > > > When I run this, I get that value_p=value_m. The option uses the > > AnalyticEuropeanEngine. I thought that options registered with the > > evaluationDate, so simply moving the date should be enough to get them > > to decay. I must be doing something wrong. I can provide a more > > complete example if it will help. > > > > > > Thanks in advance, > > Dan > > > ------------------------------------------------------------------------------ > > Enable your software for Intel(R) Active Management Technology to meet > the > > growing manageability and security demands of your customers. Businesses > > are taking advantage of Intel(R) vPro (TM) technology - will your > software > > be a part of the solution? Download the Intel(R) Manageability Checker > > today! http://p.sf.net/sfu/intel-dev2devmar > > _______________________________________________ QuantLib-users mailing > list Qua...@li... > https://lists.sourceforge.net/lists/listinfo/quantlib-users > > -- > > There are two ways of constructing a software design. One way is to > make it so simple that there are obviously no deficiencies. And the > other way is to make it so complicated that there are no obvious > deficiencies. > -- C. A. R. Hoare > > > |