[SOLVED] python Week 02-3 CAPM

$25

File Name: python_Week_02-3__CAPM.zip
File Size: 207.24 KB

5/5 - (1 vote)

Week 02-3 CAPM

Capital Asset Pricing Model
Capital asset pricing model is a simple linear model that assumes in eqilibrium the relationship between a singal asset $i$ and the market (benchmark) can be written as:

$$R_i r = alpha + beta R_m r + epsilon$$where $r$ is the risk-free rate.

The coefficient $beta$ indicates the risk level of the asset comparing to the market. For $beta = 2$, the asset is twice the riskier comparing to the market. The coefficient $alpha$ indicates the abnormal return from this specific asset. For sigle name stock, $alpha$ is typically very noisy; therefore, $alpha$ is mostly used for fund analysis which is more stable through diversification.

CAPM is a linear regression model built on asset excess return (risk premium). So the CAPE represents higher returns to compensate for incurring risk. We will use 3-month Treasury bill rate as the risk-free rate $r$.

Import Packages

In[6]:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import quandl

from statsmodels import regression

%matplotlib inline

ImportError Traceback (most recent call last)
in ()
2 import numpy as np
3 import pandas as pd
-> 4 import quandl
5
6 from statsmodels import regression

ImportError: No module named quandl

Getting Data
https://www.quandl.com/ has free data.

In[7]:

start_date = 2014-06-30
end_date = 2015-06-30

# We will look at the returns of an asset one-month into the future to model future returns.
offset_start_date = 2014-07-31
offset_end_date = 2015-07-31

df_msft = quandl.get(GOOG/NASDAQ_MSFT, authtoken=8Xr8PVKcumcx-kaTYaWs)
df_spy = quandl.get(GOOG/NYSE_SPY)
df_treasury = quandl.get(USTREASURY/BILLRATES)

NameError Traceback (most recent call last)
in ()
6 offset_end_date = 2015-07-31
7
-> 8 df_msft = quandl.get(GOOG/NASDAQ_MSFT, authtoken=8Xr8PVKcumcx-kaTYaWs)
9 df_spy = quandl.get(GOOG/NYSE_SPY)
10 df_treasury = quandl.get(USTREASURY/BILLRATES)

NameError: name quandl is not defined

In[8]:

start_date = 2011-12-30
end_date = 2015-12-31

df_tbill = df_treasury[start_date:end_date][4 Wk Bank Discount Rate] / 100
df_data = pd.DataFrame(index=df_tbill.index)
df_data[T Bill] = df_tbill

df_data[MSFT] = df_msft[start_date:end_date][Close].pct_change().dropna() df_data[T Bill]
df_data[SPY] = df_spy[start_date:end_date][Close].pct_change().dropna() df_data[T Bill]

NameError Traceback (most recent call last)
in ()
2 end_date = 2015-12-31
3
-> 4 df_tbill = df_treasury[start_date:end_date][4 Wk Bank Discount Rate] / 100
5 df_data = pd.DataFrame(index=df_tbill.index)
6 df_data[T Bill] = df_tbill

NameError: name df_treasury is not defined

In[9]:

df_data[Constant] = pd.TimeSeries(np.ones(len(df_data.index)), index=df_data.index)
df_data = df_data.dropna()
df_data.tail()

NameError Traceback (most recent call last)
in ()
-> 1 df_data[Constant] = pd.TimeSeries(np.ones(len(df_data.index)), index=df_data.index)
2 df_data = df_data.dropna()
3 df_data.tail()

NameError: name df_data is not defined

Computing CAPM Model.

In[5]:

OLS_model = regression.linear_model.OLS(df_data[MSFT], df_data[[Constant, SPY]])
fitted_model = OLS_model.fit()
print(p-value, fitted_model.f_pvalue)
print(fitted_model.params)
R1_params = fitted_model.params

#OLS_model = regression.linear_model.OLS(df[R2], df[[SPY, RF, Constant]])
#fitted_model = OLS_model.fit()
#print p-value, fitted_model.f_pvalue
#print fitted_model.params
#R2_params = fitted_model.params

NameError Traceback (most recent call last)
in ()
-> 1 OLS_model = regression.linear_model.OLS(df_data[MSFT], df_data[[Constant, SPY]])
2 fitted_model = OLS_model.fit()
3 print(p-value, fitted_model.f_pvalue)
4 print(fitted_model.params)
5 R1_params = fitted_model.params

NameError: name regression is not defined

Rolling Regression and CAPM

In[]:

model = pd.stats.ols.MovingOLS(y = df_data[MSFT], x=df_data[[Constant, SPY]],
window_type=rolling,
window=252)
rolling_parameter_estimates = model.beta
rolling_parameter_estimates[SPY].plot();

plt.hlines(R1_params[SPY], df_data.index[0], df_data.index[-1], linestyles=dashed, colors=blue)

plt.title(CAPM Beta for MSFT)
plt.show()
#plt.legend([Market Beta, Risk Free Beta, Intercept, Market Beta Static, Risk Free Beta Static, Intercept Static]);

Reviews

There are no reviews yet.

Only logged in customers who have purchased this product may leave a review.

Shopping Cart
[SOLVED] python Week 02-3 CAPM
$25