# Strategy Library

## Book-to-Market Value Anomaly

### Introduction

Book-to-market ratio is used to find the value of a company by comparing the book value of a firm to its market value. The definition of the book-to-market ratio is \[Book\ to\ Market \ Ratio=\frac{Common\ Shareholders \ Equity}{Market \ Cap}=\frac{book \ value \ per \ share}{Market \ price \ per \ share}\] Book value represents a company's assets minus its liabilities and sometimes is referred to as shareholders' equity. Price-to-Book Ratio is defined as \[Price \ to \ Book\ Ratio=\frac{Market \ price \ per \ share}{book \ value \ per \ share}\] Therefore, we can see the Book-to-market ratio is the inverse of the P/B ratio. The book-to-market ratio suggests how much investors are paying against each dollar of book value in the balance sheet. The bigger the ratio is, the more fundamentally cheap is the investigated company. This algorithm will create the portfolio with this factor.

### Method

To construct the universe, first we eliminate stocks which don't have fundmental data. In `FineSelectionFunction`

,
we calculate the market cap with PE ratio, earning per shares and shares outstanding and assign the property `MarketCap`

to each fine fundamental object. The universe is narrowed to top 20% companies with the highest market cap.

According to the algorithm, the portfolio is weighted based on market cap. We calculate the weight in `FineSelectionFunction`

and save
them in `self.weights`

.

fine = [x for x in fine if (x.ValuationRatios.PBRatio > 0)] for i in fine: i.MarketCap = float(i.EarningReports.BasicAverageShares.ThreeMonths * (i.EarningReports.BasicEPS.TwelveMonths*i.ValuationRatios.PERatio)) top_market_cap = sorted(fine, key = lambda x:x.MarketCap, reverse=True)[:int(len(fine)*0.2)] top_bm = sorted(top_market_cap, key = lambda x: 1 / x.ValuationRatios.PBRatio, reverse=True)[:int(len(top_market_cap)*0.2)] self.sorted_by_bm = [i.Symbol for i in top_bm] total_market_cap = np.sum([i.MarketCap for i in top_bm]) self.weights = {} for i in top_bm: self.weights[str(i.Symbol)] = i.MarketCap/total_market_cap return self.sorted_by_bm

In the next step, we sort the stocks with the inverse of P/B ratio by descending order. Quintile portfolios are then formed based on the Book-to-Market ratio and the highest quintile is held for one year.

### Summary

The portfolio underperforms relatively to the benchmark, S&P 500, during the backtest period.

In general, stocks that have a low B/P ratio are considered to be value stocks, and similarly, stocks that have a high B/P ratio are referred to as growth stocks.

During a bull market, which is associated with high GDP growth, value stocks tend to underperform growth stocks, as investors are optimistic about future earnings growth.

You can also see our Documentation and Videos. You can also get in touch with us via Discord.

Did you find this page helpful?