Back to Community
Quantpedia Trading Strategy Series: Are Earnings Predictable?

Most financial analysts will agree that managers often have an informational advantage. This advantage can lead to a number of decisions like when an executive decides to dump company shares prior to a poor company update or when a company announces a buyback to boost share prices after a bad quarter. In fact, the latter seems to be a common occurrence.

Shahram Amini and Vijay Singal from Virginia Tech propose that managers use their information edge to time corporate actions close to quarterly announcements in order to maximize shareholder value. Their whitepaper, "Are Earnings Predictable?", examines the effects of share buybacks and issues surrounding an earnings announcement. The study documents consistent positive abnormal returns for earnings announcements following buyback announcements with similarly negative abnormal returns for share issues regardless of the earnings themselves. This is quite surprising because it indicates that "that the market adjustment to corporate actions is incomplete, and can result in predictability of earnings announcements."

Our friends at Quantpedia provide a possible explanation for the market's reaction:

The academic paper states that it is generally accepted that managers
have more information about the firm than investors. Given this
information asymmetry, managers can make informed decisions about
corporate actions such as equity offerings or repurchases. The
announcement of stock repurchase or secondary equity offering is
voluntary and can be easily moved by a few weeks or months. Therefore
the timing of SEO or repurchase announcement before earnings
announcement could be perceived as important information about future
performance of stock during earnings announcement period.

In order to validate the authors' research, my notebook (view the notebook to see a walkthrough of the whitepaper) attempts an OOS implementation of the methods used in the whitepaper. I examine share buybacks and earnings announcements from 2011 till 2016 finding similar results to the authors with positive returns of 1.115% in a (-10, +15) day window surrounding earnings. Using these results, the folks at Quantpedia and I attempted to craft an example trading strategy that would profit off the positive market reaction that seems to follow earnings reports made after a buyback announcement.

Trading Strategy Details

Looking at a universe of the top 2,000 most liquid securities, the algorithm filters for securities that have announced a buyback [-15, 0] days before an earnings announcements and goes long on that security for either 25 days or 15 days after the earnings (whichever comes first).

FAQ

What is the Quantpedia Trading Strategy Series?

Quantpedia is an online resource for discovering trading strategies and we’ve teamed up with them to bring you interactive and high quality trading strategy examples based off financial research. Our goal is that you’re able to replicate the process we’ve used here for your own research and backtesting.

This is a high beta strategy! Why are you posting a strategy that’s long-only?

This series is meant to bring you high quality research and trading strategy examples. We plan to release long short, low-beta strategies in the future. For this specific strategy, the share issuance dataset would’ve been needed to create the short portfolio but a possible substitute would be to use negative earnings surprises as the short portfolio for this strategy.

Where can I find more trading strategy ideas?

You can find the full Quantpedia Series here along with other curated pieces of research. Other than that, you can browse Quantpedia’s strategies or look through our forums for ideas posted by community members. Want to feature your own? Submit your proposal to SLEE @ quantopian.com

Clone Algorithm
828
Loading...
Backtest from to with initial capital
Total Returns
--
Alpha
--
Beta
--
Sharpe
--
Sortino
--
Max Drawdown
--
Benchmark Returns
--
Volatility
--
Returns 1 Month 3 Month 6 Month 12 Month
Alpha 1 Month 3 Month 6 Month 12 Month
Beta 1 Month 3 Month 6 Month 12 Month
Sharpe 1 Month 3 Month 6 Month 12 Month
Sortino 1 Month 3 Month 6 Month 12 Month
Volatility 1 Month 3 Month 6 Month 12 Month
Max Drawdown 1 Month 3 Month 6 Month 12 Month
# Backtest ID: 57e423372020b81048fe951d
There was a runtime error.
Disclaimer

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.

20 responses

Here is the whitepaper walkthrough and OOS validation of the original study.

Abstract

From Quantpedia:

The paper states that it is generally accepted that managers have more
information about the firm than investors. Given this information
asymmetry, managers can make informed decisions about corporate
actions such as equity offerings or repurchases. The announcement of
stock repurchase or secondary equity offering is voluntary and can be
easily moved by a few weeks or months. Therefore timing of SEO or
repurchase announcement before earnings announcement could be
perceived as important information about future performance of stock
during earnings announcement period.

While equity issues are not yet available through Quantopian, I find evidence of earnings predictability similar to the authors with positive returns of 1.11% over a 25-day window (-10, +15) for earnings following a buyback announcement. The results hold true for different time windows (0, +15) and sample selection criteria. However, unlike the authors, I find the highest positive returns for earnings that are (5, 15) days after a buyback announcement. Lastly, because the data used in this notebook is up till present day, it may be useful to view this as an "out-of-sample" validation of the authors' original work.

The notebook contains a walkthrough of the whitepaper, hit "Clone Notebook" to view it yourself.

Loading notebook preview...
Notebook previews are currently unavailable.

Pretty solid Seong, I'll play with it to put other events in as well awesome

Thank, PB

Seong, playing with the research and Algo, I found the algo to be very sensitive to AUM size: 1M: 112%, 100K, 93%, 10K: 8%. Is this purely because of Transactions costs or am I missing something else?

PB

Can I ask how "(since_buybacks + since_earnings) <= 15" on line 68 selects securities with a buyback within 15 days before a future earnings announcement? I'm under the impression since_earnings gives the days from a previous earnings report, rather than one in the future, and that "(since_buybacks + till_earnings) <= 15" would have the desired result.
Let's suppose a company planned to report earnings 5 days in the future, and had a buyback announcement 10 days in the past, and had the most previous earnings report 30 days in the past. Correct me where I'm wrong: since_earnings = 30, since_buybacks = 10, till_earnings = 5, since_buybacks + till_earnings = 15, and "(since_buybacks + till_earnings) <= 15" evaluates to true.

Tom,

Thanks for pointing that out. I had posted the incorrect backtest. The version you saw there was one I was researching for reversals in earnings when a buyback occurs after an earnings announcement. It is unfortunately not complete yet but I encourage you to play with it if you want!

The correct version has been posted using since_buybacks + till_earnings <= 15.

Peter,

Could you clone this new algorithm that fixes the issue that Tom has pointed out? I suspect it will be subject to a similar capacity effect however it is the correct strategy.

The backtest is not rendering correctly, the main post has been updated. Please clone that instead.

Seong

Clone Algorithm
376
Loading...
Backtest from to with initial capital
Total Returns
--
Alpha
--
Beta
--
Sharpe
--
Sortino
--
Max Drawdown
--
Benchmark Returns
--
Volatility
--
Returns 1 Month 3 Month 6 Month 12 Month
Alpha 1 Month 3 Month 6 Month 12 Month
Beta 1 Month 3 Month 6 Month 12 Month
Sharpe 1 Month 3 Month 6 Month 12 Month
Sortino 1 Month 3 Month 6 Month 12 Month
Volatility 1 Month 3 Month 6 Month 12 Month
Max Drawdown 1 Month 3 Month 6 Month 12 Month
# Backtest ID: 578e388236e3570f8ba70c39
There was a runtime error.

Could you implement the article's other claim as well? Regarding "The study documents ... similarly negative abnormal returns for share issues regardless of the earnings themselves."
Though the authors mention negative returns regardless of earnings, I imagine any trends would be magnified for equity issues shortly before earnings reports. Similar trends might also hold for debt issues shortly before earnings.

While announcing a buyback before earnings suggests management believes share prices will rise, it may also indicate the company is unable to utilize additional capital due to limited growth potential.
But if a company issues equity or debt shortly before earnings, it may indicate management believes share prices/credit rating will fall and that the company needs additional capital to finance debt (debt that will be far more expensive to finance after a bad earnings report).
Given such intuitions, I imagine more consistent profits will be found exploiting the second trend.

It appears the data is available at https://www.quantopian.com/data/eventvestor/issue_equity, but not in the pipeline format. An example algorithm using the dataset could be a good tutorial on accessing the Blaze API.

Seong Lee wrote:

The full Quantpedia Trading Strategy Series (coming soon) will highlight a number of different strategies provided by Quantpedia in an interactive way.

Seong, could you please elaborate on "coming soon"? Are we talking with the next few days, weeks, months, or years?

Thanks

Tony,

That's an interesting hypothesis. At the moment, you could implement the research side of things using the share issues (https://www.quantopian.com/data/eventvestor/issue_equity) and be able to take the first step in testing your idea. I'd be interested to see what you find.

Steve,

Be on the lookout for more in the coming weeks.

Seong

The backtest did not render correctly in a previous thread, here's the correct one.

Clone Algorithm
828
Loading...
Backtest from to with initial capital
Total Returns
--
Alpha
--
Beta
--
Sharpe
--
Sortino
--
Max Drawdown
--
Benchmark Returns
--
Volatility
--
Returns 1 Month 3 Month 6 Month 12 Month
Alpha 1 Month 3 Month 6 Month 12 Month
Beta 1 Month 3 Month 6 Month 12 Month
Sharpe 1 Month 3 Month 6 Month 12 Month
Sortino 1 Month 3 Month 6 Month 12 Month
Volatility 1 Month 3 Month 6 Month 12 Month
Max Drawdown 1 Month 3 Month 6 Month 12 Month
# Backtest ID: 5798bcc8a634c01301e0fed8
There was a runtime error.

How do we determine the average holding period of positions in the strategy? Didnt find it in the Full Backtest Results.

Also noticed it enters a position by placing many orders 1 minute apart after the market opens (e.g. AIZ is bought on 1/19/2011 over 100 orders in the first 2 hours). Is this because of some trading volume constraint imposed (either in the strategy code or by Quantopian), so it doesnt exceed a % of the total trading? How do we impose this constraint in all our strategies?

You can find a chart that plots daily turnover of securities using the Pyfolio Tearsheet tool available in the Research environment. Attached is that notebook.

As for the orders, you're probably experiencing slippage. Taken from our help docs:

Slippage is where our backtester calculates the realistic impact of your orders on the execution price you receive. When you place an order for a trade, your order affects the market. Your buy order drives prices up, and your sell order drives prices down; this is generally referred to as the 'price impact' of your trade. The size of the price impact is driven by how large your order is compared to the current trading volume. The slippage method also evaluates if your order is simply too big: you can't trade more than market's volume, and generally you can't expect to trade more than a fraction of the volume. All of these concepts are wrapped into the slippage method.

When an order isn't filled because of insufficient volume, it remains open to be filled in the next minute. This continues until the order is filled, cancelled, or the end of the day is reached when all orders are cancelled.  
Loading notebook preview...
Notebook previews are currently unavailable.

For the folks listening to this thread, the second strategy in the Quantpedia Series, Reversals during Earnings Announcements, is up.

We'll be adding new ideas from this Series as well as similar quality research from the community to our Algorithm & Research Library. If there's something you'd like to see featured there, shoot me an email ([email protected]) or reply to that thread.

Thanks,
Seong

The main post has been updated to use Q1500US and the results have improved significantly OOS.

Clone Algorithm
828
Loading...
Backtest from to with initial capital
Total Returns
--
Alpha
--
Beta
--
Sharpe
--
Sortino
--
Max Drawdown
--
Benchmark Returns
--
Volatility
--
Returns 1 Month 3 Month 6 Month 12 Month
Alpha 1 Month 3 Month 6 Month 12 Month
Beta 1 Month 3 Month 6 Month 12 Month
Sharpe 1 Month 3 Month 6 Month 12 Month
Sortino 1 Month 3 Month 6 Month 12 Month
Volatility 1 Month 3 Month 6 Month 12 Month
Max Drawdown 1 Month 3 Month 6 Month 12 Month
# Backtest ID: 57e42340b963641034936503
There was a runtime error.

Seong,

Thanks for your updates on this topic. To be clear, which is the "main post"? It's a bit confusing because you refer to a "main post" while at the same time posting an algorithm.

Is the "main post" the algorithm that appears at the start of this thread? Are all algorithms you've posted updated to reflect any corrections?

The main post consists of the algorithm and the notebook found in the first two points in this thread.

Sometimes, I'll post a new version and note that the main post (the first point) is updated with the new backtest, as you can see here.

So will the "main post" always be updated when you have an update or just "sometimes"?

Sometimes, when it's a variation, it won't be updated in the main post. If it's a fix to the original algorithm, the main post will be updated.

I will do my best to state in the post if the main post has been updated. See this example: https://www.quantopian.com/posts/quantpedia-trading-strategy-series-are-earnings-predictable#57e4296d781fb8cb97000196

Any idea which data provider has the Share Issuance data?

Sep 22, 2016 algo to 2015-01-21 Benchmark 72%
Profited 17565685 on 21087641 activated/transacted for PvR of 83.3%
QRet 175.66 PvR 83.30 CshLw -22972787 MxLv 2.11 RskHi 21087641 Shrts 0

Hi Everyone,

I cloned the original algorithm and I've made some changes using the Optimize API. Let me know what you think.

The essence of the strategy and algorithm remain the same. In this implementation, rather than manually placing orders for securities we'd like to assume positions in, we use order_optimal_portfolio (found in the Optimize API) to construct a portfolio. To do so, we first construct a dictionary of stocks and the portfolio weights we'd like each stock to have. This dictionary of securities and weights is used to create a trading objective (through the TargetPortfolioWeights constructor) that we pass into order_optimal_portfolio. After creating a universe of stocks we're interested in (the stocks we want to go long on), we specify our maximum leverage tolerance as a constraint to this trading objective. Overall, this results in slightly different metrics from the original algorithm. Alpha, beta, and Sharpe Ratio all increase. This is likely due to the leverage constraint we place on our portfolio.

-Jeremy

Clone Algorithm
64
Loading...
Backtest from to with initial capital
Total Returns
--
Alpha
--
Beta
--
Sharpe
--
Sortino
--
Max Drawdown
--
Benchmark Returns
--
Volatility
--
Returns 1 Month 3 Month 6 Month 12 Month
Alpha 1 Month 3 Month 6 Month 12 Month
Beta 1 Month 3 Month 6 Month 12 Month
Sharpe 1 Month 3 Month 6 Month 12 Month
Sortino 1 Month 3 Month 6 Month 12 Month
Volatility 1 Month 3 Month 6 Month 12 Month
Max Drawdown 1 Month 3 Month 6 Month 12 Month
# Backtest ID: 58d169d84fe8721c925220af
There was a runtime error.
Disclaimer

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.