Basics of Risk Management for Java Developers
In order to deliver value under the name Risk Management we should be able to analyze measure and report the factors that affect business rewards (or profit) and the extent of losses expected from those factors.
I' m no expert in this area but I have to understand it in order to deliver value to the customers of our Software Products. So here I go tying to make sense.
Let me give you a simple example of risk in profits. You own a bank. (Yes, the current trend of paying geeks more for doing less just continues) The banks management projected nice numbers in its profits because they have just given out 30% of the banks capital in loans at 12% interest to be recovered in 5 years. The earnings on paper look very impressive. What the business managers or even the CEO might just not tell you are
1. What are the factors that can cause those paper profits to completely disappear?
2. How will those factors affect the expected profit and capital?
In the current example the factors could be a downturn in oil industry and most of the loan customers have their business in that segment, or a change in foreign currency rates - the local currency suddenly fears very bad against the Dollar or even some unforeseen event like a terrorist attack that almost wipes out the profits of your customers. (Remember the airlines industry after Sept 11/01).
So that is the first important step in risk management is identifying the risk factors that affect your expected rewards.
The next step arriving at a set of values for various combinations of those risk factors against time-steps. This leads to a related set of factors with numbers for their effects that are linked to the occurrence of some other factors. For example a hike in Oil Prices (one factor) causes the occurrence of another factor a change in Fx Rates against USD.
This related set of risk factors with values over a time line is what I call a scenario. How do you arrive at those values - this where you need accurate historical data and some analytic code.
The analytic code analyses events of the past and makes reasonable predictions of events in the future - each event is the effect of change in one (or more) of the risk factors identified earlier.
Even without any analytic code there are clever business minds who can look at historical data for a time period of the past and give a good business scenario projection for a certain time periods in the future.
So we have risk factors, scenarios and finally one more. Instruments, Trades and portfolios.
The difference and relation between instruments, trades and a portfolio is simple to capture for developers.
Consider an instrument to be a class definition. Trades are instances of Instruments. So instruments are the type for a Trade. A collection of trades is a portfolio whatever is the grouping condition for putting those trades together. A Type object pattern in design pattern language is very useful to capture this relationship.
Now let us dig deeper - if you look at how your company assess and reports risk it is mostly on the basis of the numbers in the portfolio and every time a trade changes your risk positions needs to be adjusted. Now, this is most often a time intensive and/or a computationally intensive operation. Measure of Risk is always dependent on Portfolio. We do not touch that.
But the extent of dependency can be reduces by shifting the intensive analytics to be performed against a bag of instruments - the type definition of a portfolio.
This is my logical conclusion after one hour of risk study. I need to pursue it further because as I stated earlier I see value for our customers.
If a Trade is an instance of an instrument then a portfolio is an instance of an instrument group. Now I assume that there is some commonality in risk profiles across two portfolios with the same instrument group. That commonality needs to detailed and pinpointed to some risk multipliers. If you now have this risk profile for a collection of instruments then you can apply it to any number of portfolios in a much faster way than before.
What remains is to abstract Instruments and SetOfInstruments well. Risk factors and profiling should then be applied to SetOfInstruments and the abstraction tested.
I need to get back to work now.
Bye

