辅导案例-MGFD40

欢迎使用51辅导,51作业君孵化低价透明的学长辅导平台,服务保持优质,平均费用压低50%以上! 51fudao.top
MGFD40
Investor Psychology and Behavioral Finance
Final Group Project Guidelines
Charles Martineau∗
March 2, 2020
∗Martineau: UTSC Management, University of Toronto, 1095 Military Trail, Toronto ON, Canada, M1C
1A4 ([email protected]).
This note details your final project for this course. This project is worth 40% of your final
grade.
1 Objectives
Your team just got hired to work at a hedge fund to examine price changes around corporate
news events. You must be able to understand how the events impact stock prices and whether
there are any profitable trading opportunities.
You have two main tasks:
1. Examine price formation around earnings announcements after conditioning on earn-
ings surprises and the sentiment in corporate press releases.
2. Propose a trading strategy based on an event study or a long-short portfolio strategy.
You will have to explain to me your hypothesis, your empirical methodology (data,
time-period, implementation), and hopefully you can attempt a back-testing of your
proposed strategy.
The details ...
Task 1: I will supply to each group a randomized list of 100 stocks (CRSP-PERMNOs).
The stocks will be selected from the S&P 1500 index. For each stock, you will have the
earnings surprise associated with each quarterly earnings announcement for the year of 2017.
I will also supply the date and time of the earnings announcement. In total, you will have
approximately 400 quarterly earnings announcements.
1. Provide a descriptive statistic table that contains the mean daily returns on earnings
announcement dates by earnings surprise quintile as well as the number of observations
per quintile.
1
2. Calculate the average buy-and-hold abnormal returns (BHAR) around earnings an-
nouncements by earnings surprise quintile. To calculate buy-and-hold abnormal re-
turns for firm earnings announcement i from day τ to T (τ < T ), do
BHAR[τ, T ]i =
T∏
k=τ
(1 +Ri,k)−
T∏
k=τ
(1 +Rm,k),
where Ri,k is the daily return of firm earnings announcement i and Rm,k is the market
return on day k.
(a) Plot the average buy-and-hold abnormal returns 21 trading days before to 60 trad-
ing days following the earnings announcement by earnings surprise quintile. Day 0, is
the earnings announcement date! Make sure your plot x-axis and y-axis are correctly
labeled and include a title to your figure. Make sure your x-axis ticks are also labeled
correctly.
Hints on getting you started:
• The earnings announcements generally occurs overnight, that is between 4 p.m.
to 9:30 a.m. the following trading day. Because daily returns are calculated from
4 p.m. to the next day 4 p.m., you may have to adjust the earnings announcement
date to the next business day if it occurs between 4 p.m. to 11:59 p.m. You must
learn in Python how to shift a date to the next business day – not calendar day!
• Create the earnings surprise quintile using the function “pd.qcut” applied to
the earnings announcement data file. For example, for a quintile sort, you do
“pd.qcut(df[‘Surprise’], 5, labels=False)”. Apply the function only on observa-
tions occurring in 2017, that is, keep only the data that occurs in 2018, so: data
= data[data[‘year’] == 2017] then apply the qcut command.
• Keep only the firms in your earnings announcement data that are selected by me
(the PERMNOs).
• In the same file, create a column called “EA” that is equal to 0 everywhere.
• In the CRSP file, keep only the firms that you need (the firms that are in your
2
sample provided by me), discard the rest.
• Just keep the columns PERMNO, earnings surprises, earnings surprise quintile,
and EA in the earning announcement dataset.
• Then merge the earnings announcement data file for your 400 or so earnings
announcements into the daily return file.
• In the daily returns file, keep only the trading dates −21 to +60 around the
earnings announcement, where day 0 is the earnings announcement date. To do
so, use the column “EA” that you have previously calculated, which for now only
has the value == 0 if it is the earnings date and create values for EA from −21
to +60.
• Then you apply the above formula to calculate the BHAR.
• Then you can calculate the average BHAR across stocks by earnings surprise
quintiles on each day by doing the following: “df.groupby([‘SurpriseQuintile’,
‘EA’])[‘BHAR’].mean()”
(b) Describe what you find from the figure. For example, do you find any evidence of
potential insider trading before earnings announcement? Do you find any evidence of
slow price formation following the announcement?
3. How much do earnings surprise explain the price variation (the R2) on earnings an-
nouncement day? To do this, simply run the following regression:
Abnornal Returni,t = α + βEarnings surprisei,t + errori,t
The abnormal return is simply the stock return Ri,0 of stock i minus the market return
Rm,0 on the earnings announcement date. Report the regression output. Is the R
2
high or low in your opinion? Did you expect that earnings surprise would fully explain
the price variation on earnings announcement days?
4. Among your sample of earnings announcements, select a subset of earnings announce-
ments (100) for which you will have to do textual analysis on the press releases OR
3
conference calls (easily retrievable from FactSet) of the earnings announcement. The
majority of firms release their earnings announcements news through press releases via
newswire companies (PR Newswire, BusinessWire, and Marketwired). Copy paste the
transcript of the press releases in a .txt file. Create a sentiment score on each transcript
by applying the Loughran-McDonald sentiment dictionary. NOTE: I recommend that
you label each of your .txt files as follow PERMNO TICKER YYYYMMDD.txt
(a) Provide a visual representation of the distribution of this sentiment score and a
descriptive statistic table.
(b) Run the following regression:
Earnings surprisei,t = α + βSentimenti,t + errori,t.
Report the regression output. Do you find that the sentiment score and the earnings
surprise to be highly correlated?
(c) Run the following regression:
Abnornal Returni,t = α + β1Earnings surprisei,t + β2Sentimenti,t + errori,t
Report the regression output.
(d) Relative to your results in 2(a), do you find that the sentiment score helps to better
explain stock return movements on earnings announcement dates?
(e) Could you suggest an improvement to the regression model above? Hint : Add the
interaction between the earnings surprise and the sentiment score into the regression
model.
5. Sort your stocks based on the sentiment scores for earnings announced in January,
April, July, and October only. Sort by forming 3 quintiles - in total, you have 4 sorts.
Form and equal and value-weighted portfolios for the top and bottom quintiles using
monthly returns in February, May, August, and November. Do high sentiment stocks
outperform the low performing stocks?
6. Pick 4 to 6 corporate news event of your choice (the number depends on the number
4
of people in each group). These news events should be “unanticipated” by the general
public. These events can include the death of a CEO, mergers announcement, product
launch, etc. Plot the buy-and-hold returns around each of these announcements, sep-
arately (i.e., 4 to 6 plots), 5 days before to 5 days after. These events can be for any
stocks you wish (not necessarily in your sample of 100 firms).
(a) Do you find that markets anticipated these events? Was there any evidence of
insider trading before the announcement? Do a Google search to find news articles
suggesting potential insider trading or rumors hinting to a potential important news
announcement. Be creative and have fun with this question.
Task 2: Propose a trading strategy based on an event study or a long-short portfolio
strategy. You will have to explain:
• The hypothesis, i.e., what are you testing?
• The empirical methodology (data, time-period, implementation).
• What are your assumptions and potential foreseeing difficulty at attempting this strat-
egy?
• Attempt a back-testing of your proposed strategy (if possible).
Please do not pick momentum or contrarian strategies as explained in class. You can use
however the Python code that I posted on Quercus for momentum to generate insights.
I am also fine with return predictability in the time-series. If so, please do a in- and
out-of-sample regression.
IMPORTANT: Find academic studies that support or can explain why your trading
strategy might work.
Be creative and have fun with this question. I don’t expect a full implementation of your
strategy but try to attempt it at a small scale or provide some descriptive statistics in support
5
or against your hypothesis. I encourage you to think of new data sources. This question is
worth 30% of your final grade of the written component for this group project (out of 30
marks, hence 9 marks).
1.1 Divide the tasks
This is a big group project, and difficult for those with no coding experiences. Therefore,
you should split the tasks optimally.
• One student should start thinking and work on Task 2 right away.
• 1 or 2 students should start collecting the press releases OR conference calls.
• 1 or 2 students should be doing Task 1 right away.
6
2 Evaluation
Your evaluation will consist of three parts:
1. Python code - 5 points - Graded on the cleanliness of your code and I must be able to
run the code. Therefore, you must submit your data.
2. Presentation - 5 points
3. Written report - 30 points
Python code
I must be able to run your code to examine your overall analysis without any error. Your
code must be easily readable even if I do not run the code. Use comments to explain your
line of codes. When you send me your code, please send me a zip of the .txt files of the press
releases or conference calls and any data you have used.
Presentation
Each group has 8 minutes for the presentation. For the presentation, there is no restriction
on the format as well as the number of presenters.
The presentation is on the last class. I want a copy of your slides before your
presentation. Your written report and a copy of your python code (both hard copy and
actual Python file) is due one week later. Also, submit your written report and Python code
by email.
Written report
The written group project report should not exceed 6 pages. However, you can include large
tables, figures, and diagrams in the appendix. There is no limit of pages for the appendix.
2.1 Peer evaluation form
To make sure that free-riding within the group is “detected”, “monitored” and “reflected”
in the grades, each group member can submit a peer evaluation form (not an obligation)
that is posted on Quercus. This form must be submitted to me, by email, before or on the
due date of the written report. Only I can see the peer evaluation form.
7
3 Supplied data
I will supply you with two datasets:
1. Earnings announcements dates and the earnings surprise (the “news”). The file is
called “Undergrad D40 IBES SUE 2016 2018 v01.csv.gz”.
Description of the variables:
• PERMNO: firm unique identification for CRSP
• IBES TICKER: Stock ticker symbol (of IBES)
• GVKEY: firm unique identification for COMPUSTAT
• CNAME: Company name
• IBES Timestamp: Date and time of the press release
• Year: Year of the announcement
• SUE Med: Analyst earnings surprises (i.e., EPS minus expected EPS divided by
stock price)
• ADJ ACTUAL: The earnings announced by the firm
• numest: number of analyst forecasts
• gsector: GIC industry sector code. For the GIC codes definition, see https:
//en.wikipedia.org/wiki/Global_Industry_Classification_Standard
• sp1500: is equal to 1 if a firm belongs to the S&P 1500
• sp500: is equal to 1 if a firm belongs to the S&P 500
• date: daily trading date
2. Daily stock returns from 2016 to 2018. The file is called “Undergrad D40 CRSP 2016 2018 v01.csv.gz”
Description of the variables:
• date: Observation date - daily
8
• PERMNO: firm unique identification
• TICKER: CRSP stock ticker symbol
• COMNAM: Company name
• PRC: End of month stock price
• VOL: Number of trade shares
• RET: Daily stock return (calculated from 4 p.m. on t− 1 to next day 4 p.m. on
day t)
• SHROUT: Number of shares outstanding
• Mkt-RF: Market excess return
• Mkt: Market return
• SMB: Small-minus-big factor
• HML: High-minus-low factor
• RF: Risk-free rate
9
51作业君

Email:51zuoyejun

@gmail.com

添加客服微信: abby12468