|
From: Peter C. <pca...@gm...> - 2015-02-02 12:52:03
|
Hi Cheng, great, I am looking forward to receive your contributions ! Kind regards Peter On 2 February 2015 at 02:35, cheng li <scr...@gm...> wrote: > Hi Peter, > > Thank you for the gifts for all of us. I have tried your example. It looks very promising! > > Now I am following your steps and trying to make my first example. My fist goal is to make FixedRateBond AD available (I am most familiar with bonds part:)). > > When I finished I'll raise a pull request for that change to your trunk. > > Regards, > Cheng > > -----邮件原件----- > 发件人: Peter Caspers [mailto:pca...@gm...] > 发送时间: 2015年1月26日 3:06 > 收件人: cheng li > 抄送: Luigi Ballabio; QuantLib developers > 主题: Re: 答复: 答复: [Quantlib-dev] 答复: Adjoint Greeks > > Hello, > > this weekend I have reached a level of conversion that allows to tackle Vanilla Swaps. This is maybe the first "full-blown" example, so if you are interested you can find some results in my blog > > http://quantlib.wordpress.com > > Comments are welcome. > > Thanks and best regards > Peter > > On 14 January 2015 at 10:54, Peter Caspers <pca...@gm...> wrote: >> unlikely (the optimization level) >> Peter >> >> >> On 14 January 2015 at 02:49, cheng li <scr...@gm...> wrote: >>> Hi Peter, >>> >>> I'll definitely have a try. Thank you :) >>> >>> Actually yesterday I tried on another machine with g++ 4.8.2 and O2 setting, then everything works fine. I think my previous problem may be due to O3. >>> >>> Regards, >>> Cheng >>> >>> -----邮件原件----- >>> 发件人: Peter Caspers [mailto:pca...@gm...] >>> 发送时间: 2015年1月13日 21:18 >>> 收件人: cheng li >>> 抄送: Luigi Ballabio; QuantLib developers >>> 主题: Re: 答复: [Quantlib-dev] 答复: Adjoint Greeks >>> >>> I will clean up the adjoint branch to make it c++03 compliant. Unless >>> QuantLib 2.0 is out before the adjoint conversion has finished :-) >>> >>> On 13 January 2015 at 02:28, cheng li <scr...@gm...> wrote: >>>> Hi Luigi, >>>> >>>> >>>> >>>> I think I can not to avoid to use c++ 11 now.. In Peter’s branch >>>> much >>>> c++ 11 stuff is used, e.g. constexpr… >>>> >>>> >>>> >>>> Regards, >>>> >>>> Cheng >>>> >>>> >>>> >>>> 发件人: Luigi Ballabio [mailto:lui...@gm...] >>>> 发送时间: 2015年1月12日 14:28 >>>> 收件人: Cheng Li >>>> 抄送: QuantLib developers; Peter Caspers >>>> 主题: Re: [Quantlib-dev] 答复: Adjoint Greeks >>>> >>>> >>>> >>>> Don't use C++11. >>>> >>>> Luigi >>>> >>>> On Jan 12, 2015 4:53 AM, "cheng li" <scr...@gm...> wrote: >>>> >>>> Hi peter, >>>> >>>> I have switched to adjoint brank. However I am still facing some problem... >>>> I use g++ 4.9.2 with parameter "-std=c++11 -O3" >>>> >>>> /bin/bash ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. >>>> -I../../ql -I../.. -I../.. -std=c++11 -O3 -MT averagebmacoupon.lo -MD -MP >>>> -MF .deps/averagebmacoupon.Tpo -c -o averagebmacoupon.lo >>>> averagebmacoupon.cpp >>>> libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../ql -I../.. -I../.. >>>> -std=c++11 -O3 -MT averagebmacoupon.lo -MD -MP -MF >>>> .deps/averagebmacoupon.Tpo -c averagebmacoupon.cpp -fPIC -DPIC -o >>>> .libs/averagebmacoupon.o In file included from >>>> ../../ql/patterns/observable.hpp:29:0, >>>> from ../../ql/event.hpp:29, >>>> from ../../ql/cashflow.hpp:28, >>>> from ../../ql/cashflows/coupon.hpp:29, >>>> from ../../ql/cashflows/floatingratecoupon.hpp:33, >>>> from ../../ql/cashflows/averagebmacoupon.hpp:28, >>>> from averagebmacoupon.cpp:21: >>>> ../../ql/patterns/observable.hpp: In member function 'void >>>> QuantLib::Observable::notifyObservers()': >>>> ../../ql/errors.hpp:121:70: error: use of deleted function >>>> 'QuantLib::Error::Error(const QuantLib::Error&)' >>>> >>>> BOOST_CURRENT_FUNCTION,_ql_msg_stream.str()); \ >>>> >>>> ^ >>>> ../../ql/patterns/observable.hpp:139:9: note: in expansion of macro >>>> 'QL_ENSURE' >>>> QL_ENSURE(successful, >>>> ^ >>>> ../../ql/errors.hpp:39:11: note: 'QuantLib::Error::Error(const >>>> QuantLib::Error&)' is implicitly deleted because the default >>>> definition would be ill-formed: >>>> class Error : public std::exception { >>>> ^ >>>> ../../ql/errors.hpp:39:11: error: use of deleted function >>>> 'boost::shared_ptr<std::basic_string<char> >::shared_ptr(const >>>> boost::shared_ptr<std::basic_string<char> >&)' >>>> In file included from /usr/include/boost/shared_ptr.hpp:17:0, >>>> from ../../ql/errors.hpp:31, >>>> from ../../ql/patterns/observable.hpp:29, >>>> from ../../ql/event.hpp:29, >>>> from ../../ql/cashflow.hpp:28, >>>> from ../../ql/cashflows/coupon.hpp:29, >>>> from ../../ql/cashflows/floatingratecoupon.hpp:33, >>>> from ../../ql/cashflows/averagebmacoupon.hpp:28, >>>> from averagebmacoupon.cpp:21: >>>> /usr/include/boost/smart_ptr/shared_ptr.hpp:168:25: note: >>>> 'boost::shared_ptr<std::basic_string<char> >::shared_ptr(const >>>> boost::shared_ptr<std::basic_string<char> >&)' is implicitly >>>> declared as deleted because 'boost::shared_ptr<std::basic_string<char> >' >>>> declares a move constructor or move assignment operator >>>> >>>> Any idea about this? >>>> >>>> Regards, >>>> Cheng >>>> >>>> -----邮件原件----- >>>> 发件人: Peter Caspers [mailto:pca...@gm...] >>>> 发送时间: 2015年1月11日 17:34 >>>> 收件人: Cheng Li >>>> 抄送: QuantLib Mailing Lists >>>> 主题: Re: 答复: [Quantlib-dev] Adjoint Greeks >>>> >>>> Hi Cheng, >>>> >>>> you are welcome and many thanks for your interest. However you seem >>>> to work on my master branch which I consider as my private workspace >>>> (with some unfinished things in it). Sorry, I wasn't expecting >>>> guests here :-) >>>> >>>> You probably want to try out the adjoint branch instead. This should >>>> compile. >>>> >>>> Thanks >>>> Peter >>>> >>>> On 11 January 2015 at 10:16, Cheng Li <scr...@gm...> wrote: >>>>> Hi Peter, >>>>> >>>>> Thank you for your kindly offer these new stuff for all of us! >>>>> >>>>> I have cloned your branch and tried to build it on my machine. When >>>>> it was building the example/InterestRateSmile, the compiler >>>>> complained as >>>>> following: >>>>> >>>>> InterestRateSmiles.cpp: In function ‘void zabrExamples()’: >>>>> InterestRateSmiles.cpp:64:39: error: type/value mismatch at >>>>> argument >>>>> 1 in template parameter list for ‘template<class T> class boost::shared_ptr’ >>>>> boost::shared_ptr<ZabrSmileSection> zabrln = >>>>> ^ >>>>> InterestRateSmiles.cpp:64:39: error: expected a type, got >>>>> ‘ZabrSmileSection’ >>>>> InterestRateSmiles.cpp:64:48: error: invalid type in declaration >>>>> before ‘=’ token >>>>> boost::shared_ptr<ZabrSmileSection> zabrln = >>>>> ^ >>>>> InterestRateSmiles.cpp:67:13: error: ‘template<class Evaluation> >>>>> class QuantLib::ZabrSmileSection’ used without template parameters >>>>> ZabrSmileSection::ShortMaturityLognormal); >>>>> >>>>> I am not sure what is the problem... Is it due to missing template >>>>> argument for ZabrSmileSection? >>>>> My compiler is g++ 4.8.2 and with parameter "-std=c++11 -O3" >>>>> >>>>> BTW, I found that quadraticlfm.hpp and quadraticlfm.cpp are missing >>>>> from the branch. However when I adjust the makefile.am to exclude >>>>> them out the compiling process works fine. >>>>> >>>>> >>>>> Regards, >>>>> Cheng >>>>> >>>>> -----邮件原件----- >>>>> 发件人: Peter Caspers [mailto:pca...@gm...] >>>>> 发送时间: 2015年1月9日 3:57 >>>>> 收件人: Luigi Ballabio >>>>> 抄送: QuantLib Mailing Lists; Ferdinando M. Ametrano >>>>> 主题: Re: [Quantlib-dev] Adjoint Greeks >>>>> >>>>> I thought in a realistic application you would always need both >>>>> worlds, CppAD<double> for adjoint greek engines and double for all >>>>> the rest. I wonder what it would mean in terms of performance and >>>>> memory if you replace double by CppAD<double> in general. I can >>>>> maybe just stress test this a bit though. >>>>> Peter >>>>> >>>>> >>>>> >>>>> On 7 January 2015 at 10:23, Luigi Ballabio >>>>> <lui...@gm...> >>>>> wrote: >>>>>> Switching Real would force you to fix compilation problems all >>>>>> over the library, instead of just in the code you're converting. >>>>>> >>>>>> If you wanted to go the route of #defining the type, I guess you >>>>>> could introduce another type (ADReal or something) and switch the >>>>>> coverted code to use it. >>>>>> Which might or might not be a good idea; you wouldn't be forced to >>>>>> templatize the code, but you would have to choose AD or not at >>>>>> compilation time, instead that having the choice to use both for >>>>>> different >>>>> tasks. Hmm... >>>>>> >>>>>> Anyway: yes, very promising. Between Peter, Klaus and Joseph, we >>>>>> got a lot of presents this Christmas :) >>>>>> >>>>>> Luigi >>>>>> >>>>>> >>>>>> >>>>>> On Wed, Jan 7, 2015 at 9:41 AM, Ferdinando M. Ametrano >>>>>> <fer...@am...> wrote: >>>>>>> >>>>>>> Thank you Peter, it sounds exciting and promising. >>>>>>> Why haven't you considered to just change the Real typedef from >>>>>>> double to CppAD::AD<double>? >>>>>>> >>>>>>> On Sun, Jan 4, 2015 at 9:55 PM, Peter Caspers >>>>>>> <pca...@gm...> >>>>>>> wrote: >>>>>>>> >>>>>>>> Hello all, >>>>>>>> >>>>>>>> happy new year. >>>>>>>> >>>>>>>> I revisited Ferdinando's comments on adjoint greeks during our >>>>>>>> December workshop and started to play around with that idea. >>>>>>>> >>>>>>>> The approach I am trying to follow is to adapt the ql library >>>>>>>> code so that automatic differentiation _tools_ can be used with >>>>>>>> it in a transparent way. This is opposed to writing special >>>>>>>> adjoint engines by _hand_ like e.g. advocated in Capriotti, >>>>>>>> Giles, Algorithmic >>>>>>>> Differentiation: Adjoint Greeks Made Easy. The relatively small >>>>>>>> and homogeneous code basis of ql seems to allow for this kind of >>>>>>>> more fundamental approach. >>>>>>>> >>>>>>>> I wrote a bit about my first steps in my blog >>>>>>>> >>>>>>>> http://quantlib.wordpress.com/ >>>>>>>> >>>>>>>> and forked a new branch from Luigi's current master on github >>>>>>>> >>>>>>>> https://github.com/pcaspers/quantlib/tree/adjoint >>>>>>>> >>>>>>>> where I started to template'ize the library in order to allow >>>>>>>> for AD tools to hook in. There are already first working >>>>>>>> examples (see the >>>>>>>> blog) and I am starting to feel confident that the approach >>>>>>>> might work as a whole, might be doable in a reasonable amount of >>>>>>>> time and is worthwhile following. >>>>>>>> >>>>>>>> About the feasibility: The library seems to consist of roughly >>>>>>>> 376k lines of code currently (all hpp and cpp files under ql / ). >>>>>>>> From that we can subtract "data" files >>>>>>>> >>>>>>>> 78862 ./math/randomnumbers/sobolrsg.cpp >>>>>>>> 21376 ./math/randomnumbers/primitivepolynomials.cpp >>>>>>>> 14495 ./math/randomnumbers/latticerules.cpp >>>>>>>> 10115 ./experimental/volatility/noarbsabrabsprobs.cpp >>>>>>>> >>>>>>>> which leaves us with 251k lines. It seems that I have already >>>>>>>> reviewed and adapted around 14k lines, which is 5% and which >>>>>>>> took me approximately 60 hours. This gives an estimation of 130 >>>>>>>> person days still left to do. For the whole (!) library where >>>>>>>> already parts will make much sense and give interesting applications. E.g. >>>>>>>> excluding experimental classes (90k) and the market model (25k) >>>>>>>> reduces the estimate already to 65 person days to go. >>>>>>>> >>>>>>>> I would be interested in your opinions on that, in particular >>>>>>>> regarding the design choices to make (better now than later :-) ). >>>>>>>> >>>>>>>> I'd also be grateful for people supporting the development by >>>>>>>> forking the adjoint branch and sending pull requests with >>>>>>>> adapted code >>>>> pieces. >>>>>>>> My personal next steps would be >>>>>>>> - rate deltas for Legs / Swap instruments >>>>>>>> - rate vegas for vanilla interest rate options >>>>>>>> - Hull White model >>>>>>>> >>>>>>>> What do you think ? >>>>>>>> >>>>>>>> Thank you >>>>>>>> Peter >>>>>>>> >>>>>>>> >>>>>>>> ---------------------------------------------------------------- >>>>>>>> -- >>>>>>>> - >>>>>>>> - >>>>>>>> ---------- Dive into the World of Parallel Programming! The Go >>>>>>>> Parallel Website, sponsored by Intel and developed in >>>>>>>> partnership with Slashdot Media, is your hub for all things >>>>>>>> parallel software development, from weekly thought leadership >>>>>>>> blogs to news, videos, case studies, tutorials and more. Take a >>>>>>>> look and join the conversation now. >>>>>>>> http://goparallel.sourceforge.net >>>>>>>> _______________________________________________ >>>>>>>> QuantLib-dev mailing list >>>>>>>> Qua...@li... >>>>>>>> https://lists.sourceforge.net/lists/listinfo/quantlib-dev >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> ----------------------------------------------------------------- >>>>>>> -- >>>>>>> - >>>>>>> - >>>>>>> --------- Dive into the World of Parallel Programming! The Go >>>>>>> Parallel Website, sponsored by Intel and developed in partnership >>>>>>> with Slashdot Media, is your hub for all things parallel software >>>>>>> development, from weekly thought leadership blogs to news, >>>>>>> videos, case studies, tutorials and more. Take a look and join >>>>>>> the conversation now. http://goparallel.sourceforge.net >>>>>>> _______________________________________________ >>>>>>> QuantLib-dev mailing list >>>>>>> Qua...@li... >>>>>>> https://lists.sourceforge.net/lists/listinfo/quantlib-dev >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> <https://implementingquantlib.blogspot.com> >>>>>> <https://twitter.com/lballabio> >>>>> >>>>> ------------------------------------------------------------------- >>>>> -- >>>>> - >>>>> ------ >>>>> -- >>>>> Dive into the World of Parallel Programming! The Go Parallel >>>>> Website, sponsored by Intel and developed in partnership with >>>>> Slashdot Media, is your hub for all things parallel software >>>>> development, from weekly thought leadership blogs to news, videos, >>>>> case studies, tutorials and more. Take a look and join the conversation now. >>>>> http://goparallel.sourceforge.net >>>>> _______________________________________________ >>>>> QuantLib-dev mailing list >>>>> Qua...@li... >>>>> https://lists.sourceforge.net/lists/listinfo/quantlib-dev >>>>> >>>> >>>> >>>> >>>> -------------------------------------------------------------------- >>>> -- >>>> -------- New Year. New Location. New Benefits. New Data Center in >>>> Ashburn, VA. >>>> GigeNET is offering a free month of service with a new server in Ashburn. >>>> Choose from 2 high performing configs, both with 100TB of bandwidth. >>>> Higher redundancy.Lower latency.Increased capacity.Completely compliant. >>>> vanity: www.gigenet.com >>>> _______________________________________________ >>>> QuantLib-dev mailing list >>>> Qua...@li... >>>> https://lists.sourceforge.net/lists/listinfo/quantlib-dev >>> > |