R语言blotter包chart.Posn无累计收益与回撤:代码排查问询
问题原因及解决方法
你的代码中,仅在最后一个日期更新了组合和账户数据,没有对整个时间序列的所有日期进行更新,导致chart.Posn无法生成累计收益和回撤所需的完整绩效数据。
修正后的代码
library(blotter) library(xts) set.seed(1) times <- seq(as.POSIXct("2016-01-01 00:00:00"), length = 30, by = "sec") price <- round(cumsum(rnorm(30))+999,2) signal <- rep(0,30) signal[5] <- 1 # open long signal[15] <- -1 # close long open short dat <- xts(cbind(price,signal),order.by = times) initDate='1997-12-31' initEq=1000 currency("USD") stock("dat",currency="USD",multiplier=1) ltportfolio='my' ltaccount='my' initPortf(ltportfolio,'dat', initDate=initDate) initAcct(ltaccount,portfolios='my', initDate=initDate, initEq=initEq) verbose=TRUE for(i in 1:nrow(dat)){ CurrentDate <- time(dat)[i] # 获取当前持仓(getPosQty会自动考虑已添加的交易,无需提前更新组合) open_position <- getPosQty(ltportfolio, Symbol='dat', Date=CurrentDate) ##################### ##### open long ##### ##################### if(dat$signal[i]==1){ # 平空头仓位 if(open_position < 0){ addTxn(ltaccount, Symbol='dat', TxnDate=CurrentDate, TxnPrice=dat$price[i], TxnQty = -open_position , TxnFees=0, verbose=verbose) } # 开多头仓位 addTxn(ltaccount, Symbol='dat', TxnDate=CurrentDate, TxnPrice=dat$price[i], TxnQty = 1 , TxnFees=0, verbose=verbose) } ###################### ##### open short ##### ###################### if(dat$signal[i]==-1){ # 平多头仓位 if(open_position > 0){ addTxn(ltaccount, Symbol='dat', TxnDate=CurrentDate, TxnPrice=dat$price[i], TxnQty = -open_position , TxnFees=0, verbose=verbose) } # 开空头仓位 addTxn(ltaccount, Symbol='dat', TxnDate=CurrentDate, TxnPrice=dat$price[i], TxnQty = -1 , TxnFees=0, verbose=verbose) } } # 关键修正:对整个数据时间范围更新组合和账户,而非仅最后一个日期 updatePortf(ltportfolio, Dates = index(dat)) updateAcct(ltaccount, Dates = index(dat)) updateEndEq(ltaccount, Dates = index(dat)) # 绘制持仓图,此时会显示累计收益和回撤 chart.Posn(ltportfolio, Symbol = 'dat')
核心修正点
- 更新范围调整:将
updatePortf、updateAcct、updateEndEq的Dates参数从单一的CurrentDate改为index(dat),确保对数据的所有日期进行绩效计算。 - 完整绩效数据生成:只有当组合和账户数据覆盖整个交易周期时,
chart.Posn才能提取到累计收益和回撤的计算结果,从而在图表中显示这两个模块。
内容的提问来源于stack exchange,提问作者mr.T
相关产品推荐
相关产品推荐

