楼主: 15708464159
7598 8

[面板数据求助] 请问如何用stata计算当年股票月度收益率的标准差 [推广有奖]

  • 1关注
  • 1粉丝

大专生

1%

还不是VIP/贵宾

-

威望
0
论坛币
1190 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
78 点
帖子
7
精华
0
在线时间
76 小时
注册时间
2020-11-5
最后登录
2022-3-30

楼主
15708464159 发表于 2021-9-6 15:54:57 |AI写论文
199论坛币
最近在看论文遇到了一个变量构建的问题,模型其中一个变量是“当年股票月度收益率的标准差”,查了英文原文献是"standard deviation of monthly stock returns over the fiscal year",想请问大家知道怎么做吗? 是第一步先算出从一月到十二月的标准差,第二步再乘以SQRT(12)吗? 想请教下大家,包括完成这两步的stata代码

1630914776(1).png

Mretwd是考虑现金红利再投资的月个股回报率

关键词:Stata tata 收益率 如何用 标准差

沙发
玫瑰花的葬礼etgyn 发表于 2022-1-13 22:42:54
求问楼主找到解法了吗?我最近也需要这个数据但是没弄出来

藤椅
2015lqh 学生认证  发表于 2022-1-14 00:19:19
  1. Stata Code

  2. * convert to monthly date
  3. gen ym = monthly(Trdmnt,"YM")
  4. format %tm ym

  5. * generate fiscal year: from May to April
  6. gen fiscal_year=year(dofm(ym-4))

  7. * calculate the standard deviation of monthly stock returns
  8. bys Stkcd fiscal_year:egen sigma_ret=sd(Mretwd)

  9. * save the data
  10. duplicates drop Stkcd fiscal_year,force
  11. keep Stkcd fiscal_year sigma_ret
  12. ren fiscal_year year
  13. order Stkcd year
  14. sort Stkcd year
  15. save sigma_ret.dta, replace
复制代码

板凳
玫瑰花的葬礼etgyn 发表于 2022-1-14 13:04:22
能问一下楼主这个数据是在哪找到的吗?CSMAR上好像没得

报纸
珂珂子学习日常 发表于 2022-4-5 21:36:06
玫瑰花的葬礼etgyn 发表于 2022-1-14 13:04
能问一下楼主这个数据是在哪找到的吗?CSMAR上好像没得
股票市场内可以找到

地板
ljt19961998 在职认证  学生认证  发表于 2022-8-6 00:52:24
2015lqh 发表于 2022-1-14 00:19
有个不理解的地方是为啥要往前推4个月,不是一年呢?最后数据合并的时候为啥按照你往前推的年份合并数据呢,不是应该按照源数据的日期合并数据嘛

7
经管之家bao 发表于 2023-9-13 10:29:50
ljt19961998 发表于 2022-8-6 00:52
有个不理解的地方是为啥要往前推4个月,不是一年呢?最后数据合并的时候为啥按照你往前推的年份合并数据呢 ...
作者大佬已经明白了吗,跪求解释

8
1+3369 发表于 2024-2-15 16:04:00
ljt19961998 发表于 2022-8-6 00:52
有个不理解的地方是为啥要往前推4个月,不是一年呢?最后数据合并的时候为啥按照你往前推的年份合并数据呢 ...
因为原文是财政年度

9
赵安豆 发表于 2025-6-3 22:08:59
在Stata中计算年度股票月度收益率的标准差可以分为几个步骤。首先,你需要确定你的数据集已经按照年份和股票ID(如果有的话)排序。

以下是一个基本的流程:

1. **确保数据已按年份和股票ID排序**:
   ```stata
   sort stock_id year month
   ```

2. **计算每年每只股票月度收益率的标准差**。假设你的月度收益率变量是`mretwd`,你可以使用`collapse`命令来执行这一操作:

   ```stata
   bysort stock_id year: collapse (sd) sd_mretwd = mretwd, by(stock_id)
   ```

但是,由于`collapse`命令可能会导致数据集中的重复观测被删除(如果你的数据在股票和年份上有多条记录),你可能需要先确保每个组合只有一条记录。或者使用`egen`命令的`sd()`函数:

```stata
bysort stock_id year: egen sd_mretwd = sd(mretwd)
```

这将为每年每只股票计算月度收益率的标准差,并保存在一个新变量`sd_mretwd`中。

3. **如果你需要调整到年化标准差**,你可以在上述步骤之后乘以sqrt(12)(假设一个月的回报率是独立且相同的)。这可以通过以下命令完成:

   ```stata
   gen sd_mretwd_annualized = sd_mretwd * sqrt(12)
   ```

这样`sd_mretwd_annualized`就是年度化的月度收益率标准差。

请注意,这些命令假设你的数据已经按照所需的顺序排列(即,首先按股票ID排序,然后是年份)。如果需要调整排序或数据处理步骤,请根据实际情况修改上述代码。

此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用



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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-5 14:05