首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用'PerformanceAnalytics‘包计算绩效度量

使用'PerformanceAnalytics‘包计算绩效度量
EN

Stack Overflow用户
提问于 2014-01-31 23:53:29
回答 1查看 745关注 0票数 1

我需要使用R的'PerformanceAnalytics‘包,要使用这个包,我知道我需要将数据转换成xts数据,这实际上是一个拼板数据。根据这个论坛的建议,我做了以下工作:

代码语言:javascript
复制
library(foreign)
RNOM <- read.dta("Return Panel without missing.dta")
RNOM_list<-split(RNOM,RNOM$gvkey)
xts_list<-lapply(RNOM_list,function(x)
{out<-xts(x[,-1],order.by=as.Date(x$datadate,format="%d/%m/%Y")) })

它给了我RNOM_listxts_list

在此之后,请帮助我使用函数Return.calculatelapply估计月度收益,并将生成的输出保存为我的原始数据集中的附加变量,以便进行回归分析?随后,我还需要估计VaR、ES和semi-sd。

数据可以从here下载。注意,prccm是数据中的月度收盘价,gvkey是公司ID。

EN

回答 1

Stack Overflow用户

发布于 2014-08-26 07:17:49

实现这一目标的一个有效方法是使用'reshape2‘包将面板数据(长格式)转换为宽格式。执行估算后,将其转换回长格式或面板数据格式。下面是一个示例:

代码语言:javascript
复制
library(foreign)
library(reshape2)
dd <- read.dta("DDA.dta") // DDA.dta is Stata data; keep only date, id and variable of interest (i.e. three columns in total)
wdd<-dcast(dd, datadate~gvkey) // gvkey is the id
require(PerformanceAnalytics)
wddxts <- xts(wdd[,-1],order.by=as.Date(wdd$datadate,format= "%Y-%m-%d"))

ssd60A<-rollapply(wddxts,width=60,SemiDeviation,by.column=TRUE,fill=NA) // e.g of rolling window calculation
ssd60A.df<-as.data.frame(ssd60A.xts) // convert dataframe to xts
ssd60A.df$datadate=rownames(ssd60A.df) // insert time index
lssd60A.df<-melt(ssd60A.df, id.vars=c('datadate'),var='gvkey') // convert back to panel format
write.dta(lssd60A.df,"ssd60A.dta",convert.factors = "string") // export as Stata file

然后,只需将其与master数据库合并,即可执行一些回归。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21484267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档