SPANŽ Risk Manager Functions

Updated

This document describes the core processing functions of the SPAN Risk Manager.  All such functions can be executed from the GUI, from the script language (via "spanitrm.exe"), and from the real-time component interface.

Note that SPAN Risk Manager functionality is a superset of that provided in PC-SPAN, so that any function available in PC-SPAN is also available in SPAN Risk Manager.

Contents:


Processing Functions

Calculate Option Implied Volatilities

This function may be performed for an entire point in time, or for any of several different levels defined within a point in time:  an exchange complex, a combined commodity, an option product family, an option series, or a specific option.

For each option, an attempt is made to calculate the implied volatility.  If successful, the volatility for the option is set to the new value.

Average Call / Put Volatilities

This function likewise may be performed for an entire point in time, or for any of several different levels defined within a point in time:  an exchange complex, a combined commodity, an option product family, an option series, or a specific option.

The function searches for call / put pairs -- ie, options which are identical except that one is a call and the other is a put.  For each such pair:

 This function may be used if it is desired to ensure that corresponding calls and puts have the same value assigned for their volatility.

Calculate Series Volatilities

This function may be performed for an entire point in time, or for an exchange complex or specific combined commodity within a point in time.  The lowest level to which this function is applicable is the combined commodity.  (In other words, you can't calculate a series-average volatility just for one particular series, but have to at least do it for all series within a combined commodity.)

The function assigns a value to the volatility for the entire option series, for each option series to which it is applicable, and it guarantees that such "series-average" volatilities will be assigned.  The algorithm calculates implied volatilities for around-the-money options and then assigns the series volatility as the average of those strike-level volatilities for the around-the-money options.  A detailed description of the series-average volatility algorithm is available at the PC-SPAN Software Distribution website..

Calculate Option Prices (and Greeks)

This function may be performed for an entire point in time, or for any of several different levels defined within a point in time:  an exchange complex, a combined commodity, an option product family, an option series, or a specific option.

For selected options, the function calculates either:

 In doing so, you can choose which volatilities to use, either:

This last alternative is useful if it is desired to use strike-level volatilities, but if it is also possible, given the input data, that strikes may exist for which volatilities are not defined or cannot be calculated.  In this case, since the algorithm for determining a series-average volatility guarantees that one will be assigned, using strike-level volatilities if they are available and series-level volatilities if not, guarantees that option prices are calculable for all options.

When calculating option prices, you can also choose to do this with "with reset" or "without reset".  If you are doing this "with reset", then any previously defined option prices will be overwritten by the newly calculated prices.  If you are calculating "without reset", then option prices (and greeks) will not be calculated for any option for which a price is already defined.

The "without reset" capability is useful is you have valid market prices for some options and want to calculate theoretical prices only for the options for which market prices are not available.

Calculate Risk Arrays

This function may be performed for an entire point in time, or for any of several different levels defined within a point in time:  an exchange complex, a combined commodity, a product family, an option series, or a specific contract.

For selected contract(s) this function calculates SPAN risk arrays for each SPAN rate for which price scan range and volatility scan range are defined.

 In doing so, you can choose which volatilities to use (affects only option risk arrays), either:

As with the calculation of option prices, this last alternative is useful if it is desired to use strike-level volatilities, but if it is also possible, given the input data, that strikes may exist for which volatilities are not defined or cannot be calculated.  In this case, since the algorithm for determining a series-average volatility guarantees that one will be assigned, using strike-level volatilities if they are available and series-level volatilities if not, guarantees that risk arrays are calculable for all options.

Replicate Price Basis

This function may be performed for an entire point in time, an exchange complex, an exchange, a combined commodity, or a particular non-option product family.

For futures product families (and any other non-option product type) defined at a point in time where prices are available for some contracts but not for others, this function assigns theoretical prices to those other contracts.  It does so by replicating the basis differentials for this product family for the immediately prior point in time.

For example, suppose at the previous point in time the price of the lead future was X and the price of the second future was Y.  Suppose further that for the current point in time the price of the lead future was assigned as A and the price of the second future has not been defined.  This function would assign the price of the second future as A + (Y-X).

Apply Volatility Skew

This function may be performed for an entire point in time, an exchange complex, an exchange, a combined commodity, or a particular option product family.

For each option series defined at a point in time where volatilities are available for some options but not others, this function assigns volatilities to those other options in the series.  It does so by replicating the volatility skew relationship from the same series at the immediately prior point in time.  

In doing this, it applies both a horizontal shift and a vertical shift:  The best way to understand this is to think of a graph of strike price (on the X-axis) and volatility (on the Y-axis):

There are three different alternatives for applying the vertical shift:

Observe Market

This function may be performed for an entire point in time, an exchange complex, an exchange, a combined commodity, or a particular product family.

For all contracts for which the function is performed, it does the following:

It calculates Mark to Market amounts for all portfolios defined for the point in time. Portfolios are marked to the latest prices set for the point in time.

Reset Prices

This function may be performed for an entire point in time, an exchange complex, an exchange, a combined commodity, or a particular product family.

For all contracts for which the function is performed, it takes the current price and stores it as the "previous" price for the contract.  In effect, it establishes the current price as the baseline for subsequent mark-to-market processing -- either trade posting or market observations.


What-If Scenario Processing

The SPAN Risk Manager provides a rich set of capabilities for evaluating the impact of what-if scenarios, a function also known as stress testing.  This works as follows:

Thus, a positive impact means that the portfolio gained in value and/or had its risk decrease.  Conversely, a negative impact means that the portfolio lost value and/or had its risk increase.

Define What-If Scenario

This function is always performed for an entire point in time.  It is used to create a new point in time, identical to the original ("base") one except that:

The specification for how these parameters should be changed, and to which contracts the changes should be applied, constitute a what-if scenario.

You start by pointing to the original, base point in time, right-mouse click, and select What-If Scenario.

The Create What-If Scenario dialog box displays, prompting you to enter a descriptor for the what-if scenario.  You enter the descriptor and click on Create New.

The full Define What-If Scenario dialog box now displays.  This allows the specification of the changes to be applied to the above parameters:

After the desired what-if parameters have been defined, you can click on either OK or Calculate:

Note that you can also choose to define and apply Risk Scenarios to an existing point in time rather than creating a new one:

Compare Scenarios

This function is likewise always performed for a particular point in time.  It allows the comparison of the impacts associated with any particular what-if scenario.  To use it:


Typical Uses of SPAN Risk Manager

Calculation of SPAN Risk Arrays, Creation of SPAN Risk Parameter Files

An exchange or a clearing organization implementing SPAN needs a way to calculate SPAN risk arrays for all of its products and publish at least one daily SPAN risk parameter file.  A typical set of operations would be:

Stress Testing

Evaluating the impact on a set of portfolios of various hypothetical market occurrences over the next trading day is always an important requirement.   Such "stress testing" allows the impact of common hypothetical market occurrences to be determined in advance and thereby allows rapid response in the event any such scenario occurs.

To do this in an automated way:

Real-Time Pre- or Post-Execution Risk-Based Credit Controls

If an order to execute a trade has been placed, it is often desirable to evaluate, in real-time, the impact of such a trade on the portfolio risk, margin requirement, and value.  Based upon this impact, again in real time, the order may be accepted or rejected.  Even if such "pre-execution" credit controls are not implemented, it many cases it will be extremely valuable to implement such real-time checking post-execution.  One of SPAN Risk Manager's most important capabilities is the ability to implement this.

Typically this would be implemented via a multi-platform strategy -- one platform in order to update the risk profile of the various products in a "continuous batch" process, and another platform or set of platforms in order to apply the results to portfolios in real time as orders are provided and/or trades are executed.

On one platform for the updating the risk profile:

Total time required to execute such a cycle will depend on the number of instruments, the pricing models used, and the overall speed and memory capacity of the execution platform.  In many or most cases, however, total execution time will be measured in seconds.  In other words, execution time is not the limiting factor and this part of the process can be executed as often as desired during the trading day.  As often as every minute or two, or as infrequently as several times per day, the process can be executed in order to obtain an updated SPAN document file reflecting current market conditions.  The more volatile the market, and the more it is desired to have the process reflect current market conditions, the more important it is to increase the frequency of such updates.

The process of applying the orders or trades to the SPAN document reflecting updated market conditions would typically be executed in real-time, via the real-time component interface, on one or more separate execution platforms:


Trade Posting

The SPAN Risk Manager software will very shortly add full "trade posting" capability, providing new position management and bookkeeping functions.

Trades may be posted by loading a file of trades, from the GUI, the batch interface, or the real-time component interface.  Alternatively, trades may be posted one-by-one through the component interface.

Trade posting may be performed in any of three modes:

Update positions only

When trade posting is performed in this mode, as each trade is posted, the following is done:

In other words, aggregate mark-to-market amounts are broken out into separate fields for true settlement variation which will be banked for futures-style products, and mark-to-market amount which is provided for information for non-futures-style products.  Premium (price obligation) is calculated for any product which is not valued futures-style, and is aggregated separately for premium-style options and other premium (equity) style products.

Typical usage for real-time risk intraday real-time risk management would be as follows:

Trade-register mode

In addition to the functions performed in "Update positions only" mode, Trade Register mode saves, for each posted trade, the mark-to-market amount and, if it is for a premium-style product, the price obligation.  This data is saved to a separate Trade Register file, from which various Trade Register reports and datafiles can be prepared.

Typical end-of-day usage would be as follows:

Bookkeeping mode

In addition to the functions performed in "Update positions only" mode, Bookkeeping mode tracks individual Open Trades behind each net position and does FIFO position offsetting and profit & loss accounting.  The result are datafiles from which basic bookkeeping reports can be produced.

The SPAN document file itself in this case stores the individual Open Trades behind each net position.  For each open trade, the following is stored:

When the open trade has been fully liquidated, the currently open quantity will be zero as will the unrealized P&L.  All P&L will have been realized.

At any instant in time, then, there will be one or more open trades behind each net position.  The open quantities on each open trade with nonzero value for currently open quantity, must of necessity be of the same sign as that of the current value for net position.

For example, suppose on day one you start out flat in a particular instrument and post two buy trades for quantities of 10 at different prices.  The result is a net position of +20, with two open trades behind that position, each for an original quantity and a currently open quantity of +10.

Suppose on the next day you clear a sell trade for a quantity of -30.  The first -10 will offset the first open trade, causing its open quantity to be set to zero and all P&L on the open trade to be realized.  In effect, it is a "closed trade".  The second -10 will similarly offset the second open trade.  The last -10 will establish a new open trade, at its trade price, with an open quantity of -10, and the mark-to-market from trade price to end of day market price stored as unrealized P&L.  The overall net position will be -10.

In addition to the updating of the net positions and of the open trade(s) behind the net positions, bookkeeping mode causes a Bookkeeping Register datafile to be produced.  This lists, for each trade posted, what occurred:

From the SPAN document file and the Bookkeeping Register datafile, bookkeeping reports can be produced.

#####