Examine reasons for dropping activist directors
Closed this issue · 5 comments
I suspect that most cases with activist directors belong in our sample. I think it would be useful to investigate to work out which criteria cause the cases below to be excluded from activism_sample
. Perhaps we should tweak the criteria to include these.
library(DBI)
library(dplyr, warn.conflicts = FALSE)
pg <- dbConnect(RPostgres::Postgres(), bigint = "integer")
rs <- dbExecute(pg, "SET search_path TO activist_director, public")
activist_directors <- tbl(pg, "activist_directors")
activism_events <- tbl(pg, "activism_events")
sharkwatch <- tbl(pg, sql("SELECT * FROM factset.sharkwatch"))
dissidents <- tbl(pg, sql("SELECT * FROM factset.dissidents"))
sw_all <-
sharkwatch %>%
inner_join(dissidents)
#> Joining, by = "campaign_id"
campaign_ids <-
activism_events %>%
select(campaign_ids) %>%
mutate(campaign_id = unnest(campaign_ids))
missing_ads <-
activist_directors %>%
anti_join(campaign_ids, by="campaign_id") %>%
inner_join(sw_all, by="campaign_id")
missing_ads %>% select(1:5)
#> # Source: lazy query [?? x 5]
#> # Database: postgres [igow@iangow.me:5432/crsp]
#> campaign_id first_name last_name appointment_date permno
#> <int> <chr> <chr> <date> <int>
#> 1 1073545271 Brian Kahn 2014-05-20 10517
#> 2 1073545271 Matthew Avril 2014-07-09 10517
#> 3 874133648 Adam Mizel 2009-03-19 89889
#> 4 474991507 Robert Davis 2013-01-29 90643
#> 5 1073546346 Jeffrey Smith 2015-11-12 89217
#> 6 1073545702 John Schneider 2014-12-03 85272
#> 7 821236602 Nicholas Swenson 2012-06-05 11368
#> 8 1073544876 Nicholas Swenson 2012-06-05 11368
#> 9 1073544876 William Foudray 2013-06-12 11368
#> 10 1073544876 Seth Barkett 2013-06-12 11368
#> # ... with more rows
missing_ads %>% count()
#> # Source: lazy query [?? x 1]
#> # Database: postgres [igow@iangow.me:5432/crsp]
#> n
#> <int>
#> 1 869
missing_ads %>%
count(dissident, holder_type) %>%
arrange(desc(n))
#> # Source: lazy query [?? x 3]
#> # Database: postgres [igow@iangow.me:5432/crsp]
#> # Groups: dissident
#> # Ordered by: desc(n)
#> dissident holder_type n
#> <chr> <chr> <int>
#> 1 Steel Partners, L.L.C. Hedge Fund Company 33
#> 2 Lloyd I. Miller, III Individual 14
#> 3 Shareholder Advocates for Value Enhancement Named Stockholder Gr… 13
#> 4 Vintage Capital Management LLC Other Stake Holders 11
#> 5 The Singer Children's Management Trust Other Stake Holders 9
#> 6 Leap Tide Capital Management LLC Hedge Fund Company 8
#> 7 Wynnefield Capital Management LLC Hedge Fund Company 8
#> 8 ValueAct Capital Management LP Hedge Fund Company 8
#> 9 AMG Investments LLC Other Stake Holders 7
#> 10 Relational Investors LLC Investment Adviser 7
#> # ... with more rows
dissidents %>%
filter(dissident=="Lloyd I. Miller, III") %>%
select(campaign_id) %>%
inner_join(dissidents) %>%
group_by(campaign_id) %>%
summarize(dissidents = sql("array_agg(dissident ORDER BY dissident)")) %>%
count(dissidents) %>% arrange(desc(n))
#> Joining, by = "campaign_id"
#> # Source: lazy query [?? x 2]
#> # Database: postgres [igow@iangow.me:5432/crsp]
#> # Ordered by: desc(n)
#> dissidents n
#> <S3: pq__text> <int>
#> 1 "{\"Lloyd I. Miller, III\"}" 34
#> 2 "{\"Lloyd I. Miller, III\",\"The Singer Children's Management Tru… 4
#> 3 "{\"Dialectic Capital Management LP\",\"Lloyd I. Miller, III\",\"… 2
#> 4 "{\"David S. Oros\",\"Lloyd I. Miller, III\",\"Sherman Capital Gr… 2
#> 5 "{\"Dr. Gerard Soula\",\"Dr. Raymond E. McKee\",\"Lloyd I. Miller… 1
#> 6 "{\"Lloyd I. Miller, III\",\"Riley Investment Management LLC\"}" 1
#> 7 "{\"Lloyd I. Miller, III\",\"The Singer Children''s Management Tr… 1
#> 8 "{\"Celeritek Shareholder Protective Committee\",\"Kenneth Potash… 1
dissidents %>%
filter(dissident=="Lloyd I. Miller, III") %>% distinct(campaign_id) %>%
inner_join(activist_directors) %>%
select(campaign_id, last_name, first_name, appointment_date, independent) %>%
arrange(appointment_date) %>% print(n = Inf)
#> Joining, by = "campaign_id"
#> # Source: lazy query [?? x 5]
#> # Database: postgres [igow@iangow.me:5432/crsp]
#> # Ordered by: appointment_date
#> campaign_id last_name first_name appointment_date independent
#> <int> <chr> <chr> <date> <lgl>
#> 1 334725505 Miller Lloyd 2006-10-25 FALSE
#> 2 612559302 Miller Lloyd 2007-04-25 FALSE
#> 3 612559302 Miller Lloyd 2007-04-25 FALSE
#> 4 1067206660 Miller Lloyd 2008-03-06 FALSE
#> 5 550820727 Donahue Todd 2008-09-12 TRUE
#> 6 550820727 Hughes Joel 2008-12-08 TRUE
#> 7 550820727 Hughes Joel 2008-12-08 TRUE
#> 8 386011014 Howe Alan 2010-08-23 TRUE
#> 9 1009091226 Pons Robert 2011-10-17 TRUE
#> 10 941956423 Pons Robert 2012-07-23 TRUE
#> 11 941956423 Singh Dilip 2012-07-23 TRUE
#> 12 1015748210 Gallenberger Mark 2013-01-31 TRUE
#> 13 1015748210 Howe Alan 2013-01-31 TRUE
#> 14 1073546425 Brodsky Michael 2015-11-05 TRUE
Created on 2018-10-22 by the reprex package (v0.2.0).
Not clear why Joel Hughes is duplicated in the table above. Is this common?
We lost a variable "holder_type" in factset.sharkwatch
We only have 1,951 activism_events in activist_director.activism_events. I am not sure what happened. I think the changes in filter would have caused this very recently.
We lost a variable "holder_type" in
factset.sharkwatch
activist_director/code/create_activism_sample.R
Lines 17 to 23 in f7a96b2
The initial filter we used in the beginning would have been different so we collected a bigger set of activist directors. I confirm three main reasons for these activist director being dropped.
(1) eff_announce_date > dlstdt: The company was delisted prior to activism announcement.
(2) eff_announce_date before 2004: The activism events were announced before 2004.
(3) 13D Filer - No Publicly Disclosed Activism.
So I believe the activist director sample is comprehensive and complete.
WITH dropped_cases AS (
SELECT DISTINCT a.campaign_id
FROM activist_director.activist_directors AS a
LEFT JOIN activist_director.activism_sample AS b
ON a.campaign_id=ANY(b.campaign_ids)
WHERE b.permno IS NULL),
matched_cases AS (
SELECT a.*, b.cusip_9_digit, b.company_name, b.dissident_group, b.country, b.state_of_incorporation, b.factset_industry, b.s13d_filer, b.proxy_fight, c.holder_type, b.announce_date, b.activism_type, date_original_13d_filed, d.permno
FROM dropped_cases AS a
INNER JOIN factset.sharkwatch AS b
ON a.campaign_id=b.campaign_id
INNER JOIN factset.dissidents AS c
ON b.campaign_id=c.campaign_id
LEFT JOIN factset.permnos AS d
ON substr(b.cusip_9_digit,1,8)=d.ncusip
WHERE country='United States'
AND activism_type != '13D Filer - No Publicly Disclosed Activism' --Reason 1
AND least(date_original_13d_filed, announce_date) BETWEEN '2004-01-01' AND '2016-12-31' -- Reason 2
ORDER BY permno, dissident_group),
filtered AS (
SELECT DISTINCT campaign_id, a.permno, company_name, dissident_group, dlstcd, dlstdt, LEAST(announce_date, date_original_13d_filed) AS eff_announce_date
FROM matched_cases AS a
LEFT JOIN crsp.msedelist AS b
ON a.permno=b.permno
ORDER BY permno, dissident_group)
SELECT *
FROM filtered
WHERE eff_announce_date <= dlstdt -- Reason 3