Back to Community
Custom Factor to calculate return since Earning announcement date


I am new to Quantopian and am trying out a few strategies. Can someone please help me put together a CustomFactor which calculates returns for the next day following an earning announcement?


2 responses

First off welcome to Quantopian! You may not need a custom factor. It depends upon how you want to use the factor. One could simply use the built-in factor for DailyReturns (see the docs) but then supply a mask to only get those stocks associated with companies which had earnings released 1 day ago. The mask can be made using another built in factor BusinessDaysSincePreviousEvent (see the docs).

Here is the pipeline code for something which may do what you want.

def make_pipeline():  
    Create a pipeline for days since earnings announcement  
    Also fetch returns for any security which made an announcement within 1 day  
    pipe = Pipeline()  

    # Create our slice for the last actual earnings data  
    fq0_eps_act = fe.Actuals.slice('EPS', 'qf', 0)  
    # Factor for the asof_date  
    fq0_eps_asof_date = fq0_eps_act.asof_date.latest

    # Factor for business days since the asof_date  
    days_since_release = BusinessDaysSincePreviousEvent(inputs=[fq0_eps_act.asof_date])  
    # Filter for stocks with earnings released 1 day ago.  
    made_public_1_day_ago  =  days_since_release <= 1 

    # Daily returns for just those stocks with earnings released 1 day ago (others will be nan)  
    returns_for_securities_with_recent_earnings_announcement = DailyReturns(mask=made_public_1_day_ago)

    return Pipeline(  
            'fq0_eps_asof_date': fq0_eps_asof_date,  
            'days_since_release': days_since_release,  
            'made_public_within_3_days_ago' : made_public_within_3_days_ago,  
            'returns': returns_for_securities_with_recent_earnings_announcement,  

You also might get some ideas from these posts which discuss earnings and have some notebooks and algos to copy.

Good luck.


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 Quantopian. In addition, the material offers no opinion with respect to the suitability of any security or specific investment. No information contained herein should be regarded as a suggestion to engage in or refrain from any investment-related course of action as none of Quantopian nor any of its affiliates is undertaking to provide investment advice, act as an adviser to any plan or entity subject to the Employee Retirement Income Security Act of 1974, as amended, individual retirement account or individual retirement annuity, or give advice in a fiduciary capacity with respect to the materials presented herein. If you are an individual retirement or other investor, contact your financial advisor or other fiduciary unrelated to Quantopian about whether any given investment idea, strategy, product or service described herein may be appropriate for your circumstances. All investments involve risk, including loss of principal. Quantopian 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.

thanks Dan! this looks great. you are right, it looks like I might not need a CustomFactor. I am trying to put together a multi-factor model. one of the factors would be reaction to earnings, following earnings announcement, and how it compares to the benchmark.

I am guessing I can put together a pipeline which would show me the earnings, returns one day after earnings and return of the benchmark one day after the earnings were announced using your approach. Is it also possible to add factors such as daily eps in the same pipeline?