主贴内容参考自:
Financial Econometric Modelling (Using Stata)
——Professor Stan Hurn, QUT and NCER Director (Singapore Management University)
- //讲义下载
- copy "http://www.ncer.edu.au/events/documents/Singapore-lecture3.pdf" "Singapore-lecture3.pdf"
- //do-file下载
- copy "http://www.ncer.edu.au/events/documents/Singapore-lecture3.zip" "Singapore-lecture3.zip"
- //sjlog 生成符合stata journal 排版格式的日志文件
- net inst sjlatex, from(http://www.stata-journal.com/production)
- //建立一个名为working文件夹与后续范例匹配
- cap findfile working
- if "`r(filename)'" == "" mkdir working
- // Testing one factor pricing models using data from Ken French's website
- // Looking at the data and the simple CAPM
- sjlog using "./working/lec3_aa", replace
- set more off
- version 13
- clear *
- //clear * 与clear all 同义
- // set up a log file
- capture log close capm
- log using capm, name(capm) replace
- // set current working directory
- * cd ~/Dropbox/Teaching/Singapore/do 可自行设定,文中仅示例
- // load the data and add a few labels 注意数据放在当前文件夹下(数据在主贴)
- use fama_french.dta, clear
- label variable rm "Market Return"
- label variable rf "Risk Free Rate"
- sjlog close, replace
- sjlog using "./working/lec3_bb", replace
- // format date variable and set data set as time series
- drop dateid01
- gen dateid01 = tm(1926m7)+_n-1
- format %tm dateid01
- tsset dateid01
- // plot return on market and rf on same graph using same y-axes
- twoway (tsline rm) (tsline rf), name(factors0, replace) ///
- tlabel(,angle(forty_five) format(%tmCCYY)) xtitle("")
- graph export "../factors0.pdf", as(pdf) replace
- // plot return on market and rf on same graph using different y-axes
- twoway (tsline rm, yaxis(1)) (tsline rf, yaxis(2)), name(factors, replace) ///
- tlabel(,angle(forty_five) format(%tmCCYY)) xtitle("")
- graph export "../factors.pdf", as(pdf) replace
- sjlog close, replace
- // generate excess returns
- local N = 25
- forvalues i = 1/`N' {
- qui gen z`i' = r`i' - rf
- }
- // drop raw returns
- drop r1-r9 // note use of hyphen r10 comes right after r1
- sjlog using "./working/lec3_cc", replace
- // estimate CAPM for first portfolio and test alpha = 0 and beta = 1
- reg z1 rm_rf
- // test the model
- test _cons
- test rm_rf=1
- test (_cons=0) (rm_rf=1)
- sjlog close, replace
- reg z2 rm_rf
- reg z3 rm_rf
- // at least four ways to do this estimation
- forvalues i = 1/`N'{
- qui regress z`i' rm_rf
- }
- mvreg z* = rm_rf
- sureg z* = rm_rf
- sjlog using "./working/lec3_dd", replace
- reshape long z, i(dateid01) j(portfolio)
- sjlog close, replace
- statsby _b _se, by(portfolio) saving(simplecapm, replace): reg z rm_rf
- log close capm
- // gen daten = tm(1926m7)+_n-1
复制代码