【问题标题】:Convert Daily Returns to Monthly Returns in Stata在Stata中将每日收益转换为月度收益
【发布时间】:2014-03-20 21:39:41
【问题描述】:

我正在使用 Stata,个人投资组合中持有的股票有 6 年的每日回报。我想将每日收益汇总为每月投资组合收益。在某些情况下,个人可能在投资组合中持有不止一只股票。我正在努力编写代码来做到这一点。

对于视觉,我的数据如下所示:

我希望结果如下所示:

个人 2 在 1996 年 12 月的投资组合回报计算为:0.3 * 0.0031 + 0.7 * 0.0076 = 0.00625

我试过collapse这样的命令

collapse Return, by (ID Year Month)

但这并不能提供我在 Excel 中计算出的相同回报。

我能够在使用

的所有日子里获得加权投资组合回报
bysort ID year month: egen wt_return = stock_weight * monthly_return

但这给了我每天的回报。然后我的麻烦是将它们汇总为相应月份的一个回报。

至于细节,我想将每月投资组合收益计算为1 + the weighted daily returns的乘积。作为最后的手段,当月的平均回报率可能会起作用。

【问题讨论】:

  • 请向我们展示您的尝试。见stackoverflow.com/help/asking
  • 糟糕的问题。没有代码;提示时没有改善;假设这里的 Stata 用户都知道这个问题中使用的财务数据的规则。例如,每月回报只是每日回报的平均值,还是其他?看egen;这是一个很好的主力。
  • 你还是不说你是怎么计算的Monthly Return
  • 您的egen 代码段不可能运行,因为没有egen 函数调用。也许egengenerate 的拼写错误,但请注意,在这种情况下,by 框架对结果没有影响。

标签: stata stock financial


【解决方案1】:

您没有显示 1991 年第 2 个人的每月投资组合回报。您的初始示例数据没有显示股票权重,而是显示所需的示例 数据确实如此。您的变量 Monthly Return 不可重现。您应该在发布时花时间验证您的问题是否明确。 它应该是谁会阅读它的公众很清楚,而不仅仅是你。

我没有费心检查您的计算是否正确,但以下是我的 明白你想要的。该过程只是计算加权回报,然后 按person year month 组添加它们。 (我假设股票权重每天都适用于股票,这就是您的示例数据所暗示的。)

clear all
set more off

input ///
perid year month day str3 stockid return stockw
1 1991 1 1 "ABC" .01 1
1 1991 1 2 "ABC" .02 1
1 1991 1 3 "ABC" -.01 1
1 1991 1 31 "ABC" .004 1
1 1996 12 31 "ABC" .002 1
2 1991 1 1 "ABC" .01 .3
2 1991 1 2 "ABC" .02 .3
2 1996 12 31 "ABC" .004 .3
2 1991 1 1 "XYZ" .001 .7
2 1991 1 2 "XYZ" .004 .7
2 1996 12 31 "XYZ" .021 .7
end

* create weighted return
gen returnw = return * stockw

sort perid year month day
list, sepby(perid year month day)

* sum weighted returns by person, year, month
collapse (sum) returnw, by (perid year month)

list, sepby(perid)

如果你想对collapse 求和,那么你必须用(sum) 来表示它(虽然我不清楚这是否是你想要的)。默认情况下,它计算平均值。仔细阅读help collapse

【讨论】:

    猜你喜欢
    • 2020-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-08
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    相关资源
    最近更新 更多