apply.paramset.signal.analysis error

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

apply.paramset.signal.analysis error

Erol Biceroglu-2
Hello,

I've updated to the latest quanstrat, and still get an error using
apply.paramset.signal.analysis:

Error in post.signal.returns(signals = .sig.list[[name.ref]][,
paste(symbols[j],  :
  number of items to replace is not a multiple of replacement length


applyStrategy works, apply.paramset works, however I can't get the signal
portion working and was wondering if anyone knew what the error was.

When I run debug, the problem occurs in *post.signal.returns*, on the final
signal.ret[j,] = tryCatch, where the tryCatch returns an xts object with 5
rows, and it wants to update signal.ret[j,] which is length 6.

Any feedback would be greatly appreciated.  Thanks for your help.

Here's my sessionInfo():

####

> sessionInfo()R version 3.3.1 (2016-06-21)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 14.04.4 LTS

locale:
 [1] LC_CTYPE=en_CA.UTF-8       LC_NUMERIC=C
LC_TIME=en_CA.UTF-8
 [4] LC_COLLATE=en_CA.UTF-8     LC_MONETARY=en_CA.UTF-8
LC_MESSAGES=en_CA.UTF-8
 [7] LC_PAPER=en_CA.UTF-8       LC_NAME=C
LC_ADDRESS=C
[10] LC_TELEPHONE=C             LC_MEASUREMENT=en_CA.UTF-8
LC_IDENTIFICATION=C

attached base packages:
[1] parallel  stats     graphics  grDevices utils     datasets
methods   base

other attached packages:
 [1] doParallel_1.0.10             iterators_1.0.8
quantstrat_0.9.1739
 [4] foreach_1.4.3                 blotter_0.9.1695
FinancialInstrument_1.2.0
 [7] quantmod_0.4-5                TTR_0.23-1
PerformanceAnalytics_1.4.3541
[10] xts_0.9.874                   zoo_1.7-13

loaded via a namespace (and not attached):
[1] compiler_3.3.1   tools_3.3.1      codetools_0.2-14 grid_3.3.1
 lattice_0.20-33

####

Here's the MRE:
#################################

library(xts)
library(PerformanceAnalytics)
library(quantmod)
library(TTR)
library(quantstrat)

getSymbols(Symbols = "SPY", from = "2000-01-01")


startDate<-as.Date(index(SPY)[1], format="%Y-%m-%d")
endDate<-as.Date(index(last(SPY)), format="%Y-%m-%d")

currency("USD")

stock(primary_id = c("SPY"),currency = "USD")

#name
maStrategy <-"MAStrategy"

#Date, one day before prices
strategyDate <- min(index(SPY)) - 1

NumSh<-1

#rm.strat(maStrategy)
#rm(mktdata)


maLag <- 5


#init portfolio and account
initPortf(name = maStrategy
          , symbols = list("SPY") #as defined in Financial instrument
          , initDate = strategyDate
)

initAcct(name = maStrategy
         ,portfolios = maStrategy
         ,initDate = strategyDate
         ,initEq = 1
)

#order book, and strategy
initOrders(portfolio = maStrategy
           , initDate = strategyDate
)

#position limits
addPosLimit(maStrategy, symbol = "SPY", strategyDate, maxpos = NumSh,
longlevels = NumSh, minpos = 0)

strategy( maStrategy, store = TRUE)

#add indicator
add.indicator(strategy = maStrategy
              , name = "EMA"
              , arguments = list(x = quote(mktdata$SPY.Close), n =
quote(maLag))
              , label = "SPYma"
)




add.signal(strategy = maStrategy
           , name = "sigComparison"
           , arguments = list(columns = c("SPY.Close","SPYma")
                              , relationship = "gt"
           )
           , label = "SPY.gt.ma"
)



add.signal(strategy = maStrategy
           , name = "sigComparison"
           , arguments = list(columns = c("SPY.Close","SPYma")
                              , relationship = "lte"
           )
           , label = "SPY.lte.ma"
)




#Entry and exit rules


add.rule(strategy = maStrategy
         , name = "ruleSignal"
         , arguments = list(sigcol = "SPY.gt.ma"
                            , sigval = TRUE
                            , orderqty = NumSh
                            , ordertype = "market"
                            , orderside = NULL
                            , osFUN = "osMaxPos"
                            , symbol = "SPY"
         )
         , type = "enter"
)


add.rule(strategy = maStrategy
         , name = "ruleSignal"
         , arguments = list(sigcol = "SPY.lte.ma"
                            , sigval = TRUE
                            , orderqty = "all"
                            , ordertype = "market"
                            , orderside = NULL
                            , osFUN = "osMaxPos"
                            , symbol = "SPY"
         )
         , type = "exit"
)


applyStrategy(strategy = maStrategy
              , portfolios = maStrategy
)

updatePortf(maStrategy)
updateAcct(maStrategy)
updateEndEq(maStrategy)


maLag <- seq(5,10,1)
####################
#delete.paramset(maStrategy,"maLagDist")
add.distribution(strategy = maStrategy
                 , paramset.label = "maLagDist"
                 , component.type = "indicator"
                 , component.label = "SPYma"
                 , variable = list(n = maLag)
                 , label = "lagDist"

)



library(foreach)
library(doParallel)
cl <- makeForkCluster(nnodes = detectCores())
registerDoParallel(cl)
maStrategyAP <-
  apply.paramset(strategy.st = maStrategy
                 , paramset.label = "maLagDist"
                 , portfolio.st = maStrategy
                 , account.st = maStrategy
  )
stopCluster(cl = cl)
cl <- NULL
closeAllConnections()
gc()


#this works
maStrategyAP$tradeStats$Profit.To.Max.Draw


head(mktdata)

#undebug(apply.paramset.signal.analysis)
maStrategyAPSA <-
  apply.paramset.signal.analysis(strategy.st = maStrategy
                                 , paramset.label = "maLagDist"
                                 , portfolio.st = maStrategy
                                 , sigcol = "SPY.gt.ma"
                                 , sigval = 1
                                 , on = NULL
                                 , forward.days = 5
                                 , include.day.of.signal = TRUE
  )


##################################



Erol Biceroglu

        [[alternative HTML version deleted]]

_______________________________________________
[hidden email] 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 | Threaded
Open this post in threaded view
|

Re: apply.paramset.signal.analysis error

Joshua Ulrich
Hi Erol,

On Mon, Aug 1, 2016 at 7:18 PM, Erol Biceroglu
<[hidden email]> wrote:

> Hello,
>
> I've updated to the latest quanstrat, and still get an error using
> apply.paramset.signal.analysis:
>
> Error in post.signal.returns(signals = .sig.list[[name.ref]][,
> paste(symbols[j],  :
>   number of items to replace is not a multiple of replacement length
>
>
> applyStrategy works, apply.paramset works, however I can't get the signal
> portion working and was wondering if anyone knew what the error was.
>
> When I run debug, the problem occurs in *post.signal.returns*, on the final
> signal.ret[j,] = tryCatch, where the tryCatch returns an xts object with 5
> rows, and it wants to update signal.ret[j,] which is length 6.
>
Thanks for the reproducible example.  This looks like a bug when
include.day.of.signal = TRUE.  I'll investigate.

> Any feedback would be greatly appreciated.  Thanks for your help.
>
> Here's my sessionInfo():
>
> ####
>
>> sessionInfo()R version 3.3.1 (2016-06-21)
> Platform: x86_64-pc-linux-gnu (64-bit)
> Running under: Ubuntu 14.04.4 LTS
>
> locale:
>  [1] LC_CTYPE=en_CA.UTF-8       LC_NUMERIC=C
> LC_TIME=en_CA.UTF-8
>  [4] LC_COLLATE=en_CA.UTF-8     LC_MONETARY=en_CA.UTF-8
> LC_MESSAGES=en_CA.UTF-8
>  [7] LC_PAPER=en_CA.UTF-8       LC_NAME=C
> LC_ADDRESS=C
> [10] LC_TELEPHONE=C             LC_MEASUREMENT=en_CA.UTF-8
> LC_IDENTIFICATION=C
>
> attached base packages:
> [1] parallel  stats     graphics  grDevices utils     datasets
> methods   base
>
> other attached packages:
>  [1] doParallel_1.0.10             iterators_1.0.8
> quantstrat_0.9.1739
>  [4] foreach_1.4.3                 blotter_0.9.1695
> FinancialInstrument_1.2.0
>  [7] quantmod_0.4-5                TTR_0.23-1
> PerformanceAnalytics_1.4.3541
> [10] xts_0.9.874                   zoo_1.7-13
>
> loaded via a namespace (and not attached):
> [1] compiler_3.3.1   tools_3.3.1      codetools_0.2-14 grid_3.3.1
>  lattice_0.20-33
>
> ####
>
> Here's the MRE:
> #################################
>
> library(xts)
> library(PerformanceAnalytics)
> library(quantmod)
> library(TTR)
> library(quantstrat)
>
> getSymbols(Symbols = "SPY", from = "2000-01-01")
>
>
> startDate<-as.Date(index(SPY)[1], format="%Y-%m-%d")
> endDate<-as.Date(index(last(SPY)), format="%Y-%m-%d")
>
> currency("USD")
>
> stock(primary_id = c("SPY"),currency = "USD")
>
> #name
> maStrategy <-"MAStrategy"
>
> #Date, one day before prices
> strategyDate <- min(index(SPY)) - 1
>
> NumSh<-1
>
> #rm.strat(maStrategy)
> #rm(mktdata)
>
>
> maLag <- 5
>
>
> #init portfolio and account
> initPortf(name = maStrategy
>           , symbols = list("SPY") #as defined in Financial instrument
>           , initDate = strategyDate
> )
>
> initAcct(name = maStrategy
>          ,portfolios = maStrategy
>          ,initDate = strategyDate
>          ,initEq = 1
> )
>
> #order book, and strategy
> initOrders(portfolio = maStrategy
>            , initDate = strategyDate
> )
>
> #position limits
> addPosLimit(maStrategy, symbol = "SPY", strategyDate, maxpos = NumSh,
> longlevels = NumSh, minpos = 0)
>
> strategy( maStrategy, store = TRUE)
>
> #add indicator
> add.indicator(strategy = maStrategy
>               , name = "EMA"
>               , arguments = list(x = quote(mktdata$SPY.Close), n =
> quote(maLag))
>               , label = "SPYma"
> )
>
>
>
>
> add.signal(strategy = maStrategy
>            , name = "sigComparison"
>            , arguments = list(columns = c("SPY.Close","SPYma")
>                               , relationship = "gt"
>            )
>            , label = "SPY.gt.ma"
> )
>
>
>
> add.signal(strategy = maStrategy
>            , name = "sigComparison"
>            , arguments = list(columns = c("SPY.Close","SPYma")
>                               , relationship = "lte"
>            )
>            , label = "SPY.lte.ma"
> )
>
>
>
>
> #Entry and exit rules
>
>
> add.rule(strategy = maStrategy
>          , name = "ruleSignal"
>          , arguments = list(sigcol = "SPY.gt.ma"
>                             , sigval = TRUE
>                             , orderqty = NumSh
>                             , ordertype = "market"
>                             , orderside = NULL
>                             , osFUN = "osMaxPos"
>                             , symbol = "SPY"
>          )
>          , type = "enter"
> )
>
>
> add.rule(strategy = maStrategy
>          , name = "ruleSignal"
>          , arguments = list(sigcol = "SPY.lte.ma"
>                             , sigval = TRUE
>                             , orderqty = "all"
>                             , ordertype = "market"
>                             , orderside = NULL
>                             , osFUN = "osMaxPos"
>                             , symbol = "SPY"
>          )
>          , type = "exit"
> )
>
>
> applyStrategy(strategy = maStrategy
>               , portfolios = maStrategy
> )
>
> updatePortf(maStrategy)
> updateAcct(maStrategy)
> updateEndEq(maStrategy)
>
>
> maLag <- seq(5,10,1)
> ####################
> #delete.paramset(maStrategy,"maLagDist")
> add.distribution(strategy = maStrategy
>                  , paramset.label = "maLagDist"
>                  , component.type = "indicator"
>                  , component.label = "SPYma"
>                  , variable = list(n = maLag)
>                  , label = "lagDist"
>
> )
>
>
>
> library(foreach)
> library(doParallel)
> cl <- makeForkCluster(nnodes = detectCores())
> registerDoParallel(cl)
> maStrategyAP <-
>   apply.paramset(strategy.st = maStrategy
>                  , paramset.label = "maLagDist"
>                  , portfolio.st = maStrategy
>                  , account.st = maStrategy
>   )
> stopCluster(cl = cl)
> cl <- NULL
> closeAllConnections()
> gc()
>
>
> #this works
> maStrategyAP$tradeStats$Profit.To.Max.Draw
>
>
> head(mktdata)
>
> #undebug(apply.paramset.signal.analysis)
> maStrategyAPSA <-
>   apply.paramset.signal.analysis(strategy.st = maStrategy
>                                  , paramset.label = "maLagDist"
>                                  , portfolio.st = maStrategy
>                                  , sigcol = "SPY.gt.ma"
>                                  , sigval = 1
>                                  , on = NULL
>                                  , forward.days = 5
>                                  , include.day.of.signal = TRUE
>   )
>
>
> ##################################
>
>
>
> Erol Biceroglu
>
>         [[alternative HTML version deleted]]
>
> _______________________________________________
> [hidden email] 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.



--
Joshua Ulrich  |  about.me/joshuaulrich
FOSS Trading  |  www.fosstrading.com
R/Finance 2016 | www.rinfinance.com

_______________________________________________
[hidden email] 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 | Threaded
Open this post in threaded view
|

Re: apply.paramset.signal.analysis error

Joshua Ulrich
On Tue, Aug 2, 2016 at 5:27 PM, Joshua Ulrich <[hidden email]> wrote:

> Hi Erol,
>
> On Mon, Aug 1, 2016 at 7:18 PM, Erol Biceroglu
> <[hidden email]> wrote:
>> Hello,
>>
>> I've updated to the latest quanstrat, and still get an error using
>> apply.paramset.signal.analysis:
>>
>> Error in post.signal.returns(signals = .sig.list[[name.ref]][,
>> paste(symbols[j],  :
>>   number of items to replace is not a multiple of replacement length
>>
>>
>> applyStrategy works, apply.paramset works, however I can't get the signal
>> portion working and was wondering if anyone knew what the error was.
>>
>> When I run debug, the problem occurs in *post.signal.returns*, on the final
>> signal.ret[j,] = tryCatch, where the tryCatch returns an xts object with 5
>> rows, and it wants to update signal.ret[j,] which is length 6.
>>
> Thanks for the reproducible example.  This looks like a bug when
> include.day.of.signal = TRUE.  I'll investigate.
>
Thanks for the report. This should now be fixed in quantstrat on GitHub.

Please note that your call to apply.paramset.signal.analysis does not
have a value for the obj.fun argument, which is required.  You can add
obj.fun = signal.obj.slope as an example.

>> Any feedback would be greatly appreciated.  Thanks for your help.
>>
>> Here's my sessionInfo():
>>
>> ####
>>
>>> sessionInfo()R version 3.3.1 (2016-06-21)
>> Platform: x86_64-pc-linux-gnu (64-bit)
>> Running under: Ubuntu 14.04.4 LTS
>>
>> locale:
>>  [1] LC_CTYPE=en_CA.UTF-8       LC_NUMERIC=C
>> LC_TIME=en_CA.UTF-8
>>  [4] LC_COLLATE=en_CA.UTF-8     LC_MONETARY=en_CA.UTF-8
>> LC_MESSAGES=en_CA.UTF-8
>>  [7] LC_PAPER=en_CA.UTF-8       LC_NAME=C
>> LC_ADDRESS=C
>> [10] LC_TELEPHONE=C             LC_MEASUREMENT=en_CA.UTF-8
>> LC_IDENTIFICATION=C
>>
>> attached base packages:
>> [1] parallel  stats     graphics  grDevices utils     datasets
>> methods   base
>>
>> other attached packages:
>>  [1] doParallel_1.0.10             iterators_1.0.8
>> quantstrat_0.9.1739
>>  [4] foreach_1.4.3                 blotter_0.9.1695
>> FinancialInstrument_1.2.0
>>  [7] quantmod_0.4-5                TTR_0.23-1
>> PerformanceAnalytics_1.4.3541
>> [10] xts_0.9.874                   zoo_1.7-13
>>
>> loaded via a namespace (and not attached):
>> [1] compiler_3.3.1   tools_3.3.1      codetools_0.2-14 grid_3.3.1
>>  lattice_0.20-33
>>
>> ####
>>
>> Here's the MRE:
>> #################################
>>
>> library(xts)
>> library(PerformanceAnalytics)
>> library(quantmod)
>> library(TTR)
>> library(quantstrat)
>>
>> getSymbols(Symbols = "SPY", from = "2000-01-01")
>>
>>
>> startDate<-as.Date(index(SPY)[1], format="%Y-%m-%d")
>> endDate<-as.Date(index(last(SPY)), format="%Y-%m-%d")
>>
>> currency("USD")
>>
>> stock(primary_id = c("SPY"),currency = "USD")
>>
>> #name
>> maStrategy <-"MAStrategy"
>>
>> #Date, one day before prices
>> strategyDate <- min(index(SPY)) - 1
>>
>> NumSh<-1
>>
>> #rm.strat(maStrategy)
>> #rm(mktdata)
>>
>>
>> maLag <- 5
>>
>>
>> #init portfolio and account
>> initPortf(name = maStrategy
>>           , symbols = list("SPY") #as defined in Financial instrument
>>           , initDate = strategyDate
>> )
>>
>> initAcct(name = maStrategy
>>          ,portfolios = maStrategy
>>          ,initDate = strategyDate
>>          ,initEq = 1
>> )
>>
>> #order book, and strategy
>> initOrders(portfolio = maStrategy
>>            , initDate = strategyDate
>> )
>>
>> #position limits
>> addPosLimit(maStrategy, symbol = "SPY", strategyDate, maxpos = NumSh,
>> longlevels = NumSh, minpos = 0)
>>
>> strategy( maStrategy, store = TRUE)
>>
>> #add indicator
>> add.indicator(strategy = maStrategy
>>               , name = "EMA"
>>               , arguments = list(x = quote(mktdata$SPY.Close), n =
>> quote(maLag))
>>               , label = "SPYma"
>> )
>>
>>
>>
>>
>> add.signal(strategy = maStrategy
>>            , name = "sigComparison"
>>            , arguments = list(columns = c("SPY.Close","SPYma")
>>                               , relationship = "gt"
>>            )
>>            , label = "SPY.gt.ma"
>> )
>>
>>
>>
>> add.signal(strategy = maStrategy
>>            , name = "sigComparison"
>>            , arguments = list(columns = c("SPY.Close","SPYma")
>>                               , relationship = "lte"
>>            )
>>            , label = "SPY.lte.ma"
>> )
>>
>>
>>
>>
>> #Entry and exit rules
>>
>>
>> add.rule(strategy = maStrategy
>>          , name = "ruleSignal"
>>          , arguments = list(sigcol = "SPY.gt.ma"
>>                             , sigval = TRUE
>>                             , orderqty = NumSh
>>                             , ordertype = "market"
>>                             , orderside = NULL
>>                             , osFUN = "osMaxPos"
>>                             , symbol = "SPY"
>>          )
>>          , type = "enter"
>> )
>>
>>
>> add.rule(strategy = maStrategy
>>          , name = "ruleSignal"
>>          , arguments = list(sigcol = "SPY.lte.ma"
>>                             , sigval = TRUE
>>                             , orderqty = "all"
>>                             , ordertype = "market"
>>                             , orderside = NULL
>>                             , osFUN = "osMaxPos"
>>                             , symbol = "SPY"
>>          )
>>          , type = "exit"
>> )
>>
>>
>> applyStrategy(strategy = maStrategy
>>               , portfolios = maStrategy
>> )
>>
>> updatePortf(maStrategy)
>> updateAcct(maStrategy)
>> updateEndEq(maStrategy)
>>
>>
>> maLag <- seq(5,10,1)
>> ####################
>> #delete.paramset(maStrategy,"maLagDist")
>> add.distribution(strategy = maStrategy
>>                  , paramset.label = "maLagDist"
>>                  , component.type = "indicator"
>>                  , component.label = "SPYma"
>>                  , variable = list(n = maLag)
>>                  , label = "lagDist"
>>
>> )
>>
>>
>>
>> library(foreach)
>> library(doParallel)
>> cl <- makeForkCluster(nnodes = detectCores())
>> registerDoParallel(cl)
>> maStrategyAP <-
>>   apply.paramset(strategy.st = maStrategy
>>                  , paramset.label = "maLagDist"
>>                  , portfolio.st = maStrategy
>>                  , account.st = maStrategy
>>   )
>> stopCluster(cl = cl)
>> cl <- NULL
>> closeAllConnections()
>> gc()
>>
>>
>> #this works
>> maStrategyAP$tradeStats$Profit.To.Max.Draw
>>
>>
>> head(mktdata)
>>
>> #undebug(apply.paramset.signal.analysis)
>> maStrategyAPSA <-
>>   apply.paramset.signal.analysis(strategy.st = maStrategy
>>                                  , paramset.label = "maLagDist"
>>                                  , portfolio.st = maStrategy
>>                                  , sigcol = "SPY.gt.ma"
>>                                  , sigval = 1
>>                                  , on = NULL
>>                                  , forward.days = 5
>>                                  , include.day.of.signal = TRUE
>>   )
>>
>>
>> ##################################
>>
>>
>>
>> Erol Biceroglu
>>
>>         [[alternative HTML version deleted]]
>>
>> _______________________________________________
>> [hidden email] 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.
>
>
>
> --
> Joshua Ulrich  |  about.me/joshuaulrich
> FOSS Trading  |  www.fosstrading.com
> R/Finance 2016 | www.rinfinance.com



--
Joshua Ulrich  |  about.me/joshuaulrich
FOSS Trading  |  www.fosstrading.com
R/Finance 2016 | www.rinfinance.com

_______________________________________________
[hidden email] 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 | Threaded
Open this post in threaded view
|

Re: apply.paramset.signal.analysis error

Erol Biceroglu-2
Thank you Joshua for the quick response, and for pointing out the missing
objective function, it works great now.


Erol Biceroglu


*[hidden email]
<[hidden email]>416-275-7970*

On Tue, Aug 2, 2016 at 8:07 PM, Joshua Ulrich <[hidden email]>
wrote:

> On Tue, Aug 2, 2016 at 5:27 PM, Joshua Ulrich <[hidden email]>
> wrote:
> > Hi Erol,
> >
> > On Mon, Aug 1, 2016 at 7:18 PM, Erol Biceroglu
> > <[hidden email]> wrote:
> >> Hello,
> >>
> >> I've updated to the latest quanstrat, and still get an error using
> >> apply.paramset.signal.analysis:
> >>
> >> Error in post.signal.returns(signals = .sig.list[[name.ref]][,
> >> paste(symbols[j],  :
> >>   number of items to replace is not a multiple of replacement length
> >>
> >>
> >> applyStrategy works, apply.paramset works, however I can't get the
> signal
> >> portion working and was wondering if anyone knew what the error was.
> >>
> >> When I run debug, the problem occurs in *post.signal.returns*, on the
> final
> >> signal.ret[j,] = tryCatch, where the tryCatch returns an xts object
> with 5
> >> rows, and it wants to update signal.ret[j,] which is length 6.
> >>
> > Thanks for the reproducible example.  This looks like a bug when
> > include.day.of.signal = TRUE.  I'll investigate.
> >
> Thanks for the report. This should now be fixed in quantstrat on GitHub.
>
> Please note that your call to apply.paramset.signal.analysis does not
> have a value for the obj.fun argument, which is required.  You can add
> obj.fun = signal.obj.slope as an example.
>
> >> Any feedback would be greatly appreciated.  Thanks for your help.
> >>
> >> Here's my sessionInfo():
> >>
> >> ####
> >>
> >>> sessionInfo()R version 3.3.1 (2016-06-21)
> >> Platform: x86_64-pc-linux-gnu (64-bit)
> >> Running under: Ubuntu 14.04.4 LTS
> >>
> >> locale:
> >>  [1] LC_CTYPE=en_CA.UTF-8       LC_NUMERIC=C
> >> LC_TIME=en_CA.UTF-8
> >>  [4] LC_COLLATE=en_CA.UTF-8     LC_MONETARY=en_CA.UTF-8
> >> LC_MESSAGES=en_CA.UTF-8
> >>  [7] LC_PAPER=en_CA.UTF-8       LC_NAME=C
> >> LC_ADDRESS=C
> >> [10] LC_TELEPHONE=C             LC_MEASUREMENT=en_CA.UTF-8
> >> LC_IDENTIFICATION=C
> >>
> >> attached base packages:
> >> [1] parallel  stats     graphics  grDevices utils     datasets
> >> methods   base
> >>
> >> other attached packages:
> >>  [1] doParallel_1.0.10             iterators_1.0.8
> >> quantstrat_0.9.1739
> >>  [4] foreach_1.4.3                 blotter_0.9.1695
> >> FinancialInstrument_1.2.0
> >>  [7] quantmod_0.4-5                TTR_0.23-1
> >> PerformanceAnalytics_1.4.3541
> >> [10] xts_0.9.874                   zoo_1.7-13
> >>
> >> loaded via a namespace (and not attached):
> >> [1] compiler_3.3.1   tools_3.3.1      codetools_0.2-14 grid_3.3.1
> >>  lattice_0.20-33
> >>
> >> ####
> >>
> >> Here's the MRE:
> >> #################################
> >>
> >> library(xts)
> >> library(PerformanceAnalytics)
> >> library(quantmod)
> >> library(TTR)
> >> library(quantstrat)
> >>
> >> getSymbols(Symbols = "SPY", from = "2000-01-01")
> >>
> >>
> >> startDate<-as.Date(index(SPY)[1], format="%Y-%m-%d")
> >> endDate<-as.Date(index(last(SPY)), format="%Y-%m-%d")
> >>
> >> currency("USD")
> >>
> >> stock(primary_id = c("SPY"),currency = "USD")
> >>
> >> #name
> >> maStrategy <-"MAStrategy"
> >>
> >> #Date, one day before prices
> >> strategyDate <- min(index(SPY)) - 1
> >>
> >> NumSh<-1
> >>
> >> #rm.strat(maStrategy)
> >> #rm(mktdata)
> >>
> >>
> >> maLag <- 5
> >>
> >>
> >> #init portfolio and account
> >> initPortf(name = maStrategy
> >>           , symbols = list("SPY") #as defined in Financial instrument
> >>           , initDate = strategyDate
> >> )
> >>
> >> initAcct(name = maStrategy
> >>          ,portfolios = maStrategy
> >>          ,initDate = strategyDate
> >>          ,initEq = 1
> >> )
> >>
> >> #order book, and strategy
> >> initOrders(portfolio = maStrategy
> >>            , initDate = strategyDate
> >> )
> >>
> >> #position limits
> >> addPosLimit(maStrategy, symbol = "SPY", strategyDate, maxpos = NumSh,
> >> longlevels = NumSh, minpos = 0)
> >>
> >> strategy( maStrategy, store = TRUE)
> >>
> >> #add indicator
> >> add.indicator(strategy = maStrategy
> >>               , name = "EMA"
> >>               , arguments = list(x = quote(mktdata$SPY.Close), n =
> >> quote(maLag))
> >>               , label = "SPYma"
> >> )
> >>
> >>
> >>
> >>
> >> add.signal(strategy = maStrategy
> >>            , name = "sigComparison"
> >>            , arguments = list(columns = c("SPY.Close","SPYma")
> >>                               , relationship = "gt"
> >>            )
> >>            , label = "SPY.gt.ma"
> >> )
> >>
> >>
> >>
> >> add.signal(strategy = maStrategy
> >>            , name = "sigComparison"
> >>            , arguments = list(columns = c("SPY.Close","SPYma")
> >>                               , relationship = "lte"
> >>            )
> >>            , label = "SPY.lte.ma"
> >> )
> >>
> >>
> >>
> >>
> >> #Entry and exit rules
> >>
> >>
> >> add.rule(strategy = maStrategy
> >>          , name = "ruleSignal"
> >>          , arguments = list(sigcol = "SPY.gt.ma"
> >>                             , sigval = TRUE
> >>                             , orderqty = NumSh
> >>                             , ordertype = "market"
> >>                             , orderside = NULL
> >>                             , osFUN = "osMaxPos"
> >>                             , symbol = "SPY"
> >>          )
> >>          , type = "enter"
> >> )
> >>
> >>
> >> add.rule(strategy = maStrategy
> >>          , name = "ruleSignal"
> >>          , arguments = list(sigcol = "SPY.lte.ma"
> >>                             , sigval = TRUE
> >>                             , orderqty = "all"
> >>                             , ordertype = "market"
> >>                             , orderside = NULL
> >>                             , osFUN = "osMaxPos"
> >>                             , symbol = "SPY"
> >>          )
> >>          , type = "exit"
> >> )
> >>
> >>
> >> applyStrategy(strategy = maStrategy
> >>               , portfolios = maStrategy
> >> )
> >>
> >> updatePortf(maStrategy)
> >> updateAcct(maStrategy)
> >> updateEndEq(maStrategy)
> >>
> >>
> >> maLag <- seq(5,10,1)
> >> ####################
> >> #delete.paramset(maStrategy,"maLagDist")
> >> add.distribution(strategy = maStrategy
> >>                  , paramset.label = "maLagDist"
> >>                  , component.type = "indicator"
> >>                  , component.label = "SPYma"
> >>                  , variable = list(n = maLag)
> >>                  , label = "lagDist"
> >>
> >> )
> >>
> >>
> >>
> >> library(foreach)
> >> library(doParallel)
> >> cl <- makeForkCluster(nnodes = detectCores())
> >> registerDoParallel(cl)
> >> maStrategyAP <-
> >>   apply.paramset(strategy.st = maStrategy
> >>                  , paramset.label = "maLagDist"
> >>                  , portfolio.st = maStrategy
> >>                  , account.st = maStrategy
> >>   )
> >> stopCluster(cl = cl)
> >> cl <- NULL
> >> closeAllConnections()
> >> gc()
> >>
> >>
> >> #this works
> >> maStrategyAP$tradeStats$Profit.To.Max.Draw
> >>
> >>
> >> head(mktdata)
> >>
> >> #undebug(apply.paramset.signal.analysis)
> >> maStrategyAPSA <-
> >>   apply.paramset.signal.analysis(strategy.st = maStrategy
> >>                                  , paramset.label = "maLagDist"
> >>                                  , portfolio.st = maStrategy
> >>                                  , sigcol = "SPY.gt.ma"
> >>                                  , sigval = 1
> >>                                  , on = NULL
> >>                                  , forward.days = 5
> >>                                  , include.day.of.signal = TRUE
> >>   )
> >>
> >>
> >> ##################################
> >>
> >>
> >>
> >> Erol Biceroglu
> >>
> >>         [[alternative HTML version deleted]]
> >>
> >> _______________________________________________
> >> [hidden email] 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.
> >
> >
> >
> > --
> > Joshua Ulrich  |  about.me/joshuaulrich
> > FOSS Trading  |  www.fosstrading.com
> > R/Finance 2016 | www.rinfinance.com
>
>
>
> --
> Joshua Ulrich  |  about.me/joshuaulrich
> FOSS Trading  |  www.fosstrading.com
> R/Finance 2016 | www.rinfinance.com
>

        [[alternative HTML version deleted]]

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