Types of fixed income risk

From Flametree Technologies
Revision as of 09:09, 12 February 2020 by Fiasys (talk | contribs) (→‎Security-specific attribution)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Introduction

This section provides an overview of the various types of fixed income return that can be measured by FIA.

Familiarity with terms such as bond, zero coupon yield curve, credit curve is assumed.

Table of effects

Risk Subreturns Description
Carry return
  • None
  • Running yield and pull-to-par return
  • Sovereign yield return and credit spread yield return
Return generated by the passage of time. Even if yield curves do not move at all, these effects will continue to generate return:
  • Running yield <math>r_{running}</math> is given by <math>(c / P) * \delta T</math>
  • Pull-to-par return is given by <math>y * \delta T - r_{running}</math>
  • Sovereign yield return is given by <math>y_{sovereign} . \delta T</math>
  • Credit spread yield return is given by <math>(y_{credit} - y_{sovereign}) * \delta T</math>

where

<math>c</math> is the security's coupon, if it has one;

<math>P\,</math> is the security's clean price;

<math>\delta T</math> is the elapsed time as a fraction of a year;

<math>y_{sovereign}</math> is the risk-free portion of a security's yield;

<math>y_{credit}</math> is the overall security market yield, including both risk-free portion and the portion generated by creditworthiness effects, if applicable.

Roll-down return
  • None
Return generated by the slope of the yield curve
Sovereign curve return
  • Aggregated
  • Parallel and non-parallel
  • Shift, twist, curvature
  • Key rate duration
  • Principal components
  • CCB (Colin-Cubilie-Bardoux)
Return generated by changes in the risk-free curve
Credit curve return
  • None
Return generated by changes in the spread between the risk-free curve and a sector or credit curve.
Residual return
  • None
Return generated that is not accounted for elsewhere.
Unattributed return
  • None
Return generated by securities for which no pricing type has been defined
Convexity return
  • None
Return generated by non-linear dependency of price on yield
Cash return
  • None
Return generated by interest on cash deposits
Inflation return
  • None
  • Breakeven/nominal yield returns
Return generated by inflation for index-linked bonds
Capital return Return generated by changes in a security's yield-to-maturity (YTM) Leverage return

Time return

Unlike equities, coupon-bearing securities guarantee a certain return to the holder due to the passage of time. If the markets did not move in any way, the holder of a coupon-bearing bond would still receive one or more coupon payments per year. If the holder only owned the bond for part of the year, he would receive part of the regular coupon payment, with the amount proportional to the time he had owned the security. The majority of fixed-income securities pay some sort of coupon, so this is an important source of return in the fixed income markets.

The terms coupon return and time return are often used interchangably, since all can be seen as names for return that does not arise from changes in the market's term structure. However, the two terms are not strictly equivalent. Securities that pay no coupon, such as zero-coupon bonds or bank bills, show return that is purely due to the passage of time, which causes the security's price to approach par. A better alternative is 'yield return' or 'carry'.

There are several ways in which one can measure a security's return due to the passage of time while ignoring changes in the term structure. One of the simplest is to use the security's yield to maturity (or YTM). YTM is the single rate <math>y</math> that, when used to discount a security’s cash flows, gives the current security price <math>P\,</math>:


<math>P=\sum_{i=1}^N \frac{C_i}{\left(1+y\right)^{t_i}}\,</math>


where <math>C_i\,</math> is cash flow <math>i\,</math>, and <math>t_i</math> is the interval in years between the present and that cash flow.

YTM has the property that, if unchanged over a short period, it equals the security’s total rate of return. A bond’s return due to yield is therefore given by


<math>r_{yield} = y \cdot \delta \tau \,</math>


where <math>y\,</math> is the security’s yield to maturity, and <math>\delta \tau</math> is the elapsed time in years.

Current yield and pull to par

Yield return may be further decomposed into a current yield and a pull-to-par yield.

Suppose a bond has just been issued and has a long time to maturity. To a close approximation, its instantaneous return will be given by its coupon divided by the price at which it was bought. This quantity is called the current yield (also flat yield, interest yield, or running yield), and is given by


<math>r_{current\ yield} = \frac{c}{p}</math>


where <math>r\,</math> is the current yield return, <math>c\,</math> is the bond’s coupon, and <math>p\,</math> is its current clean price (i.e. excluding accrued interest).

However, current yield is only a rough and ready measure of a bond’s return. As the bond approaches maturity, its price will converge towards par, and this will affect the yield. The effect is called pull to par or reduction of maturity. The size of this effect is given by the difference between the yield to maturity and the current yield, and may be regarded as the return due to capital gains or losses between the time the bound is bought and the time it matures. Therefore, a more accurate way to measure non-term structure return is to express it in terms of coupon return (running yield), plus return due to the passage of time (pull-to-par return). The pull-to-par return is given by the difference between the yield-to-maturity return and the current yield return:


<math>r_{yield\ to\ maturity} = r_{current\ yield}+r_{pull\ to\ par}\,</math>


FIA offers several options for calculation of yield returns:

  • NONE: Suitable for portfolios of zero-coupon or equity-type securities, where there is no yield return;
  • AGGREGATED: All returns from accrued interest are assigned to a single category, which measures the return from yield to maturity;
  • PULL_TO_PAR: Returns from accrued interest are split into current yield and pull to par yield, with the sum of the two returns equal to the yield to maturity return.

Use the CouponDecomposition flag in the configuration file to indicate which option is required. If this flag is not set, FIA uses the AGGREGATED setting.

The user has the option of supplying a yield to maturity for each record in the weights and returns file. If a yield to maturity is not provided, it is calculated automatically using a numerical iterative routine.

Roll-down return

Consider a bond that has a single cash flow one year in the future. The yield curve is steeply sloped at the 1-year maturity point, but flattens out at longer maturities.

Suppose that market conditions do not change for a month. At the end of this month, this one-year bond will have become an 11 month bond, and the yield used to price this security will now be read from the 11 month point rather than the 12 month point on the yield curve. Since the yield curve is downwards sloping, the 11 month yield will be lower. Since the yield is lower, the price will be higher, and a positive return will have been generated.

This strategy is sometimes called riding the yield curve, as it is most effective when a security’s cash flows are positioned at maturities where the curve is most steeply sloped.

Note that this return has not been generated by movements in the market, since we explicitly assumed that market conditions were unchanged. Nor has it been generated by elapsed time, because the return is generated entirely by a change in yield. Roll-down is therefore distinct from either source of return, and should be measured separately.

Use the RollDownAttribution flag in the configuration file to indicate whether roll down return should be shown on attribution reports. If not shown, roll down return is added to the residual return for each security.

Term structure attribution

First principles versus perturbational attribution

FIA offers two approaches to attribution of returns generated by curve movements.

  • First-principles pricing: by ‘first-principles’, we mean valuing each cash flow generated by the security at the appropriate maturity on the yield curve, and summing the total value of all these discounted cash flows to produce a market price. The change in price caused by pricing with two different curves provides the return due to risk. This approach requires a zero coupon curve for each security, and sufficient information about each security to calculate its cash flows, such as maturity date, coupon and coupon frequency.
  • Perturbational attribution, using perturbational returns and risk numbers. This approach uses risk numbers, such as modified duration and convexity, as a proxy for a pricing model.

To run this type of attribution, perform a Taylor expansion on the price of a security <math>P</math> and remove higher order terms, which gives

a Taylor expansion on the price of a security <math>P\left( {y,t} \right)</math> and remove higher-order terms, which gives

<math>\delta P = \fracTemplate:\partial PTemplate:\partial t\delta t + \fracTemplate:\partial PTemplate:\partial y\delta y + \frac{1}{2}\fracTemplate:\partial ^2 PTemplate:\partial y^2\delta y^2 + O\left( {\delta t^2 ,\delta y^3 } \right)</math>

Writing the return of the security as

<math>\delta r = \fracTemplate:\delta P{P}</math>,

this leads to the perturbation equation

<math>\delta r = y \cdot \delta t - MD \cdot \delta y + \frac{1}{2}C \cdot \delta y^2 + O\left( {\delta t^2 ,\delta y^3 } \right)</math>

where the last term denotes higher-order corrections that may be ignored, and

<math>MD = - \frac{1}{P}\fracTemplate:\partial PTemplate:\partial y</math>

<math>C = \frac{1}{P}\fracTemplate:\partial ^2 PTemplate:\partial y^2</math>

The terms <math>MD</math> and <math>C</math> measure first- and second-order interest rate sensitivity. These are conventionally referred to as the modified duration and convexity of the security, and are often called risk numbers.

The modified duration of a security measures its price sensitivity to parallel changes in the level of the yield curve; more specifically,

<math>r_{duration} = -MD \cdot \delta y</math>

where <math>r_{duration}\,</math> is return, <math>MD\,</math> is modified duration, and <math>\delta y\,</math> is the change in yield of the security.

Perturbational attribution implicitly assumes that the risks of a security can be modelled by representing its cash flows as a single bullet payment, rather than as a stream of individual cash flows over time. For some securities such as coupon-paying bonds, this gives highly accurate results, since the bulk of the security’s cash flows are concentrated at maturity. For other securities such as mortgage-backed securities, where cash flows are more widely spread over the security’s lifetime, the approach is less ideal, although lack of information about a complex securitised security may compel its use.

At what point on the yield curve should we measure changes in the yield curve for perturbational attribution? The maturity is not suitable, since this assumes that changes in price are only affected by the cash flow at maturity. Our preferred measure is the security’s Macauley duration, which is related to the modified duration by:

<math>MD = \frac {D}{(1+ y/n)}</math>

where MD is modified duration, D is Macauley duration, y is yield to maturity, and n is the coupon frequency for the security. Macauley duration is a cash-weighted average of the term to maturity of a bond, and provides a suitable average at which yield changes should be measured. This measure is also suitable for instruments such as floating rate notes, which may have a maturity many years in the future but a very short modified duration due to frequent coupon resets.

General approach to yield curve attribution

FIA employs a successive yield curve method for both approaches. To run attribution, the program uses a number of yield curves, each representing the effect of a progressive change in the curve when different sources of risk are added in. The effect of changes in each yield curve is then computed on the security’s return For instance, suppose we are modelling changes in the sovereign curve in terms of shift, twist and other types of curvature.

  • The first curve is the level of the curve at the start of the calculation interval.
  • The second curve is this initial curve plus the parallel shift that occurs over the calculation interval.
  • The third curve is the initial curve, plus the parallel shift, plus the twist shift, over the calculation interval.
  • The final curve is the curve at the end of the interval, which contains shift, twist and other effects.

The time at which each price is calculated is at the end of the interval. All time effects are calculated in the previous section, so we explicitly exclude time effects from this part of the calculation, which is specifically designed only to measure returns due to changes in the yield curve.

The sum of these changes (time and yield curve) is the overall change in the yield curve over the interval. Any discrepancy seen between the return calculated from these changing prices and the actual return will be due to credit, market noise, or other effects. Further changes due to movements in the credit curve, MBS repayment rates and other risk effects can be added in a similar manner.

Calculating parallel shift

Parallel yield curve shift is regarded as one of the major drivers of fixed income fund performance. There are good reasons for this. Principal component analysis (eg Phoa, 1999) shows that parallel curve shifts usually account for at least 90% of the return of managed bond funds from sovereign yield curve effects.

This is reflected in the widespread use of modified duration as a proxy for a security’s risk exposure to curve movements, where modified duration represents the sensitivity of the security’s return to parallel curve movements. However, there is no standardised, accepted way of calculating parallel shift.

FIA offers two ways to calculate the average level of the yield curve, and hence changes in its average level:

  • Arithmetic average: A simple average of all yields is calculated. This is simple and widely used, but tends to amplify the effects of changes at the short end of the curve if there are more points supplied at the short end – which is often the case.
  • Trapeziodal integration: Calculates the area under the yield curve, and divides by the difference between the largest and the smallest times. This is probably the most accurate way of measuring parallel shifts, as it removes sensitivity to variable sample spacing along the term structure.

Other types of averaging may be introduced in future.

Sovereign curve return

Sovereign curve return is generated by changes in the AAA sovereign curve (reference zero-coupon yield curve). FIA offers the following options:

No effect calculated

Any returns due to changes in the sovereign curve is assigned to residual. This approach is appropriate for portfolios that are purely credit driven and have no exposure to changes in the sovereign curve.

Aggregate effect calculated

Using the yield curve at the start and end of each calculation interval, each security is repriced using both curves and the return is generated. No sub-effects are calculated and a single return figure is generated. This type of decomposition is suitable for the simplest possible attribution.

Duration attribution

Calculates return due to (i) parallel shifts in yield curve, (ii) non-parallel shifts

For simple duration attribution, FIA calculates three yield curves:

  • The curve at the start of the interval
  • The starting curve, plus the parallel change in the curve;
  • The starting curve, plus parallel changes, plus non-parallel changes (equivalent to curve at end of interval)

Each security is priced on each curve to generate three prices <math>p0, p1, p2</math>. Return due to parallel shift is then given by <math>\frac{p1-p0}{p0}</math>, and the return due to non-parallel shift by <math>\frac{p2-p1}{p0}</math>. The sum of the two terms is <math>\frac{p2-p0}{p0}</math>, which is the overall return of the security.

Shift, twist, curvature return

FIA calculates four yield curves:

  • The curve at the start of the interval
  • The starting curve, plus the parallel change in the curve;
  • The starting curve, plus parallel changes, plus twist changes
  • The starting curve, plus parallel changes, plus twist changes, plus other higher-order changes (equivalent to curve at end of interval)

Each security is priced on each curve to generate four prices <math>p0, p1, p2, p3</math>. Return due to parallel shift then calculated by <math>\frac{p1-p0}{p0}</math>, return due to twist shift by <math>\frac{p2-p1}{p0}</math>, return due to higher-order shifts by <math>\frac{p3-p2}{p0}</math>. The sum of the three terms is <math>\frac{p3-p0}{p0}</math>, which is the overall return of the security.

Key rate duration return

A key rate duration analysis isolates the effects of changes at particular maturities along the yield curve, rather than measuring the effect of different types of movements.

Key rate duration analysis may be appropriate when running attribution on portfolios of securities that have cash flows spread across a range of maturities, rather than having the bulk of their yield curve exposure concentrated at maturity. Securities in the former category include mortgage-backed bonds and other amortizing securities, and related securitized securities.

In order to run a KRD analysis on a given security, FIA uses a zero coupon yield curve at the start and end of an interval, and a set of reference maturities.

  • The security is first priced off the start curve.
  • The start curve is modified so that its level at the first reference maturity is changed to the corresponding level at the end curve. Yields that lie at or beyond neighbouring reference maturities are left unchanged, while yields that lie in the interval adjoining the current reference maturity are linearly scaled. The security is then priced off this intermediate curve.
  • The start curve is then successively modified so that its value at the nth reference maturity is changed to the value from the end curve, as described above. At each change, the security is priced using the new curve.
  • At the end of the process, the pricing curve is identical to the end curve.

The return due to the changes in the prices is now calculated. The sum of the returns will equal the overall return for the security over the interval, and the individual sub-returns are generated by changes at the given reference maturities.

The sensitivity of a security's price to changes at a particular maturity is measured by the key rate duration, just as the sensitivity to parallel curve shifts of a security's overall price is measured by the modified duration. FIA does not currently export key rate durations, but this feature may be introduced in future releases.

CCB attribution

CCB attribution uses the Colin-Cubilie-Bardoux algorithm to calculate the twist and curvature movements of a yield curve. This algorithm uses a conventional approach to calculating the parallel shift of a yield curve, but performs a least-squares fit of a first-order polynomial to calculate the twist of the curve. This removes many of the inherent problems involved when fixed twist points are defined.

PCA attribution

Principal component analysis (PCA) uses a suitably large number of historical yield curve changes to determin a small set of basis functions that can be linearly combined to represent these curve movements in the most economical way.

This is accomplished by forming the variance-covariance matrix V from the sample of spot rate changes at the N maturities selected. If we then calculate the N orthogonal eigenvectors of V and rank by order of eigenvalue size, the highest ranked eigenvector forms a basis function that explains as much as possible of the observed curve motion in terms of a single vector. By using a combination of this vector and lower ranked eigenvectors, the underlying data can be approximated to any degree of accuracy required.

The variances of the principal components are given by the magnitudes of the eigenvalues, so that the eigenvector with the highest value has the most explanatory power on the underlying data. If the values of the majority of eigenvalues are low, then this indicates that the underlying data can be closely modelled by a small number of functions, which represent some underlying structure in the data. PCA is therefore a useful technique for reducing the dimensionality of a modelling problem. In particular, PCA has been found to work well on yield curve changes (Phoa, 19981; Barber, Copper, 19962), since in practice practically all yield curve changes can be closely approximated using linear combinations of the first three eigenfunctions from a PCA.

PCA on historical yield curve data shows that curve movements fall into a number of fairly clearly defined types. Typically, the first eigenfunction is close to a flat line, the second rises monotonically (but is seldom a straight line), and the third imposes some curvature motion. These functions are usually interpreted as shift, twist, and curvature.

However, these movements are typically slightly different from more conventional interpretations of these terms. The shift movement from a PCA is usually close, but not identical to, a parallel curve shift, and the twist movement is not uniform across all maturities. For these reasons, a PCA may not directly represent investment outcomes in terms of the decisions that were taken by the trader.

Credit and sector curve attribution

FIA allows multiple curves to be assigned to each security.

Consider a corporate bond that has a AA credit rating. The bond's cash flows are priced off the AA zero curve instead of the AAA curve, and the bond's price is therefore dependent on both the level of the sovereign AAA curve and the spread between the AAA curve and the AA curve.

In general, FIA measures the return contribution made by changes in spreads between the curves assigned to each security. The process is similar to that for duration or STB sovereign curve attribution, but measures the extra return generated by changes in the set of sector or credit curves.

Specifying which yield curves to use

Assuming that you have set up one or more yield curves in the yield curve file, and that each curve has been given a suitable name, you may link as many curves as you wish to the securities in your portfolio.

To do this, edit field 11 (labelled yield curve) in the security master file and insert the names of the curves that you wish to use for attribution. FIA enforces the following rules:

  • For a security whose pricing depends on an underlying yield curve, at least one curve name must be specified.
  • Multiple yield curves can be associated with a given security by writing their names to the yield curve field and separating them by a pipe (|) symbol. For instance, if you have data for yield curves SOVERERIGN_CURVE, AA_CURVE, A_CURVE and you want to run attribution using all three curves, enter SOVEREIGN_CURVE|AA_CURVE|A_CURVE into field 11.

Attribution on risk-free (or base) curves

  • The first curve in the list is defined to be the base curve. Typically this is the AAA, sovereign or risk-free curve for the associated security - but it need not be. Some securities may not have a risk-free market available; others, such as swaps may need to be priced from a particular curve. In such cases, use the most appropriate curve for which data is available.
  • Movements in this base curve will be decomposed and reported in the manner specified by the SovereignCurveDecomposition switch. For instance, if this switch is given a value of STB, then movements in SOVEREIGN_CURVE will be decomposed into shift, twist and curvature components.

Attribution on sector and credit curves

  • Only the first curve's movements will be decomposed in this way. For other curves (if supplied), FIA will calculate return due to shifts between these curves, in the order specified. For instance, in the above example, FIA will also calculate the return due to changes in spreads between AA_curve and SOVERERIGN_CURVE, and between AA_CURVE and A_CURVE.
  • Curve should be supplied in descending order of credit-worthiness.
  • Different curves can be associated with different securities.
  • Curves associated with securities can change over time, using FIA's effective dating capabilities.
  • Different numbers of curves can be associated with different securities. For instance, you may decide only to link a SOVEREIGN_CURVE to a AAA-rated government bond, and to link this sovereign curve and a sector curve to an A-rated corporate bond. In this case FIA will report a return for the sector curve to sovereign curve spread for all securities, but this return will be zero for the government bond, since only the base curve has been linked with this security, implying that no spread attribution was requested.

Security-specific attribution

In cases where a yield to maturity is supplied for all securities in the portfolio and benchmark, FIA can calculate security-specific returns. These returns are due to changes in the spread between whatever curve(s) are associated with the security, and the security's actual market yield, which may not lie on the security's pricing curve.

For instance, an A-rated corporate bond may be priced from a suitable A-rated sector curve. However, the bond's actual yield may lie some distance away from the yield implied by reading off a yield from that curve at the bond's maturity. Such differences typically occur for security-specific reasons, such as embedded options. The returns generated by changes in this security-specific spread are called security-specific returns.

To include security-specific returns in your attribution reports, ensure that

  • the value of the SecuritySpecificAttribution switch is on;
  • for each weight and return datum supplied, a value for YTM (yield to maturity) has also been supplied. Values of YTM must be supplied on all dates for which calculation is active, including the date at the start of the first interval. If a missing value is found and SecuritySpecificAttribution is active, the program will halt with an error report.

Security-specific attribution can be run in conjunction with as many curves as required.

Z-spread attribution

In some cases you may wish to run attribution using a z-spread curve. The z-spread is the extra spread that must be added to all maturities on the risk-free (or base) curve to ensure that the price of the security calculated using this curve equals the price of the security in the marketplace. If the z-spread is accurate, the security return calculated by FIA should exactly equal the supplied return, and residual will be zero - although market noise usually means this is unlikely to occur.

For a particular security at a given date, a value for its z-spread can be supplied in column 13 of the weights and returns file.

To include z-spread returns in your attribution reports, ensure that

  • the value of the ZSpreadAttribution switch is on;
  • for each weight and return datum supplied, a value for z-spread has also been supplied . Values of z-spread must be supplied on all dates for which calculation is active, including the date at the start of the first interval. If a missing value is found and ZSpreadAttribution is active, the program will halt with an error report.

Z-spread attribution can be run in conjunction with as many curves as required.

Limitations

Security-specific attribution and z-spread attribution cannot be run at the same time. 

Use of a z-spread generates a zero-coupon curve from which securities can be priced. In contrast, a YTM cannot be used for security pricing as it includes the distorting effects of coupons. Therefore the two approaches are not consistent and cannot be combined.

Residual returns

Residual return is the difference between the sum of all calculated returns and the actual return, as supplied in the portfolio file.

Ideally, residual returns will always be zero. In practice this is unlikely to be the case, as security-specific factors may lead to slight differences between the calculated and the actual return. If a residual return is significant, this may be indicative of a pricing issue.

FIA can assign residual return to any category required.

Unattributed returns

In some cases, a new security type may need to be included in a portfolio even though it is not a type that is included in the current security library.

FIA allows this case to be handled by use of the unattributed security type. If a security type is described as unattributed, it still appears in the attribution analysis but no attribution is performed. Instead, all of its performance contribution is written to the Unattributed return category.

This can be useful when, for instance, a new security type has been purchased that has not yet been classified, but its overall performance contribution is relatively low, and therefore will not materially affect the conclusions of the attribution report. Depending on your requirements, you may find this approach preferable to halting the production of attribution reports until the security has been classified.

Paydown return

Paydown return only applies to securities of class SINKER.

Paydown return is generated by amortizing securities such as MBS and ABS, where the principal of the bond can be returned (or paid down) faster than expected under a normal amortization schedule. This paydown is generated by the underlying assets being paid back ahead of schedule, which may be due to homeowners refinancing their mortgages, making extra payments to decrease the life of their mortgage, or other effects.

The sign of the paydown return depends on whether the MBS is trading at a premium or a discount. If the security is at a premium, the paydown return will be negative, since the principal paid will be worth less as cash than if it remained invested in the security. If the security is at a discount, the paydown return will be positive, since the cash will be worth more in the hand than if it were invested in the discounted security.

Paydown return is a separate source of return, distinct from carry return, market return and credit return. It should therefore be placed in its own category on attribution reports.

Paydown return is given by


<math>r=\frac{100-p}{p} \cdot \delta f</math>


where <math>\delta f</math> is the change in the holding of the security over the payment period, and p is the security's market price. <math>f</math> is provided in the bond factor field for the security, and this can be varied over time using FIA's effective date functionality.

Cash deposit return

Cash return is only generated by securities that have OpenRisk function Interest specified in the Risks field.

It is calculated as the product of the annualised interest rate read from the associated yield curve, times the length of the current interval, expressed as a fraction of a year:

<math>r = y \times \delta \tau</math>

Inflation return

Cash return is only generated by securities that have OpenRisk function Inflation specified in the Risks field. It is calculated as the product of the annualised inflation rate IR supplied in the index file (typically updated quarterly), times the length of the current interval, expressed as a fraction of a year:

<math>r = IR . \delta t</math>

User-defined returns

Other types of return can be specified by the user using the OpenRisk interface. Such returns include those due to optionality.


1 Phoa, Wesley, Advanced Fixed Income Analytics, Frank J. Fabozzi Associates, 1998

2 Barber, Joel R., Copper, Mark L., Immunization Using Principal Component Analysis, Journal of Portfolio Management, Fall 1996