Peter Carl
http://www.braverock.com/~peter
> Many thanks. I tried to implement this, but still seem to miss something.
>
> Here's a contrived example.Using 10.5 years of monthly fund data, I use
> a stock market and a real estate index to "explain" the returns of the
> fund. What I would like to do is to plot the R-squared over time with the
> function.RollingStyle I proceed as follows:
> ??
> head(Rfund.z)
> ?? 2000-01-31???? 2000-03-02???? 2000-03-31???? 2000-05-01????
> 2000-05-31???? 2000-07-01
> -0.033951898?? 0.052783466 -0.020335698 -0.006613730?? 0.008663712??
> 0.091497179
>
> ??head(Rstyle.z)
> ???????????????????????????? Stocks.z?????????????? RE.z
> 2000-01-31 -0.058851033?? 0.01968497
> 2000-03-02?? 0.002817568 -0.03427083
> 2000-03-31?? 0.066951099?? 0.06969885
>
> Applying the page.RollingStyle function yields an error message
>
>> page.RollingStyle (Rfund.z, Rstyle.z, method="constrained",
> leverage=FALSE)
>
> Error in checkData(R.fund) :
> ?? 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'.
> In addition: Warning message:
> In rollapply.zoo(data = merged.assets, FUN = function(x) { :
> ?? na.pad argument is deprecated
>
>
> Would be great, if someone could provide me with a brief explanation of
> what exactly is going wrong here. Many thanks, Cheers,
> Phil
>
>
>
>
>>
>> -------- Original-Nachricht --------
>> Datum: Tue, 6 Sep 2011 16:01:14 -0500
>> Von: "Peter Carl" <peter at braverock.com>
>> An: "Philipp Haumueller" <phaumueller at gmx.net>
>> CC: r-sig-finance at r-project.org
>> Betreff: Re: [R-SIG-Finance] PerformanceAnalytics - Style Analysis-
>> plotting R squared over time
>>
>> Take a look at the code itself - it implements what you are
>> asking for.
>> In particular, pay attention to the rollapply functions.
>>
>> > page.RollingStyle
>> function (R.fund, R.style, method = c("constrained", "unconstrained",
>> "normalized"), leverage = FALSE, selection = "none", width = 12,
>> main = paste(colnames(R.fund)[1], " Rolling ", width, "-Month Style
>> Weights",
>> sep = ""), space = 0, ...)
>> {
>> R.fund = checkData(R.fund[, 1, drop = FALSE], method = "zoo")
>> R.style = checkData(R.style, method = "zoo")
>> method = method[1]
>> columns.fund = ncol(R.fund)
>> columns.style = ncol(R.style)
>> columnnames.fund = colnames(R.fund)
>> columnnames.style = colnames(R.style)
>> merged.assets = na.omit(merge(R.fund, R.style))
>> result = rollapply(data = merged.assets, FUN = function(x) {
>> t(style.fit(R.fund = x[, 1, drop = FALSE], R.style = x[,
>> -1, drop = FALSE], method = method, leverage = leverage,
>> selection = selection)$weights)
>> }, width = width, by = 1, by.column = FALSE, na.pad = FALSE,
>> align = "right")
>> fit = rollapply(data = merged.assets, FUN = function(x) {
>> t(style.fit(R.fund = x[, 1, drop = FALSE], R.style = x[,
>> -1, drop = FALSE], method = method, leverage = leverage,
>> selection = selection)$R.squared)
>> }, width = width, by = 1, by.column = FALSE, na.pad = FALSE,
>> align = "right")
>> colnames(result) = columnnames.style
>> rows = nrow(result)
>> ymax = max(c(1, result))
>> ymin = min(c(-1, result))
>> op <- par(oma = c(2, 0, 4, 0), mar = c(0, 4, 0, 4))
>> layout(matrix(c(1:columns.style, columns.style + 1, columns.style +
>> 2), nc = 1, byrow = TRUE))
>> for (i in 1:columns.style) {
>> if (even(i))
>> yaxis.right = TRUE
>> else yaxis.right = FALSE
>> chart.TimeSeries(result[, i, drop = F], type = "h", lend =
>> "butt",
>> xaxis = FALSE, main = "", ylab = colnames(result)[i],
>> ylim = c(ymin, ymax), yaxis.right = yaxis.right,
>> ...)
>> }
>> positives = result
>> for (column in 1:ncol(result)) {
>> for (row in 1:nrow(result)) {
>> positives[row, column] = max(0, result[row, column])
>> }
>> }
>> negatives = result
>> for (column in 1:ncol(result)) {
>> for (row in 1:nrow(result)) {
>> negatives[row, column] = min(0, result[row, column])
>> }
>> }
>> sumpositives = zoo(apply(positives, 1, sum), order.by =
>> index(positives))
>> sumnegatives = zoo(apply(negatives, 1, sum), order.by =
>> index(negatives))
>> net = apply(result, 1, sum)
>> if (even(columns.style + 1))
>> yaxis.right = TRUE
>> else yaxis.right = FALSE
>> chart.TimeSeries(cbind(sumpositives, sumnegatives), type = "h",
>> lend = "butt", xaxis = FALSE, main = "", ylab = "Total",
>> yaxis.right = yaxis.right, ...)
>> lines(1:rows, net)
>> if (even(columns.style + 2))
>> yaxis.right = TRUE
>> else yaxis.right = FALSE
>> chart.TimeSeries(fit, type = "l", xaxis = TRUE, main = "",
>> ylab = "AdjR^2", ylim = c(0, 1), yaxis.right = yaxis.right,
>> ...)
>> mtext(main, side = 3, outer = TRUE, font = 2, cex = 1.2,
>> line = 1)
>> par(op)
>> }
>>
>> --
>> Peter Carl
>> http://www.braverock.com/~peter
>>
>> > Hi Carl,
>> >
>> > Many thanks for your quick reply. Just a follow up on this. While I
>> have
>> > installed PA pages I wasn't too successful in finding further
>> information
>> > in respect of implementing the function.page RollingStyle which would
>> > allow
>> > me to plot the R-squared over time for my returns based analysis
>> > (Sharpe-model).Would you mind pointing me to some further information?
>> >
>> > Also, is there a straightforward way to chart or calculate each
>> factor
>> > weight
>> > so that the values can be read easily (while chart.RollingStyle.
>> gives a
>> > good graphical impression of the styles, I'd also be interested in
>> > obtaining an idea of the exact weightings at some point in time, e.g.
>> > showing min/max over time and potentially also some kind of summary
>> > statistics like avg or sd of the style attributes)
>> >
>> > Some help on this would be awesome - thks.
>> >
>> > Phil
>> >> -------- Original-Nachricht --------
>> >> Datum: Tue, 6 Sep 2011 09:38:37 -0500
>> >> Von: "Peter Carl" <peter at braverock.com>
>> >> An: "Philipp Haumueller" <phaumueller at gmx.net>
>> >> CC: r-sig-finance at r-project.org
>> >> Betreff: Re: [R-SIG-Finance] PerformanceAnalytics - Style Analysis-
>> >> plotting R squared over time
>> >>
>> >> Phil,
>> >>
>> >> The function page.RollingStyle in PApages (also on RForge) shows
>> >> something
>> >> of a brute-force way to do it. I'm sure there's a better way, but
>> that
>> >> should work for you.
>> >>
>> >> pcc
>> >> --
>> >> Peter Carl
>> >> http://www.braverock.com/~peter
>> >>
>> >> > Dear all,
>> >> >
>> >> > I am running some analysis based on an asset factor model (Sharpe
>> >> model
>> >> -
>> >> > Style Analyses) in the Package PerformanceAnalytics/R-Forge.While
>> >> > calculating weights etc. works fine I would also like to
>> >> calculate/plot
>> >> > rolling R-squared values of the Sharpe model over time? Are there
>> any
>> >> > suggestions how to run this?
>> >> >
>> >> > Your help is greatly appreciated - thx,
>> >> >
>> >> > Phil
>> >> > --
>> >> >
>> >> >
>> >> >
>> >> > [[alternative HTML version deleted]]
>> >> >
>> >> > _______________________________________________
>> >> > R-SIG-Finance at r-project.org mailing list
>> >> > https://stat.ethz.ch/mailman/listinfo/r-sig-finance
>> >> > -- Subscriber-posting only. If you want to post, subscribe first.
>> >> > -- Also note that this is not the r-help list where general R
>> >> questions
>> >> > should go.
>> >> >
>> >>
>> >>
>> >>
>> >
>> > --
>> > Empfehlen Sie GMX DSL Ihren Freunden und Bekannten und wir
>> > belohnen Sie mit bis zu 50,- Euro! https://freundschaftswerbung.gmx.de
>> >
>>
>>
>>
>
> --
> Empfehlen Sie GMX DSL Ihren Freunden und Bekannten und wir
> belohnen Sie mit bis zu 50,- Euro! https://freundschaftswerbung.gmx.de
>