When implementing a factor in a trading algorithm, the complexity and wide range of parameters that come with basket selection and trading logic hinder our ability to evaluate the value factor's alpha signal in isolation. Before we proceed to the implementation of an algorithm, we want to know if the factor has any predictive value.

In this analysis, we'll measure a factor's predictive value using the Spearman rank correlation between the factor value and various N day forward price movement windows over a large universe of stocks. This correlation is called the Information Coefficient (IC).
This tear sheet takes a pipeline factor and attempt to answer the following questions, in order:

What is the sector-neutral rolling mean IC for our different forward price windows?

What are the sector-neutral factor decile mean returns for our different forward price windows?

How much are the contents of the top and bottom quintile changing each day?

What is the autocorrelation in sector-wise factor rankings?

What is IC decay (difference in IC for different forward price windows) for each sector?

What is the IC decay for each sector over time?

What are the factor quintile returns for each sector?

For more information on Spearman Rank correlation, check out this notebook from the Quantopian lecture series.

In the plots that are not disagregated by sector, sector adjustment has been applied to forward price movements. You can think of this sector adjustment as incorperating the assumption of a sector-netural portfolio constraint. If we are equally weighted in each sector, we'd want our factor to help us compare stocks within their own sectors. For example, if AAPL 5-day forward return is 0.1% and the mean 5-day forward return for the Technology stocks in our universe was 0.5% in the same period, the sector adjusted 5 day return for AAPL in this period is -0.4%.

The autocorrelation and decile turnover figures are meant to be used as a measure of factor horizon. It is worth noting that these stats are potentially misleading, as our top X liquidity constraint makes our universe dynamic. This dynamic universe likely contributes to a higher quantile turnover and lower rank autocorrelation than we would see in a static universe.

defcreate_factor_tear_sheet(factor_cls,factor_name='factor',start_date='2015-10-1',end_date='2016-2-1',top_liquid=1000,sector_names=None):factor=construct_factor_history(factor_cls,start_date=start_date,end_date=end_date,factor_name=factor_name,top_liquid=top_liquid,sector_names=sector_names)factor_and_fp=add_forward_price_movement(factor)adj_factor_and_fp=sector_adjust_forward_price_moves(factor_and_fp)# What is the sector-netural rolling mean IC for our different forward price windows?plot_daily_ic(adj_factor_and_fp,factor_name=factor_name)# What are the sector-neutral factor decile mean returns for our different forward price windows? plot_quantile_returns(adj_factor_and_fp,by_sector=False,quantiles=10,factor_name=factor_name)# How much is the contents of the the top and bottom quintile changing each day?plot_top_bottom_quantile_turnover(factor,num_quantiles=5,factor_name=factor_name)# What is the autocorrelation in factor rank? Should this be autocorrelation in sector-neutralized # factor value? plot_factor_rank_auto_correlation(factor,factor_name=factor_name)# What is IC decay for each sector?plot_ic_by_sector(factor_and_fp,factor_name=factor_name)ifpd.to_datetime(end_date)-pd.to_datetime(start_date)>pd.Timedelta(days=70):tr='M'else:tr='W'# What is the IC decay for each sector over time, not assuming sector neturality?plot_ic_by_sector_over_time(adj_factor_and_fp,time_rule=tr,factor_name=factor_name)# What are the factor quintile returns for each sector, not assuming sector neutrality?plot_quantile_returns(adj_factor_and_fp,by_sector=True,quantiles=10,factor_name=factor_name)