R chart.RollingPerformance 股价无法输出正确的y轴
R chart.RollingPerformance stock price unable to output correct y axis
这是我读取一堆 ETF 的代码。我尝试对 ETF 的 return 使用 chart.RollingPerformance,但似乎无法使用正确的 y 轴输出显示?
我读入了这些数据:
mystocks <- new.env(hash=TRUE)
getSymbols(c("QQQ", "XBI", "VYM", "VOO"), env=mystocks, from ="2016-01-04", to ="2020-10-22")
etf <- do.call(cbind,eapply(mystocks, Cl))
str(etf)
head(etf)
An ‘xts’ object on 2016-01-04/2020-10-21 containing:
Data: num [1:1210, 1:4] 184 185 182 178 176 ...
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr [1:4] "VOO.Close" "QQQ.Close" "XBI.Close" "VYM.Close"
Indexed by objects of class: [Date] TZ: UTC
xts Attributes:
List of 2
$ src : chr "yahoo"
$ updated: POSIXct[1:1], format: "2020-10-23 15:38:16"
VOO.Close QQQ.Close XBI.Close VYM.Close
2016-01-04 184.31 109.50 67.83 65.95
2016-01-05 184.64 109.31 67.22 66.28
2016-01-06 182.30 108.26 64.35 65.41
2016-01-07 177.86 104.87 61.82 64.00
2016-01-08 175.97 104.01 60.51 63.28
2016-01-11 175.99 104.33 57.14 63.35
我用这些代码绘制了以下内容。我附上图片以供参考。
etf_returns_discrete = Return.calculate(etf, method = c("discrete"))
etf_returns_log = Return.calculate(etf, method = c("log"))
charts.RollingPerformance(etf_returns_discrete,
Rf=.03/12,
main="Rolling 12-Month Performance",
legend.loc="topleft")
Here is the link to the photo
提前致谢!!
发生这种情况是因为 charts.RollingPerformance 中宽度的默认值 = 12,而您每天都在使用 returns。由于您仅使用 12 天进行年化 returns,因此您有时会获得 >100% 的年化 returns。如果您使用大约一年(252 个工作日),您将获得所需的结果。只需将您对 charts.RollingPerformance 的调用更改为:
charts.RollingPerformance(R = etf_returns_discrete,
width = 252,
Rf = 0,
"Rolling 12-Month Performance")
这是我读取一堆 ETF 的代码。我尝试对 ETF 的 return 使用 chart.RollingPerformance,但似乎无法使用正确的 y 轴输出显示?
我读入了这些数据:
mystocks <- new.env(hash=TRUE)
getSymbols(c("QQQ", "XBI", "VYM", "VOO"), env=mystocks, from ="2016-01-04", to ="2020-10-22")
etf <- do.call(cbind,eapply(mystocks, Cl))
str(etf)
head(etf)
An ‘xts’ object on 2016-01-04/2020-10-21 containing:
Data: num [1:1210, 1:4] 184 185 182 178 176 ...
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr [1:4] "VOO.Close" "QQQ.Close" "XBI.Close" "VYM.Close"
Indexed by objects of class: [Date] TZ: UTC
xts Attributes:
List of 2
$ src : chr "yahoo"
$ updated: POSIXct[1:1], format: "2020-10-23 15:38:16"
VOO.Close QQQ.Close XBI.Close VYM.Close
2016-01-04 184.31 109.50 67.83 65.95
2016-01-05 184.64 109.31 67.22 66.28
2016-01-06 182.30 108.26 64.35 65.41
2016-01-07 177.86 104.87 61.82 64.00
2016-01-08 175.97 104.01 60.51 63.28
2016-01-11 175.99 104.33 57.14 63.35
我用这些代码绘制了以下内容。我附上图片以供参考。
etf_returns_discrete = Return.calculate(etf, method = c("discrete"))
etf_returns_log = Return.calculate(etf, method = c("log"))
charts.RollingPerformance(etf_returns_discrete,
Rf=.03/12,
main="Rolling 12-Month Performance",
legend.loc="topleft")
Here is the link to the photo
提前致谢!!
发生这种情况是因为 charts.RollingPerformance 中宽度的默认值 = 12,而您每天都在使用 returns。由于您仅使用 12 天进行年化 returns,因此您有时会获得 >100% 的年化 returns。如果您使用大约一年(252 个工作日),您将获得所需的结果。只需将您对 charts.RollingPerformance 的调用更改为:
charts.RollingPerformance(R = etf_returns_discrete,
width = 252,
Rf = 0,
"Rolling 12-Month Performance")