"Not only does MATLAB let us centralize much of the analytical work that our product does, it gives me a great prototyping environment in which to do all future development."
Charles Bassignani, Web Development Group, Evare, LLC
Customers today make high demands on their investment management software. Not only must it provide reliable daily evaluations and pricing; it must also adapt quickly to the fluctuations of a volatile market.
Evare, a software company based in Burlington, Massachusetts, develops products that simplify the way institutional investors account for investments, access market information, and transact business with financial service providers. Their flagship product, Evare Desktop, is a portfolio management system developed expressly to meet the increasingly sophisticated requirements of the portfolio management community.
To keep pace with the escalating demands of the marketplace, Evare upgraded the functionality of Desktop with MATLAB, reducing development and testing time by more than 60%.
Charles Bassignani, Evare senior vice president, set out to enhance the library of financial and analytical functions in Evare Desktop. The new library had to accommodate the increasing complexity of the fixed-income instruments and accounting constructs that the investment community requires.
Evare Desktop was originally written in C++. This meant that developing and testing more advanced functionality would be time consuming and therefore, expensive. If they were to overcome these time and funding obstacles, Evare needed a development approach that would not require extensive rewriting of C++ code.
When he undertook this task, Bassignani says, there was no question in his mind about which development tool to use: “I knew that MATLAB was the solution even before I started.” So confident was he in the capabilities of MATLAB that he took the bold step of replacing Desktop’s entire core library of financial and accounting functions.
MATLAB supported this step in several key ways. For example, Bassignani recalls, “I did not have to write core fixed-income analytical functions because they already existed in the MATLAB Financial Toolbox.”
Bassignani adds, “Writing code in MATLAB is much faster than in C++ because MATLAB is a higher-level language. This means that you don’t get bogged down with issues like data typing and memory management. You also benefit from having many more tools available. For example, nearest-neighbor interpolation is a function call in MATLAB. In C++, I would either need to write my own function or go find one that someone else wrote, which is time consuming.”
After developing and testing the algorithms, Bassignani built a test suite using known good market data, importing it into MATLAB with the Database Toolbox.
Once he was satisfied with the MATLAB code base, he compiled (translated) all the code to C++ using the MATLAB Compiler and the C/C++ Math Library. He then wrote a class in C++ to act as the interface between the C++ analog of his MATLAB library and Evare’s C++ application. This interface was needed for mapping data types and handling array output. The entire application was compiled into a single DLL (linking against other DLLs) and handed over to the C++ development team for use in building the rest of Evare Desktop.
Having the test suite in MATLAB was important both during and after the development process. When bugs were identified, Bassignani could quickly go back to MATLAB, fix them there, run the test suite in MATLAB to make sure that the fix didn’t break anything, and then retranslate and compile the entire DLL again.
Following their successful experience with the Desktop, engineers at Evare are now using MathWorks tools to develop a new library of portfolio stress-testing tools. This application will consist of several graphical user interfaces, infrastructure for portfolio manipulation, and libraries of analytical tools. It will also be capable of running in stand-alone mode or from within Evare Desktop.
To quickly and economically enhance a library of financial and analytical functions for a flagship portfolio management system product
Use MathWorks tools to replace core functions, build new functions, and provide an easy-to-use environment for future development