The Quantitative Finance Code Library Project

From Wilmott Wiki
Jump to: navigation, search

qFin is the current working title.

Summary of the thread “open-source collab project?” on http://wilmott.com/home.cfm

Working paper of the thread: “Ideas about new open source quanfin project” on http://wilmott.com/home.cfm

Last update: 10/04/2011


Possible names for the project,

We can use different names for different layers.


Project Charter

Who is gonna to write it?

Requirements

   Eschew complexity (nobody likes complexity)
   Proper specification
   Well documented from the beginning
   No OO for art
   Simple function calls deliver the necessary results: f(spot, rate, vol, strike, time)
   Lightweight classes, that is no classes with multiple of responsibilities
   Allow easy linking to proprietary libs such as MKL
   GPU friendly API (where applicable)
   Cloud computing (KISS, YAGNI)


Layered architecture

(proposed by renorm) QuanLib Light -> Rewrite of QuantLib

   First layer: computatinal and numerics only, platform independent
   Second layer: instrument pricing
   Third layer: accounting and portfolio management



Computational Libraries

Goal development of:

   Pricing and risk engine
   Collection of functions
   shared memory parallel (TBB)
   Later: distributed memory parallel (MPI)

Numerical and Algorithmic Libraries

Interfaces

   Excel
   Matlab
   R-project
   Mathematica
   Python


GUI / tools

GUI's and tools are layers on top of the core libraries. GUI's are part of applications. Applications can involve data storage, visualization, data feeds.

   Excel (no GUI  planned yet (do we need GUI beyond Excel?). move to Interfaces)

Programming Language

   Projects itself to be coded in C++
   GUI: C# / VBA (for forms within Excel)
   Working and well documented code in other programming languages is acceptable. We will review and convert it into C++.



Project Hosting

   We are setting up a subversion respository at svn.wilmott.co


Documentation

Sandcastle Help File Builder: http://shfb.codeplex.com/

Integrated Doxygen like docs + comprehensive test suite"

For user guides, tutorials etc.:latex

Using latex in Google Docs: http://docs.latexlab.org/ MathJax


Libraries

Boost:

   http://code.google.com/p/googletest/
   (e.g. Math, uBLAS...)

BLAS/LAPACK (covered by boost?)

   CBLAS / C API for LAPACK from MKL team.

QuantLib:

   http://quantlib.org/index.shtml
   http://quantlib.org/quantlibxl/

xlls:

   developed by Kimosabe's?
   http://nxll.codeplex.com/
   http://xlldatetime.codeplex.com/
   http://xllblas.codeplex.com/
   http://xlllapack.codeplex.com/
   http://xllrandom.codeplex.com/
   http://xllfloat.codeplex.com/
   ... and some more.

Excel-DNA

   developed by govert:
   http://exceldna.codeplex.com/

kooderive

   developed by mj:
   http://sourceforge.net/projects/kooderive/


renorm: No, LAPACK isn’t covered by Boost. uBlas is OK for small matrices. For large matrices optimized BLAS is needed (such as ATLAS). We can still use uBlas vectors and matrices as a storage. kimosabe: uBlas does not allow existing arrays of doubles to be used directly, they must be copied into uBlas containers. Also, it does not replace LAPACK. renorm: Yes, uBlas can’t work with pointers. I am going to write vector/matrix proxies that can be wrapped around C arrays. Boost Range as suggested by Poulter. Also blas.h and blas.cpp


Black-Merton-Scholes Pricer Incorporated Polter’s suggestions to use Boost policies and and Luigi’s comments about how to make low level computations more efficient. bms.h and how to use it xllbms.cpp. Feel free to use the Discussion tab if you have any feedback. I have been banned from posting on Wilmott. I wish Paul, Daniel, outrun, and Serp the best with their new endeavour. They are welcome to use anything they find useful with my open source projects.

Excel and HPC- / GPU-Computing? http://forums.nvidia.com/index.php?showtopic=67720 http://msdn.microsoft.com/en-us/library/ff700514.aspx#xl2010PerfImp http://cuda.codeplex.com


Testing

Google C++ Test Framework: http://code.google.com/p/googletest/

Boost.Test combined with Turtle for Mocking http://www.boost.org/doc/libs/1_47_0/libs/test/doc/html/index.html



Platforms Mentioned

OpenGamma http://www.opengamma.com/

tradelink: http://code.google.com/p/tradelink/



Licenses

List of open source libraries http://www.opensource.org/licenses/category

Boost: http://www.boost.org/users/license.html#requirements