作者:朱紅兵 (南京大學(xué))
責(zé)編:王俊 (中山大學(xué))
本文要點(diǎn)
解釋簡(jiǎn)單收益率和對(duì)數(shù)收益率的差異;
使用
ascol
將日收益率數(shù)據(jù)轉(zhuǎn)換為**周\月\季\年 度數(shù)據(jù);使用
mtoq
將月數(shù)據(jù)轉(zhuǎn)換為季度數(shù)據(jù);
例如 我們有下述股票的日度價(jià)格序列:
股票id | 日期 | 價(jià)格 |
---|---|---|
1 | 20180101 | 15 |
1 | 20180102 | 19 |
1 | 20180103 | 17 |
1 | 20180104 | 16 |
1 | 20180105 | 20 |
1 | 20180106 | 18 |
1 | 20180107 | 19 |
根據(jù)簡(jiǎn)單收益率和對(duì)數(shù)收益率計(jì)算公式:
簡(jiǎn)單算術(shù)收益率 EQ1:
連續(xù)對(duì)數(shù)收益率 EQ2:我們可以計(jì)算出簡(jiǎn)單收益率和對(duì)數(shù)收益率如下:
股票id | 日期 | 簡(jiǎn)單收益率 | 對(duì)數(shù)收益率 | 1+簡(jiǎn)單收益率 |
---|---|---|---|---|
1 | 20180102 | 0.2667 | 0.2364 | 1.2667 |
1 | 20180103 | -0.1053 | -0.1112 | 0.8947 |
1 | 20180104 | -0.0588 | -0.0606 | 0.9412 |
1 | 20180105 | 0.2500 | 0.2231 | 1.2500 |
1 | 20180106 | -0.1000 | -0.1054 | 0.9000 |
1 | 20180107 | 0.0556 | 0.0541 | 1.0556 |
在實(shí)證研究中,很多時(shí)候我們希望得到周收益率或者月度收益率,那么如何根據(jù)日度收益率得到這些指標(biāo)呢?
可能很多同學(xué)會(huì)想當(dāng)然地認(rèn)為:直接加總?cè)帐找媛始纯桑轭}在于:直接對(duì)簡(jiǎn)單收益率進(jìn)行加總得到的周(月)收益率等于對(duì)數(shù)日收益率的加總嗎?我們可以用上述數(shù)據(jù)來(lái)測(cè)試看一下(計(jì)算 2018 年 1 月 2 日至 2018 年 1 月 7 日的持有期收益率):
簡(jiǎn)單收益率的加總:
對(duì)數(shù)收益率的加總:
兩者差異:
問(wèn)題: 為什么兩者會(huì)相差 0.0718 呢?哪種計(jì)算方法才能準(zhǔn)確反應(yīng)投資者在 2018 年 1 月 2 日至 2018 年 1 月 7 日 期間內(nèi)的持有收益呢?
?
?
答案: 對(duì)數(shù)日收益率的加總,即下式 (EQ3):
因?yàn)椋瑓^(qū)間內(nèi)簡(jiǎn)單日收益率的加總意味著投資者每天都在進(jìn)行交易,而非在區(qū)間內(nèi)買(mǎi)入并持有至末期。當(dāng)然,我們也可以通過(guò)簡(jiǎn)單算術(shù)日收益率計(jì)算區(qū)間內(nèi)的持有期收益,但是需要采用下述方法:
持有期收益率 (EQ4):
或者采用 (EQ5):
在 Stata 命令框中輸入下述命令并回車(chē),即可實(shí)現(xiàn)安裝:
ssc install ascol, replace
ascol
的完整語(yǔ)法格式如下:
ascol varname, returns([simple | log]) ///
prices ///
keep([all | vars]) ///
frequency_options ///
timevar(varname) panelvar(varname) ///
generate(newvar)
其中:
varname
主要是收益率序列或者價(jià)格序列。
returns()
中可選擇 simple 或 log。其中,simple 表明 varname 是簡(jiǎn)單收益率;log 代表對(duì)數(shù)收益率。若 varname 設(shè)定的是價(jià)格序列,則這里的選擇會(huì)指導(dǎo)具體收益率序列的計(jì)算方式。
prices
指定了 varname 中序列的類(lèi)型是否為價(jià)格序列,如果是收益率序列則無(wú)需填寫(xiě)。
keep
選項(xiàng)可保留計(jì)算后的重復(fù)數(shù)據(jù),例如日收益率轉(zhuǎn)換為月收益率后,在相同月會(huì)出現(xiàn)多個(gè)相同的收益率觀測(cè),如果選擇了 keep 命令則保留了相同的觀測(cè),反之則只每個(gè)時(shí)間點(diǎn)上保留一個(gè)觀測(cè),剔除了重復(fù)觀測(cè)
frequency_options
中可設(shè)定 toweek,tomonth,toquarter, toyear,即由日收益率轉(zhuǎn)換為不同頻率 (周,月,季,年) 的收益率。
timevar()
和 panelvar()
選項(xiàng)可設(shè)定數(shù)據(jù)的時(shí)間變量和截面變量。
generate()
可設(shè)定新生產(chǎn)的收益率序列的名稱(chēng)。
下述代碼來(lái)源于
ascol
的官方幫助文檔,讀者可自行前往查看
/*生產(chǎn)收益率序列*/
clear
set obs 1000
gen date=date("1/1/2012" , "DMY")+_n
format %td date
tsset date
gen pr=10
replace pr=pr[_n-1]+uniform() if _n>1
gen simpleRi=(pr/l.pr)-1
gen logRi = ln(pr/l.pr)
save "stocks.dta", replace
/*Example 1: From Daily to weekly - simple returns*/
use stocks, clear
ascol simpleRi, toweek returns(simple)
/*Example 2: From Daily to weekly - log returns*/
use "stocks", clear
ascol logRi, toweek returns(log)
/* Example 3: From Daily to monthly - prices*/
use "stocks", clear
ascol pr, tomonth price
前文介紹的 ascol
命令雖然可以將日收益率轉(zhuǎn)換為其他頻率的收益率,但是有些時(shí)候我們下載的收益率月度收益率,那如何將其轉(zhuǎn)換為季度收益率呢?我們寫(xiě)了一個(gè)新的命令 mtoq
來(lái)實(shí)現(xiàn)這一功能。
/* 1. 沒(méi)有安裝 github 命令的請(qǐng)先通過(guò)下述命令進(jìn)行安裝 */
net install github, from("https://haghish.github.io/github/") replace
/* 2. 安裝過(guò) github 命令的同學(xué)可忽略上述命令,直接進(jìn)行下述安裝 */
github install zhbsis/mtoq
mtoq
命令的語(yǔ)法非常簡(jiǎn)潔,如下:
mtoq varlist, by(string) [Statistics(string)]
其中,
varlist
中填寫(xiě)對(duì)數(shù)收益率序列,可同時(shí)填寫(xiě)多個(gè)序列。
by
選項(xiàng)中填寫(xiě)個(gè)體和時(shí)間截面的id,例如股票類(lèi)數(shù)據(jù)可填寫(xiě) stkcd(股票代碼) ym(年月時(shí)間標(biāo)記)
Statistics
選項(xiàng)中可填寫(xiě) Stata 官方命令 egen
中的常見(jiàn) option ,例如 mean、sum 等,默認(rèn)為 mean 處理,在月度收益率轉(zhuǎn)換為季度收益率的時(shí)候通常填寫(xiě) sum 選項(xiàng)。
Tips:
mtoq
命令可以有更為廣泛的用途。上面的例子是對(duì)收益率序列進(jìn)行轉(zhuǎn)換,但mtoq
也可以轉(zhuǎn)換其他變量,如 換手率 (TurnOver)。若想通過(guò)加總月度換收益率得到季度的換手率,可輸入:
mtoq TurnOver, by(stkcd ym) s(sum)
聯(lián)系客服