Software Capabilities

Contents:

Performance Optimization
Deployment
Version Control

Performance Optimization

Computational performance is becoming increasingly important, in particular for IFRS9 models that are expected to calculate capital requirements over the expected lifetime of each individual asset in a portfolio. Prohibitively long runtimes are a serious concern, as both model development and mandatory reporting require significant number of runs: the first to converge to a sound implementation, the latter to meet regulatory demands. Solutions are available to significantly reduce calculation times, resulting in improved model and reporting quality. We have significant experience with performance optimization and can assist you at any point in the software's lifecycle.

Parallel Computing

Especially for assets not mutually correlated, parallel computing is a powerful option to reduce runtimes. Analyses are split up in batches and distributed over the available processors. This can be realized locally, using the cores available on a desktop machine, or on a computer cluster. Code and portfolio analysis can be used to determine the optimal configuration for your models.

In addition, you can schedule sets of analyses to run overnight. This automation feature is not unique to parallel computing, it is however increasingly powerful, when used in a multi-core setting.


Code Profiling and Optimization

Model developers are typically focused on translating methodologies into software, and rightfully so. Converting and validating math is a challenge of its own. From our experience however, it appears that the resulting code-base may produce the correct results, it is however not optimized for calculation performance.
In most cases, dedicated profiling and optimization of the code yields significant performance benefits, without compromising the quality of the results.

Optimal performance is typically achieved by pursuing both code profiling and parallel computing in one go. Lessons learned can be reused in other model types and versions, propagating the benefits in your entire model portfolio. Let us help optimizing your software.

Up

Deployment

Once software is matured, you may be looking to make it available to a wider audience. To co-workers, or even into production, for integration with enterprise applications. With or without a user interface. For each configuration, deployment methodologies are available. We can assist selecting the optimal solution and perform the implementations.


Prior to engaging in a deployment effort, a code review and (partial) refactoring can be considered, to increase quality and scalability of conceptual software. Verifying object oriented designs, checking correct use of coding standards and best practices. Doing this upfront typically reduces remediation and bug fixing down the road. In other words: reducing operational risk. Such reviews are ideally combined with a performance optimization effort.


● MonkeyProof Framework Application

In case you need to roll-out your model to a larger community that may not be familiar with MATLAB and requires a robust user interface, consider our Framework Application Solutions.
MonkeyProof Solutions developed a framework for MATLAB based applications that brings inherent robustness, user friendliness, traceability, data management and workflow management. Our framework produces GUI's with professional look and feel, offers significant flexibility regarding contents and layout, and reduces deployment lead times due to high levels of automation.

Learn more here or check our factsheet. The sample here just shows what is possible. From basic to advanced: any type of user interface can be facilitated.


● MATLAB Compiler

The MATLAB Compiler lets you share MATLAB programs without integration programming. You can create standalone applications, add-ins for Microsoft Excel, and components that can be run on Hadoop clusters for big data applications. Like this, you can distribute your work royalty free.


The Compiler SDK provides implementation and platform flexibility in case you need to integrate MATLAB-based components into applications written in other languages. You can integrate these components with applications written in C/C++, .NET, Java and Python.


● MATLAB Production Server

The MATLAB Production Server lets you incorporate models into web, database, and production enterprise applications running on dedicated servers. Upon finalizing development and finetuning, your model can be packaged using the Compiler SDK, and then be deployed to MATLAB Production Server. Users can then access the latest version of your models automatically.

Like this, you can propagate your models all the way into production, without having to recode and redeploy in different environment like SQL. This significantly reduces cost, throughput times and above all inevitable errors in (manual) recoding/conversion processes.


We Can Help

Whatever deployment method best suits your workflow and operational needs, we can assist with selection, implementation and roll-out.

Up

Version Control

Version control is indispensable. Working simultaneously on a single code-base, keeping track of model evolution, being able to release, keeping oversight of versions and branches. All facilitated by version control. Broadly, two types can be defined: centralized, like Subversion. And distributed, like Github. We have experience with both and can integrate these (open source) systems within your workflow or even within your applications. Each type has its specific strengths, from our experience it appears that a centralized system (Subversion) is sufficient for development and distribution of most models and software in the Finance industry.

To achieve optimal governance of your models and software, it is advised to integrate an issue tracking system as well: allowing you to link issue and enhancement ID's to a specific commit in version control. We can assist with selecting and implementing a suitable system.


Up

Interested?

Contact us at MonkeyProof Solutions, we look forward to get to know you and to discuss your challenges.