|
From: Dirk E. <ed...@de...> - 2013-06-04 14:05:40
|
Hi Luigi, On 4 June 2013 at 12:19, Luigi Ballabio wrote: | Hi Dirk, | yes, let's merge it after release. We'll autoconf it so that the | cpp is generated in the correct place and the other files are created, | too. Sounds good. We'll tackle this off-line. | Re the swap enumeration: it might be due to the shenanigans we're | doing to hide the shared pointers from the interface. Option::Put, | that you see, is exported directly (see options.i:40). | VanillaSwap::Payer is first hidden, then re-exported as a static const | data member (see swap.i, line 56 and onwards). Does SWIG/R manage | this? I will attest to complete ignorance as to what SWIG/R does. That was AFAIK all Joseph Wang--and singlehandedly. Dirk | Luigi | | | | On Tue, Jun 4, 2013 at 3:06 AM, Dirk Eddelbuettel <ed...@de...> wrote: | > | > Hi all, | > | > A few days ago I finally made an attempt at turning the few files usually | > contained in the QL-SWIG directory for R (eg makeRData.R, QuantLib.cpp, | > QuantLib.R) into a proper R package (in the sense of the ~ 4500 CRAN | > packages). | > | > It is straightforward. A working version is committed in the SVN of my | > earlier (and more limited) explicit RQuantLib wrapping at R-Forge [1]. One | > only needs this minimal layout: | > | > edd@max:~/svn/rquantlib/pkg/QuantLib$ tree | > . | > ├── cleanup | > ├── demo # mostly files by Joseph Wang | > │ ├── 00Index # index of demos | > │ ├── bates.R # a file by Klaus Spanderen | > │ ├── bonds.R # something I added, see below | > │ ├── europeanOption.R | > │ ├── fdOption.R | > │ ├── graph.R | > │ ├── scatter.R | > │ ├── swap.R # incomplete, see below | > │ └── wireframe.R | > ├── DESCRIPTION | > ├── NAMESPACE | > ├── R | > │ ├── makeRData.R # not needed | > │ └── QuantLib.R | > └── src | > ├── Makevars | > └── QuantLib.cpp | > | > 3 directories, 16 files | > edd@max:~/svn/rquantlib/pkg/QuantLib$ | > | > where | > a) demo/ is an optional directory with examples or demos, | > b) makeRData.R is all commented-out (!!) and | > c) the files R/QuantLib.R and src/QuantLib.cpp are _unaltered_ copies | > from the current QL-SWIG files. | > DESCRIPTION and NAMESPACE are needed per R standards for packages. The rest | > is gravy: src/Makevars is two lines calling quantlib-config. We can easily | > autoconf this. | > | > The main advantage: it now behaves like a standard R packages, and users can | > do library(QuantLib) as they would with any other package. [ It will | > never pass QA tests for R as every exported function would need a manual page | > etc pp. The code is also fragile, it is pretty easy to end up with segfaults. ] | > | > Now, I don't want to suggest that we shoehorn this into 1.3 if QL 1.3 is coming | > soon, but maybe the one after would fit if anybody else is interested in R | > integration? I'd also be happy to keep it outside of QL if that is prefered. | > | > Also, I spent some time on the weekend translating bonds.py into bonds.R. | > That worked nicely, see below [2] I also tried to translate swap.py -- but | > just realized that the enum type for the Payer vs Receiver is not in the | > QuantLib.R file [3]. Any idea? I may translate some more of the existing | > examples from Python or other directories. | > | > Feedback welcome. | > | > Dirk | > | > | > [1] You can browse the SVN here: | > https://r-forge.r-project.org/scm/viewvc.php/pkg/QuantLib/?root=rquantlib | > | > [2] A quick transcript | > | > edd@max:~/svn/rquantlib/pkg/QuantLib$ R --slave -e 'source("demo/bonds.R")' | > Today :[1] "2008-09-15" | > Settlement Date: [1] "2008-09-18" | > | > Results: | > zeroCoupon fixedRate floatingRate | > NPV 100.922 107.66829 102.3593146 | > Clean Price 100.922 106.12753 101.7972017 | > Dirty Price 100.922 107.66829 102.3593146 | > Accrued Amount 0.000 1.54076 0.5621129 | > Previous Coupon NA 0.04500 0.0288625 | > Next Coupon NA 0.04500 0.0342984 | > | > Sample indirect computations (for the floating rate bond): | > Yield to Clean Price: [1] 101.797 | > Clean Price to Yield: [1] 0.0220096 | > edd@max:~/svn/rquantlib/pkg/QuantLib$ | > | > | > [3] No Payer/Receiver enum for Vanilla Swap, other enums are defined: | > | > edd@max:~/svn/rquantlib/pkg/QuantLib$ grep Payer R/QuantLib.R | > edd@max:~/svn/rquantlib/pkg/QuantLib$ grep Put R/QuantLib.R | > 'Put' = -1, | > edd@max:~/svn/rquantlib/pkg/QuantLib$ | > | > -- | > Dirk Eddelbuettel | ed...@de... | http://dirk.eddelbuettel.com | > | > ------------------------------------------------------------------------------ | > How ServiceNow helps IT people transform IT departments: | > 1. A cloud service to automate IT design, transition and operations | > 2. Dashboards that offer high-level views of enterprise services | > 3. A single system of record for all IT processes | > http://p.sf.net/sfu/servicenow-d2d-j | > _______________________________________________ | > QuantLib-dev mailing list | > Qua...@li... | > https://lists.sourceforge.net/lists/listinfo/quantlib-dev -- Dirk Eddelbuettel | ed...@de... | http://dirk.eddelbuettel.com |