Skip to content
Back to formatted view

Raw Message

Message-ID: <56F10658.9000302@braverock.com>
Date: 2016-03-22T08:46:16Z
From: Brian G. Peterson
Subject: need apply.paramset logging
In-Reply-To: <56F10446.3090601@vodafone.it>

On 03/22/2016 03:37 AM, Diego Peroni wrote:
> I'm testing paramset combinations with:
>
> .....
> library(doMC)
> registerDoMC(cores=detectCores())
> paramsetenv = new.env()
> results = apply.paramset(qs.strategy, paramset.label = "MACDOPT",
> verbose = TRUE,
>                            portfolio=qs.strategy, account=qs.strategy,
> nsamples=0, audit=paramsetenv)
>
> but the procedure returns NULL object with this message:
>
> error calling combine function:
> <simpleError: $ operator is invalid for atomic vectors>
>
> Is there a way to log threads errors?
>
> Or how can I modify "apply.paramset" function to "catch" single
> simultation error or void result and discard it?

you're setting

nsamples=0

so you have zero results to combine.

In this case, you told it to run no samples, but I can conceive of a 
strategy using some MCMC sampler that could fail spontaneously in some 
circumstances.

In a more general sense, you could specify a custom .combine function 
that could trap errors if there was some possibility that your strategy 
would fail to return a viable result.

A strategy that runs fine in a single core should run fine in 
apply.paramset.  A reasonable way to start testing this beyond a single 
parameterization would be to set a small number of samples, like 
nsamples=50 and run it with registerDoSEQ() to run it sequentially.

Regards,

Brian

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