全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
1860 6
2020-12-08
想请教一下大神,关于未实现资本利得cgo,stata怎么实现啊?实在不会求这个变量了,救救孩子吧!感激
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2022-3-5 11:38:30
同学找到解决办法了吗?最近遇到了同样的问题
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-3-10 16:04:11
Naiyoubreed 发表于 2022-3-5 11:38
同学找到解决办法了吗?最近遇到了同样的问题
没有  请问你找到方法了吗
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-3-11 14:31:01
use 周个股回报率.dta, clear
gen 周换手率=周个股交易金额/(周个股流通市值*10^3)

* 缩尾处理
winsor2 周换手率, cuts(1 99) replace
save data.dta, replace


*-定义程序
capture program drop calc_cgo
program define calc_cgo  

qui {
* 对于每一只股票,在每月末,首先通过过去五年的周收盘价和换手率(我们要求至少要有60%的非缺失值)计算出参考价格(Reference Price)
        egen w=group(交易周份)
        xtset stkcd w

        forv i=1/260 {
           gen P_`i'=L`i'.周收盘价
        }

        forv i=1/260 {
           gen V_`i'=L`i'.周换手率
        }

        * 1-V
        gen V2=1-周换手率

        * 取对数方便连乘
        gen lnV2=ln(V2)

        *  t-n+1 t-1
        gen VV_1=1
        forv i=2/260 {
                local j=-`i'+1
                rangestat (sum) lnV2_`i'=lnV2,  by(stkcd) i(w `j' -1)
                gen VV_`i'=exp(lnV2_`i')
                drop lnV2_`i'
        }


        forv i=1/260 {
                gen t_`i'=(V_`i'*VV_`i')*P_`i'
        }

        forv i=1/260 {
                gen k_`i'=V_`i'*VV_`i'
        }


        egen t2=rowtotal(t_*)
        egen k=rowtotal(k_*)

        gen RP=t2/k

        gen CGO=(P_1-RP)/P_1

        rangestat (count) N=周换手率,  by(stkcd) i(w -260 -1)
        * 要求至少要有60%的非缺失值
        drop if N<260*0.6

        * 剔除缺失值
        drop if CGO==.

        * 保留月末数据
        gen month=substr(周收盘日期, 1, 7)
        gsort stkcd month -周收盘日期
        bys stkcd month: keep if _n==1

        keep stkcd month CGO
}
end


use data.dta, clear
runby calc_cgo, by(stkcd) verbose
save CGO.dta, replace

*=======================================================================
*                    资本利得计算(3年-稳健性性)
*=======================================================================


*-定义程序
capture program drop calc_cgo2
program define calc_cgo2

qui {
        * 对于每一只股票,在每月末,首先通过过去五年的周收盘价和换手率(我们要求至少要有60%的非缺失值)计算出参考价格(Reference Price)
        egen w=group(交易周份)
        xtset stkcd w

        forv i=1/130 {
           gen P_`i'=L`i'.周收盘价
        }

        forv i=1/130 {
           gen V_`i'=L`i'.周换手率
        }

        * 1-V
        gen V2=1-周换手率

        * 取对数方便连乘
        gen lnV2=ln(V2)

        *  t-n+1 t-1
        gen VV_1=1
        forv i=2/130 {
                local j=-`i'+1
                rangestat (sum) lnV2_`i'=lnV2,  by(stkcd) i(w `j' -1)
                gen VV_`i'=exp(lnV2_`i')
                drop lnV2_`i'
        }


        forv i=1/130 {
                gen t_`i'=(V_`i'*VV_`i')*P_`i'
        }

        forv i=1/130 {
                gen k_`i'=V_`i'*VV_`i'
        }


        egen t2=rowtotal(t_*)
        egen k=rowtotal(k_*)

        gen RP=t2/k

        gen CGO2=(P_1-RP)/P_1

        rangestat (count) N=周换手率,  by(stkcd) i(w -130 -1)
        * 要求至少要有60%的非缺失值
        drop if N<130*0.6

        * 剔除缺失值
        drop if CGO2==.

        * 保留月末数据
        gen month=substr(周收盘日期, 1, 7)
        gsort stkcd month -周收盘日期
        bys stkcd month: keep if _n==1

        keep stkcd month CGO2
}
end


use data.dta, clear
runby calc_cgo2, by(stkcd) verbose
save CGO2.dta, replace

  
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-3-11 14:35:27
曾玉霞 发表于 2022-3-10 16:04
没有  请问你找到方法了吗
use 周个股回报率.dta, clear
gen 周换手率=周个股交易金额/(周个股流通市值*10^3)

* 缩尾处理
winsor2 周换手率, cuts(1 99) replace
save data.dta, replace


*-定义程序
capture program drop calc_cgo
program define calc_cgo  

qui {
* 对于每一只股票,在每月末,首先通过过去五年的周收盘价和换手率(我们要求至少要有60%的非缺失值)计算出参考价格(Reference Price)
        egen w=group(交易周份)
        xtset stkcd w

        forv i=1/260 {
           gen P_`i'=L`i'.周收盘价
        }

        forv i=1/260 {
           gen V_`i'=L`i'.周换手率
        }

        * 1-V
        gen V2=1-周换手率

        * 取对数方便连乘
        gen lnV2=ln(V2)

        *  t-n+1 t-1
        gen VV_1=1
        forv i=2/260 {
                local j=-`i'+1
                rangestat (sum) lnV2_`i'=lnV2,  by(stkcd) i(w `j' -1)
                gen VV_`i'=exp(lnV2_`i')
                drop lnV2_`i'
        }


        forv i=1/260 {
                gen t_`i'=(V_`i'*VV_`i')*P_`i'
        }

        forv i=1/260 {
                gen k_`i'=V_`i'*VV_`i'
        }


        egen t2=rowtotal(t_*)
        egen k=rowtotal(k_*)

        gen RP=t2/k

        gen CGO=(P_1-RP)/P_1

        rangestat (count) N=周换手率,  by(stkcd) i(w -260 -1)
        * 要求至少要有60%的非缺失值
        drop if N<260*0.6

        * 剔除缺失值
        drop if CGO==.

        * 保留月末数据
        gen month=substr(周收盘日期, 1, 7)
        gsort stkcd month -周收盘日期
        bys stkcd month: keep if _n==1

        keep stkcd month CGO
}
end


use data.dta, clear
runby calc_cgo, by(stkcd) verbose
save CGO.dta, replace

*=======================================================================
*                    资本利得计算(3年-稳健性性)
*=======================================================================


*-定义程序
capture program drop calc_cgo2
program define calc_cgo2

qui {
        * 对于每一只股票,在每月末,首先通过过去五年的周收盘价和换手率(我们要求至少要有60%的非缺失值)计算出参考价格(Reference Price)
        egen w=group(交易周份)
        xtset stkcd w

        forv i=1/130 {
           gen P_`i'=L`i'.周收盘价
        }

        forv i=1/130 {
           gen V_`i'=L`i'.周换手率
        }

        * 1-V
        gen V2=1-周换手率

        * 取对数方便连乘
        gen lnV2=ln(V2)

        *  t-n+1 t-1
        gen VV_1=1
        forv i=2/130 {
                local j=-`i'+1
                rangestat (sum) lnV2_`i'=lnV2,  by(stkcd) i(w `j' -1)
                gen VV_`i'=exp(lnV2_`i')
                drop lnV2_`i'
        }


        forv i=1/130 {
                gen t_`i'=(V_`i'*VV_`i')*P_`i'
        }

        forv i=1/130 {
                gen k_`i'=V_`i'*VV_`i'
        }


        egen t2=rowtotal(t_*)
        egen k=rowtotal(k_*)

        gen RP=t2/k

        gen CGO2=(P_1-RP)/P_1

        rangestat (count) N=周换手率,  by(stkcd) i(w -130 -1)
        * 要求至少要有60%的非缺失值
        drop if N<130*0.6

        * 剔除缺失值
        drop if CGO2==.

        * 保留月末数据
        gen month=substr(周收盘日期, 1, 7)
        gsort stkcd month -周收盘日期
        bys stkcd month: keep if _n==1

        keep stkcd month CGO2
}
end


use data.dta, clear
runby calc_cgo2, by(stkcd) verbose
save CGO2.dta, replace

  
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-4-2 17:41:35
Naiyoubreed 发表于 2022-3-11 14:35
use 周个股回报率.dta, clear
gen 周换手率=周个股交易金额/(周个股流通市值*10^3)
谢谢啦
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群