-
Notifications
You must be signed in to change notification settings - Fork 105
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Issue with chart.RiskReturnScatter in performance analytics, need finite 'ylim' values error #107
Comments
I cannot replicate an error using the simple example below. I tried using both the CRAN version and development version of PerformanceAnalytics. library(PerformanceAnalytics)
data(managers)
x <- managers[, 2:4]
rf <- managers[, "US 3m TR"]
chart.RiskReturnScatter(x, Rf = rf, main = "", cex.axis = 1.5, cex.lab = 1.5) Please provide a reproducible example and the output from Here is my
I just noticed that you show data with only 4 rows. I'm not sure if that's for illustrative purposes, or if you are only passing 4 rows to y <- x[seq(0, nrow(x), 3),]
y <- y[1:4,]
y[, 1] <- NA
chart.RiskReturnScatter(y, Rf = rf, main = "", cex.axis = 1.5, cex.lab = 1.5)
# Error in plot.window(...) : need finite 'xlim' values The error is z <- y
z[,1] <- 0
chart.RiskReturnScatter(z, Rf = rf, main = "", cex.axis = 1.5, cex.lab = 1.5) And the above code works. I have no idea what I would be happy to continue investigating if you can provide a reproducible example. |
Hi Joshua - I apologize for taking up your time with my shoddy example. I am still getting my feet wet but this became a great learning lesson for me. Here is I hope a better example. Thank you for your patience.
|
Session Info:sessionInfo() Matrix products: default locale: attached base packages: other attached packages: loaded via a namespace (and not attached): |
Hi Joshua - I apologize for taking up your time with my shoddy example. I
am still getting my feet wet but this became a great learning lesson for
me. Here is I hope a better example. I have also attached the error dump
log in this email because the file format is not supported in Github. Thank
you for your patience.
library("PerformanceAnalytics")
Periods <- c(1, 3, 5)
Plot <- 2L
Portfolios <- list(c(3, 5, 9), 9, NULL)
rf <- 0.009585192
risk.free.rate <- structure(c(0, 0.0016, 0.002, 0.0028, 0.0029, 0.0051,
0.0076, 0.0103, 0.0106, 0.0139, 0.0173, 0.0193, 0.0219), .Dim = c(13L,
1L), .Dimnames = list(NULL, "RiskFree"), index = structure(c(1443571200,
1451520000, 1459382400, 1467244800, 1475193600, 1483142400, 1490918400,
1498780800, 1506729600, 1514678400, 1522454400, 1530316800, 1538265600),
tzone = "UTC", tclass = "Date"), class = c("xts", "zoo"),
.indexCLASS = "Date",
tclass = "Date", .indexTZ = "UTC", tzone = "UTC")
performance <- structure(c(0.011, 0.004, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, 0.012, 0.007, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, 0.009, 0.01, -0.002, -0.017, 0.005, 0.0073, NA, 0, 0, 0, 0,
NA, NA, 0.011, 0.011, -0.001, -0.022, 0.014, 0.0117, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, 0.008, 0.003, -0.006, -0.003, 0.007,
-0.001, NA, NA, NA, NA, NA, NA, NA, 0.0117, 0.006, -0.005, -0.006,
0.007, -0.001, NA, NA, NA, NA, NA, NA, NA, 0.0094, 0.006, -0.001, -0.01,
0.003, 0.006, NA, NA, NA, NA, NA, NA, NA, 0.0094, 0.00601457, -0.002,
-0.01, 1e-04, 0.002, 0.011, 0.004, 0, 0, 0, 0, 0, 0.0075690687367229,
0.00129339236892773, -0.00250716410500521, -0.00126718922198639,
0.00287730741378422,
-0.000410856687915031, 0.012, 0.007, 0, 0, 0, 0, 0, 0.0117,
0.00258678473785546,
-0.00208930342083768, -0.00253437844397278, 0.00287730741378422,
-0.000410856687915031),
.Dim = c(13L, 10L), .Dimnames = list(NULL, c("HR Muni plus cash",
"BofA ML 1-10 year AAA-A Muni",
"HR Muni Bond", "BofA ML 1-10 year AAA-A Muni", "HR Taxable Bond",
"BC Interm. Gov/Credit", "HR Muni w/o cash", "BofA ML 1-10
year AAA-A Muni",
"Composite Portfolio", "Composite Benchmark")), index =
structure(c(1443571200,
1451520000, 1459382400, 1467244800, 1475193600, 1483142400, 1490918400,
1498780800, 1506729600, 1514678400, 1522454400, 1530316800,
1538265600),
tzone = "UTC", tclass = "Date"), class = c("xts", "zoo"),
.indexCLASS = "Date",
tclass = "Date", .indexTZ = "UTC", tzone = "UTC")
portfolio <- structure(c(0.009, 0.01, -0.002, -0.017, 0.005, 0.0073, 0,
0, 0, 0), index = structure(c(1459382400, 1467244800, 1475193600,
1483142400,
1490918400, 1498780800, 1514678400, 1522454400, 1530316800, 1538265600),
tzone = "UTC", tclass = "Date"), .Dim = c(10L, 1L), .Dimnames = list(NULL,
"HR Muni Bond"), class = c("xts", "zoo"), .indexCLASS = "Date",
tclass = "Date",
.indexTZ = "UTC", tzone = "UTC", na.action = structure(c(1L, 2L, 9L),
class = "omit", index = c(1443571200, 1451520000, 1506729600)))
num.quarters = nrow(performance)
# Risk Return Scatter Plots (1,3 & 5yr)
for (Plot in 1:length(Periods)) {
Period.Qtr = Periods[Plot] * 4
portfolio.list = Portfolios[[Plot]]
if (length(portfolio.list) > 0) {
x = num.quarters - Period.Qtr + 1
y = num.quarters
rf = as.numeric((1 + Return.annualized(risk.free.rate[x:y, ]))^0.25 -
1)
layout(c(1, 1))
chart.RiskReturnScatter(performance[x:y,
portfolio.list][is.na(performance[x:y,
portfolio.list])] <- 0, Rf = rf, main = "", cex.axis = 1.5,
cex.lab = 1.5)
p = captureplot()
}
}
…On Sun, Nov 18, 2018 at 7:56 AM Joshua Ulrich ***@***.***> wrote:
I cannot replicate an error using the simple example below. I tried using
both the CRAN version and development version of PerformanceAnalytics.
library(PerformanceAnalytics)
data(managers)x <- managers[, 2:4]rf <- managers[, "US 3m TR"]
chart.RiskReturnScatter(x, Rf = rf, main = "", cex.axis = 1.5, cex.lab = 1.5)
Please provide a reproducible example
<https://stackoverflow.com/q/5963269/271616> and the output from
sessionInfo(). It's not clear what the performance object truly is
(xts/zoo, data.frame, tibble, etc),
Here is my sessionInfo():
R> sessionInfo()
R version 3.5.1 (2018-07-02)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 18.04.1 LTS
Matrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] PerformanceAnalytics_1.5.2.2 xts_0.11-2.1
[3] zoo_1.8-4
loaded via a namespace (and not attached):
[1] compiler_3.5.1 tools_3.5.1 grid_3.5.1 lattice_0.20-38
[5] quadprog_1.5-5
------------------------------
I just noticed that you show data with only 4 rows. I'm not sure if that's
for illustrative purposes, or if you are only passing 4 rows to
chart.RiskReturnScatter().
y <- x[seq(0, nrow(x), 3),]y <- y[1:4,]y[, 1] <- NA
chart.RiskReturnScatter(y, Rf = rf, main = "", cex.axis = 1.5, cex.lab = 1.5) # Error in plot.window(...) : need finite 'xlim' values
The error is xlim instead of ylim, but that's an actual error close to
your issue. Now to replace the NA with zero.
z <- yz[,1] <- 0
chart.RiskReturnScatter(z, Rf = rf, main = "", cex.axis = 1.5, cex.lab = 1.5)
And the above code works. I have no idea what tk_xts() is, so I can't
help with that.
I would be happy to continue investigating if you can provide a reproducible
example <https://stackoverflow.com/q/5963269/271616>.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#107 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/APWzEQnKm1u3nVFuuqNOvyJ_WZCjFcL9ks5uwVkDgaJpZM4YasgB>
.
|
I am currently trying to create a Risk Return Scatter plot using the following code:
The
performance[x:y, portfolio.list]
dataframe is formatted as:I modified my code to replace the NA's with zeros thinking that this would correct the error:
Nope, that didn't fix the issue. I received the following error: "Error in checkData(R): The data cannot be converted into a time series. If you are trying to pass in names from a data object with one column, you should use the form 'data[rows, columns, drop = FALSE]'. Rownames should have standard date formats, such as '1985-03-15'."
I went back to the drawing board and added
tk_xts
to coerce the dataframe back to the xts format using this code:I think I am up to strike 3. I now get this error: "Error in xts::xts(data, ...) : order.by requires an appropriate time-based object"
I am not sure where to proceed next. Any suggestions are greatly appreciated.
Thank you.
The text was updated successfully, but these errors were encountered: