Software has become a vital part of capital markets activities, helping firms capture emerging opportunities, adapt to rapidly changing market conditions, and provide effective liquidity to clients. Effectively managing capital market risks requires a balance between the risks of trading and the risks of changing the underlying software.
A top tier investment bank could have upwards of 8 million live positions per day, 40-60 million equity and cash trades, one million derivative trades, and 2-3 trillion dollars in assets under management. Complex models and analytics are involved throughout the investment process, such as calculating partial derivatives to hedge trading risks. The underlying formulas often need to be adjusted, or new ones implemented, to adapt to new financial instruments, market changes, or new quantitative research.
Very small differences in risk calculations multiplied by millions of trades or positions can produce a large and unexpected risk. Following DevOps methodologies in software development can go a long way to balancing out the trading risks and software risks.
Waterfall method: low software risk, high market risk
Classic or waterfall software development processes work sequentially through each phase of a project, with one or two code releases per year. Rigid and extensive workflows are designed to ensure that calculations are consistent between versions. Software development life cycles are time consuming, as they often include detailed technical specifications, code approvals by multi-tiered committees of programmers, and extensive user acceptance testing by a number of departments, prior to release to production. But these precautions can result in updates that are released too late to adapt to market changes or capture new opportunities. In the meantime, the traders may be under-hedging actual market risk, encouraging a proliferation of ad-hoc point solutions with little or no governance and version control. The software risks may be low, but the market risk is unintentionally and unnecessarily high, as software releases are unable to keep pace with market movements.
Agile method: medium software risk, medium market risk
Agile processes are one way of speeding up software releases, encouraging smaller, faster iterations and more frequent releases. Definitions and workflows are more flexible, emphasizing user needs over rigid plans, but can create versioning hell as developers, testers, and users try to keep track of what they are working with. Two week sprints, common in agile software development, sometimes lead to accumulation of technical debt that requires more strategic solutions than the typical tactical solutions that such sprints include. Each sprint may emphasize the needs of a single user group over the needs of cross-functional teams working together across the organization. This approach may increase the firm’s ability to react and adapt to market changes, partially improving hedging capabilities and market risk. But the reduction in market risk can come at the expense of software change risk, leaving unexpected and edge scenarios out of the testing process.
DevOps: balanced software and market risks
DevOps can be seen as an enhancement of the agile methodology, encouraging broader collaboration between all participants throughout the software development process. Like agile, changes are released once they are completed and tested, improving the firm’s time to market, but each team is focused on specific areas of responsibility and expertise. Implemented effectively, the collaboration between roles is better at identifying critical dependencies and testing against those scenarios and what code has changed. The result is an increased ability to react and adapt to market changes, greater control and transparency over code changes, and more informed decision making about the optimal balance points between market and software development risks.
DevOps lets organizations change their software at the speed of business. It allows companies to build competitive advantage and innovate faster, without sacrificing reliability. Continuous integration and continuous deployment, using automated build-and-test steps, ensure a streamlined flow of new pricing and risk algorithms via the most efficient delivery method, while being responsive to changing customer requirements driven by the pace of change in global markets.
Informed risk taking
Different approaches to software development come with different types and levels of risk. At Beacon, DevOps is a key part of our secure cloud operating model that spans product planning through customer operations. By making many small changes, we find it easier to isolate key variables and dependencies and more effectively test each change. We also automate many of the steps between design and deployment, both accelerating our efforts and increasing consistency. Instead of release versions, we use our version control system as a single source of truth and identify code with timestamps. This enables a precise and provable timeline and audit trail, effortless tracking of changes, and clear reproducibility of earlier results. DevOps as a methodology helps capital markets teams make better, more informed decisions about each enhancement or addition, and find their own balance between trading and software development risk.