楼主: 曾玉霞
1859 6

[stata资源分享] 求教未实现资本利得CGP以及参考点价格stata代码 [推广有奖]

  • 0关注
  • 1粉丝

大专生

78%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
1.0500
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
183 点
帖子
15
精华
0
在线时间
105 小时
注册时间
2020-5-14
最后登录
2023-2-9

楼主
曾玉霞 发表于 2020-12-8 11:12:53 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
想请教一下大神,关于未实现资本利得cgo,stata怎么实现啊?实在不会求这个变量了,救救孩子吧!感激
二维码

扫码加我 拉你入群

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

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

关键词:Stata tata

沙发
Naiyoubreed 发表于 2022-3-5 11:38:30
同学找到解决办法了吗?最近遇到了同样的问题

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

板凳
Naiyoubreed 发表于 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

  

报纸
Naiyoubreed 发表于 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)
谢谢啦

7
赞999 发表于 2024-2-25 11:49:51
Naiyoubreed 发表于 2022-3-11 14:31
use 周个股回报率.dta, clear
gen 周换手率=周个股交易金额/(周个股流通市值*10^3)
有现成的数据包吗?想买

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-2-8 01:40