错误:order.by需要适当的基于时间的对象PerformanceAnalytics

Vin*_*ntH 3 r time-series xts

我是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,因此我不明白为什么它不起作用.

A5C*_*2T1 8

首先,您需要将数据框转换为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)

或者你需要做的其他事情.