- 选择5只在上交所上市交易的股票的月度收益率(近10年);
- 对每只股票估计CAPM模型和Fama-French五因子模型,解释估计量的金融含义;
- 从两个模型的估计结果,你能得到哪些结论?
method1:通过url下载(网易财经提供的数据)
浦发银行
http://quotes.money.163.com/service/chddata.html?code=0600000&end=20201231&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;TURNOVER;VOTURNOVER;VATURNOVER;TCAP;MCAP
中国人寿
http://quotes.money.163.com/service/chddata.html?code=0601628&end=20201231&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;TURNOVER;VOTURNOVER;VATURNOVER;TCAP;MCAP
中国银行
http://quotes.money.163.com/service/chddata.html?code=0601988&end=20201231&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;TURNOVER;VOTURNOVER;VATURNOVER;TCAP;MCAP
工商银行
http://quotes.money.163.com/service/chddata.html?code=0601398&end=20201231&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;TURNOVER;VOTURNOVER;VATURNOVER;TCAP;MCAP
广电网络
http://quotes.money.163.com/service/chddata.html?code=0600831&end=20201231&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;TURNOVER;VOTURNOVER;VATURNOVER;TCAP;MCAP
沪深300(作为市场基准)
http://quotes.money.163.com/service/chddata.html?code=0000300&end=20201231&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;TURNOVER;VOTURNOVER;VATURNOVER;TCAP;MCAP
XD东方证(国债股票,作为无风险资产)
http://quotes.money.163.com/service/chddata.html?code=0600958&end=20201231&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;TURNOVER;VOTURNOVER;VATURNOVER;TCAP;MCAP
PS:如果想得到其他股票的数据,直接对以上url进行修改即可
举例:
http://quotes.money.163.com/service/chddata.html?code=0601398&end=20201231&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;TURNOVER;VOTURNOVER;VATURNOVER;TCAP;MCAP
PS in PS:如果需要收集多支股票的数据,可自行设计爬虫,下面给出参考(拼接字符串,然后get,get和handle res的方式每种语言不一样,自行设计):
var url = "";
var urlHead = "http://quotes.money.163.com/service/chddata.html?code=0";
var urlBody = "&end=";
var urlTail = "&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;TURNOVER;VOTURNOVER;VATURNOVER;TCAP;MCAP";
var dataCode = 600000;
// for example: nums == 10, date == 20201231
var nums = 10;
const date = 20201231;
for (var i = 0, i <= nums, i++) {
dataCode ++;
url = "" + urlHead + datatCode + url + urlBody + date + urlTail;
// TODO:
// get urls you have just spliced and save the result as csv format
}
method2:使用stata中的第三方命令获取数据(比较方便)
在stata命令窗口依次输入如下命令:
ssc install cntrade, replace
cntrade 601398
处理数据:
// TODO:
// your command here to process the data you have just downloaded
效果:
上述两个命令运行完成后,再打开数据编辑器,可以看到数据已经拉下来了:
CAPM formula:
E ( R i ) = R f + β i ( R m − R f ) E(R_i)=R_f+β_i(R_m-R_f) E(Ri)=Rf+βi(Rm−Rf)
o r or or
E ( R i ) − R f = β i ( R m − R f ) E(R_i)-R_f=β_i(R_m-R_f) E(Ri)−Rf=βi(Rm−Rf)
Formula specification:
在本次实验中各参数的对应(!note:我这里就直接用日收益率了,实验要求的是月收益率):
感觉国债那个选的不对,XD这个名字就感觉不靠谱,换成了000012(国债指数),url如下:
http://quotes.money.163.com/service/chddata.html?code=0000012&end=20201231&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;TURNOVER;VOTURNOVER;VATURNOVER;TCAP;MCAP
需要三个数据文件(从左→右依次为:吉比特数据[作为 R i R_i Ri],沪深300数据[作为 R m R_m Rm],国债指数数据[作为 R f R_f Rf]):
打开一个文件(下图为工行的数据,真实的实验中用的是吉比特的数据),应该要的是日期数据和第10列数据[PCHG](日收益率,实验要求是月,感觉道理一样,从这个表里也可以算出月收益率,没搞,就用日收益率了),英语环境OS所以中文表头乱码了:
图省事,这里我就直接用Excel把这个三个文件中的这列数据提取出来了,搞成这样,4个表头对应Stata中的4个Variables —— date,ri,rm 和 rf(下图的ri列是工行的数据,实验中换成吉比特的数据了):
导入数据到Stata,发现date的数据是红色,证明格式不对,引用此blog中的方法成功解决:
命令窗口中输入命令(以原date变量为source,新建变量b):
gen d=date(date,"YMD")
之后编辑变量b的格式:
选择日期格式:
新建的变量d表示的日期不红了:
可以把之前的变量date干掉了,再把新变量d重命名为date:
drop date
rename d date
将数据格式设置为时间序列:
tsset date
CAPM formula recall: E ( R i ) − R f = β i ( R m − R f ) E(R_i)-R_f=β_i(R_m-R_f) E(Ri)−Rf=βi(Rm−Rf)
新建一个变量 rirf 存放 ri 与 rf 的差值:
gen rirf = ri - rf
再新建一个变量 rmrf 存放 rm 与 rf 的差值:
gen rmrf = rm - rf
针对这两个变量做回归,拟合出β系数:
reg rirf rmrf
查看结果,拟合出的β约等于0.889:
也就是说,在这个股票中:
E ( R i ) − R f ≈ 0.889 ( R m − R f ) E(R_i)-R_f≈0.889(R_m-R_f) E(Ri)−Rf≈0.889(Rm−Rf)
o r or or
E ( R i ) ≈ R f + 0.889 ( R m − R f ) E(R_i)≈R_f+0.889(R_m-R_f) E(Ri)≈Rf+0.889(Rm−Rf)
结论:
在其它条件不变的情况下,市场超额收益(即rm-rf)变动1单位,吉比特超额收益(即ri-rf)变动0.889个单位
PS:
数据类型问题:第一次用stata,一开始导入数据的时候,踩了几个坑,都是数据格式的问题,对于string类型变量,int类型变量和float类型变量之间的转换需要注意
missing values generated 问题:(onging…)
引自blog:利用Fama-French五因子模型的alpha进行行业轮动
Fama和French(2015)将先前的三因子模型扩展到五因子模型,认为新的五因子模型可以更好地描述横截面上的收益率。他们在市场风险溢价,规模(SMB)和价值(HML)因子的基础上添加了两个新因子,即盈利能力(RMW)和投资(CMA)
Fama-French formula:
R i t − r f t = α i t + β i m ∗ ( R m t − r f t ) + β i S M B ∗ S M B t + β i H M L ∗ H M L t + β i R M W ∗ R M W t + β i C M A ∗ C M A t + ε i t R_{it}-r_{ft}=α_{it}+β_{im}*(R_{mt}-r_{ft})+β_{iSMB}*SMB_t+β_{iHML}*HML_t+β_{iRMW}*RMW_t+β_{iCMA}*CMA_t+ε_{it} Rit−rft=αit+βim∗(Rmt−rft)+βiSMB∗SMBt+βiHML∗HMLt+βiRMW∗RMWt+βiCMA∗CMAt+εit
Formula specification:
typing…
learning…
and focusing…