Solution
Case Study
/ / Financial Data Leader Shortens Time-to-Market, Increases Speed with Right Tools

“By using C++ AMP, we can generate fast, accurate pricing with less strain on our resources, which is a key differentiator in our segment and helps us provide greater value to our clients.”

Moody Hadi, Research Director, CMA

CMA—a company that develops pricing solutions and financial data services—wanted to include a faster pricing mechanism in its multi-asset valuation products without sacrificing accuracy. The company used C++ Accelerated Massive Parallelism in Microsoft Visual Studio 2012 to quickly bring the functionality to market while speeding performance and maintaining accuracy. CMA gained a competitive advantage and helped clients address market changes.

This case study is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.
Document published September 2012


Business Needs

CMA provides financial institutions with independent data about “over-the-counter” markets: those without a formal exchange. Among the company’s products is CMA NAVigate, a web-based solution for streamlining the mark-to-market process. When a client uses CMA NAVigate, the system takes a snapshot of the market, runs algorithms necessary to evaluate the client’s assets, prices those assets, and calculates each asset’s sensitivities. CMA analysts filter quotes for anomalies and make adjustments to ensure accurate calculations.

When CMA NAVigate was launched in 2010, it included mechanisms for different types of curve generation, but Overnight Index Swap (OIS) curve generation was not among them. CMA recognized the opportunity to help its clients deal with the fallout of the recent credit crisis by enhancing CMA NAVigate to include OIS curve generation, thereby producing accurate pricing and sensitivities for the interest rate instruments in clients’ books.

Such a move also would be a competitive differentiator for the company. “In our industry, it’s all about timing,” says Michal Koblas, Head of Research at CMA. “We noted the market shift and saw interest rate swaps begin to be valued in all sorts of strange and approximate ways. We wanted to offer an internally consistent method for OIS valuations, one that would produce fast, numerically correct results for our clients. But we knew we had to design, develop, and release our solution quickly to make the most of the market opportunity.”

Solution

To provide OIS curve generation, CMA needed to find technology tools that would foster fast development and increase calculation speed without sacrificing accuracy. “We were concerned that the time necessary to run data-validation algorithms and inspect their outputs would be too long for our clients and would strain our resources,” says Moody Hadi, Research Director at CMA. “The answer was to conduct faster, near-instantaneous computations for our analysts so that they did not have to wait for results.”

CMA decided to take advantage of the power of graphics processing unit (GPU) processing. Three developers built solution prototypes using several technologies, including the existing Intel Threading Building Blocks for processing on Intel CPUs, Compute Unified Device Architecture (from CUDA) for processing on NVIDIA GPUs, and C++ Accelerated Massive Parallelism (from Microsoft) which is hardware agnostic. After evaluating all three technologies, CMA opted to use C++ Accelerated Massive Parallelism (C++AMP) for its final OIS curve generation solution. “We saw that developing with C++ AMP required little specialized expertise, and its API was well-constructed for our needs,” says Hadi. “Using Intel TBB didn’t make sense for us because did not offer the same performance, and CUDA would have taken our development staff a lot longer to learn, and it would have been harder to maintain a new language. Plus, using Microsoft C++ AMP gives us future flexibility in terms of the video cards that we use, which is not the case with CUDA.”

In September 2011, CMA began building the OIS solution using the Microsoft Visual Studio Ultimate 2012 development system and pre-release compiler bits for C++ AMP. Within five months, the company conquered the minimal learning curve, completed and tuned an initial implementation with C++ AMP, put multiple financial currencies into the system, and even used it to remove bottlenecks from other modules in CMA NAVigate. “It’s easy to get started with C++ AMP and produce fast, efficient code in a reasonable timeframe,” says Hadi. “Five months is short timeline, especially given that we were devising a brand new model for the industry using not-yet-released compiler bits. I suspect that now, with C++ AMP fully released, it would only take us about one month to do that work.”

Benefits

CMA used C++ AMP to shorten its development timeline and give clients an edge in their financial decision making. “We have found that C++ AMP has an easy and powerful API that helped us adopt parallelization on the GPU quickly and achieve accurate results,” says Hadi. “By using C++ AMP, we can generate fast, accurate pricing without overtaxing our resources, which is a key differentiator in our segment and helps us provide greater value to our clients.” Benefits include:

Short time-to-market

CMA was the first to market with such accurate OIS pricing functionality, which helped the company win market share. “The financial services industry is changing quickly, and companies are scrambling to find the best tools, so being able to bring targeted services to market quickly helps us capture client interest,” says Hadi. “With C++ AMP, we can continue to react quickly to ongoing structural market shifts, adding functionality to support clients as their needs evolve in response to changes.”

Fast performance with reliable,

accurate results

Without GPU processing, developers must sacrifice some degree of accuracy to make their code run faster. “We can run our code faster without sacrificing accuracy because C++ AMP helps us use GPU processing,” explains Hadi. “We can easily meet our service level agreements—even when the market is especially active—while providing clients with accurate results.”

Affordability

By using C++ AMP, CMA can increase processing speed without adding expensive hardware to its infrastructure. “We’re able to charge less and still make a profit because C++ AMP helps us efficiently develop solutions that require fewer resources,” says Hadi. “We anticipate an increase in client demand for similar solutions, which we could never deliver without investing in a huge server grid. Now, we can scale at far less cost to meet those expected needs.”

Competitive advantage

CMA now can differentiate itself through its stable algorithms and more accurate models for pricing. “We’re well-positioned to develop even bigger solutions, now that we’ve proven how quickly and efficiently we tackled OIS,” says Hadi. “We’ll be faster than our competitors, too, because we have established technical and strategic building blocks, which will further compress our lead time.”

This case study is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.
Document published September 2012