## Introducing {bdrift} PART 1: Beta drift of stocks

**TL;DR VERSION: In this post series, I will introduce bdrift, my first CRAN-published R package. The purpose of bdrift is to analyze multi-factor asset pricing models for parameter drift. Parameter drift – or beta drift – refers to the situation where the estimate for a regression model varies depending on either the estimation date or the sample size. Sometimes, single influential observations too can cause parameter drift. All these situations can be visualized with bdrift’s BDA function, which allows the user to draw conclusions about the stability and appropriateness of the model parameters.**

In this first of three parts, I will showcase beta drift analysis for single stocks. The other two examples will deal with fund data. Beta as a variable to describe stock characteristics has been largely popularized by the introduction of the capital asset pricing model (CAPM) by Sharpe in 1964. Since then, single asset beta has mainly served two purposes.

First, single asset beta is used as a key decision variable in asset management to determine asset allocation. A stock beta larger than one is a sign that the stock is more volatile than the respective benchmark. A beta smaller than one suggests a less volatile stock. Beta is mostly calculated using the following formula in a standard linear regression model.

Usually, professional data providers use a five-year window of monthly returns to estimate beta. However, both academics and industry experts have long suspected that beta is a flawed measure. In 1975, Blume suggested an adjustment to the beta estimate. For most stocks, he observed that while beta appeared to be stationary, extremely large and small estimates tended to converge closer to unity in succeeding periods. Practitioners at Merrill Lynch have devised a rather simple formula that uses a mean reverting beta level (usually MRL = 1) to incorporate Blume’s findings:

The second field of application for single stock beta is in the calculation of weighted average cost of capital (WACC). WACC is an integral part for most fundamental value models and corporate finance investment decisions. WACC is a simple weighted average of the after-tax cost of debt and the cost of equity. In turn, cost of equity is simply calculated as the required return from the CAPM using past data on beta and assumptions about equity risk premium and the risk free rate.

Needless to say that in either of the two applications of beta, parameter instability is not desirable and can lead to misinformed decisions. My package tries to remedy this situation by providing both visual and formal information about the degree of parameter instability.

Before we dive into the analysis we need to load some sample data first. The BDA.loader function prepares a data frame consisting of the asset returns minus the risk free rate, the most widely accepted asset pricing factors from Kenneth French’s database (SMB, HML, MOM, RMW, CMA, Mkt.RF, RF) and an optional user defined benchmark. In our example, we will use monthly ExxonMobile log-returns and Kenneth French’s benchmark to estimate the classic CAPM model. Therefore, we enter Exxon’s ticker (XOM) as `symbol`

, monthly `frequency`

, and log as return `type`

into the beta.loader function. The `from`

expression simply ensures that all available data is downloaded from Yahoo Finance.

Now that we have prepared out data, we will apply the BDA function. BDA requires a xts-data frame containing all relevant data (`data`

), the model formula (`spec`

), the estimation window size (`horizon`

), the minimum window size (`min.hor`

), the maximum window size (`max.hor`

) and the family of the regression model (`family`

).

We will follow industry convention and estimate the standard model (`XOM ~ Mkt.RF`

) over a five-year horizon (`horizon = 60`

) using the standard OLS technique (`family = gaussian`

). We want to evaluate our model with a variable horizon between one year (`min.hor = 12`

) and ten years (`max.hor = 120`

). We also want to visualize the results of our analysis (`doplot = TRUE`

).

The summary output and the plots for the BDA function provide a plethora of information for the user. If you are interested in a detailed walkthrough of the output lines and plots, watch the video included in this post or have a look at the help pages (`?summary.BDA`

and `?plot.BDA`

). Both the plots for factor Mkt.RF and the summary output suggest a very unstable beta for Exxon (range over time: 0.29 – 0.93; range over horizon: 0.52 – 0.92).

One could remedy the situation by, say, applying a Kalman-Filter model to the estimated a dynamic mean beta or simply use a moving average beta. Whatever the most appropriate value for beta may be in this scenario, one thing is certain: assuming a beta of 0.93, as suggested by the baseline model, might not be entirely warranted given the underlying data.

### Beta Drift Implications

Now that we have established that standard beta estimation might produce misleading data, we will look at the impact such erroneous assumptions can have on asset pricing models. To that end, we will work with the WACC and DCF data from gurufocus.com and assess how these values change with different beta estimation horizons (exxon.BDA$hdrift).

While gurufocus predicts a WACC of 8.705% based on a beta of 0.91 our model provides a WACC range from 5.341% to 8.050%. With a WACC varying so widely, we expect varying prices produced by any pricing model that relies on WACC as the discount rate. Gurufocus offers a simple two-stage DCF valuation model, which I am not particularly fond of, but that provides an easily understandable basis for our analysis. Based on a 12% discount rate (I have no idea how they came up with such a large number), the model suggests a fair value for Exxon of USD 41.20 per share at a time when Exxon is trading in the 80-85 range. We will now substitute the gurufocus discount rate with our WACC values.

The resulting price density estimate is not revealing because of its absolute value, but due to its enormous range (USD 56.58 – 72.58 per share). With such a large range resulting simply from a different approach towards beta the stock might be **anything from 10% to 50% overvalued!** Do you really trust YOUR beta to be the RIGHT one under these circumstances?