I currently work as a consulant for banks and financial services firms. What I mostly do is to provide the software code which I developed during my research and which I documented in my papers.
My libraries are cross-platform, i.e. they run under both Microsoft and Unix like operating systems. They require the .NET framework under Windows and Mono under Linux and other Unix flavours. The finance logic is written in VB.NET, which combines the synthetic appeal of a FORTRAN-like syntax with the full power of object oriented constructs. The bottom software layer is written in a combination of C# and native C. One can select the floating point unit and the floating point precision for matrix-matrix multiplications at run time. I find that there are ways to run the most time expensive portions of the algorithms in simple precision and it is useful to check the robustness of this assumption. I designed my libraries to support host side calculations in 32 and 64 bit precision, Nvidia-CUDA cards in 32 bit and Clearspeed cards in 64 bit.
It took me quite a long time and several iterations to come up with an efficient object oriented design that is suitable to the mathematical frameowork based on operator methods and allows for simple code reusal. Before one finds a way to re-use code, one has to figure out first what merits being re-used. Learning how to use GPUs efficiently also involved climbing a learning curve and trial-and-error experimentation. The libraries I maintain share the same core functionality across a variety of asset classes, ranging from CDOs to exotic interest rate derivatives, equity structures and energy derivatives.
Along with a non-exclusive license to use my source code, I also offer ongoing assistance, support and run training workshops.
|