|
From: Cheng Li <scr...@gm...> - 2015-02-07 04:29:21
|
Hi Peter, Sure. It is my pleasure. I'll go on with the bonds part. Regards, Cheng 2015-02-07 5:51 GMT+08:00, Peter Caspers <pca...@gm...>: > Hi Cheng, > > great, thank you very much. Looks fine to me, I merged your changes > into my branch. Send more whenever you feel like it. > > best regards > Peter > > > On 6 February 2015 at 10:12, cheng li <scr...@gm...> wrote: >> Hi Peter, >> >> I finished the fixed rate bond part and a pull request has been raised. >> >> Any comment is welcome, Peter:) >> >> Regards, >> Cheng >> >> -----邮件原件----- >> 发件人: Peter Caspers [mailto:pca...@gm...] >> 发送时间: 2015年2月2日 20:52 >> 收件人: cheng li >> 抄送: Luigi Ballabio; QuantLib developers >> 主题: Re: 答复: 答复: 答复: [Quantlib-dev] 答复: Adjoint Greeks >> >> 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 >>>>> >>> >> > |