From noreply at r-forge.r-project.org Sat Sep 6 22:39:44 2014 From: noreply at r-forge.r-project.org (noreply at r-forge.r-project.org) Date: Sat, 6 Sep 2014 22:39:44 +0200 (CEST) Subject: [Blotter-commits] r1630 - pkg/quantstrat/R Message-ID: <20140906203944.88F4E183D5D@r-forge.r-project.org> Author: bodanker Date: 2014-09-06 22:39:44 +0200 (Sat, 06 Sep 2014) New Revision: 1630 Modified: pkg/quantstrat/R/paramsets.R Log: - Fix bug #5776; thanks to Doug Service for the report Modified: pkg/quantstrat/R/paramsets.R =================================================================== --- pkg/quantstrat/R/paramsets.R 2014-08-03 01:04:51 UTC (rev 1629) +++ pkg/quantstrat/R/paramsets.R 2014-09-06 20:39:44 UTC (rev 1630) @@ -145,19 +145,19 @@ { nsamples <- min(nsamples, nrow(param.combos)) - param.combos <- param.combos[sample(nrow(param.combos), size=nsamples),] + param.combos <- param.combos[sample(nrow(param.combos), size=nsamples),,drop=FALSE] if(NCOL(param.combos) == 1) - param.combos <- param.combos[order(param.combos)] + param.combos <- param.combos[order(param.combos),,drop=FALSE] else param.combos <- param.combos[with(param.combos,order(param.combos[,1],param.combos[,2])),] - data.frame(param.combos) + param.combos } install.param.combo <- function(strategy, param.combo, paramset.label) { - for(param.label in names(param.combo)) + for(param.label in colnames(param.combo)) { distribution <- strategy$paramsets[[paramset.label]]$distributions[[param.label]] @@ -179,7 +179,7 @@ { if(strategy[[components.type]][[index]]$label == component.label) { - strategy[[components.type]][[index]]$arguments[[variable.name]] <- param.combo[[param.label]] + strategy[[components.type]][[index]]$arguments[[variable.name]] <- param.combo[,param.label] found <- TRUE break @@ -394,6 +394,11 @@ } else { param.combos <- paramsets } + # This is work-around for a buglet in iterators:::getIterVal.dataframeiter + # Convert param.combos to matrix if it's only one column, else the + # iterator will drop the data.frame dimensions, resulting in a vector + if(ncol(param.combos) == 1) + param.combos <- as.matrix(param.combos) env.functions <- c('clone.portfolio', 'clone.orderbook', 'install.param.combo') env.instrument <- as.list(FinancialInstrument:::.instrument) From noreply at r-forge.r-project.org Sun Sep 14 01:30:15 2014 From: noreply at r-forge.r-project.org (noreply at r-forge.r-project.org) Date: Sun, 14 Sep 2014 01:30:15 +0200 (CEST) Subject: [Blotter-commits] r1631 - pkg/quantstrat/R Message-ID: <20140913233015.6ECE7187398@r-forge.r-project.org> Author: bodanker Date: 2014-09-14 01:30:14 +0200 (Sun, 14 Sep 2014) New Revision: 1631 Modified: pkg/quantstrat/R/paramsets.R Log: - Attempt to fix bug #5790; thanks to Jonathan Owen for the report and patch Modified: pkg/quantstrat/R/paramsets.R =================================================================== --- pkg/quantstrat/R/paramsets.R 2014-09-06 20:39:44 UTC (rev 1630) +++ pkg/quantstrat/R/paramsets.R 2014-09-13 23:30:14 UTC (rev 1631) @@ -402,6 +402,7 @@ env.functions <- c('clone.portfolio', 'clone.orderbook', 'install.param.combo') env.instrument <- as.list(FinancialInstrument:::.instrument) + symbols <- names(getPortfolio(portfolio.st)$symbols) if(is.null(audit)) .audit <- new.env() @@ -454,7 +455,7 @@ .verbose=verbose, .errorhandling='pass', .packages=c('quantstrat', packages), .combine=combine, .multicombine=TRUE, .maxcombine=max(2,nrow(param.combos)), - .export=c(env.functions, 'env.instrument'), ...) + .export=c(env.functions, symbols), ...) # remove all but the param.combo iterator before calling %dopar% # this allows us to pass '...' through foreach to the expression fe$args <- fe$args[1] @@ -480,6 +481,9 @@ list2env(env.instrument, envir=FinancialInstrument:::.instrument) + for (sym in symbols) + assign(sym, get(sym), .GlobalEnv) + put.portfolio(portfolio.st, portfolio) put.account(account.st, account) put.orderbook(portfolio.st, orderbook) From noreply at r-forge.r-project.org Tue Sep 16 16:00:04 2014 From: noreply at r-forge.r-project.org (noreply at r-forge.r-project.org) Date: Tue, 16 Sep 2014 16:00:04 +0200 (CEST) Subject: [Blotter-commits] r1632 - in pkg/quantstrat: . demo Message-ID: <20140916140004.BBDAD1875D9@r-forge.r-project.org> Author: braverock Date: 2014-09-16 16:00:04 +0200 (Tue, 16 Sep 2014) New Revision: 1632 Modified: pkg/quantstrat/DESCRIPTION pkg/quantstrat/demo/faber.R pkg/quantstrat/demo/faber_rebal.R Log: - update faber strategies to fix merge issue, thanks Josh Modified: pkg/quantstrat/DESCRIPTION =================================================================== --- pkg/quantstrat/DESCRIPTION 2014-09-13 23:30:14 UTC (rev 1631) +++ pkg/quantstrat/DESCRIPTION 2014-09-16 14:00:04 UTC (rev 1632) @@ -1,7 +1,7 @@ Package: quantstrat Type: Package Title: Quantitative Strategy Model Framework -Version: 0.8.2 +Version: 0.9.1632 Date: $Date$ Author: Peter Carl, Brian G. Peterson, Joshua Ulrich, Jan Humme Depends: Modified: pkg/quantstrat/demo/faber.R =================================================================== --- pkg/quantstrat/demo/faber.R 2014-09-13 23:30:14 UTC (rev 1631) +++ pkg/quantstrat/demo/faber.R 2014-09-16 14:00:04 UTC (rev 1632) @@ -146,14 +146,13 @@ } ret1 <- PortfReturns('faber') -ret1 <- to.monthly(ret1) ret1$total <- rowSums(ret1) View(ret1) if("package:PerformanceAnalytics" %in% search() || require("PerformanceAnalytics",quietly=TRUE)){ getSymbols("SPY", src='yahoo', index.class=c("POSIXt","POSIXct"), from='1999-01-01') - SPY<-to.monthly(SPY) + SPY<-to.monthly(SPY, indexAt='lastof') SPY.ret<-Return.calculate(SPY$SPY.Close) dev.new() charts.PerformanceSummary(cbind(ret1$total,SPY.ret), geometric=FALSE, wealth.index=TRUE) Modified: pkg/quantstrat/demo/faber_rebal.R =================================================================== --- pkg/quantstrat/demo/faber_rebal.R 2014-09-13 23:30:14 UTC (rev 1631) +++ pkg/quantstrat/demo/faber_rebal.R 2014-09-16 14:00:04 UTC (rev 1632) @@ -165,14 +165,13 @@ } ret1 <- PortfReturns('faber') -ret1 <- to.monthly(ret1) ret1$total <- rowSums(ret1) View(ret1) if("package:PerformanceAnalytics" %in% search() || require("PerformanceAnalytics",quietly=TRUE)){ getSymbols("SPY", src='yahoo', index.class=c("POSIXt","POSIXct"), from='1999-01-01') - SPY <- to.monthly(SPY) + SPY<-to.monthly(SPY, indexAt='lastof') SPY.ret <- Return.calculate(SPY$SPY.Close) dev.new() charts.PerformanceSummary(cbind(ret1$total,SPY.ret), geometric=FALSE, wealth.index=TRUE) From noreply at r-forge.r-project.org Thu Sep 18 23:17:11 2014 From: noreply at r-forge.r-project.org (noreply at r-forge.r-project.org) Date: Thu, 18 Sep 2014 23:17:11 +0200 (CEST) Subject: [Blotter-commits] r1633 - pkg/quantstrat/R Message-ID: <20140918211711.3E82A18680D@r-forge.r-project.org> Author: bodanker Date: 2014-09-18 23:17:10 +0200 (Thu, 18 Sep 2014) New Revision: 1633 Modified: pkg/quantstrat/R/ruleOrderProc.R Log: - Fix bug #5895 (Stoplimit execution with OHLC price gaps) Thanks to Claymore Marshall for the report and for testing. Modified: pkg/quantstrat/R/ruleOrderProc.R =================================================================== --- pkg/quantstrat/R/ruleOrderProc.R 2014-09-16 14:00:04 UTC (rev 1632) +++ pkg/quantstrat/R/ruleOrderProc.R 2014-09-18 21:17:10 UTC (rev 1633) @@ -196,7 +196,10 @@ if( (has.Lo(mktdata) && orderPrice > as.numeric(Lo(mktdataTimestamp)[,1])) || (!has.Lo(mktdata) && orderPrice > as.numeric(getPrice(mktdataTimestamp, prefer=prefer)[,1]))) { - txnprice = min(orderPrice, Hi(mktdataTimestamp)[,1]) + if(orderType == 'stoplimit') + txnprice <- min(orderPrice, Op(mktdataTimestamp)[,1]) + else + txnprice <- orderPrice txntime = timestamp } else next() # price did not move through my order, should go to next order } else if((orderQty < 0 && orderType != 'stoplimit') || (orderQty > 0 && (orderType=='stoplimit'))) { @@ -204,7 +207,10 @@ if ( (has.Hi(mktdata) && orderPrice < as.numeric(Hi(mktdataTimestamp)[,1])) || (!has.Hi(mktdata) && orderPrice < as.numeric(getPrice(mktdataTimestamp,prefer=prefer)[,1])) ) { - txnprice = max(orderPrice, Lo(mktdataTimestamp)[,1]) + if(orderType == 'stoplimit') + txnprice <- max(orderPrice, Op(mktdataTimestamp)[,1]) + else + txnprice <- orderPrice txntime = timestamp } else next() # price did not move through my order, should go to next order } else { From noreply at r-forge.r-project.org Fri Sep 19 21:14:12 2014 From: noreply at r-forge.r-project.org (noreply at r-forge.r-project.org) Date: Fri, 19 Sep 2014 21:14:12 +0200 (CEST) Subject: [Blotter-commits] r1634 - pkg/blotter/R Message-ID: <20140919191412.9DF43187347@r-forge.r-project.org> Author: efmrforge Date: 2014-09-19 21:14:12 +0200 (Fri, 19 Sep 2014) New Revision: 1634 Modified: pkg/blotter/R/initAcct.R Log: Fixed spelling error Modified: pkg/blotter/R/initAcct.R =================================================================== --- pkg/blotter/R/initAcct.R 2014-09-18 21:17:10 UTC (rev 1633) +++ pkg/blotter/R/initAcct.R 2014-09-19 19:14:12 UTC (rev 1634) @@ -10,7 +10,7 @@ #' portfolios: a list of portfolio object names to attach to the account #' initDate: date prior to the first close price given, used to contain #' initial account equity and initial position -#' initEq: initial equity or starting capitaal, default is 100,000 +#' initEq: initial equity or starting capital, default is 100,000 #' #' Outputs #' Constructs multi-column xts object used to store aggregated portfolio