Fundamental Factor Notebook

We have done some research to try and locate the significant factors for long/short strategies on US Equities using Morning Star data. We wanted to make a demonstration of how you can use fundamental data in the research environment.

From the research we found that the BookValueYield (BookValuePerShare / Price), PE Ratio and EVToEBITDA are the most significant factors that can explain the return. But BookValueYield is negatively correlated with the stock return but PE Ratio and EVToEBITDA are positively correlated with return. 

The inverse correlation of the BookValueYield factor could be indicative of "affordable" companies; explaining why the negative correlation generates better returns. 

Both the loss probability and the win probability are over 0.5. The excess return for win portfolio is positive and the excess return for loss portfolio is negative.

In future research we could test more factors and test significant ones as independent variables in multi-factor models. Or experiment with long/short strategies, by ranking the stocks according to the significant factors to generate the positive returns. 

Update Backtest

Hi Jingw, Great work. I will look into your research in detail. Thanks :)


Try to use your multi factors in a long-short algo but don't get your good result as there's some selection bias. Here I select coarse universe every year with monthly fine universe update and rebalance  


Hi Jing, thank you for this. I have successfully utilized fine filtering to select stocks by current fundamentals. And now I see how i can retrieve prior days' fundamental data from your research example.

However, is there a way to retrieve prior fundamental data as of current date within an algorithm? Said differently, is there a function similar to QuanBook().GetFundamental that I can use in my algorithms? An example use case for this might be: rebalance monthly, select stocks that have a PE ratio which is below their average PE ratio over the last year. Thank you


Hi Tom, sorry for the late reply. In backtesting environment, we don't have the method to request the history value of fundamental data. The workaround is to use the rolling window to save the fundamental value. We'll consider this request to add a new feature to LEAN with the history request in fundamental data.


Update Backtest


The material on this website is provided for informational purposes only and does not constitute an offer to sell, a solicitation to buy, or a recommendation or endorsement for any security or strategy, nor does it constitute an offer to provide investment advisory services by QuantConnect. In addition, the material offers no opinion with respect to the suitability of any security or specific investment. QuantConnect makes no guarantees as to the accuracy or completeness of the views expressed in the website. The views are subject to change, and may have become unreliable for various reasons, including changes in market conditions or economic circumstances. All investments involve risk, including loss of principal. You should consult with an investment professional before making any investment decisions.


This discussion is closed