The core problem here is related to custom functions in the .GlobalEnv and using certain parallel backends in walk.forward.

We're working on evaluating a patch provided by Jonathan Owen, and hope to have a fix in svn on R-Forge soon.

Regards,

Brian

On 09/30/2014 10:25 AM, Derek Wong wrote:
Mark,

Thank you for the reply. I really appreciate you taking the time to look at
it. However in my previous email/post and my current code I do not see a
line that shows

portfolio1.st <- 'pair1'account.st <- 'pairs'

they should be two separate lines. Either way I have run the entire code
and will show the area I am focusing on. Which is the end using the
walk.forward() function, as everything else in the code runs perfectly for
me using R 3.1.1 in windows or ubuntu.

Code I am focusing on:

# Objective Function
my.obj.func <- function(x)
{
   # pick one of the following objective functions (uncomment)

   #return(max(x$tradeStats$Max.Drawdown) == x$tradeStats$Max.Drawdown)

   return(max(x$tradeStats$Net.Trading.PL) == x$tradeStats$Net.Trading.PL)

}

#WFA
require(doParallel)
cl <- makePSOCKcluster(2)
registerDoParallel(cl)

result <- walk.forward(pairStrat,
                        paramset.label = "BBOPT",
                        portfolio.st = portfolio1.st,
                        account.st = account.st,
                        period = "months",
                        k.training = 6,
                        k.testing = 3,
                        obj.func = my.obj.func,
                        obj.args = list(x=quote(result$apply.paramset)),
                        audit.prefix = "wfa",
                        anchored = FALSE,
                        verbose = TRUE)


Output below:
# Objective Function
my.obj.func <- function(x)
+ {
+   # pick one of the following objective functions (uncomment)
+
+   #return(max(x$tradeStats$Max.Drawdown) == x$tradeStats$Max.Drawdown)
+
+   return(max(x$tradeStats$Net.Trading.PL) == x$tradeStats$Net.Trading.PL)
+
+ }

#WFA
require(doParallel)
cl <- makePSOCKcluster(2)
registerDoParallel(cl)

result <- walk.forward(pairStrat,
+                        paramset.label = "BBOPT",
+                        portfolio.st = portfolio1.st,
+                        account.st = account.st,
+                        period = "months",
+                        k.training = 6,
+                        k.testing = 3,
+                        obj.func = my.obj.func,
+                        obj.args = list(x=quote(result$apply.paramset)),
+                        audit.prefix = "wfa",
+                        anchored = FALSE,
+                        verbose = TRUE)
[1] "=== training BBOPT on 2009-01-02/2009-06-30"
automatically exporting the following variables from the local environment:
   account, account.st, calc, env.instrument, mktdata, orderbook,
paramset.label, portfolio, portfolio.st, strategy, user.args, user.func
explicitly exporting variables(s): clone.portfolio, clone.orderbook,
install.param.combo
numValues: 180, numResults: 0, stopped: TRUE
got results for task 1
numValues: 180, numResults: 1, stopped: TRUE
returning status FALSE
got results for task 2
<SNIP>
got results for task 180
numValues: 180, numResults: 180, stopped: TRUE
first call to combine function
evaluating call object to combine results:
   fun(result.1, result.2, result.3, result.4, result.5, result.6,
    <SNIP>
     result.177, result.178, result.179, result.180)
error calling combine function:
<simpleError in fun(result.1, result.2, result.3, result.4, result.5,
result.6,     result.7, result.8, result.9, result.10, result.11,
result.12,     result.13, result.14, result.15, result.16, result.17,
result.18,     result.19, result.20, result.21, result.22,
<SNIP>
result.171,     result.172, result.173, result.174, result.175, result.176,
     result.177, result.178, result.179, result.180): attempt to select less
than one element>
Error in walk.forward(pairStrat, paramset.label = "BBOPT", portfolio.st =
portfolio1.st,  :
   obj.func() returned empty result
In addition: Warning messages:
1: In e$fun(obj, substitute(ex), parent.frame(), e$data) :
   already exporting variable(s): env.instrument
2: In max(x$tradeStats$Net.Trading.PL) :
   no non-missing arguments to max; returning -Inf



Thanks again

Derek

On Tue, Sep 30, 2014 at 8:20 AM, Mark Knecht <[email protected]> wrote:

On Tue, Sep 30, 2014 at 12:34 AM, Derek Wong <[email protected]> wrote:
Hello,

I have been able to reproduce this error in Ubuntu based system as well
not
just on windows. I was wondering if anyone had any insights or ways to to
solve this or create a work around.  If there is any additional
information
you require let me know. Please I would really appreciate help on this.
It
is totally out of my depth and I am hoping that this fine community can
help.


Derek,
    I have no time to do any debugging of this but the first error on my
Gentoo system running RStudio and R-3.1.1 is actually this line:

portfolio1.st <- 'pair1'account.st <- 'pairs'

which does look like bad code to me.

    One 'problem' with a number of demos that are out there is that the demo
author may be using the development version of a specific package which
then results in end user types (like me) having problems.

    I suggest you run this code line-by-line and then post back a few lines
preceding the breakdown. Maybe someone can give better input than
I can. Also, please edit/snip your responses to add focus to the exact
issue.

Good luck,
Mark

On Wed, Sep 24, 2014 at 9:36 PM, Derek Wong <[email protected]>
wrote:

Hello,

I am having a lot of trouble with using walk.forward.in windows. i get
the following error. This may be related to bug #5814. If someone could
please help me i would really appreciate it. The reproducible code
below is
based on the pair_trade example. Thanks.

error calling combine function:
<simpleError in fun(result.1, result.2, result.3, result.4, result.5,
result.6,     result.7, result.8, result.9, result.10, result.11,
<SNIP>
result.172, result.173, result.174, result.175, result.176,
  result.177,
result.178, result.179, result.180): attempt to select less than one
element>
Error in walk.forward(pairStrat, paramset.label = "BBOPT", portfolio.st
=


        [[alternative HTML version deleted]]

_______________________________________________
[email protected] 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.


--
Brian G. Peterson
http://braverock.com/brian/
Ph: 773-459-4973
IM: bgpbraverock

_______________________________________________
[email protected] 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.

Reply via email to