Back to Community
Trading on 13-D Filings

We continue to add pipeline factors, making use of data from EventVestor. Our latest release uses 13-D filing data.

13-D filings are required by the SEC from anyone who acquires more than 5% of a publicly traded company.

One study in particular documents the information leakage that happens prior to 13D filings suggesting that:

Over 90% of the effect of the 13D filing on the target’s stock
price is realized prior to the filing. This implies little information
is revealed to the market when the 13D filing is made public, as most
of the information has already been leaked to the market.

And yet, there is still a small amount of drift that tends to follow the filing date. You can see a small positive average price drift for days after a 13D filing for every year starting in 2012. The strategy here attempts to capture that drift.

Note, 13D filings are different from 13F filings which occur on a quarterly basis from institutional investment managers with over $100 million in qualifying assets.

Strategy Details:

  • Data set: 13-D Filings by EventVestor
  • Weights: The weight for each security is determined by the total number of longs we have in that current day. So if we have 2 longs, the weight for each long will be 50% (1.0/number of securities). This is a rolling rebalance at the beginning of each day according to the number of securities currently held and to order.
  • Capital base: $1,000,000
  • Days held: Positions are currently held for 10 days but are easily changeable by modifying 'context.days_to_hold'
  • Trade dates: All trades are made 1 business day AFTER a 13-D Filing
  • Slippage and commissions in this backtest are set to 0.

For more examples using data, visit the data factor library.

Clone Algorithm
188
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: 572cefc8a0498e0f8c838eba
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.

25 responses

Just for informational purposes, here is the backtest curve with default commission/slippage including downtrending period as well.

Clone Algorithm
10
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: 5731c38e2142060f8bb31cf0
There was a runtime error.

@Mikko - Good find bro! Hypocrisy at its finest! haha

Here is a theory....

The post filing drift is sensitive to changes in overall market volatility from the date(s) in which the filing entity was acquiring their position relative to the day they filed. When risk (via VXX in this instance) is higher, the drift gets cut short. When risk is lower at time of the filing, the drift will have a more lasting effect and investors should stay in the stock longer.

Clone Algorithm
47
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: 57321493eacb3f0fa5936ff3
There was a runtime error.

That's very interesting Frank, so you look at the movement of VXX prior to trading in order to determine your holding period?

On another note, here's an event study based around 13D Filings.

Loading notebook preview...
Notebook previews are currently unavailable.
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.

Seong,

Thanks for the notebook. I will try to play around with it.

To answer your question, yes...Basically the idea was to measure VIX 10 days before the market filing, which I thought would generally characterize market risk during the time in which the firm was acquiring their position. If the company ultimately files their 13-D in a higher risk environment, then I would think less investors would follow suit (regardless of the idiosyncratic dynamics of the company), creating a shorter post filing drift.

I am not even sure if the code I added to the algo implements this logic properly, just thought I would provide a starting point for testing the theory.

Frank -

The volatility seems like a good idea. I think also what might be interesting is researching what the change in volume is and if it is higher than the average of other 13 D filings then maybe it would indicate that others are trading the news. I would code it, but don't know how. Go Eagles!

Raf,

Eagles? Heck yea buddy!!! If you wanna shoot me your email, I will give your thesis the ole college try (pun intended), and send you the algo via the collaboration feature on Quantopian.

That's very interesting Frank, so you look at the movement of VXX
prior to trading in order to determine your holding period?

On another note, here's an event study based around 13D Filings.

Shouldn't that case study be normalized? I mean the period is uptrending so it's not clear what the study is trying to present.

@ Mikko,

I am a little confused...which data should be normalized? I am playing with this study as we speak so I am looking for any way to mess around with it.

Thanks

@ Seong,

I am working through the "Icahn" example notebook provided by Q for the 13-D data, and hit an error on in the attached notebook that I just cant seem to fix. Any thoughts? (FYI - the only change I made was switching from the paid set to the free set). Do you have any thoughts on why the notebook printed on Q's end, but is throwing this error for me? I am not finding any clues in stack overflow or elsewhere. Seems like the .like thing is not happening on my end.

Thanks

Frank

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

I am a little confused...which data should be normalized? I am playing with this study as we speak so I am looking for any way to mess around with it.

Either the percentage change should be normalized to be relative to some index (sp500 for example) or the field that is displayed should be changed to show rank or percentile instead of raw percentage change. At the moment charts show only the raw percentage change but it's unclear what part of percentage change is actually related to filing and what part is due to correlation to overall market.

It would also be very important to have downtrending periods in the study as the impact could be very different for these periods (or the same, I have no idea). It would also be very interesting to see results clustered for differert kinds of companies, I would assume the impact will be different (or of different magnitude) for small caps and large caps for example.

Mikko,

So a chart for Beta to the Benchmark? And then a Fama-French 3 Factor Study?

What I would do is just replace the percentage change to percentile rank (no beta needed). And yes, Fama-French factors would be interesting but I would also check other factors (profitability and momentum for example).

Frank,

It seems like I am getting the same error as you are. I would suggest trying out this block of code:

# Since Carl Icahn is represented in several ways, we use `like` to capture all those ways  
names = _13d_filings[_13d_filings.acquiring_entity.like("*Icahn*")]  
# now let's filter down to the percentage of shares, timestamp, and sid  
names = names[['timestamp', 'percent_shares', 'sid', 'acquiring_entity']]  
# # When displaying a Blaze Data Object, the printout is automatically truncated to ten rows.  
names.sort('timestamp')  
names  

Seong

Seong,

Thanks, but that was the code block that was causing the error on my end. I just found a Blaze manual dated 5/2/16 (recent), and I think it led me to the solution. I will post the new code side by side with the old code in the next post. Below is the Blaze manual I am referencing. The solution was on page 12.

https://media.readthedocs.org/pdf/blaze/latest/blaze.pdf

Notebook is attached

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

Frank,

I've taken your algorithm and replaced the VIX ETF with the actual price of VIX and am comparing yesterday's VIX close price to the 30 day moving average to determine holding periods. That seems to improve the performance of the algorithm.

I've also left commissions & slippage to default settings.

Clone Algorithm
84
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: 57642e1a549dbf0f7ecab85d
There was a runtime error.

OOS results. My opinion is that this event is quite volatile to trade on and that there is quite a bit of room to use it as a risk factor as opposed to a trading signal (e.g. avoid trading a few days after a 13D filing as it will navigate the possible price overreaction during that time)

Clone Algorithm
84
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: 57642e1a549dbf0f7ecab85d
There was a runtime error.

Seong,

I agree. Thanks again for this work. It provides a lot of avenues for future study.

p.s. I have checked this thread a few times now and have not been able to view the embedded algo chart/metrics/code...

Frank

Frank, sorry about that. Here's a second try at uploading the new backtest. This contains the results up till 2016 so you'll need to adjust the dates for 2014 if you're using the sample data.

Clone Algorithm
84
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: 57642f0fb9a2e60f8ade6f7a
There was a runtime error.

Hi,

I am new here. This seem might like a very interesting strategy. But can you think of any reason why it has such a high beta? From what I am reading here, the essence of the strategy is that since 5 percent and above holding change obviously have a market impact on the prices (likely upwards), by following suit, one tries to time a good entry point into the security. If anything, I would imagine the return to be not so correlated with the general market and more alpha based. Maybe I am missing some there here.

Here's a version that strictly bets on mean reversion following a 13D filing. Due to the relative infrequency of 13D filings, it doesn't hold many positions at a time, and the long and short sides have much different position concentration due to the fact that both sides are forced to 50% total, but it might be interesting to try combining this with another strategy.

Default commissions and slippage are on.

Clone Algorithm
36
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: 5936e460261dd569674ecef4
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.

Great find Jamie!

Not much of an improvement, but here is the same strategy with a 10% position constraint. Results in a bit lower vol and drawdown.

Clone Algorithm
13
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: 5939b8a82ca2af6e3dcf30c4
There was a runtime error.

Thanks Cheng. The idea actually came from Mark Gaffney at ValueWalk who is putting together a content series on activist investing.

Is there any reason why we can't access a field such as .like(*icahn) in the backtester? I'd like to review some research in action, but it looks like you only allow a few factors via the pipeline unrelated to the fund buyer/seller.