如何为多列编写Simple returns(简单收益率)的计算代码?
修正简单收益率计算的R代码错误
你的代码核心错误在于lag(.x-1)的逻辑:这会先将当前值减1再取滞后,完全偏离了公式要求的「用当期值除以滞后一期的当期值」的逻辑。
修正后的代码如下:
stockindices = read.csv('https://raw.githubusercontent.com/bandcar/Examples/main/stockInd.csv') library(tidyverse) simple_returns <- stockindices %>% mutate(across(3:ncol(.), ~ (.x / lag(.x)) - 1))
关键修正点:
- 将
lag(.x-1)改为lag(.x):lag(.x)会正确获取当前列的上一行数据(即公式中的Pt-1),再用当期值(Pt)做除法运算后减1,完全匹配简单收益率的计算公式。 - 计算结果的第一行会返回
NA,这是正常现象——因为第一期没有前一期数据可以参考。
内容的提问来源于stack exchange,提问作者bandcar
相关产品推荐
相关产品推荐

