The Quantitative Finance Code Library Project
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.
Who is gonna to write it?
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)
(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
Goal development of:
Pricing and risk engine Collection of functions shared memory parallel (TBB) Later: distributed memory parallel (MPI)
Numerical and Algorithmic Libraries
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)
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++.
We are setting up a subversion respository at svn.wilmott.co
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
http://code.google.com/p/googletest/ (e.g. Math, uBLAS...)
BLAS/LAPACK (covered by boost?)
CBLAS / C API for LAPACK from MKL team.
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.
developed by govert: http://exceldna.codeplex.com/
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.
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
List of open source libraries http://www.opensource.org/licenses/category