Working with the FTS Factor Module

The objective of this write-up is to provide a fast start to working with the FTS factor module.  This module complements the Portfolio Returns and Efficient Portfolios Module in many ways.  One way is to let you explore arguments for both sides of the "beta debate."  At the heart of this debate, is the issue that empirical studies have strongly questioned the performance of CAPM's beta for explaining observed returns.  For example,  Fama and French demonstrate that factors based on fundamentals, such as firm size and book-to-market ratios, are superior to beta when predicting returns.

For a formal self contained lesson that applies the factor approach to portfolio building using a sample of major stocks over a long horizon period (1970-2001) click on Factor Module Lesson now.  Otherwise continue with the quick introduction below.

In this current example, we illustrate the use of the Factor module applied to the four Fama and French factors. We introduce some of the above issues using return data on 10 portfolios formed on the basis of earnings to price and and the four Fama and French factors.  The factor data used has been downloaded from Kenneth French's web site and the stocks used have been selected from the S&P100.  The data set was constructed using the FTS  Historical Data Collection Utility.  To get a few decades of data only those stocks in the current S&P100 with price history going back to 1970 were selected.  In this example we are interested in comparing the Factor Model to Markowitz and so for both any survivorship bias is held constant.

Aside:  Data Input Conventions:  The unit of measure for price (or return) data must be of the same across all markets.  That is, if weekly price data is used and you want to include an index and risk free rate data, this too must be expressed in terms of weekly data.  For example, suppose the risk free rate is 5% for week x, you would need to divide this by 5200 so that 0.000962 is recorded in the appropriate spreadsheet cell.  For the case of factors if you are using weekly price data for securities and your factor data is coarser, say monthly, you will still need to include numbers for each week.  This requires some interpolation rule that is under your control when setting up your spreadsheet

The module assumes complete data.  The user is responsible for correcting all cells that have missing data in the spreadsheet before linking to the module.  The spreadsheet link makes this simple because it lets you apply the convention of your choice directly in Excel (e.g., use the previous observation, interpolate between previous and next observations etc.,).  .

You are now ready to work through the following five steps:

Step 1:  In this step you will link to an Excel worksheet to bring in either historical price or return data.  We illustrate this with return data.  First click on the button labeled Find Excel Spreadsheet.  You will see s&p100ff.xls if you have only one spreadsheet open, otherwise select it from the workbooks you have open.

Enter the following data by filling the data into the text boxes:

Names in Row 1

First Row with Data: 2

Last Row with Data: 383

First Column with Data: B

Last Column with Data: V

That is, this tells the module to get the return data from rows 2-383 and columns B to V.  Security names are provided in row 1.

Important:  From the drop down select Price Data (not return data).

Next click on the button Initialize and then double click above the security label AA to select all stocks.

Now click OK and you should see the data below.  Now you have your data in successfully.

Step 2:  The objective of this step is to get the factor data.  Click on the button Factor Data and repeat the steps from Step 1.  This time our four factors are in:  Columns W to Z and rows 2-382.

Important Note: Below Convert factors to returns there is a note about the number of factor observations you need.  If you are mixing and matching returns and price levels you need to read this carefully and adjust for the correct number --- in this example 2-382 to generate 381 factor levels.

Next select use factor levels because they are already in return format.  Then click on Initialize, double click above Factor 1 to select all, and then click on OK.

Now from steps 1 and 2 you should have both return and factor data in the Factor Module.

Next click on the button Portfolios.

Step 3:  The objective of this step is illustrate some of features built into the Factor Module.  First, click on Plot Securities.  You will see a scatter plot in Risk/Return space.  Securities 1-21.

Check that Allow Short Sales is checked and Risk Free Rate and Factor Model boxes are unchecked.  Now click on Frontier to Plot Frontier to compute the minimum variance frontier over this time period for the securities (not including the factors).

Next check Factor Model and click on the Plot Frontier button again.  This is the minimum variance frontier drawn from a variance covariance matrix that has been computed from a linear factor model (i.e., using betas for each factor).  The return at this stage is the same as the historical return because the computation is "in sample."  This, however lets us focus sharply on the impact of the factors on risk holding their impact upon return constant.

You can now observe that a shift in the frontier from right to left occurs when the factor model is used versus the traditional Markowitz model.  This suggests that these four factors have some ability to explain risk when holding the return part constant.

To see this, right click your mouse where the separation increases between the two minimum variance frontiers (say around 1.5% per month) and read off the risk and return numbers associated with the point clicked on.  The coordinates appear at the bottom of the risk/return plot.  Then repeat for the the traditional Markowitz frontier.   You can also read off the portfolio weights associated with the position clicked on for both a standard Markowitz model (i.e., Factor Model turned off) or a Factor Model (check box on).

Play around with it to see how the module works.  For example, it lets you construct two portfolios where portfolio A, constructed from the factor model, dominates portfolio B constructed from returns when the target return is held constant.

Step 4:  The objective of this step is to explore the dynamic behavior of the minimum variance frontier over the time period the data covers for the P/E ratio portfolios.

The back test block size is 100 (i.e., 100 months).  This means that first 100 months of history is initially used, then the oldest observation is dropped and the next observation is added and so on.  Click on Clear and then click on Animate you can observe how the minimum variance frontier changes over time for a rolling block of 100 months.

Try it with and without Factors Model checked!

You will see that the minimum variance frontier is not very stable over time and as a result, dynamics matter but the factor model is having some stabilizing influence.

Step 5:  In this step we will conduct a back-testing experiment to see whether the four factors can help improve realized risk and return performance over and above a simple Markowitz approach.  To do this we will select a target return equal to .015 per month.  Then click on the Calculate Portfolio button to initialize the portfolio.

Our back-testing is based upon the 100 months and we will change "Constant Mix" (i.e., fixed weights) to "Optimize."  This re-computes portfolio weights each time from the previous 100-months and then tests performance on the next month.  So we have not mixed history used for constructing the portfolio with the month used to test return performance.

Turn factor model off (i.e., uncheck the box), enter .015 beside the target and select Optimized.

The results from this first back-testing experiment reveal that the target was 0.012 and the average realized return from Markowitz was 0.00638 and realized volatility 0.04499 (monthly basis).

Next check Factor Model and Click on the button Calculate Portfolio to compute the new portfolio weights.  Now repeat the test by clicking on Backtest with the drop down selecting Optimized.

Realized returns have increased to 0.01313 and also realized volatility has decreased slightly to 0.04468.  That is, the factor model dominates the Markowitz model.  Dominance means that the factor model provided a higher return with no increase in risk.

Improved return performance, however, is consistent with the return insights from the Fama and French study.

Try it out you will see that there is nothing special about a 0.015 target.  The four factors improve realized returns in this back-testing experiment for movements in both directions for target return (i.e., increasing or decreasing target return).

There is much more you can do with this module but this goes beyond the introductory objective of this lesson.