Hi, I'm trying to get the Greeks for an AmericanOption. Delta and gamma are provided, but the other three are not.I tried something like the following. It's basically what Luigi suggested in another thread (http://quantlib.10058.n7.nabble.com/Vega-and-Rho-calculation-for-European-and-American-Options-using-Finite-Difference-Method-tp7925p7928.html).void calculateGreeks(boost::shared_ptr<SimpleQuote> rQuote,boost::shared_ptr<SimpleQuote> pQuote,boost::shared_ptr<SimpleQuote> dQuote,boost::shared_ptr<SimpleQuote> vQuote,boost::shared_ptr<OneAssetOption> option) {// Perturb the implied volatility to calculate vega.const Rate v0 = vQuote->value();// Bump it by 1%.const Spread dv = v0 * 0.01;vQuote->setValue(v0 + dv);option->update();const Real V1 = option->NPV();vQuote->setValue(v0 - dv);option->update();const Real V2 = option->NPV();const Real vega = (V1 - V2) / (2 * dv);vQuote->setValue(v0); // Restore the original implied volatility.// Do something similar for rho and theta...}Is there a better way to do this? The values I get for rho, vega, and theta don't really align with the expected results.Also, since I'm using SimpleQuotes (and passing handles to the term structures), do I need to call update()?Thanks,Alex
------------------------------------------------------------------------------
BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT
Develop your own process in accordance with the BPMN 2 standard
Learn Process modeling best practices with Bonita BPM through live exercises
http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_
source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF
_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users
| Free forum by Nabble | Edit this page |