FINM8006辅导 、讲解 Python编程设计
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