我是R的新手,更喜欢ts对象.我尝试在数据帧(df)的向量上使用PerformanceAnalytics包.
我有以下数据框:
row.names Date PnL
1 22 1992-01-02 -1.751133e-02
2 23 1992-01-03 -1.586737e-02
3 24 1992-01-06 -2.898982e-02
Run Code Online (Sandbox Code Playgroud)
我试过了:
TestS=SharpeRatio.annualized(df[,"PnL"],Rf=0,scale=252)
TestS=SharpeRatio.annualized(as.ts(df[,"PnL"]),Rf=0,scale=252)
Run Code Online (Sandbox Code Playgroud)
它分别返回对象中的错误,并且:
checkData中的错误(R,method ="xts"):数据无法转换为时间序列.如果您尝试从具有一列的数据对象传入名称,则应使用"data [rows,columns,drop = FALSE]"形式.Rownames应具有标准日期格式,例如'1985-03-15'
dput(df[,"PnL")=0.00994504296273811, 0.00156467225423175, 0.00976137048829638, etc.
dputdf[,"Date")=8036, 8037, 8040, 8041,etc.
Run Code Online (Sandbox Code Playgroud)
该软件包的帮助说该函数适用于vector.我没有任何NA,因此我不明白为什么它不起作用.
首先,您需要将数据框转换为xts对象:
dfx = xts(df$PnL, order.by=as.Date(df$Date))
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
TestS = SharpeRatio.annualized(dfx, Rf=0, scale=252)
Run Code Online (Sandbox Code Playgroud)
或者你需要做的其他事情.