Wednesday, November 16, 2016

Pre-earnings Annoucement Strategies

Much has been written about the Post-Earnings Announcement Drift (PEAD) strategy (see, for example, my book), but less was written about pre-earnings announcement strategies. That changed recently with the publication of two papers. Just as with PEAD, these pre-announcement strategies do not make use of any actual earnings numbers or even estimates. They are based entirely on announcement dates (expected or actual) and perhaps recent price movement.

The first one, by So and Wang 2014, suggests various simple mean reversion strategies for US stocks that enter into positions at the market close just before an expected announcement. Here is my paraphrase of one such strategies:

1) Suppose t is the expected earnings announcement date for a stock in the Russell 3000 index.
2) Compute the pre-announcement return from day t-4 to t-2 (counting trading days only).
3) Subtract a market index return over the same lookback period from the pre-announcement return, and call this market-adjusted return PAR.
4) Pick the 18 stocks with the best PAR and short them (with equal dollars) at the market close of t-1, liquidate at market close of t+1.  Pick the 18 stocks with the worst PAR, and do the opposite. Hedge any net exposure with a market-index ETF or future.

I backtested this strategy using Wall Street Horizon (WSH)'s expected earnings dates data, applying it to stocks in the Russell 3000 index, and hedging with IWV. I got a CAGR of 9.1% and a Sharpe ratio of  1 from 2011/08/03-2016/09/30. The equity curve is displayed below.



Note that WSH's data was used instead of  Yahoo! Finance, Compustat, or even Thomson Reuters' I/B/E/S earnings data, because only WSH's data is "point-in-time". WSH captured the expected earnings announcement date on the day before the announcement, just as we would have if we were live trading. We did not use the actual announcement date as captured in most other data sources because we could not be sure if a company changed their expected announcement date on that same date. The actual announcement date can only be known with certainty after-the-fact, and therefore isn't point-in-time. If we were to run the same backtest using Yahoo! Finance's historical earnings data, the CAGR would have dropped to 6.8%, and the Sharpe ratio dropped to 0.8.

The notion that companies do change their expected announcement dates takes us to the second strategy, created by Ekaterina Kramarenko of Deltix's Quantitative Research Team. In her paper "An Automated Trading Strategy Using Earnings Date Movements from Wall Street Horizon", she describes the following strategy that explicitly makes use of such changes as a trading signal:

1) At the market close prior to the earnings announcement  expected between the current close and the next day's open, compute deltaD which is the last change of the expected announcement date for the upcoming announcement, measured in calendar days. deltaD > 0 if the company moved the announcement date later, and deltaD < 0 if the company moved the announcement date earlier.
2) Also, at the same market close, compute deltaU which is the number of calendar days since the last change of the expected announcement date.
3) If deltaD < 0 and deltaU < 45, buy the stock at the market close and liquidate on next day's market open. If deltaD > 0 and deltaU >= 45, do the opposite.

The intuition behind this strategy is that if a company moves an expected announcement date earlier, especially if that happens close to the expected date, that is an indication of good news, and vice versa. Kramarenko found a CAGR of 14.95% and a Sharpe ratio of 2.08 by applying this strategy to SPX stocks from 2006/1/3 - 2015/9/2.

In order to reproduce this result, one needs to make sure that the capital allocation is based on the following formula: suppose the total buying power is M, and the number of trading signals at the market close is n, then the trading size per stock is M/5 if n <= 5, and is M/n if n > 5.

I backtested this strategy from 2011/8/3-2016/9/30 on a fixed SPX universe on 2011/7/5, and obtained CAGR=17.6% and Sharpe ratio of 0.6.

Backtesting this on Russell 3000 index universe of stocks yielded better results, with CAGR=17% and Sharpe ratio=1.9.  Here, I adjust the trading size per stock to M/30 if n <=30, and to M/n if n > 30, given that the total number of stocks in Russell 3000 is about 6 times larger than that of SPX. The equity curve is displayed below:


Interestingly, a market neutral version of this strategy (using IWV to hedge any net exposure) does not improve the Sharpe ratio, but does significantly depressed the CAGR.

===

Acknowledgement: I thank Michael Raines at Wall Street Horizon for providing the historical point-in-time expected earning dates data for this research. Further, I thank Stuart Farr and  Ekaterina Kramarenko at Deltix for providing me with a copy of their paper and explaining to me the nuances of their strategy. 

===

My Upcoming Workshop

January 14 and 21: Algorithmic Options Strategies

This  online course is different from most other options workshops offered elsewhere. It will cover backtesting intraday option strategies and portfolio option strategies.

19 comments:

Eduardo Gonzatti said...

Hi there, Dr.
Excellent post, as usual!

Just a quick question, do you think that hedging the portfolio with VIX (or corresponding ETF) comparing the actual weight of the particular stock vol would decrease the volatility of the strategy itself?

Best Regards

Eduardo Gonzatti said...

Edit: I'm asking because in my tests and trading of LS equities, hedging the net gross exposure with index futures or corresponding ETF never gave any edge, as you found with the second test here in this post.

Ernie Chan said...

Hi Eduardo,
It has been shown that VXX is significantly negatively correlated to the SPY. So yes, you can certainly use it for hedging. However, I am not sure that it necessarily hedges the volatility of the strategy: the strategy may have better or worse returns during volatile periods, and it can also have either long or short net exposure during that period. We cannot hope to be so lucky that we are hedging both net exposure to market return and net exposure to market volatility at the same time.
Ernie

freerider said...

"In order to reproduce this result, one needs to make sure that the capital allocation is based on the following formula: suppose the total buying power is M, and the number of trading signals at the market close is n, then the trading size per stock is M/5 if n <= 5, and is M/n if n > 5."

This money management bugs me deeply. Why not use a Kelly optimal sizing family (say, half Kelly or Optimal F) which weights for risk adjusted probabilities?

Weighting can be done on stand alone basis (individual company, if the sample is large enough) a market wide sample in similar conditions (with some proxy), or both.

Ernie Chan said...

Freerider,
The capital allocation scheme that the author proposed is of course the simplest possible - it is merely an equal cap scheme, while constraining the leverage to 1 or below.

You can certainly modify it by using risk parity (see my new book), or using Kelly allocation as you suggested. I would actually favor risk parity over Kelly, since there is no evidence that an ex-post Kelly allocation on stocks is optimal ex-ante.

Ernie

freerider said...
This comment has been removed by the author.
freerider said...

Thanks, Ernie.

Unknown said...

Hi Ernest, an off-topic comment here because I'm not sure you still reply to old post. I read that you trade mostly fx instead of equities. Is this still the case for you currently? If so do you have any recommendation for fx brokers after IB change their rule on Sept? I'm assuming it would not be worthwhile to trade on IB without the use of leverage. I would also like to read your opinion on fx vs other markets in a future post.

Ernie Chan said...

Unknown,
We trade every asset class that we can find strategies. In the last 5 years, it was an FX strategy that has the highest returns, but we also trade(d) futures, ETFs, options and stocks as well.

IB did not change its rule: SEC has demanded that all broker dealer drop their FX clients who are not Eligible Contract Participants. I have only traded with FX dealers that only accept ECP clients, so I can't really recommend a retail FX broker. However, I heard that Gain Capital and FXCM are both reasonable choices.

I do not think that there are too many good arbitrage opportunities in FX that are enduring, due to frequent government interventions and global macroeconomic shocks such as Brexit. However, if you find one, it would be great since the liquidity is usually better than that of stocks or even futures, and spreads narrower. So the rare arbitrage opportunities tend to be more profitable as well. That is in addition to the easy availability of leverage.

Ernie

Paul said...

Hi Ernie,

Another off topic question, I read your algo trading book previously that you are against models that are (1) non linear, (2) too many parameters that's causing overfit easily. Do you still believe the same? It has been quite some years and I found that recently people are more tend towards using machine learning techniques which many are highly non linear (e.g. deep NN). Of course there are still a number of well known linear statistical learning techniques but do you think now the "simple ways" are too well known and we need to use far more advanced techniques to get some profit?

Ernie Chan said...

Hi Paul,
I have yet to find any nonlinear trading model that outperforms linear models out-of-sample. But that's just me. Maybe others have succeeded.
Ernie

Anonymous said...

Hi Ernie,

Many thanks for taking the time to answer our questions here.
I know your preferred tool for analysis and backtesting is Matlab. I have previously used Matlab but for the past couple of years I have mainly used Python. I assume you have tried or explored the option of switching to Python? What is your main motivation for sticking with Matlab?
For me the switch to python has increased my productivity. I use python for both running my live algorithms and for analysis. I find it very convenient to use the same language for both.

Thanks
Peter

Ernie Chan said...

Hi Peter,
The quant team in our firm uses multiple languages for research and execution: I use Matlab, 2 guys use Python, and my partner Roger uses C#. Each has its pros and cons.

I have a detailed comparison of Python vs Matlab and other languages in my new book. My preference for Matlab is not subjective: it is based on a performance comparison published by some econometricians - this paper is also cited in my book. In addition, I like the fact that whenever I have questions about how some obscure functions are used, I can get a professional programmer/researcher at Mathworks to answer within 24 hours, sometimes instantly over the phone.

Ernie

BrettMichael said...

Hi Ernie,

I have been trying to get the daily returns for a strategy that is rebalanced monthly. I'm sure you've done this before. How do you do it? Or can you guide me in the right direction as to how you do that?

obviously what I'm asking for is different than just taking the rebalanced weights and forward filling them to the next rebalance date.

Thoughts are more than appreciated!

Ernie Chan said...

Hi BrettMichael,
I am not sure I understand your difficulty of computing the daily returns of any strategy, whether they are rebalanced daily, monthly, or at all. The unlevered daily return of any strategy is just the P&L divided by the gross market value of the portfolio. How you allocate capital to different components of the strategy is immaterial.
Ernie

QuantWork said...

Hello Ernie,

I have a bit out of the topic question but kind of related to all your posts.

I have been a quant researcher for a while, and I want to spend my free time working on a quantitative trading solution and start by researching strategies. I know some people use the data from their office to do their own research, and though I could do that, I really do not want to. Hence from my point of view I could rather buy, rent, or use free data. I am choosing to start with free data, and invest on data at a later stage if I feel I can have an edge.

My first question would be: back when you started, were you able to work with purely daily data for say stocks or fx? Or were you working with intraday (paid) data from the start? Using close price should be doable in practice from my experience, but I usually work with pretty high frequency data and I really have interest in working on longer holding time models.

A secondary question derived from the first one is: do you think it is possible to get an edge from pure price data of an asset, or an asset class, index, or multi asset type? It is not clear to me why an edge using only the price data of a single stock would be justified, i.e. if there is a statistically significant edge for example, there is enough actors on the market to trade enough of a stock to immediately push the price to the extreme that would have been predicted as a trend. So at a retail/small fund level, there is no way to enjoy the ride. Any thought on this?

In a sense, I think that I need a touch more guidance, and I believe from reading your book that you have been through the same path in a sense. So I'd be happy if you could mentor, or help in any way, as I do not directly know any algorithmic trader.

Thanks a lot.

Ernie Chan said...

Hi QuantWork,
Sure, all the strategies that I traded in 2006 when I started as independent trader was based on daily data.

And yes, it is possible to generate alphas from price data alone. You can see that almost all strategies in my book Machine Trading are based on prices alone.

Ernie

Anonymous said...

Hi Ernie,

How do we set the position size to be inversely proportional to
each instrument's volatility in a portfolio?

Thanks.

Ernie Chan said...

If you portfolio contains assets 1, ..., N, and each has volatility v1, ..., vN, then you can set the capital allocated to each asset according to Ci=C/vi, where C=1/(1/v1 + ... + 1/vN). This is assuming the total capital is 1.

Ernie