Software is different, but not so. Again spurred on by the programming language discussion , I think of what enables us to provide push-button automation for risk management.
- First, we have abstraction - we extract features and construct fewer, but higher deal types.
- Second, we build configurations - we organize, deal types, models and methods orthogonally.
- Third, we nest functions - we can assemble instruments (portfolios) and form scenarios groups.
- Fourth, we apply MapReduce patterns - instrument analytics is distributed to a range of computation kernels and aggregated to portfolio across scenario results (portfolioValue=Apply[ParallelMap[potrtfolio, Valuate], Accumulate])
- Fifth, we define and and schedule tasks - combine a time stamped list data structure with market data to perform operations automatically
In our integrated workbenches, we use Mathematica, Java, C++, .... Our customers build and schedule tasks and push buttons.