R

計算和解釋累積回報是 R

  • August 4, 2014

我有買入和賣出信號,因此,我人為地生成了一個信號系列,為此,我為每次買入分配 1,為每次賣出分配 -1:

library(xts)
require(TTR)
close_series=rnorm(20,100,10)
date=seq(as.Date("2000/1/1"), as.Date("2000/1/20"), "days")
close_xts=xts(close_series,date)

x.points.buy=c(1,5,9,17)
x.points.sell=c(3,6,12,20)
buy.points=index(close_xts[x.points.buy])
sell.points=index(close_xts[x.points.sell])

signal<- xts(rep(NA,length(close_xts)),index(close_xts)) 
signal[buy.points]<-1
signal[sell.points]<--1
signal<-na.locf(signal)
returns <- ROC(close_xts,type="discrete")*signal
returns[is.na(returns)]<- 0
eq <- exp(cumsum(returns))

這給我的回報似乎好得令人難以置信,我無法理解這些累積回報顯示如此巨大數字的基本方法。誰能幫我理解這一點?

在此處輸入圖像描述

這是我重複你的程式碼後得到的淨值線。這怎麼好?可能你只用一組數字跑步。這裡的任何方法都是您可以做的一些事情來更接近現實:

  1. 將收盤價作為對數正態分佈而不是正態分佈。
  2. 您稍後將增加回報。只有當您有對數差異而不是簡單差異時,這才是正確的。
  3. 使用大量樣本執行相同的模擬以獲得分佈,然後確定它是好還是壞。
  4. 您將在淨值線上看到的波動是因為您為標準差提供了巨大的價值。

時間序列回報摘要

您可以使用 PerformanceAnalytics 包,並獲取以下圖表,累積收益、每日收益以及回撤,以了解時間序列。

程式碼:庫(“性能分析”)

chart.PerformanceSummary(ROC(eq, n = 1, type = “discrete”), main = “Returns (PerformanceAnalytice::charts.PerformanceSummary)”)

引用自:https://quant.stackexchange.com/questions/9752