The Quantitative Finance Code Library Project
From Wilmott Wiki
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.
Contents |
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

