联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-23:00
  • 微信:codinghelp

您当前位置:首页 >> Python编程Python编程

日期:2024-10-12 10:07

FINM8006 Advanced Investment Assignment

Due 11/10/2024

1 Chinese A-Share Market

Stock market in China is often said to be heavily inffuenced by individual traders.

Size and liquidity therefore are long suspected to play important roles in Chinese

A-share market. Mutual fund industry has been developing in the recent years,

especially after 2016. In this exercise, we will analyze the Chinese market from

2012 to 2022.

1.1 Data Description

The data folder contains two zipped (.gz) csv ffles.

• monthly_returns_cn.csv.gz contains monthly stock and market returns

for stocks on Chinese market from 2010 to 2022.

– stkcd: stock code

– month: date of monthly end date

– ret: stock return

– mktret: market return

– rf: risk free rate

• monthly_characteristics_cn.csv.gz contains ffrm characteristics of

the shares traded each month from the market and earnings announcements.

stkcd: stock code

– priormonth: end of the month date when characteristics information

is known

– market_value: market cap (value) of stock in the month

– ep: EP ratio calculated as earnings divided by market cap

– amihud: average Amihud measure in a month. Amihud measure is a

measure of stock illiquidity, calculated as stock price change divided

by trading volume. The higher the value the lower a stock’s liquidity.

1.2 Your Tasks

11.2.1 Mean Variance

Suppose you inherited an amount of money (M) at the end of year 2020 and want

to invest it in a basket of stocks and risk free asset at the beginning of 2021.

stkcds of the stocks in your basket are ['600519', '002594', '002415',

'000333'] and the risk free rate is known at the beginning of 2021. You have

CRRA utility function of risk aversion    = 3. You estimate the return characteristics

using data in the last 3 years prior to 2021.

1. What is your optimal share of M to invest in the stock basket?

2. What is the optimal share of M to invest in each stock if you decide to do

mean-variance investing?

3. What are the returns you expected to get and you will actually get (from

M, consider only the stock returns) in January 2021?

4. If you compose your stocks in the basket based on their relative market

caps at the end of 2020, what return (from M, consider only the stock

returns) in January 2021 will you get?

1.2.2 CAPM BETA

For each stock and month starting from January 2012, use the prior 24 month

to estimate CAPM   . You will require a ffrm-month to have at least 12 months

of prior data to estimate, otherwise the ffrm-month will be dropped from the

portfolio. From now on, your data will be ffrms with legitimate beta and other

characteristics information.

For each month starting from 2012, form 10 portfolios according to their CAPM

 , then plot the average realized monthly excess return against the average  

for the 10 portfolios. Add the CAPM line also to your graph. Please comment

on the graph you produce, what kind of the stocks are likely to be overvalued

or undervalued.

1.2.3 Size and EP Ratio

For each month starting from 2012, form 25 (5x5) portfolios by sorting stocks

according to size (proxied by market value) and EP ratio. Stock characteristics

in a month is its characteristics in the prior month. Calculate the value-weighted

returns and betas. Produce a within-size plot and a within-PE plot for the 25

portfolios by plotting mean excess return against CAPM as in the lecture notes.

Comment on your graphs.

1.2.3.1 Size and EP factors

You will divide your stocks into 6 (2X3) portfolios according to size and EP.

Returns in the portfolios are value-weighted. Then you will form your SMB

(size) factor by longing the equally-weighted portfolios of small stock portfolios

2and shorting the equally-weighted portfolios of big stock portfolios, form your

HML (EP) factor by longing the equally-weighted portfolios of high EP stock

portfolios and shorting the equally-weighted portfolios of low EP stock portfolios.

Plot the cumulative factor returns along with the cumulative market excess

return.

Run multi-factor models of market excess return, SMB and HML for each of the

25 portfolios you formed earlier, and get the factor loading. Produce within-size

and with-EP plots by plotting average portfolio excess returns against average

model predicted excess returns. You get model predicted excess returns from

factor loading and mean factor returns. Has the multi-factor loading improved

the model prediction?

1.2.4 Liquidity Premium

Is there liquidity premium and What is its dynamics? Let’s examine. In addition

to the 2X3 sorting, we also sort independently into 5 portfolios according

to amihud. That is, we sort stockings into 2X3X5 portfolios of size, EP and

liquidity. Again, portfolio returns are value weighted. Finally, we form liquidity

premium by longing the equally-weighted portfolios of high illiquidity

stock portfolios and shorting the equally-weighted portfolios of low illiquidity

stock portfolios. Calculate the time-series of liquidity premium, and plot the

cumulative returns of the premium. Comment on the graph you get.

1.3 Python Notes

You can use pandas to read zipped csv ffles. Notice that stkcd is a str, and

month is a date, they need to be speciffed in reading to have the correct data

type, such as the following:

monthly_returns = pd.read_csv('monthly_returns_cn.csv.gz',

parse_dates=['month'], dtype={'stkcd':'str'})

You will need statsmodels for regression. For rolling regression, you can use

a for loop as the backtesting workshop, or use RollingOLS in statsmodels.

To calculate things by group, the groupby method of pandas will be useful.

You can use apply following groupby to get results in a new data frame, or use

transform to add the results to the existing dataframe. Please see lecture notes

and pandas documentation online for details.

qcut method of pandas is handy for ffnding the cutoff and sorting dataframe

into groups. The following lambda function, when applied to x, put 10 group

labels, size0…size9 according to x.

lambda x: pd.qcut(x, 10, labels=['size'+str(x) for x in range(10)], retbins=False)

3


版权所有:留学生编程辅导网 2020 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:codinghelp