请 [注册] 或 [登录]  | 返回主站

量化交易吧 /  量化平台 帖子:3365791 新帖:0

基于财报公布日期的策略

Tango发表于:5 月 9 日 18:22回复(1)

最近看到了一篇有关量化交易策略的博客,感觉思路很特别,和大家分享~自己尝试实现这个策略,感觉有点困难。。希望有大神能试试实现出来!!

博客中提到,现在已经有很多策略是基于公司财报公布后的活动,但很少有策略考虑到财报发布前公司的情况。于是博客就举了两篇关于这方面研究的论文。第一篇提出的策略没有用到任何实际的公司收益,只用了财报发布日期以及股价变动情况。

具体的策略是这样的:
1)找出Russell 3000指数中股票的预期财报发布日,设为t。

2)计算从t-4到t-2时间段这只股票的收益率(只考虑交易日)。

3)从2)中求出的收益率中减去同时间段的市场指数收益率,即市场调整后收益率,记为PAR。

4)选出PAR最高的18只股票,在t-1天市场收盘时卖空,t 1天市场收盘时清算。对于PAR最低的18只股票,则进行相反的操作。同时再利用市场指数ETF或者期货进行对冲。

这篇博客利用这个策略回测Russell 3000指数中的股票(2011年8月3日到2016年9月30日),得到复合年均增长率为9.1%,夏普率为1,具体收益图如下。
preEarningsReversal2_plot.jpg

但这个策略存在一个问题,那就是公司有时候会改变它们的预期财报发布日期,于是博客提到了第二篇论文。

具体的策略是这样的:
1)(这一步我也没太看明白,就强行翻译了一下..)在预期财报公布日前的市场收盘时,计算下一个公布的财报的预期公布日的最近一次改变,用天计量,记为deltaD。如果公司把预期公布日推迟了,deltaD>0,如果提早了,deltaD< 0。

2)计算从预期公布日最近一次改变到与1)相同的市场收盘时间所经过的时间,记为deltaU,同样也用天来衡量。

3)如果deltaD< 0,deltaU< 45,在市场收盘时买入这只股票,并在第二天市场开盘时卖出。如果deltaD>0并且deltaU>=45,就进行相反的操作。

这个策略背后的含义是这样的:
如果一个公司把它的预期财报公布日提前了,特别是这发生在距离财报公布日很近时,那这说明就是一个好消息。

论文的作者利用这个策略得到的复合年均增长率为14.95%,夏普率为2.08.

这篇博客在说明自己的回测结果前,提到为了重现这个结果,必须遵循以下资产配置公式:假设总购买力为M,市场收盘时交易信号的数量为n,如果n<=5,每只股票的交易大小为M/5,如果n>5,则为M/n。

然后博客利用这个策略回测了标普500指数(2011年8月3日到2016年9月30日),最终得到的回测结果是,复合年均增长率为17.61%,夏普率为0.6.若用Russell 3000指数,结果会更好,复合年均增长率为17.6%,夏普率为0.6,具体收益图如下。
preEarningsReversal2_R3K_plot.jpg

欢迎大家提出自己的想法,交流一下哈哈~

Pre-earnings Announcement 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 i* 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 h*e 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 h*e 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.

 

全部回复

0/140

达人推荐

量化课程

    移动端课程