SimianQuant

Automating Software Implementation

SimianQuant is a software library for quantitative development that can demonstrably improve programmer productivity, runtime performance and usable talent pool by an order of magnitude. It achieves this in two steps:

  1. Exposing mechanisms to decouple the description of a model from its implementation
  2. Using artificial intelligence to generate an optimized implementation using the description.

It is the software analogue of an engineer 3D printing a component from a CAD model instead of drawing it by hand and having it machined by a skilled technician. The library solves the hard problem in quantitative development - that value is created by specifying the algorithm but resources are spent on implementation.

Use Case

Stylistically, a quantitative application can be decoupled into three modules:

  1. Pre-Processor, which converts data from either human input or a data source into a form that can be processed.
  2. Processor, which applies the quantitative models to the input
  3. Post-Processor, which forwards the results to a data sink, for example by displaying it on a screen

SimianQuant is designed as a complimentary/supplementary tool for teams working at the second level of the value chain, especially in the domains of Quantitative Finance, Trading, Robotics and Computational Biology. It exposes a quasi-symbolic API to specify the model which it then compiles into a fast and maintenance free implementation. The library handles real world concerns like abstraction, code quality, performance and maintainability, as well as advanced numerical techniques like algorithmic differentiation and CPU/GPU vectorization. This allows teams to focus on the business logic of the problem to be solved. To illustrate the difference,

Users

The ideal users of the library are teams that:

  1. Understand the mathematics of the domain they want to model
  2. Would prefer to spend time on capturing the nuances of domain in their model, rather than on dealing with the complexities of writing fast and maintainable code, or integrating with opaque vendor code.