From noreply at r-forge.r-project.org Sun Dec 6 22:46:31 2015 From: noreply at r-forge.r-project.org (noreply at r-forge.r-project.org) Date: Sun, 6 Dec 2015 22:46:31 +0100 (CET) Subject: [Blotter-commits] r1720 - pkg/quantstrat/demo Message-ID: <20151206214631.D1858187E07@r-forge.r-project.org> Author: bodanker Date: 2015-12-06 22:46:31 +0100 (Sun, 06 Dec 2015) New Revision: 1720 Modified: pkg/quantstrat/demo/luxor.2.add.paramsets.R Log: Get luxor.4 demo running This demo never worked as committed. The timespan paramset contained component.type = "rule", which was never supported. It's also unclear how variable = list(n = .timespans) was supposed to work. Add a paramset distribution for each combination of entry/exit and long/short. Change variable from 'n' to 'timespan', since that's the variable we're parameterizing. The correctness of the demo is still uncertain, but at least it runs. Modified: pkg/quantstrat/demo/luxor.2.add.paramsets.R =================================================================== --- pkg/quantstrat/demo/luxor.2.add.paramsets.R 2015-11-16 16:56:24 UTC (rev 1719) +++ pkg/quantstrat/demo/luxor.2.add.paramsets.R 2015-12-06 21:46:31 UTC (rev 1720) @@ -59,12 +59,36 @@ add.distribution(strategy.st, paramset.label = 'Timespan', - component.type = 'rule', - component.label = 'timespan', - variable = list(n = .timespans), + component.type = 'enter', + component.label = 'EnterLONG', + variable = list(timespan = .timespans), label = 'Timespan' ) +add.distribution(strategy.st, + paramset.label = 'Timespan', + component.type = 'enter', + component.label = 'EnterSHORT', + variable = list(timespan = .timespans), + label = 'Timespan' +) + +add.distribution(strategy.st, + paramset.label = 'Timespan', + component.type = 'exit', + component.label = 'Exit2LONG', + variable = list(timespan = .timespans), + label = 'Timespan' +) + +add.distribution(strategy.st, + paramset.label = 'Timespan', + component.type = 'exit', + component.label = 'Exit2SHORT', + variable = list(timespan = .timespans), + label = 'Timespan' +) + ### save.strategy(strategy.st) From noreply at r-forge.r-project.org Mon Dec 7 00:08:27 2015 From: noreply at r-forge.r-project.org (noreply at r-forge.r-project.org) Date: Mon, 7 Dec 2015 00:08:27 +0100 (CET) Subject: [Blotter-commits] r1721 - pkg/quantstrat/demo Message-ID: <20151206230827.42AC8187E13@r-forge.r-project.org> Author: bodanker Date: 2015-12-07 00:08:26 +0100 (Mon, 07 Dec 2015) New Revision: 1721 Modified: pkg/quantstrat/demo/luxor.2.add.paramsets.R Log: Corrections to luxor.4 Give each distribution separate labels (add.distribution over-writes existing parameter distributions without warning). Add distribution contraints so all combinations of entry/exit and long/short rules have the same timespan. Modified: pkg/quantstrat/demo/luxor.2.add.paramsets.R =================================================================== --- pkg/quantstrat/demo/luxor.2.add.paramsets.R 2015-12-06 21:46:31 UTC (rev 1720) +++ pkg/quantstrat/demo/luxor.2.add.paramsets.R 2015-12-06 23:08:26 UTC (rev 1721) @@ -62,7 +62,7 @@ component.type = 'enter', component.label = 'EnterLONG', variable = list(timespan = .timespans), - label = 'Timespan' + label = 'EnterLong' ) add.distribution(strategy.st, @@ -70,7 +70,7 @@ component.type = 'enter', component.label = 'EnterSHORT', variable = list(timespan = .timespans), - label = 'Timespan' + label = 'EnterShort' ) add.distribution(strategy.st, @@ -78,7 +78,7 @@ component.type = 'exit', component.label = 'Exit2LONG', variable = list(timespan = .timespans), - label = 'Timespan' + label = 'ExitLong' ) add.distribution(strategy.st, @@ -86,9 +86,33 @@ component.type = 'exit', component.label = 'Exit2SHORT', variable = list(timespan = .timespans), - label = 'Timespan' + label = 'ExitShort' ) +add.distribution.constraint(strategy.st, + paramset.label = 'Timespan', + distribution.label.1 = 'EnterLong', + distribution.label.2 = 'EnterShort', + operator = '==', + label = 'EnterTimespan' +) + +add.distribution.constraint(strategy.st, + paramset.label = 'Timespan', + distribution.label.1 = 'ExitLong', + distribution.label.2 = 'ExitShort', + operator = '==', + label = 'ExitTimespan' +) + +add.distribution.constraint(strategy.st, + paramset.label = 'Timespan', + distribution.label.1 = 'EnterLong', + distribution.label.2 = 'ExitShort', + operator = '==', + label = 'EnterExitTimespan' +) + ### save.strategy(strategy.st) From noreply at r-forge.r-project.org Fri Dec 11 15:44:39 2015 From: noreply at r-forge.r-project.org (noreply at r-forge.r-project.org) Date: Fri, 11 Dec 2015 15:44:39 +0100 (CET) Subject: [Blotter-commits] r1722 - pkg/quantstrat/inst/tests Message-ID: <20151211144439.8CC53186DC0@r-forge.r-project.org> Author: bodanker Date: 2015-12-11 15:44:38 +0100 (Fri, 11 Dec 2015) New Revision: 1722 Removed: pkg/quantstrat/inst/tests/nuke_environments.R pkg/quantstrat/inst/tests/prepend.sh pkg/quantstrat/inst/tests/test_bbandParameters.R pkg/quantstrat/inst/tests/test_bbands.R pkg/quantstrat/inst/tests/test_faber.R pkg/quantstrat/inst/tests/test_faberMC.R pkg/quantstrat/inst/tests/test_faber_rebal.R pkg/quantstrat/inst/tests/test_luxor-3.11.R pkg/quantstrat/inst/tests/test_luxor-3.12.R pkg/quantstrat/inst/tests/test_luxor-3.16.R pkg/quantstrat/inst/tests/test_luxor.1.R pkg/quantstrat/inst/tests/test_luxor.2.R pkg/quantstrat/inst/tests/test_luxor.3.Parameters.R pkg/quantstrat/inst/tests/test_luxor.3.Parameters.tradegraphs.R pkg/quantstrat/inst/tests/test_luxor.3.R pkg/quantstrat/inst/tests/test_luxor.4.R pkg/quantstrat/inst/tests/test_luxor.4.Timespans.R pkg/quantstrat/inst/tests/test_luxor.4.Timespans.tradegraphs.R pkg/quantstrat/inst/tests/test_luxor.StopLoss.R pkg/quantstrat/inst/tests/test_luxor.StopTrailing.R pkg/quantstrat/inst/tests/test_luxor.TakeProfit.R pkg/quantstrat/inst/tests/test_luxor.exits.R pkg/quantstrat/inst/tests/test_luxor.orderchains.R pkg/quantstrat/inst/tests/test_luxor.strategy.R pkg/quantstrat/inst/tests/test_maCross.R pkg/quantstrat/inst/tests/test_macd.R pkg/quantstrat/inst/tests/test_macdParameters.R pkg/quantstrat/inst/tests/test_macdRebalancing.R pkg/quantstrat/inst/tests/test_pair_trade.R pkg/quantstrat/inst/tests/test_rocema.R pkg/quantstrat/inst/tests/test_rsi.R Log: Remove "tests" that don't test anything All the test_* files were essentially verbatim copies of the demo test template. Therefore, they all failed and prevented any other tests from running. Also remove unnecessary files prepend.sh and (the very dangerous) nuke_environments.R. Deleted: pkg/quantstrat/inst/tests/nuke_environments.R =================================================================== --- pkg/quantstrat/inst/tests/nuke_environments.R 2015-12-06 23:08:26 UTC (rev 1721) +++ pkg/quantstrat/inst/tests/nuke_environments.R 2015-12-11 14:44:38 UTC (rev 1722) @@ -1,4 +0,0 @@ -rm(list=ls(.strategy), pos=.strategy) -rm(list=ls(.blotter), pos=.blotter) -rm_instruments( keep.currencies = FALSE) -rm(list=ls()) Deleted: pkg/quantstrat/inst/tests/prepend.sh =================================================================== --- pkg/quantstrat/inst/tests/prepend.sh 2015-12-06 23:08:26 UTC (rev 1721) +++ pkg/quantstrat/inst/tests/prepend.sh 2015-12-11 14:44:38 UTC (rev 1722) @@ -1,5 +0,0 @@ -#!/bin/bash - -for file in *; do - cp "$file" "test_$file" -done Deleted: pkg/quantstrat/inst/tests/test_bbandParameters.R =================================================================== --- pkg/quantstrat/inst/tests/test_bbandParameters.R 2015-12-06 23:08:26 UTC (rev 1721) +++ pkg/quantstrat/inst/tests/test_bbandParameters.R 2015-12-11 14:44:38 UTC (rev 1722) @@ -1,134 +0,0 @@ -################## TEMPLATE FILL OUT ########################### -##### #### -##### DEMO = %s/DEMO/_the_name_of_my_demo/g #### -##### PORTFOLIO = %s/PORTFOLIO/_the_name_of_my_portfolio/g #### -##### STOCK = %s/STOCK/_the_name_of_my_stock/g #### -##### #### -################################################################ - -################## LOAD TESTING FRAMEWORK ###################### - -require(testthat) -require(PortfolioAnalytics) - -######### ACTIVATE TEST DATES AND SOURCE DEMO ##################### - -options(in_test=TRUE) -source(system.file("demo/DEMO.R", package="quantstrat")) - -################### DEFINE VARIABLES TO BE TESTED ############## - -qty = book$PORTFOLIO$STOCK[,"Order.Qty"] -price = book$PORTFOLIO$STOCK[,"Order.Price"] -type = book$PORTFOLIO$STOCK[,"Order.Type"] -side = book$PORTFOLIO$STOCK[,"Order.Side"] -status = book$PORTFOLIO$STOCK[,"Order.Status"] -fees = book$PORTFOLIO$STOCK[,"Txn.Fees"] -rule = book$PORTFOLIO$STOCK[,"Rule"] - -######################## ORDER BOOK ############################ - -context("DEMO order book is consistent ") - -## quantity -test_that("The first entry is 100", - { expect_that(as.character(qty[2]) =="100", is_true()) }) - -test_that("The first exit is all", - { expect_that(as.character(qty[3]) =="all", is_true()) }) -## price -test_that("The first entry price is 88.9", - { expect_that(as.character(price[2]) =="88.9", is_true()) }) - -test_that("The first exit price is 87.42", - { expect_that(as.character(price[3]) =="87.42", is_true()) }) -## type -test_that("The first trade is a market order", - { expect_that(as.character(type[2]) =="market", is_true()) }) -## side -test_that("The first trade is entered long", - { expect_that(as.character(side[2]) =="long", is_true()) }) -## status -test_that("The last trade is closed", - { expect_that(as.character(status[20]) =="closed", is_true()) }) -## fees -test_that("The first trade has no transaction fees", - { expect_that(as.character(fees[2]) =="0", is_true()) }) -## rule -test_that("The first transaction is an enter long", - { expect_that(as.character(rule[2]) =="EnterLONG", is_true()) }) - -test_that("The second transaction is an exit long", - { expect_that(as.character(rule[3]) =="ExitLONG", is_true()) }) - -######################## STATS ################################# - -context("DEMO trade statistics are consistent ") - -test_that("Num.Txns is 19", - { expect_that(stats$Num.Txns , equals(19)) }) -test_that("Num.Trades is 9", - { expect_that(stats$Num.Trades , equals(9)) }) -test_that("Net.Trading.PL is -36", - { expect_that(stats$Net.Trading.PL, equals(-36)) }) -test_that("Avg.Trade.PL is -4", - { expect_that(stats$Avg.Trade.PL, equals(-4)) }) -test_that("Med.Trade.PL is 6", - { expect_that(stats$Med.Trade.PL, equals(6)) }) -test_that("Largest.Winnner is 581", - { expect_that(stats$Largest.Winner, equals(581)) }) -test_that("Largest.Loser is -1064", - { expect_that(stats$Largest.Loser, equals(-1064)) }) -test_that("Gross.Profits is 1425", - { expect_that(stats$Gross.Profits, equals(1425)) }) -test_that("Gross.Losses is -1461", - { expect_that(stats$Gross.Losses, equals(-1461)) }) -test_that("Std.Dev.Trade.PL is 477.7599", - { expect_equal(stats$Std.Dev.Trade.PL, 477.7599, .0001) }) -test_that("Percent.Positive is 55.55556", - { expect_equal(stats$Percent.Positive, 55.55556, .0001) }) -test_that("Percent.Negative is 44.44444", - { expect_equal(stats$Percent.Negative, 44.44444, .0001) }) -test_that("Profit.Factor is 0.9753593", - { expect_equal(stats$Profit.Factor, 0.9753593, .0001) }) -test_that("Avg.Win.Trade is 285", - { expect_that(stats$Avg.Win.Trade, equals(285)) }) -test_that("Med.Win.Trade is 221", - { expect_that(stats$Med.Win.Trade, equals(221)) }) -test_that("Avg.Losing.Trade is -365.25", - { expect_that(stats$Avg.Losing.Trade, equals(-365.25)) }) -test_that("Med.Losing.Trade is -159.5", - { expect_that(stats$Med.Losing.Trade, equals(-159.5)) }) -test_that("Avg.Daily.PL is -4", - { expect_that(stats$Avg.Daily.PL, equals(-4)) }) -test_that("Med.Daily.PL is 6", - { expect_that(stats$Med.Daily.PL, equals(6)) }) -test_that("Std.Dev.Daily.PL is 477.7599", - { expect_equal(stats$Std.Dev.Daily.PL, 477.7599, .0001) }) -test_that("Max.Drawdown is -1789", - { expect_that(stats$Max.Drawdown, equals(-1789)) }) -test_that("Profit.to.Max.Draw is -0.02012297", - { expect_equal(stats$Profit.to.Max.Draw, -0.02012297, .0001) }) -test_that("Avg.WinLoss.Ratio is 0.7802875", - { expect_equal(stats$Avg.WinLoss.Ratio, 0.7802875, .0001) }) -test_that("Med.WinLoss.Ratio is 1.38558", - { expect_equal(stats$Med.WinLoss.Ratio , 1.38558, .0001) }) -test_that("Max.Equity is 390", - { expect_that(stats$Max.Equity , equals(390)) }) -test_that("Min.Equity is -1539", - { expect_equal(stats$Min.Equity , -1539, .0001) }) -test_that("End.Equity is -36", - { expect_equal(stats$End.Equity , -36, .0001) }) - -######################## PORTFOLIO RETURNS ###################### - -context("DEMO portfolio returns are consistent ") - -test_that("min return is -0.00597", - { expect_equal(min(rets), -0.00597, .0001) }) -test_that("max return is 0.0092", - { expect_equal(min(rets),0.0092, .0001) }) -test_that("skewness of returns is 0.234199", - { expect_equal(min(rets), 0.234199, .0001) }) -test_that("kurtosis of returns is 5.04833", - { expect_equal(min(rets), 5.04833, .0001) }) Deleted: pkg/quantstrat/inst/tests/test_bbands.R =================================================================== --- pkg/quantstrat/inst/tests/test_bbands.R 2015-12-06 23:08:26 UTC (rev 1721) +++ pkg/quantstrat/inst/tests/test_bbands.R 2015-12-11 14:44:38 UTC (rev 1722) @@ -1,134 +0,0 @@ -################## TEMPLATE FILL OUT ########################### -##### #### -##### DEMO = %s/DEMO/_the_name_of_my_demo/g #### -##### PORTFOLIO = %s/PORTFOLIO/_the_name_of_my_portfolio/g #### -##### STOCK = %s/STOCK/_the_name_of_my_stock/g #### -##### #### -################################################################ - -################## LOAD TESTING FRAMEWORK ###################### - -require(testthat) -require(PortfolioAnalytics) - -######### ACTIVATE TEST DATES AND SOURCE DEMO ##################### - -options(in_test=TRUE) -source(system.file("demo/DEMO.R", package="quantstrat")) - -################### DEFINE VARIABLES TO BE TESTED ############## - -qty = book$PORTFOLIO$STOCK[,"Order.Qty"] -price = book$PORTFOLIO$STOCK[,"Order.Price"] -type = book$PORTFOLIO$STOCK[,"Order.Type"] -side = book$PORTFOLIO$STOCK[,"Order.Side"] -status = book$PORTFOLIO$STOCK[,"Order.Status"] -fees = book$PORTFOLIO$STOCK[,"Txn.Fees"] -rule = book$PORTFOLIO$STOCK[,"Rule"] - -######################## ORDER BOOK ############################ - -context("DEMO order book is consistent ") - -## quantity -test_that("The first entry is 100", - { expect_that(as.character(qty[2]) =="100", is_true()) }) - -test_that("The first exit is all", - { expect_that(as.character(qty[3]) =="all", is_true()) }) -## price -test_that("The first entry price is 88.9", - { expect_that(as.character(price[2]) =="88.9", is_true()) }) - -test_that("The first exit price is 87.42", - { expect_that(as.character(price[3]) =="87.42", is_true()) }) -## type -test_that("The first trade is a market order", - { expect_that(as.character(type[2]) =="market", is_true()) }) -## side -test_that("The first trade is entered long", - { expect_that(as.character(side[2]) =="long", is_true()) }) -## status -test_that("The last trade is closed", - { expect_that(as.character(status[20]) =="closed", is_true()) }) -## fees -test_that("The first trade has no transaction fees", - { expect_that(as.character(fees[2]) =="0", is_true()) }) -## rule -test_that("The first transaction is an enter long", - { expect_that(as.character(rule[2]) =="EnterLONG", is_true()) }) - -test_that("The second transaction is an exit long", - { expect_that(as.character(rule[3]) =="ExitLONG", is_true()) }) - -######################## STATS ################################# - -context("DEMO trade statistics are consistent ") - -test_that("Num.Txns is 19", - { expect_that(stats$Num.Txns , equals(19)) }) -test_that("Num.Trades is 9", - { expect_that(stats$Num.Trades , equals(9)) }) -test_that("Net.Trading.PL is -36", - { expect_that(stats$Net.Trading.PL, equals(-36)) }) -test_that("Avg.Trade.PL is -4", - { expect_that(stats$Avg.Trade.PL, equals(-4)) }) -test_that("Med.Trade.PL is 6", - { expect_that(stats$Med.Trade.PL, equals(6)) }) -test_that("Largest.Winnner is 581", - { expect_that(stats$Largest.Winner, equals(581)) }) -test_that("Largest.Loser is -1064", - { expect_that(stats$Largest.Loser, equals(-1064)) }) -test_that("Gross.Profits is 1425", - { expect_that(stats$Gross.Profits, equals(1425)) }) -test_that("Gross.Losses is -1461", - { expect_that(stats$Gross.Losses, equals(-1461)) }) -test_that("Std.Dev.Trade.PL is 477.7599", - { expect_equal(stats$Std.Dev.Trade.PL, 477.7599, .0001) }) -test_that("Percent.Positive is 55.55556", - { expect_equal(stats$Percent.Positive, 55.55556, .0001) }) -test_that("Percent.Negative is 44.44444", - { expect_equal(stats$Percent.Negative, 44.44444, .0001) }) -test_that("Profit.Factor is 0.9753593", - { expect_equal(stats$Profit.Factor, 0.9753593, .0001) }) -test_that("Avg.Win.Trade is 285", - { expect_that(stats$Avg.Win.Trade, equals(285)) }) -test_that("Med.Win.Trade is 221", - { expect_that(stats$Med.Win.Trade, equals(221)) }) -test_that("Avg.Losing.Trade is -365.25", - { expect_that(stats$Avg.Losing.Trade, equals(-365.25)) }) -test_that("Med.Losing.Trade is -159.5", - { expect_that(stats$Med.Losing.Trade, equals(-159.5)) }) -test_that("Avg.Daily.PL is -4", - { expect_that(stats$Avg.Daily.PL, equals(-4)) }) -test_that("Med.Daily.PL is 6", - { expect_that(stats$Med.Daily.PL, equals(6)) }) -test_that("Std.Dev.Daily.PL is 477.7599", - { expect_equal(stats$Std.Dev.Daily.PL, 477.7599, .0001) }) -test_that("Max.Drawdown is -1789", - { expect_that(stats$Max.Drawdown, equals(-1789)) }) -test_that("Profit.to.Max.Draw is -0.02012297", - { expect_equal(stats$Profit.to.Max.Draw, -0.02012297, .0001) }) -test_that("Avg.WinLoss.Ratio is 0.7802875", - { expect_equal(stats$Avg.WinLoss.Ratio, 0.7802875, .0001) }) -test_that("Med.WinLoss.Ratio is 1.38558", - { expect_equal(stats$Med.WinLoss.Ratio , 1.38558, .0001) }) -test_that("Max.Equity is 390", - { expect_that(stats$Max.Equity , equals(390)) }) -test_that("Min.Equity is -1539", - { expect_equal(stats$Min.Equity , -1539, .0001) }) -test_that("End.Equity is -36", - { expect_equal(stats$End.Equity , -36, .0001) }) - -######################## PORTFOLIO RETURNS ###################### - -context("DEMO portfolio returns are consistent ") - -test_that("min return is -0.00597", - { expect_equal(min(rets), -0.00597, .0001) }) -test_that("max return is 0.0092", - { expect_equal(min(rets),0.0092, .0001) }) -test_that("skewness of returns is 0.234199", - { expect_equal(min(rets), 0.234199, .0001) }) -test_that("kurtosis of returns is 5.04833", - { expect_equal(min(rets), 5.04833, .0001) }) Deleted: pkg/quantstrat/inst/tests/test_faber.R =================================================================== --- pkg/quantstrat/inst/tests/test_faber.R 2015-12-06 23:08:26 UTC (rev 1721) +++ pkg/quantstrat/inst/tests/test_faber.R 2015-12-11 14:44:38 UTC (rev 1722) @@ -1,134 +0,0 @@ -################## TEMPLATE FILL OUT ########################### -##### #### -##### DEMO = %s/DEMO/_the_name_of_my_demo/g #### -##### PORTFOLIO = %s/PORTFOLIO/_the_name_of_my_portfolio/g #### -##### STOCK = %s/STOCK/_the_name_of_my_stock/g #### -##### #### -################################################################ - -################## LOAD TESTING FRAMEWORK ###################### - -require(testthat) -require(PortfolioAnalytics) - -######### ACTIVATE TEST DATES AND SOURCE DEMO ##################### - -options(in_test=TRUE) -source(system.file("demo/DEMO.R", package="quantstrat")) - -################### DEFINE VARIABLES TO BE TESTED ############## - -qty = book$PORTFOLIO$STOCK[,"Order.Qty"] -price = book$PORTFOLIO$STOCK[,"Order.Price"] -type = book$PORTFOLIO$STOCK[,"Order.Type"] -side = book$PORTFOLIO$STOCK[,"Order.Side"] -status = book$PORTFOLIO$STOCK[,"Order.Status"] -fees = book$PORTFOLIO$STOCK[,"Txn.Fees"] -rule = book$PORTFOLIO$STOCK[,"Rule"] - -######################## ORDER BOOK ############################ - -context("DEMO order book is consistent ") - -## quantity -test_that("The first entry is 100", - { expect_that(as.character(qty[2]) =="100", is_true()) }) - -test_that("The first exit is all", - { expect_that(as.character(qty[3]) =="all", is_true()) }) -## price -test_that("The first entry price is 88.9", - { expect_that(as.character(price[2]) =="88.9", is_true()) }) - -test_that("The first exit price is 87.42", - { expect_that(as.character(price[3]) =="87.42", is_true()) }) -## type -test_that("The first trade is a market order", - { expect_that(as.character(type[2]) =="market", is_true()) }) -## side -test_that("The first trade is entered long", - { expect_that(as.character(side[2]) =="long", is_true()) }) -## status -test_that("The last trade is closed", - { expect_that(as.character(status[20]) =="closed", is_true()) }) -## fees -test_that("The first trade has no transaction fees", - { expect_that(as.character(fees[2]) =="0", is_true()) }) -## rule -test_that("The first transaction is an enter long", - { expect_that(as.character(rule[2]) =="EnterLONG", is_true()) }) - -test_that("The second transaction is an exit long", - { expect_that(as.character(rule[3]) =="ExitLONG", is_true()) }) - -######################## STATS ################################# - -context("DEMO trade statistics are consistent ") - -test_that("Num.Txns is 19", - { expect_that(stats$Num.Txns , equals(19)) }) -test_that("Num.Trades is 9", - { expect_that(stats$Num.Trades , equals(9)) }) -test_that("Net.Trading.PL is -36", - { expect_that(stats$Net.Trading.PL, equals(-36)) }) -test_that("Avg.Trade.PL is -4", - { expect_that(stats$Avg.Trade.PL, equals(-4)) }) -test_that("Med.Trade.PL is 6", - { expect_that(stats$Med.Trade.PL, equals(6)) }) -test_that("Largest.Winnner is 581", - { expect_that(stats$Largest.Winner, equals(581)) }) -test_that("Largest.Loser is -1064", - { expect_that(stats$Largest.Loser, equals(-1064)) }) -test_that("Gross.Profits is 1425", - { expect_that(stats$Gross.Profits, equals(1425)) }) -test_that("Gross.Losses is -1461", - { expect_that(stats$Gross.Losses, equals(-1461)) }) -test_that("Std.Dev.Trade.PL is 477.7599", - { expect_equal(stats$Std.Dev.Trade.PL, 477.7599, .0001) }) -test_that("Percent.Positive is 55.55556", - { expect_equal(stats$Percent.Positive, 55.55556, .0001) }) -test_that("Percent.Negative is 44.44444", - { expect_equal(stats$Percent.Negative, 44.44444, .0001) }) -test_that("Profit.Factor is 0.9753593", - { expect_equal(stats$Profit.Factor, 0.9753593, .0001) }) -test_that("Avg.Win.Trade is 285", - { expect_that(stats$Avg.Win.Trade, equals(285)) }) -test_that("Med.Win.Trade is 221", - { expect_that(stats$Med.Win.Trade, equals(221)) }) -test_that("Avg.Losing.Trade is -365.25", - { expect_that(stats$Avg.Losing.Trade, equals(-365.25)) }) -test_that("Med.Losing.Trade is -159.5", - { expect_that(stats$Med.Losing.Trade, equals(-159.5)) }) -test_that("Avg.Daily.PL is -4", - { expect_that(stats$Avg.Daily.PL, equals(-4)) }) -test_that("Med.Daily.PL is 6", - { expect_that(stats$Med.Daily.PL, equals(6)) }) -test_that("Std.Dev.Daily.PL is 477.7599", - { expect_equal(stats$Std.Dev.Daily.PL, 477.7599, .0001) }) -test_that("Max.Drawdown is -1789", - { expect_that(stats$Max.Drawdown, equals(-1789)) }) -test_that("Profit.to.Max.Draw is -0.02012297", - { expect_equal(stats$Profit.to.Max.Draw, -0.02012297, .0001) }) -test_that("Avg.WinLoss.Ratio is 0.7802875", - { expect_equal(stats$Avg.WinLoss.Ratio, 0.7802875, .0001) }) -test_that("Med.WinLoss.Ratio is 1.38558", - { expect_equal(stats$Med.WinLoss.Ratio , 1.38558, .0001) }) -test_that("Max.Equity is 390", - { expect_that(stats$Max.Equity , equals(390)) }) -test_that("Min.Equity is -1539", - { expect_equal(stats$Min.Equity , -1539, .0001) }) -test_that("End.Equity is -36", - { expect_equal(stats$End.Equity , -36, .0001) }) - -######################## PORTFOLIO RETURNS ###################### - -context("DEMO portfolio returns are consistent ") - -test_that("min return is -0.00597", - { expect_equal(min(rets), -0.00597, .0001) }) -test_that("max return is 0.0092", - { expect_equal(min(rets),0.0092, .0001) }) -test_that("skewness of returns is 0.234199", - { expect_equal(min(rets), 0.234199, .0001) }) -test_that("kurtosis of returns is 5.04833", - { expect_equal(min(rets), 5.04833, .0001) }) Deleted: pkg/quantstrat/inst/tests/test_faberMC.R =================================================================== --- pkg/quantstrat/inst/tests/test_faberMC.R 2015-12-06 23:08:26 UTC (rev 1721) +++ pkg/quantstrat/inst/tests/test_faberMC.R 2015-12-11 14:44:38 UTC (rev 1722) @@ -1,134 +0,0 @@ -################## TEMPLATE FILL OUT ########################### -##### #### -##### DEMO = %s/DEMO/_the_name_of_my_demo/g #### -##### PORTFOLIO = %s/PORTFOLIO/_the_name_of_my_portfolio/g #### -##### STOCK = %s/STOCK/_the_name_of_my_stock/g #### -##### #### -################################################################ - -################## LOAD TESTING FRAMEWORK ###################### - -require(testthat) -require(PortfolioAnalytics) - -######### ACTIVATE TEST DATES AND SOURCE DEMO ##################### - -options(in_test=TRUE) -source(system.file("demo/DEMO.R", package="quantstrat")) - -################### DEFINE VARIABLES TO BE TESTED ############## - -qty = book$PORTFOLIO$STOCK[,"Order.Qty"] -price = book$PORTFOLIO$STOCK[,"Order.Price"] -type = book$PORTFOLIO$STOCK[,"Order.Type"] -side = book$PORTFOLIO$STOCK[,"Order.Side"] -status = book$PORTFOLIO$STOCK[,"Order.Status"] -fees = book$PORTFOLIO$STOCK[,"Txn.Fees"] -rule = book$PORTFOLIO$STOCK[,"Rule"] - -######################## ORDER BOOK ############################ - -context("DEMO order book is consistent ") - -## quantity -test_that("The first entry is 100", - { expect_that(as.character(qty[2]) =="100", is_true()) }) - -test_that("The first exit is all", - { expect_that(as.character(qty[3]) =="all", is_true()) }) -## price -test_that("The first entry price is 88.9", - { expect_that(as.character(price[2]) =="88.9", is_true()) }) - -test_that("The first exit price is 87.42", - { expect_that(as.character(price[3]) =="87.42", is_true()) }) -## type -test_that("The first trade is a market order", - { expect_that(as.character(type[2]) =="market", is_true()) }) -## side -test_that("The first trade is entered long", - { expect_that(as.character(side[2]) =="long", is_true()) }) -## status -test_that("The last trade is closed", - { expect_that(as.character(status[20]) =="closed", is_true()) }) -## fees -test_that("The first trade has no transaction fees", - { expect_that(as.character(fees[2]) =="0", is_true()) }) -## rule -test_that("The first transaction is an enter long", - { expect_that(as.character(rule[2]) =="EnterLONG", is_true()) }) - -test_that("The second transaction is an exit long", - { expect_that(as.character(rule[3]) =="ExitLONG", is_true()) }) - -######################## STATS ################################# - -context("DEMO trade statistics are consistent ") - -test_that("Num.Txns is 19", - { expect_that(stats$Num.Txns , equals(19)) }) -test_that("Num.Trades is 9", - { expect_that(stats$Num.Trades , equals(9)) }) -test_that("Net.Trading.PL is -36", - { expect_that(stats$Net.Trading.PL, equals(-36)) }) -test_that("Avg.Trade.PL is -4", - { expect_that(stats$Avg.Trade.PL, equals(-4)) }) -test_that("Med.Trade.PL is 6", - { expect_that(stats$Med.Trade.PL, equals(6)) }) -test_that("Largest.Winnner is 581", - { expect_that(stats$Largest.Winner, equals(581)) }) -test_that("Largest.Loser is -1064", - { expect_that(stats$Largest.Loser, equals(-1064)) }) -test_that("Gross.Profits is 1425", - { expect_that(stats$Gross.Profits, equals(1425)) }) -test_that("Gross.Losses is -1461", - { expect_that(stats$Gross.Losses, equals(-1461)) }) -test_that("Std.Dev.Trade.PL is 477.7599", - { expect_equal(stats$Std.Dev.Trade.PL, 477.7599, .0001) }) -test_that("Percent.Positive is 55.55556", - { expect_equal(stats$Percent.Positive, 55.55556, .0001) }) -test_that("Percent.Negative is 44.44444", - { expect_equal(stats$Percent.Negative, 44.44444, .0001) }) -test_that("Profit.Factor is 0.9753593", - { expect_equal(stats$Profit.Factor, 0.9753593, .0001) }) -test_that("Avg.Win.Trade is 285", - { expect_that(stats$Avg.Win.Trade, equals(285)) }) -test_that("Med.Win.Trade is 221", - { expect_that(stats$Med.Win.Trade, equals(221)) }) -test_that("Avg.Losing.Trade is -365.25", - { expect_that(stats$Avg.Losing.Trade, equals(-365.25)) }) -test_that("Med.Losing.Trade is -159.5", - { expect_that(stats$Med.Losing.Trade, equals(-159.5)) }) -test_that("Avg.Daily.PL is -4", - { expect_that(stats$Avg.Daily.PL, equals(-4)) }) -test_that("Med.Daily.PL is 6", - { expect_that(stats$Med.Daily.PL, equals(6)) }) -test_that("Std.Dev.Daily.PL is 477.7599", - { expect_equal(stats$Std.Dev.Daily.PL, 477.7599, .0001) }) -test_that("Max.Drawdown is -1789", - { expect_that(stats$Max.Drawdown, equals(-1789)) }) -test_that("Profit.to.Max.Draw is -0.02012297", - { expect_equal(stats$Profit.to.Max.Draw, -0.02012297, .0001) }) -test_that("Avg.WinLoss.Ratio is 0.7802875", - { expect_equal(stats$Avg.WinLoss.Ratio, 0.7802875, .0001) }) -test_that("Med.WinLoss.Ratio is 1.38558", - { expect_equal(stats$Med.WinLoss.Ratio , 1.38558, .0001) }) -test_that("Max.Equity is 390", - { expect_that(stats$Max.Equity , equals(390)) }) -test_that("Min.Equity is -1539", - { expect_equal(stats$Min.Equity , -1539, .0001) }) -test_that("End.Equity is -36", - { expect_equal(stats$End.Equity , -36, .0001) }) - -######################## PORTFOLIO RETURNS ###################### - -context("DEMO portfolio returns are consistent ") - -test_that("min return is -0.00597", - { expect_equal(min(rets), -0.00597, .0001) }) -test_that("max return is 0.0092", - { expect_equal(min(rets),0.0092, .0001) }) -test_that("skewness of returns is 0.234199", - { expect_equal(min(rets), 0.234199, .0001) }) -test_that("kurtosis of returns is 5.04833", - { expect_equal(min(rets), 5.04833, .0001) }) Deleted: pkg/quantstrat/inst/tests/test_faber_rebal.R =================================================================== --- pkg/quantstrat/inst/tests/test_faber_rebal.R 2015-12-06 23:08:26 UTC (rev 1721) +++ pkg/quantstrat/inst/tests/test_faber_rebal.R 2015-12-11 14:44:38 UTC (rev 1722) @@ -1,134 +0,0 @@ -################## TEMPLATE FILL OUT ########################### -##### #### -##### DEMO = %s/DEMO/_the_name_of_my_demo/g #### -##### PORTFOLIO = %s/PORTFOLIO/_the_name_of_my_portfolio/g #### -##### STOCK = %s/STOCK/_the_name_of_my_stock/g #### -##### #### -################################################################ - -################## LOAD TESTING FRAMEWORK ###################### - -require(testthat) -require(PortfolioAnalytics) - -######### ACTIVATE TEST DATES AND SOURCE DEMO ##################### - -options(in_test=TRUE) -source(system.file("demo/DEMO.R", package="quantstrat")) - -################### DEFINE VARIABLES TO BE TESTED ############## - -qty = book$PORTFOLIO$STOCK[,"Order.Qty"] -price = book$PORTFOLIO$STOCK[,"Order.Price"] -type = book$PORTFOLIO$STOCK[,"Order.Type"] -side = book$PORTFOLIO$STOCK[,"Order.Side"] -status = book$PORTFOLIO$STOCK[,"Order.Status"] -fees = book$PORTFOLIO$STOCK[,"Txn.Fees"] -rule = book$PORTFOLIO$STOCK[,"Rule"] - -######################## ORDER BOOK ############################ - -context("DEMO order book is consistent ") - -## quantity -test_that("The first entry is 100", - { expect_that(as.character(qty[2]) =="100", is_true()) }) - -test_that("The first exit is all", - { expect_that(as.character(qty[3]) =="all", is_true()) }) -## price -test_that("The first entry price is 88.9", - { expect_that(as.character(price[2]) =="88.9", is_true()) }) - -test_that("The first exit price is 87.42", - { expect_that(as.character(price[3]) =="87.42", is_true()) }) -## type -test_that("The first trade is a market order", - { expect_that(as.character(type[2]) =="market", is_true()) }) -## side -test_that("The first trade is entered long", - { expect_that(as.character(side[2]) =="long", is_true()) }) -## status -test_that("The last trade is closed", - { expect_that(as.character(status[20]) =="closed", is_true()) }) -## fees -test_that("The first trade has no transaction fees", - { expect_that(as.character(fees[2]) =="0", is_true()) }) -## rule -test_that("The first transaction is an enter long", - { expect_that(as.character(rule[2]) =="EnterLONG", is_true()) }) - -test_that("The second transaction is an exit long", - { expect_that(as.character(rule[3]) =="ExitLONG", is_true()) }) - -######################## STATS ################################# - -context("DEMO trade statistics are consistent ") - -test_that("Num.Txns is 19", - { expect_that(stats$Num.Txns , equals(19)) }) -test_that("Num.Trades is 9", - { expect_that(stats$Num.Trades , equals(9)) }) -test_that("Net.Trading.PL is -36", - { expect_that(stats$Net.Trading.PL, equals(-36)) }) -test_that("Avg.Trade.PL is -4", - { expect_that(stats$Avg.Trade.PL, equals(-4)) }) -test_that("Med.Trade.PL is 6", - { expect_that(stats$Med.Trade.PL, equals(6)) }) -test_that("Largest.Winnner is 581", - { expect_that(stats$Largest.Winner, equals(581)) }) -test_that("Largest.Loser is -1064", - { expect_that(stats$Largest.Loser, equals(-1064)) }) -test_that("Gross.Profits is 1425", - { expect_that(stats$Gross.Profits, equals(1425)) }) -test_that("Gross.Losses is -1461", - { expect_that(stats$Gross.Losses, equals(-1461)) }) -test_that("Std.Dev.Trade.PL is 477.7599", - { expect_equal(stats$Std.Dev.Trade.PL, 477.7599, .0001) }) -test_that("Percent.Positive is 55.55556", - { expect_equal(stats$Percent.Positive, 55.55556, .0001) }) -test_that("Percent.Negative is 44.44444", - { expect_equal(stats$Percent.Negative, 44.44444, .0001) }) -test_that("Profit.Factor is 0.9753593", - { expect_equal(stats$Profit.Factor, 0.9753593, .0001) }) -test_that("Avg.Win.Trade is 285", - { expect_that(stats$Avg.Win.Trade, equals(285)) }) -test_that("Med.Win.Trade is 221", - { expect_that(stats$Med.Win.Trade, equals(221)) }) -test_that("Avg.Losing.Trade is -365.25", - { expect_that(stats$Avg.Losing.Trade, equals(-365.25)) }) -test_that("Med.Losing.Trade is -159.5", - { expect_that(stats$Med.Losing.Trade, equals(-159.5)) }) -test_that("Avg.Daily.PL is -4", - { expect_that(stats$Avg.Daily.PL, equals(-4)) }) -test_that("Med.Daily.PL is 6", - { expect_that(stats$Med.Daily.PL, equals(6)) }) -test_that("Std.Dev.Daily.PL is 477.7599", - { expect_equal(stats$Std.Dev.Daily.PL, 477.7599, .0001) }) -test_that("Max.Drawdown is -1789", - { expect_that(stats$Max.Drawdown, equals(-1789)) }) -test_that("Profit.to.Max.Draw is -0.02012297", - { expect_equal(stats$Profit.to.Max.Draw, -0.02012297, .0001) }) -test_that("Avg.WinLoss.Ratio is 0.7802875", - { expect_equal(stats$Avg.WinLoss.Ratio, 0.7802875, .0001) }) -test_that("Med.WinLoss.Ratio is 1.38558", - { expect_equal(stats$Med.WinLoss.Ratio , 1.38558, .0001) }) -test_that("Max.Equity is 390", - { expect_that(stats$Max.Equity , equals(390)) }) -test_that("Min.Equity is -1539", - { expect_equal(stats$Min.Equity , -1539, .0001) }) -test_that("End.Equity is -36", - { expect_equal(stats$End.Equity , -36, .0001) }) - -######################## PORTFOLIO RETURNS ###################### - -context("DEMO portfolio returns are consistent ") - -test_that("min return is -0.00597", - { expect_equal(min(rets), -0.00597, .0001) }) -test_that("max return is 0.0092", - { expect_equal(min(rets),0.0092, .0001) }) -test_that("skewness of returns is 0.234199", - { expect_equal(min(rets), 0.234199, .0001) }) -test_that("kurtosis of returns is 5.04833", - { expect_equal(min(rets), 5.04833, .0001) }) Deleted: pkg/quantstrat/inst/tests/test_luxor-3.11.R =================================================================== --- pkg/quantstrat/inst/tests/test_luxor-3.11.R 2015-12-06 23:08:26 UTC (rev 1721) +++ pkg/quantstrat/inst/tests/test_luxor-3.11.R 2015-12-11 14:44:38 UTC (rev 1722) @@ -1,134 +0,0 @@ -################## TEMPLATE FILL OUT ########################### -##### #### -##### DEMO = %s/DEMO/_the_name_of_my_demo/g #### -##### PORTFOLIO = %s/PORTFOLIO/_the_name_of_my_portfolio/g #### -##### STOCK = %s/STOCK/_the_name_of_my_stock/g #### -##### #### -################################################################ - -################## LOAD TESTING FRAMEWORK ###################### - -require(testthat) -require(PortfolioAnalytics) - -######### ACTIVATE TEST DATES AND SOURCE DEMO ##################### - -options(in_test=TRUE) -source(system.file("demo/DEMO.R", package="quantstrat")) - -################### DEFINE VARIABLES TO BE TESTED ############## - -qty = book$PORTFOLIO$STOCK[,"Order.Qty"] -price = book$PORTFOLIO$STOCK[,"Order.Price"] -type = book$PORTFOLIO$STOCK[,"Order.Type"] -side = book$PORTFOLIO$STOCK[,"Order.Side"] -status = book$PORTFOLIO$STOCK[,"Order.Status"] -fees = book$PORTFOLIO$STOCK[,"Txn.Fees"] -rule = book$PORTFOLIO$STOCK[,"Rule"] - -######################## ORDER BOOK ############################ - -context("DEMO order book is consistent ") - -## quantity -test_that("The first entry is 100", - { expect_that(as.character(qty[2]) =="100", is_true()) }) - [TRUNCATED] To get the complete diff run: svnlook diff /svnroot/blotter -r 1722 From noreply at r-forge.r-project.org Fri Dec 11 15:53:34 2015 From: noreply at r-forge.r-project.org (noreply at r-forge.r-project.org) Date: Fri, 11 Dec 2015 15:53:34 +0100 (CET) Subject: [Blotter-commits] r1723 - in pkg/quantstrat: R inst/tests tests Message-ID: <20151211145334.1E8EF1803BD@r-forge.r-project.org> Author: bodanker Date: 2015-12-11 15:53:33 +0100 (Fri, 11 Dec 2015) New Revision: 1723 Added: pkg/quantstrat/inst/tests/test_paramsets.R Modified: pkg/quantstrat/R/paramsets.R pkg/quantstrat/tests/run-all.R Log: Warn if replacing paramset distribution/constraint add.distribution and add.distribution.constraint would silently replace any distribution/constraint for the same strategy/paramset with the same label. Keep current behavior, but throw warning to avoid surprise. Also change test_package to only test paramset warnings, since test_bee and test_blotter_break both currently fail, and testthat apparently stops all tests after the first failure when running under R CMD check. Modified: pkg/quantstrat/R/paramsets.R =================================================================== --- pkg/quantstrat/R/paramsets.R 2015-12-11 14:44:38 UTC (rev 1722) +++ pkg/quantstrat/R/paramsets.R 2015-12-11 14:53:33 UTC (rev 1723) @@ -231,8 +231,12 @@ store <- TRUE } - if(!is.null(strategy$paramsets[[paramset.label]])) + if(!is.null(strategy$paramsets[[paramset.label]])) { strategy$paramsets[[paramset.label]] <- NULL + } else { + warning("strategy ", sQuote(strategy$name), " does not have a paramset ", + sQuote(paramset.label), " to delete. Aborting.", immediate.=TRUE) + } if(store) { @@ -279,6 +283,13 @@ if(!(paramset.label %in% names(strategy$paramsets))) strategy <- create.paramset(strategy, paramset.label) + if(label %in% names(strategy$paramsets[[paramset.label]]$distributions)) { + fmt <- paste("add.distribution replacing previously defined", + "distribution %s in paramset %s for strategy %s.") + msg <- sprintf(fmt, sQuote(label), sQuote(paramset.label), sQuote(strategy$name)) + warning(msg, immediate.=TRUE, call.=FALSE) + } + strategy$paramsets[[paramset.label]]$distributions[[label]] <- new_distribution if(store) @@ -323,6 +334,13 @@ if(!(paramset.label %in% names(strategy$paramsets))) strategy <- create.paramset(strategy, paramset.label) + if(label %in% names(strategy$paramsets[[paramset.label]]$constraints)) { + fmt <- paste("add.distribution.constraint replacing previously defined", + "constraint %s in paramset %s for strategy %s.") + msg <- sprintf(fmt, sQuote(label), sQuote(paramset.label), sQuote(strategy$name)) + warning(msg, immediate.=TRUE, call.=FALSE) + } + strategy$paramsets[[paramset.label]]$constraints[[label]] <- new_constraint if(store) Added: pkg/quantstrat/inst/tests/test_paramsets.R =================================================================== --- pkg/quantstrat/inst/tests/test_paramsets.R (rev 0) +++ pkg/quantstrat/inst/tests/test_paramsets.R 2015-12-11 14:53:33 UTC (rev 1723) @@ -0,0 +1,46 @@ +require(testthat) +context("paramset warnings") + +options(in_test=TRUE) + +require(quantstrat) +strategy.st <- "paramset_test" +strategy(strategy.st, store=TRUE) +.timespans <- c("T08:00/T10:00") + +add.distribution(strategy.st, + paramset.label = 'Timespan', + component.type = 'enter', + component.label = 'EnterLONG', + variable = list(timespan = .timespans), + label = 'Timespan') + +test_that("Replacing paramset distribution warns", expect_warning({ + add.distribution(strategy.st, + paramset.label = 'Timespan', + component.type = 'enter', + component.label = 'EnterLONG', + variable = list(timespan = .timespans), + label = 'Timespan') +})) + +add.distribution.constraint(strategy.st, + paramset.label = 'Timespan', + distribution.label.1 = 'EnterLong', + distribution.label.2 = 'EnterShort', + operator = '==', + label = 'Timespan') + +test_that("Replacing paramset constraint warns", expect_warning({ + add.distribution.constraint(strategy.st, + paramset.label = 'Timespan', + distribution.label.1 = 'EnterLong', + distribution.label.2 = 'EnterShort', + operator = '==', + label = 'Timespan') +})) + +test_that("Deleting unknown paramset warns", expect_warning({ + delete.paramset(strategy.st, "Timespans") +})) + Modified: pkg/quantstrat/tests/run-all.R =================================================================== --- pkg/quantstrat/tests/run-all.R 2015-12-11 14:44:38 UTC (rev 1722) +++ pkg/quantstrat/tests/run-all.R 2015-12-11 14:53:33 UTC (rev 1723) @@ -1,5 +1,5 @@ require(testthat) require(quantstrat) -try(test_package("quantstrat")) +try(test_package("quantstrat", filter="paramsets")) From noreply at r-forge.r-project.org Mon Dec 14 13:54:08 2015 From: noreply at r-forge.r-project.org (noreply at r-forge.r-project.org) Date: Mon, 14 Dec 2015 13:54:08 +0100 (CET) Subject: [Blotter-commits] r1724 - pkg/quantstrat/demo Message-ID: <20151214125408.9DDF6186EC5@r-forge.r-project.org> Author: bodanker Date: 2015-12-14 13:54:08 +0100 (Mon, 14 Dec 2015) New Revision: 1724 Modified: pkg/quantstrat/demo/bbands.R pkg/quantstrat/demo/bee.R pkg/quantstrat/demo/faber.R pkg/quantstrat/demo/faberMC.R pkg/quantstrat/demo/faber_rebal.R pkg/quantstrat/demo/luxor.1.strategy.basic.R pkg/quantstrat/demo/luxor.2.add.paramsets.R pkg/quantstrat/demo/luxor.3.paramset.sma.R pkg/quantstrat/demo/luxor.4.paramset.timespan.R pkg/quantstrat/demo/luxor.5.strategy.ordersets.R pkg/quantstrat/demo/luxor.6.paramset.stoploss.R pkg/quantstrat/demo/luxor.6.paramset.stoptrailing.R pkg/quantstrat/demo/luxor.6.paramset.takeprofit.R pkg/quantstrat/demo/luxor.7.exit.and.risk.R pkg/quantstrat/demo/luxor.8.walk.forward.R pkg/quantstrat/demo/luxor.include.R pkg/quantstrat/demo/luxor.sample.MAE.stoploss.R pkg/quantstrat/demo/luxor.sample.MAE.stoptrailing.R pkg/quantstrat/demo/luxor.sample.MFE.takeprofit.R pkg/quantstrat/demo/luxor.sample.tradeGraphs.sma.R pkg/quantstrat/demo/luxor.sample.tradeGraphs.timespan.R pkg/quantstrat/demo/luxor.sample.walk.forward.R pkg/quantstrat/demo/maCross.R pkg/quantstrat/demo/macd.R pkg/quantstrat/demo/macdParameters.R pkg/quantstrat/demo/macdRebalancing.R pkg/quantstrat/demo/pair_trade.R pkg/quantstrat/demo/rocema.R pkg/quantstrat/demo/rsi.R pkg/quantstrat/demo/signal.RSI.R pkg/quantstrat/demo/signal.SMA.R Log: Do not set initDate argument in demos Do not set initDate for initPortf, initAcct, or initOrders in any of the demos. Specifying the initDate argument incorrectly can cause errors that are difficult for users to diagnose, so we shouldn't provide demos that suggest users need to set initDate manually. Rename initDate to startDate in all demos in order to avoid confusion with initDate argument to initPortf, initAcct, and initOrders. Modified: pkg/quantstrat/demo/bbands.R =================================================================== --- pkg/quantstrat/demo/bbands.R 2015-12-11 14:53:33 UTC (rev 1723) +++ pkg/quantstrat/demo/bbands.R 2015-12-14 12:54:08 UTC (rev 1724) @@ -1,7 +1,7 @@ require(quantstrat) suppressWarnings(rm("order_book.bbands",pos=.strategy)) suppressWarnings(rm("account.bbands","portfolio.bbands",pos=.blotter)) -suppressWarnings(rm("account.st","portfolio.st","stock.str","stratBBands","initDate","initEq",'start_t','end_t')) +suppressWarnings(rm("account.st","portfolio.st","stock.str","stratBBands","startDate","initEq",'start_t','end_t')) # some things to set up here stock.str='IBM' # what are we trying it on @@ -14,27 +14,16 @@ currency('USD') stock(stock.str,currency='USD',multiplier=1) -##### PLACE DEMO AND TEST DATES HERE ################# -# -#if(isTRUE(options('in_test')$in_test)) -# # use test dates -# {initDate="2011-01-01" -# endDate="2012-12-31" -# } else -# # use demo defaults -# {initDate="1999-12-31" -# endDate=Sys.Date()} - -initDate='2006-12-31' +startDate='2006-12-31' initEq=1000000 portfolio.st='bbands' account.st='bbands' -initPortf(portfolio.st,symbols=stock.str, initDate=initDate) -initAcct(account.st,portfolios='bbands', initDate=initDate) -initOrders(portfolio=portfolio.st,initDate=initDate) -addPosLimit(portfolio.st, stock.str, initDate, 200, 2 ) #set max pos +initPortf(portfolio.st, symbols=stock.str) +initAcct(account.st,portfolios='bbands') +initOrders(portfolio=portfolio.st) +addPosLimit(portfolio.st, stock.str, startDate, 200, 2 ) #set max pos # set up parameters maType='SMA' @@ -113,7 +102,7 @@ #TODO add thresholds and stop-entry and stop-exit handling to test -getSymbols(stock.str,from=initDate,index.class=c('POSIXt','POSIXct')) +getSymbols(stock.str,from=startDate,index.class=c('POSIXt','POSIXct')) start_t<-Sys.time() out<-try(applyStrategy(strategy='bbands' , portfolios='bbands',parameters=list(sd=SD,n=N)) ) @@ -144,9 +133,3 @@ # $Id$ # ############################################################################### - -##### PLACE THIS BLOCK AT END OF DEMO SCRIPT ################### -# book = getOrderBook(port) -# stats = tradeStats(port) -# rets = PortfReturns(acct) -################################################################ Modified: pkg/quantstrat/demo/bee.R =================================================================== --- pkg/quantstrat/demo/bee.R 2015-12-11 14:53:33 UTC (rev 1723) +++ pkg/quantstrat/demo/bee.R 2015-12-14 12:54:08 UTC (rev 1724) @@ -4,16 +4,9 @@ # copyright (c) 2009-2012, Algorithm Alpha, LLC # Licensed GPL-2 # -##### PLACE DEMO AND TEST DATES HERE ################# +##### PLACE DEMO DATES HERE ################# -if(isTRUE(options('in_test')$in_test)) - # use test dates - {initDate="2011-01-01" - endDate="2012-12-31" - } else - # use demo defaults - {initDate="1999-12-31" - endDate=Sys.Date()} +startDate="1999-12-31" ############################# DEFINE VARIABLES ############################## @@ -28,15 +21,15 @@ ############################# GET DATA ###################################### suppressMessages(require(quantstrat)) -getSymbols(sym, from=initDate, to=endDate, index.class=c("POSIXt","POSIXct")) +getSymbols(sym, from=startDate, index.class=c("POSIXt","POSIXct")) ############################# INITIALIZE #################################### currency('USD') stock(sym ,currency='USD', multiplier=1) -initPortf(port, sym, initDate=initDate) -initAcct(acct, port, initEq=initEq, initDate=initDate) -initOrders(port, initDate=initDate ) +initPortf(port, sym) +initAcct(acct, port, initEq=initEq) +initOrders(port) bee = strategy(port) ############################# MAX POSITION LOGIC ############################ @@ -44,7 +37,7 @@ addPosLimit( portfolio=port, symbol=sym, - timestamp=initDate, + timestamp=startDate, maxpos=100) @@ -140,7 +133,6 @@ ########################### USEFUL CONTAINERS ############################# -invisible(mktdata) stratStats = tradeStats(port) stratReturns = PortfReturns(acct) @@ -152,9 +144,3 @@ cat('Sortino Ratio for bumblebee is: ', SortinoRatio(stratReturns), '\n') -##### PLACE THIS BLOCK AT END OF DEMO SCRIPT ################### -book = getOrderBook(port) -stats = tradeStats(port) -rets = PortfReturns(acct) -txns = getTxns(port, sym) -################################################################ Modified: pkg/quantstrat/demo/faber.R =================================================================== --- pkg/quantstrat/demo/faber.R 2015-12-11 14:53:33 UTC (rev 1723) +++ pkg/quantstrat/demo/faber.R 2015-12-14 12:54:08 UTC (rev 1724) @@ -53,22 +53,11 @@ # Try to clean up in case the demo was run previously suppressWarnings(rm("account.faber","portfolio.faber",pos=.blotter)) suppressWarnings(rm("ltaccount", "ltportfolio", "ClosePrice", "CurrentDate", "equity", - "GSPC", "stratFaber", "initDate", "initEq", "Posn", "UnitSize", "verbose")) + "GSPC", "stratFaber", "startDate", "initEq", "Posn", "UnitSize", "verbose")) suppressWarnings(rm("order_book.faber",pos=.strategy)) -##### PLACE DEMO AND TEST DATES HERE ################# -# -#if(isTRUE(options('in_test')$in_test)) -# # use test dates -# {initDate="2011-01-01" -# endDate="2012-12-31" -# } else -# # use demo defaults -# {initDate="1999-12-31" -# endDate=Sys.Date()} - # Set initial values -initDate='1997-12-31' +startDate='1997-12-31' initEq=100000 # Set up instruments with FinancialInstruments package @@ -92,9 +81,9 @@ } # Initialize portfolio and account -initPortf('faber', symbols=symbols, initDate=initDate) -initAcct('faber', portfolios='faber', initDate=initDate, initEq=100000) -initOrders(portfolio='faber', initDate=initDate) +initPortf('faber', symbols=symbols) +initAcct('faber', portfolios='faber', initEq=initEq) +initOrders(portfolio='faber') print("setup completed") @@ -175,9 +164,3 @@ # $Id$ # ############################################################################### - -##### PLACE THIS BLOCK AT END OF DEMO SCRIPT ################### -# book = getOrderBook(port) -# stats = tradeStats(port) -# rets = PortfReturns(acct) -################################################################ Modified: pkg/quantstrat/demo/faberMC.R =================================================================== --- pkg/quantstrat/demo/faberMC.R 2015-12-11 14:53:33 UTC (rev 1723) +++ pkg/quantstrat/demo/faberMC.R 2015-12-14 12:54:08 UTC (rev 1724) @@ -48,22 +48,11 @@ # Try to clean up in case the demo was run previously suppressWarnings(rm("account.faber","account.faberMC","portfolio.faber","portfolio.combMC", "portfolio.GDAXI", "portfolio.GSPC", "portfolio.N225",pos=.blotter)) -suppressWarnings(rm("ltaccount","ltportfolio","ClosePrice","CurrentDate","equity","stratFaber","initDate","initEq","Posn","UnitSize","verbose")) +suppressWarnings(rm("ltaccount","ltportfolio","ClosePrice","CurrentDate","equity","stratFaber","startDate","initEq","Posn","UnitSize","verbose")) suppressWarnings(rm("order_book.faber","order_book.combMC", "order_book.GDAXI", "order_book.GSPC", "order_book.N225", pos=.strategy)) -##### PLACE DEMO AND TEST DATES HERE ################# -# -#if(isTRUE(options('in_test')$in_test)) -# # use test dates -# {initDate="2011-01-01" -# endDate="2012-12-31" -# } else -# # use demo defaults -# {initDate="1999-12-31" -# endDate=Sys.Date()} - # Set initial values -initDate='2000-01-01' +startDate='2000-01-01' initEq=100000 # Set up instruments with FinancialInstruments package @@ -79,7 +68,7 @@ colnames(USDJPY)<-"USDJPY" colnames(EURUSD)<-"EURUSD" -getSymbols(symbols,from=initDate) +getSymbols(symbols,from=startDate) #takes out the carat symbols = c("GSPC", "N225", "GDAXI") @@ -95,12 +84,12 @@ indexFormat(x)<-'%Y-%m-%d' colnames(x)<-gsub("x",symbol,colnames(x)) assign(symbol,x) - initPortf(symbol, symbols=symbol, initDate=initDate, currency=getInstrument(symbol)$currency) - initOrders(portfolio=symbol, initDate=initDate) + initPortf(symbol, symbols=symbol, currency=getInstrument(symbol)$currency) + initOrders(portfolio=symbol) } -initAcct('faberMC', portfolios=symbols, initDate=initDate, currency="USD") +initAcct('faberMC', portfolios=symbols, currency="USD") # Initialize portfolio and account @@ -143,8 +132,8 @@ print(end_t-start_t) #and a combined portfolio -initPortf('combMC', symbols=symbols, initDate=initDate, currency="USD") -initOrders(portfolio= 'combMC', initDate=initDate) +initPortf('combMC', symbols=symbols, currency="USD") +initOrders(portfolio= 'combMC') comb.out<-applyStrategy(strategy=stratFaber , portfolios='combMC') updatePortf(Portfolio='combMC',Dates=paste('::',as.Date(Sys.time()),sep='')) @@ -172,9 +161,3 @@ # $Id: faber.R 371 2010-08-12 20:18:09Z braverock $ # ############################################################################### - -##### PLACE THIS BLOCK AT END OF DEMO SCRIPT ################### -# book = getOrderBook(port) -# stats = tradeStats(port) -# rets = PortfReturns(acct) -################################################################ Modified: pkg/quantstrat/demo/faber_rebal.R =================================================================== --- pkg/quantstrat/demo/faber_rebal.R 2015-12-11 14:53:33 UTC (rev 1723) +++ pkg/quantstrat/demo/faber_rebal.R 2015-12-14 12:54:08 UTC (rev 1724) @@ -54,22 +54,11 @@ # Try to clean up in case the demo was run previously suppressWarnings(rm("account.faber","portfolio.faber",pos=.blotter)) suppressWarnings(rm("ltaccount", "ltportfolio", "ClosePrice", "CurrentDate", "equity", - "GSPC", "stratFaber", "initDate", "initEq", "Posn", "UnitSize", "verbose")) + "GSPC", "stratFaber", "startDate", "initEq", "Posn", "UnitSize", "verbose")) suppressWarnings(rm("order_book.faber",pos=.strategy)) -##### PLACE DEMO AND TEST DATES HERE ################# -# -#if(isTRUE(options('in_test')$in_test)) -# # use test dates -# {initDate="2011-01-01" -# endDate="2012-12-31" -# } else -# # use demo defaults -# {initDate="1999-12-31" -# endDate=Sys.Date()} - # Set initial values -initDate='1997-12-31' +startDate='1997-12-31' initEq=100000 # Set up instruments with FinancialInstruments package @@ -93,15 +82,15 @@ } # Initialize portfolio and account -initPortf('faber', symbols=symbols, initDate=initDate) -initAcct('faber', portfolios='faber', initDate=initDate, initEq=100000) -initOrders(portfolio='faber', initDate=initDate) +initPortf('faber', symbols=symbols) +initAcct('faber', portfolios='faber', initEq=100000) +initOrders(portfolio='faber') # set intial position limits posval<-initEq/length(symbols) for(symbol in symbols){ pos<-round((posval/first(getPrice(get(symbol)))[,1]),-2) - addPosLimit('faber',symbol,initDate, maxpos=pos,minpos=-pos) + addPosLimit('faber', symbol, startDate, maxpos=pos, minpos=-pos) } print("setup completed") @@ -193,9 +182,3 @@ # $Id$ # ############################################################################### - -##### PLACE THIS BLOCK AT END OF DEMO SCRIPT ################### -# book = getOrderBook(port) -# stats = tradeStats(port) -# rets = PortfReturns(acct) -################################################################ Modified: pkg/quantstrat/demo/luxor.1.strategy.basic.R =================================================================== --- pkg/quantstrat/demo/luxor.1.strategy.basic.R 2015-12-11 14:53:33 UTC (rev 1723) +++ pkg/quantstrat/demo/luxor.1.strategy.basic.R 2015-12-14 12:54:08 UTC (rev 1724) @@ -10,17 +10,6 @@ require(quantstrat) -##### PLACE DEMO AND TEST DATES HERE ################# -# -#if(isTRUE(options('in_test')$in_test)) -# # use test dates -# {initDate="2011-01-01" -# endDate="2012-12-31" -# } else -# # use demo defaults -# {initDate="1999-12-31" -# endDate=Sys.Date()} - source(paste0(path.package("quantstrat"),"/demo/luxor.include.R")) .fast = 10 .slow = 30 @@ -29,12 +18,12 @@ ### blotter -initPortf(portfolio.st, symbols='GBPUSD', initDate=initDate, currency='USD') -initAcct(account.st, portfolios=portfolio.st, initDate=initDate, currency='USD') +initPortf(portfolio.st, symbols='GBPUSD', currency='USD') +initAcct(account.st, portfolios=portfolio.st, currency='USD') ### quantstrat -initOrders(portfolio.st, initDate=initDate) +initOrders(portfolio.st) ### define strategy @@ -145,9 +134,3 @@ # save the strategy in an .RData object for later retrieval save.strategy(strategy.st) - -##### PLACE THIS BLOCK AT END OF DEMO SCRIPT ################### -# book = getOrderBook(port) -# stats = tradeStats(port) -# rets = PortfReturns(acct) -################################################################ Modified: pkg/quantstrat/demo/luxor.2.add.paramsets.R =================================================================== --- pkg/quantstrat/demo/luxor.2.add.paramsets.R 2015-12-11 14:53:33 UTC (rev 1723) +++ pkg/quantstrat/demo/luxor.2.add.paramsets.R 2015-12-14 12:54:08 UTC (rev 1724) @@ -8,17 +8,6 @@ require(quantstrat) -##### PLACE DEMO AND TEST DATES HERE ################# -# -#if(isTRUE(options('in_test')$in_test)) -# # use test dates -# {initDate="2011-01-01" -# endDate="2012-12-31" -# } else -# # use demo defaults -# {initDate="1999-12-31" -# endDate=Sys.Date()} - source(paste0(path.package("quantstrat"),"/demo/luxor.include.R")) ### @@ -116,9 +105,3 @@ ### save.strategy(strategy.st) - -##### PLACE THIS BLOCK AT END OF DEMO SCRIPT ################### -# book = getOrderBook(port) -# stats = tradeStats(port) -# rets = PortfReturns(acct) -################################################################ Modified: pkg/quantstrat/demo/luxor.3.paramset.sma.R =================================================================== --- pkg/quantstrat/demo/luxor.3.paramset.sma.R 2015-12-11 14:53:33 UTC (rev 1723) +++ pkg/quantstrat/demo/luxor.3.paramset.sma.R 2015-12-14 12:54:08 UTC (rev 1724) @@ -16,12 +16,12 @@ ### blotter -initPortf(portfolio.st, symbols='GBPUSD', initDate=initDate, currency='USD') -initAcct(account.st, portfolios=portfolio.st, initDate=initDate, currency='USD') +initPortf(portfolio.st, symbols='GBPUSD', currency='USD') +initAcct(account.st, portfolios=portfolio.st, currency='USD') ### quantstrat -initOrders(portfolio.st, initDate=initDate) +initOrders(portfolio.st) load.strategy(strategy.st) Modified: pkg/quantstrat/demo/luxor.4.paramset.timespan.R =================================================================== --- pkg/quantstrat/demo/luxor.4.paramset.timespan.R 2015-12-11 14:53:33 UTC (rev 1723) +++ pkg/quantstrat/demo/luxor.4.paramset.timespan.R 2015-12-14 12:54:08 UTC (rev 1724) @@ -15,12 +15,12 @@ ### blotter -initPortf(portfolio.st, symbols='GBPUSD', initDate=initDate, currency='USD') -initAcct(account.st, portfolios=portfolio.st, initDate=initDate, currency='USD') +initPortf(portfolio.st, symbols='GBPUSD', currency='USD') +initAcct(account.st, portfolios=portfolio.st, currency='USD') ### quantstrat -initOrders(portfolio.st, initDate=initDate) +initOrders(portfolio.st) load.strategy(strategy.st) Modified: pkg/quantstrat/demo/luxor.5.strategy.ordersets.R =================================================================== --- pkg/quantstrat/demo/luxor.5.strategy.ordersets.R 2015-12-11 14:53:33 UTC (rev 1723) +++ pkg/quantstrat/demo/luxor.5.strategy.ordersets.R 2015-12-14 12:54:08 UTC (rev 1724) @@ -10,17 +10,6 @@ require(quantstrat) -##### PLACE DEMO AND TEST DATES HERE ################# -# -#if(isTRUE(options('in_test')$in_test)) -# # use test dates -# {initDate="2011-01-01" -# endDate="2012-12-31" -# } else -# # use demo defaults -# {initDate="1999-12-31" -# endDate=Sys.Date()} - source(paste0(path.package("quantstrat"),"/demo/luxor.include.R")) ### define strategy @@ -350,9 +339,3 @@ ############################################################################### save.strategy(strategy.st) - -##### PLACE THIS BLOCK AT END OF DEMO SCRIPT ################### -# book = getOrderBook(port) -# stats = tradeStats(port) -# rets = PortfReturns(acct) -################################################################ Modified: pkg/quantstrat/demo/luxor.6.paramset.stoploss.R =================================================================== --- pkg/quantstrat/demo/luxor.6.paramset.stoploss.R 2015-12-11 14:53:33 UTC (rev 1723) +++ pkg/quantstrat/demo/luxor.6.paramset.stoploss.R 2015-12-14 12:54:08 UTC (rev 1724) @@ -10,34 +10,23 @@ require(quantstrat) -##### PLACE DEMO AND TEST DATES HERE ################# -# -#if(isTRUE(options('in_test')$in_test)) -# # use test dates -# {initDate="2011-01-01" -# endDate="2012-12-31" -# } else -# # use demo defaults -# {initDate="1999-12-31" -# endDate=Sys.Date()} - source(paste0(path.package("quantstrat"),"/demo/luxor.include.R")) source(paste0(path.package("quantstrat"),"/demo/luxor.getSymbols.R")) ### -initPortf(portfolio.st, symbols='GBPUSD', initDate=initDate, currency='USD') +initPortf(portfolio.st, symbols='GBPUSD', currency='USD') addPosLimit( portfolio=portfolio.st, symbol='GBPUSD', - timestamp=initDate, + timestamp=startDate, maxpos=.orderqty) -initAcct(account.st, portfolios=portfolio.st, initDate=initDate, currency='USD') +initAcct(account.st, portfolios=portfolio.st, currency='USD') ### -initOrders(portfolio.st, initDate=initDate) +initOrders(portfolio.st) load.strategy(strategy.st) @@ -72,9 +61,3 @@ View(t(stats)) plot(100*stats$StopLossLONG, stats$Net.Trading.PL, type='b', xlab='Stoploss %', ylab='Net.Trading.PL', main='Luxor') - -##### PLACE THIS BLOCK AT END OF DEMO SCRIPT ################### -# book = getOrderBook(port) -# stats = tradeStats(port) -# rets = PortfReturns(acct) -################################################################ Modified: pkg/quantstrat/demo/luxor.6.paramset.stoptrailing.R =================================================================== --- pkg/quantstrat/demo/luxor.6.paramset.stoptrailing.R 2015-12-11 14:53:33 UTC (rev 1723) +++ pkg/quantstrat/demo/luxor.6.paramset.stoptrailing.R 2015-12-14 12:54:08 UTC (rev 1724) @@ -10,34 +10,23 @@ require(quantstrat) -##### PLACE DEMO AND TEST DATES HERE ################# -# -#if(isTRUE(options('in_test')$in_test)) -# # use test dates -# {initDate="2011-01-01" -# endDate="2012-12-31" -# } else -# # use demo defaults -# {initDate="1999-12-31" -# endDate=Sys.Date()} - source(paste0(path.package("quantstrat"),"/demo/luxor.include.R")) source(paste0(path.package("quantstrat"),"/demo/luxor.getSymbols.R")) ### -initPortf(portfolio.st, symbols='GBPUSD', initDate=initDate, currency='USD') +initPortf(portfolio.st, symbols='GBPUSD', currency='USD') addPosLimit( portfolio=portfolio.st, symbol='GBPUSD', - timestamp=initDate, + timestamp=startDate, maxpos=.orderqty) -initAcct(account.st, portfolios=portfolio.st, initDate=initDate, currency='USD') +initAcct(account.st, portfolios=portfolio.st, currency='USD') ### -initOrders(portfolio.st, initDate=initDate) +initOrders(portfolio.st) load.strategy(strategy.st) @@ -72,9 +61,3 @@ View(t(stats)) plot(100*stats$StopTrailingLONG, stats$Net.Trading.PL, type='b', xlab='StopTrailing %', ylab='Net.Trading.PL', main='Luxor') - -##### PLACE THIS BLOCK AT END OF DEMO SCRIPT ################### -# book = getOrderBook(port) -# stats = tradeStats(port) -# rets = PortfReturns(acct) -################################################################ Modified: pkg/quantstrat/demo/luxor.6.paramset.takeprofit.R =================================================================== --- pkg/quantstrat/demo/luxor.6.paramset.takeprofit.R 2015-12-11 14:53:33 UTC (rev 1723) +++ pkg/quantstrat/demo/luxor.6.paramset.takeprofit.R 2015-12-14 12:54:08 UTC (rev 1724) @@ -10,34 +10,23 @@ require(quantstrat) -##### PLACE DEMO AND TEST DATES HERE ################# -# -#if(isTRUE(options('in_test')$in_test)) -# # use test dates -# {initDate="2011-01-01" -# endDate="2012-12-31" -# } else -# # use demo defaults -# {initDate="1999-12-31" -# endDate=Sys.Date()} - source(paste0(path.package("quantstrat"),"/demo/luxor.include.R")) source(paste0(path.package("quantstrat"),"/demo/luxor.getSymbols.R")) ### -initPortf(portfolio.st, symbols='GBPUSD', initDate=initDate, currency='USD') +initPortf(portfolio.st, symbols='GBPUSD', currency='USD') addPosLimit( portfolio=portfolio.st, symbol='GBPUSD', - timestamp=initDate, + timestamp=startDate, maxpos=.orderqty) -initAcct(account.st, portfolios=portfolio.st, initDate=initDate, currency='USD') +initAcct(account.st, portfolios=portfolio.st, currency='USD') ### -initOrders(portfolio.st, initDate=initDate) +initOrders(portfolio.st) load.strategy(strategy.st) @@ -72,9 +61,3 @@ View(t(stats)) plot(100*stats$TakeProfitLONG, stats$Net.Trading.PL, type='b', xlab='TakeProfit %', ylab='Net.Trading.PL', main='Luxor') - -##### PLACE THIS BLOCK AT END OF DEMO SCRIPT ################### -# book = getOrderBook(port) -# stats = tradeStats(port) -# rets = PortfReturns(acct) -################################################################ Modified: pkg/quantstrat/demo/luxor.7.exit.and.risk.R =================================================================== --- pkg/quantstrat/demo/luxor.7.exit.and.risk.R 2015-12-11 14:53:33 UTC (rev 1723) +++ pkg/quantstrat/demo/luxor.7.exit.and.risk.R 2015-12-14 12:54:08 UTC (rev 1724) @@ -12,23 +12,12 @@ source(paste0(path.package("quantstrat"),"/demo/luxor.include.R")) -##### PLACE DEMO AND TEST DATES HERE ################# -# -#if(isTRUE(options('in_test')$in_test)) -# # use test dates -# {initDate="2011-01-01" -# endDate="2012-12-31" -# } else -# # use demo defaults -# {initDate="1999-12-31" -# endDate=Sys.Date()} - source(paste0(path.package("quantstrat"),"/demo/luxor.getSymbols.R")) ### blotter -initPortf(portfolio.st, symbols='GBPUSD', initDate=initDate, currency='USD') -initAcct(account.st, portfolios=portfolio.st, initDate=initDate, currency='USD') +initPortf(portfolio.st, symbols='GBPUSD', currency='USD') +initAcct(account.st, portfolios=portfolio.st, currency='USD') ### quantstrat @@ -45,10 +34,10 @@ addPosLimit( portfolio=portfolio.st, symbol='GBPUSD', - timestamp=initDate, + timestamp=startDate, maxpos=.orderqty) -initOrders(portfolio.st, initDate=initDate) +initOrders(portfolio.st) applyStrategy(strategy.st, portfolio.st, prefer='Open') @@ -75,9 +64,3 @@ chart.ME(portfolio.st, 'GBPUSD', scale='percent', type='MAE') dev.new() chart.ME(portfolio.st, 'GBPUSD', scale='percent', type='MFE') - -##### PLACE THIS BLOCK AT END OF DEMO SCRIPT ################### -# book = getOrderBook(port) -# stats = tradeStats(port) -# rets = PortfReturns(acct) -################################################################ Modified: pkg/quantstrat/demo/luxor.8.walk.forward.R =================================================================== --- pkg/quantstrat/demo/luxor.8.walk.forward.R 2015-12-11 14:53:33 UTC (rev 1723) +++ pkg/quantstrat/demo/luxor.8.walk.forward.R 2015-12-14 12:54:08 UTC (rev 1724) @@ -29,12 +29,12 @@ ### blotter -initPortf(portfolio.st, symbols='GBPUSD', initDate=initDate, currency='USD') -initAcct(account.st, portfolios=portfolio.st, initDate=initDate, currency='USD', initEq=100000) +initPortf(portfolio.st, symbols='GBPUSD', currency='USD') +initAcct(account.st, portfolios=portfolio.st, currency='USD', initEq=100000) ### quantstrat -initOrders(portfolio.st, initDate=initDate) +initOrders(portfolio.st) load.strategy(strategy.st) @@ -45,7 +45,7 @@ addPosLimit( portfolio=portfolio.st, symbol='GBPUSD', - timestamp=initDate, + timestamp=startDate, maxpos=.orderqty) ### objective function Modified: pkg/quantstrat/demo/luxor.include.R =================================================================== --- pkg/quantstrat/demo/luxor.include.R 2015-12-11 14:53:33 UTC (rev 1723) +++ pkg/quantstrat/demo/luxor.include.R 2015-12-14 12:54:08 UTC (rev 1724) @@ -7,9 +7,9 @@ ### -initDate = '2002-10-21' +startDate = '2002-10-21' -.from=initDate +.from=startDate #.to='2008-07-04' .to='2002-10-31' Modified: pkg/quantstrat/demo/luxor.sample.MAE.stoploss.R =================================================================== --- pkg/quantstrat/demo/luxor.sample.MAE.stoploss.R 2015-12-11 14:53:33 UTC (rev 1723) +++ pkg/quantstrat/demo/luxor.sample.MAE.stoploss.R 2015-12-14 12:54:08 UTC (rev 1724) @@ -21,20 +21,3 @@ type='MAE', scale='cash' ) - -##### PLACE DEMO AND TEST DATES HERE ################# -# -#if(isTRUE(options('in_test')$in_test)) -# # use test dates -# {initDate="2011-01-01" -# endDate="2012-12-31" -# } else -# # use demo defaults -# {initDate="1999-12-31" -# endDate=Sys.Date()} - -##### PLACE THIS BLOCK AT END OF DEMO SCRIPT ################### -# book = getOrderBook(port) -# stats = tradeStats(port) -# rets = PortfReturns(acct) -################################################################ Modified: pkg/quantstrat/demo/luxor.sample.MAE.stoptrailing.R =================================================================== --- pkg/quantstrat/demo/luxor.sample.MAE.stoptrailing.R 2015-12-11 14:53:33 UTC (rev 1723) +++ pkg/quantstrat/demo/luxor.sample.MAE.stoptrailing.R 2015-12-14 12:54:08 UTC (rev 1724) @@ -21,21 +21,3 @@ type='MAE', scale='percent' ) - - -##### PLACE DEMO AND TEST DATES HERE ################# -# -#if(isTRUE(options('in_test')$in_test)) -# # use test dates -# {initDate="2011-01-01" -# endDate="2012-12-31" -# } else -# # use demo defaults -# {initDate="1999-12-31" -# endDate=Sys.Date()} - -##### PLACE THIS BLOCK AT END OF DEMO SCRIPT ################### -# book = getOrderBook(port) -# stats = tradeStats(port) -# rets = PortfReturns(acct) -################################################################ Modified: pkg/quantstrat/demo/luxor.sample.MFE.takeprofit.R =================================================================== --- pkg/quantstrat/demo/luxor.sample.MFE.takeprofit.R 2015-12-11 14:53:33 UTC (rev 1723) +++ pkg/quantstrat/demo/luxor.sample.MFE.takeprofit.R 2015-12-14 12:54:08 UTC (rev 1724) @@ -21,21 +21,3 @@ type='MFE', scale='percent' ) - - -##### PLACE DEMO AND TEST DATES HERE ################# -# -#if(isTRUE(options('in_test')$in_test)) -# # use test dates -# {initDate="2011-01-01" -# endDate="2012-12-31" -# } else -# # use demo defaults -# {initDate="1999-12-31" -# endDate=Sys.Date()} - -##### PLACE THIS BLOCK AT END OF DEMO SCRIPT ################### -# book = getOrderBook(port) -# stats = tradeStats(port) -# rets = PortfReturns(acct) -################################################################ Modified: pkg/quantstrat/demo/luxor.sample.tradeGraphs.sma.R =================================================================== --- pkg/quantstrat/demo/luxor.sample.tradeGraphs.sma.R 2015-12-11 14:53:33 UTC (rev 1723) +++ pkg/quantstrat/demo/luxor.sample.tradeGraphs.sma.R 2015-12-14 12:54:08 UTC (rev 1724) @@ -25,20 +25,3 @@ statistics = c("Net.Trading.PL", "maxDrawdown", "Avg.Trade.PL", "Num.Trades", "Profit.Factor"), title = 'Luxor SMA Parameter Scan' ) - -##### PLACE DEMO AND TEST DATES HERE ################# -# -#if(isTRUE(options('in_test')$in_test)) -# # use test dates -# {initDate="2011-01-01" -# endDate="2012-12-31" -# } else -# # use demo defaults -# {initDate="1999-12-31" -# endDate=Sys.Date()} - -##### PLACE THIS BLOCK AT END OF DEMO SCRIPT ################### -# book = getOrderBook(port) -# stats = tradeStats(port) -# rets = PortfReturns(acct) -################################################################ Modified: pkg/quantstrat/demo/luxor.sample.tradeGraphs.timespan.R =================================================================== --- pkg/quantstrat/demo/luxor.sample.tradeGraphs.timespan.R 2015-12-11 14:53:33 UTC (rev 1723) +++ pkg/quantstrat/demo/luxor.sample.tradeGraphs.timespan.R 2015-12-14 12:54:08 UTC (rev 1724) @@ -35,20 +35,3 @@ statistics=c('Net.Trading.PL','maxDrawdown',"Avg.Trade.PL",'Num.Trades',"Profit.Factor"), title = 'Luxor Intraday TimeWindow Scan' ) - -##### PLACE DEMO AND TEST DATES HERE ################# -# -#if(isTRUE(options('in_test')$in_test)) -# # use test dates -# {initDate="2011-01-01" -# endDate="2012-12-31" -# } else -# # use demo defaults -# {initDate="1999-12-31" -# endDate=Sys.Date()} - -##### PLACE THIS BLOCK AT END OF DEMO SCRIPT ################### -# book = getOrderBook(port) -# stats = tradeStats(port) -# rets = PortfReturns(acct) -################################################################ Modified: pkg/quantstrat/demo/luxor.sample.walk.forward.R =================================================================== --- pkg/quantstrat/demo/luxor.sample.walk.forward.R 2015-12-11 14:53:33 UTC (rev 1723) +++ pkg/quantstrat/demo/luxor.sample.walk.forward.R 2015-12-14 12:54:08 UTC (rev 1724) @@ -12,19 +12,3 @@ chart.forward.training(paste0(path.package("quantstrat"),'/data/luxor.wfa.ples.RData')) -##### PLACE DEMO AND TEST DATES HERE ################# -# -#if(isTRUE(options('in_test')$in_test)) -# # use test dates -# {initDate="2011-01-01" -# endDate="2012-12-31" -# } else -# # use demo defaults -# {initDate="1999-12-31" -# endDate=Sys.Date()} - -##### PLACE THIS BLOCK AT END OF DEMO SCRIPT ################### -# book = getOrderBook(port) -# stats = tradeStats(port) -# rets = PortfReturns(acct) -################################################################ Modified: pkg/quantstrat/demo/maCross.R =================================================================== --- pkg/quantstrat/demo/maCross.R 2015-12-11 14:53:33 UTC (rev 1723) +++ pkg/quantstrat/demo/maCross.R 2015-12-14 12:54:08 UTC (rev 1724) @@ -20,24 +20,13 @@ currency('USD') stock(stock.str,currency='USD',multiplier=1) -##### PLACE DEMO AND TEST DATES HERE ################# -# -if(isTRUE(options('in_test')$in_test)){ - # use test dates - initDate="2011-01-01" - endDate="2012-12-31" -} else { - # use demo defaults - initDate="1999-12-31" - endDate=Sys.Date() -} - +startDate="1999-12-31" initEq=1000000 portfolio.st='macross' account.st='macross' -initPortf(portfolio.st,symbols=stock.str, initDate=initDate) -initAcct(account.st,portfolios=portfolio.st, initDate=initDate,initEq=initEq) -initOrders(portfolio=portfolio.st,initDate=initDate) +initPortf(portfolio.st,symbols=stock.str) +initAcct(account.st,portfolios=portfolio.st, initEq=initEq) +initOrders(portfolio=portfolio.st) stratMACROSS<- strategy(portfolio.st) @@ -55,7 +44,7 @@ # stratMACROSS <- add.rule(strategy = stratMACROSS,name='ruleSignal', arguments = list(sigcol="ma50.lt.ma200",sigval=TRUE, orderqty=-100, ordertype='market', orderside='short'),type='enter') # stratMACROSS <- add.rule(strategy = stratMACROSS,name='ruleSignal', arguments = list(sigcol="ma50.gt.ma200",sigval=TRUE, orderqty=100, ordertype='market', orderside='short'),type='exit') -getSymbols(stock.str,from=initDate,to=endDate) +getSymbols(stock.str,from=startDate) for(i in stock.str) assign(i, adjustOHLC(get(i),use.Adjusted=TRUE)) @@ -96,9 +85,3 @@ # $Id$ # ############################################################################### -# -##### PLACE THIS BLOCK AT END OF DEMO SCRIPT ################### -# book = getOrderBook(port) -# stats = tradeStats(port) -# rets = PortfReturns(acct) -################################################################ Modified: pkg/quantstrat/demo/macd.R =================================================================== --- pkg/quantstrat/demo/macd.R 2015-12-11 14:53:33 UTC (rev 1723) +++ pkg/quantstrat/demo/macd.R 2015-12-14 12:54:08 UTC (rev 1724) @@ -13,7 +13,7 @@ require(quantstrat) suppressWarnings(rm("order_book.macd",pos=.strategy)) suppressWarnings(rm("account.macd","portfolio.macd",pos=.blotter)) -suppressWarnings(rm("account.st","portfolio.st","stock.str","stratMACD","initDate","initEq",'start_t','end_t')) +suppressWarnings(rm("account.st","portfolio.st","stock.str","stratMACD","startDate","initEq",'start_t','end_t')) #correct for TZ issues if they crop up oldtz<-Sys.getenv('TZ') @@ -38,25 +38,14 @@ #data(sample_matrix) # data included in package xts #sample_matrix<-as.xts(sample_matrix) -##### PLACE DEMO AND TEST DATES HERE ################# -# -#if(isTRUE(options('in_test')$in_test)) -# # use test dates -# {initDate="2011-01-01" -# endDate="2012-12-31" -# } else -# # use demo defaults -# {initDate="1999-12-31" -# endDate=Sys.Date()} - -initDate='2006-12-31' +startDate='2006-12-31' initEq=1000000 portfolio.st='macd' account.st='macd' -initPortf(portfolio.st,symbols=stock.str, initDate=initDate) -initAcct(account.st,portfolios=portfolio.st, initDate=initDate) -initOrders(portfolio=portfolio.st,initDate=initDate) +initPortf(portfolio.st,symbols=stock.str) +initAcct(account.st,portfolios=portfolio.st) +initOrders(portfolio=portfolio.st) strat.st<-portfolio.st # define the strategy @@ -125,7 +114,7 @@ #end rules #### -getSymbols(stock.str,from=initDate, to='2014-06-01') +getSymbols(stock.str,from=startDate, to='2014-06-01') start_t<-Sys.time() [TRUNCATED] To get the complete diff run: svnlook diff /svnroot/blotter -r 1724 From noreply at r-forge.r-project.org Mon Dec 14 13:59:13 2015 From: noreply at r-forge.r-project.org (noreply at r-forge.r-project.org) Date: Mon, 14 Dec 2015 13:59:13 +0100 (CET) Subject: [Blotter-commits] r1725 - pkg/quantstrat/R Message-ID: <20151214125913.7A7BA18791C@r-forge.r-project.org> Author: bodanker Date: 2015-12-14 13:59:13 +0100 (Mon, 14 Dec 2015) New Revision: 1725 Modified: pkg/quantstrat/R/orders.R Log: Align initDate default with initAcct and initPortf Change initDate default for initOrders to 1950-01-01, so it is consistent with initDate default for initAcct and initPortf. The default value isn't particularly important, except that it is *before* the first date in the market data. Modified: pkg/quantstrat/R/orders.R =================================================================== --- pkg/quantstrat/R/orders.R 2015-12-14 12:54:08 UTC (rev 1724) +++ pkg/quantstrat/R/orders.R 2015-12-14 12:59:13 UTC (rev 1725) @@ -64,7 +64,7 @@ #' @param \dots any other passthrough parameters #' @concept order book #' @export -initOrders <- function(portfolio=NULL, symbols=NULL, initDate = '1999-12-31', ...) +initOrders <- function(portfolio=NULL, symbols=NULL, initDate = '1950-01-01', ...) { # NOTE we could store all of these in one object, but I think that might get big orders<- try(getOrderBook(portfolio),silent=TRUE) From noreply at r-forge.r-project.org Mon Dec 14 14:09:43 2015 From: noreply at r-forge.r-project.org (noreply at r-forge.r-project.org) Date: Mon, 14 Dec 2015 14:09:43 +0100 (CET) Subject: [Blotter-commits] r1726 - pkg/quantstrat/inst/tests Message-ID: <20151214130944.0D575186CF7@r-forge.r-project.org> Author: bodanker Date: 2015-12-14 14:09:43 +0100 (Mon, 14 Dec 2015) New Revision: 1726 Removed: pkg/quantstrat/inst/tests/test_bee.R Log: Remove non-passing test Remove test_bee, since many tests currently fail, and it did not *run* as-of the revisions in which it was committed, where the commit log says all tests were *passing*. I.e., as-of r1381 the tests did not *run* due to errors. That's not to say the tests were *failing*. The tests could not pass/fail because subscript out of bounds errors prevented the tests from running. Deleted: pkg/quantstrat/inst/tests/test_bee.R =================================================================== --- pkg/quantstrat/inst/tests/test_bee.R 2015-12-14 12:59:13 UTC (rev 1725) +++ pkg/quantstrat/inst/tests/test_bee.R 2015-12-14 13:09:43 UTC (rev 1726) @@ -1,171 +0,0 @@ -################## LOAD TESTING FRAMEWORK ###################### - -require(testthat) -require(PortfolioAnalytics) - -######### ACTIVATE TEST DATES AND SOURCE BEE ##################### - -options(in_test=TRUE) -source(system.file("demo/bee.R", package="quantstrat")) - -################### DEFINE VARIABLES TO BE TESTED ############## - -qty = book$bug$GLD[,"Order.Qty"] -price = book$bug$GLD[,"Order.Price"] -type = book$bug$GLD[,"Order.Type"] -side = book$bug$GLD[,"Order.Side"] -status = book$bug$GLD[,"Order.Status"] -fees = book$bug$GLD[,"Txn.Fees"] -rule = book$bug$GLD[,"Rule"] - -Tqty = txns$Txn.Qty -Tprice = txns$Txn.Price -Tfees = txns$Txn.Fees -Tvalue = txns$Txn.Value -Tcost = txns$Txn.Cost -TPL = txns$Txn.PL - -###################### BEE ORDER BOOK ############################ - -context("Bee order book is consistent ") - -## quantity -test_that("The long position is liquidated in mid-Oct 2012", - { expect_that(as.character(qty[28]) =="all", is_true()) }) -test_that("A short position is intiated in mid Oct-2012", - { expect_that(as.character(qty[29]) =="-100", is_true()) }) -## price -test_that("The long position is exited in mid-Oct 2012 at 168.42", - { expect_that(as.character(price[28]) =="168.42", is_true()) }) -test_that("The last short position is intiated at 165.45", - { expect_that(as.character(price[33]) =="165.45", is_true()) }) -## type -test_that("The first trade is a market order", - { expect_that(as.character(type[2]) =="market", is_true()) }) -## side -test_that("The position liquidated in mid-Oct 2012 is the long one", - { expect_that(as.character(side[28]) =="long", is_true()) }) -## status -test_that("The long exit rejected when position is short", - { expect_that(as.character(status[21]) =="rejected", is_true()) }) -## fees -test_that("The first trade has no transaction fees", - { expect_that(as.character(fees[2]) =="0", is_true()) }) -## rule -test_that("The run in Mar 2012 is entered short", - { expect_that(as.character(rule[20]) =="EnterSHORT", is_true()) }) -test_that("The run in late-July 2012 is entered long", - { expect_that(as.character(rule[27]) =="EnterLONG", is_true()) }) -test_that("The run in late-July 2012 is exited short", - { expect_that(as.character(rule[26]) =="ExitSHORT", is_true()) }) - -######################## BEE TRADE STATS ############################### - -context("Bee trade statistics are consistent ") - -test_that("Num.Txns is 27", - { expect_that(stats$Num.Txns , equals(27)) }) -test_that("Num.Trades is 13", - { expect_that(stats$Num.Trades , equals(13)) }) -test_that("Net.Trading.PL is 2126", - { expect_that(stats$Net.Trading.PL, equals(2126)) }) -test_that("Avg.Trade.PL is 131.3846", - { expect_equal(stats$Avg.Trade.PL, 131.3846, .0001) }) -test_that("Med.Trade.PL is 214", - { expect_that(stats$Med.Trade.PL, equals(214)) }) -test_that("Largest.Winnner is 1242", - { expect_that(stats$Largest.Winner, equals(1242)) }) -test_that("Largest.Loser is -1147", - { expect_that(stats$Largest.Loser, equals(-1147)) }) -test_that("Gross.Profits is 4458", - { expect_that(stats$Gross.Profits, equals(4458)) }) -test_that("Gross.Losses is -2750", - { expect_that(stats$Gross.Losses, equals(-2750)) }) -test_that("Std.Dev.Trade.PL is 688.8931", - { expect_equal(stats$Std.Dev.Trade.PL, 688.8931, .0001) }) -test_that("Percent.Positive is 61.53846", - { expect_equal(stats$Percent.Positive, 61.53846, .0001) }) -test_that("Percent.Negative is 38.46154", - { expect_equal(stats$Percent.Negative, 38.46154, .0001) }) -test_that("Profit.Factor is 1.621091", - { expect_equal(stats$Profit.Factor, 1.621091, .0001) }) -test_that("Avg.Win.Trade is 557.25", - { expect_that(stats$Avg.Win.Trade, equals(557.25)) }) -test_that("Med.Win.Trade is 401", - { expect_that(stats$Med.Win.Trade, equals(401)) }) -test_that("Avg.Losing.Trade is -550", - { expect_equal(stats$Avg.Losing.Trade, -550, .0001)}) -test_that("Med.Losing.Trade is -402", - { expect_equal(stats$Med.Losing.Trade, -402, .0001) }) -test_that("Avg.Daily.PL is 131.3846", - { expect_equal(stats$Avg.Daily.PL, 131.3846, .0001) }) -test_that("Med.Daily.PL is 214", - { expect_that(stats$Med.Daily.PL, equals(214)) }) -test_that("Std.Dev.Daily.PL is 688.8931", - { expect_equal(stats$Std.Dev.Daily.PL, 688.8931, .0001) }) -test_that("Max.Drawdown is -4431", - { expect_that(stats$Max.Drawdown, equals(-4431)) }) -test_that("Profit.To.Max.Draw is 0.4798014", - { expect_equal(stats$Profit.To.Max.Draw, 0.4798014, .0001) }) -test_that("Avg.WinLoss.Ratio is 1.013182", - { expect_equal(stats$Avg.WinLoss.Ratio, 1.013182, .0001) }) -test_that("Med.WinLoss.Ratio is 0.9975124", - { expect_equal(stats$Med.WinLoss.Ratio, 0.9975124, .0001) }) -test_that("Max.Equity is 3007", - { expect_that(stats$Max.Equity, equals(3007)) }) -test_that("Min.Equity is -1424", - { expect_equal(stats$Min.Equity, -1424, .0001) }) -test_that("End.Equity is 2126", - { expect_equal(stats$End.Equity, 2126, .0001) }) - -######################## BEE RETURNS ###################### - -context("bee portfolio returns are consistent ") - - -test_that("min return is -0.00925", - { expect_that(min(rets), equals(-0.00925))}) -test_that("max return is 0.00597", - { expect_that(max(rets), equals(0.00597))}) -test_that("skewness of returns is -0.4637252", - { expect_equal(skewness(rets), -0.4637252, .0001) }) -test_that("kurtosis of returns is 3.926906", - { expect_equal(kurtosis(rets), 3.926906, .0001) }) - -######################## BEE TRANSACTIONS ###################### - -context("Bee transactions are consistent ") - -Tqty = txns$Txn.Qty -Tprice = txns$Txn.Price -Tfees = txns$Txn.Fees -Tvalue = txns$Txn.Value -Tcost = txns$Txn.Avg.Cost -TPL = txns$Net.Txn.Realized.PL - -## Transaction qty -test_that("The max position is 100 shares", - { expect_that(max(Tqty) == 100, is_true()) }) -test_that("The min position is -100 shares", - { expect_that(min(Tqty) == -100, is_true()) }) -## Transaction price -test_that("The first transacted price is the open of the day after the first signal", - { expect_that(as.numeric(Tprice[2]) == 136.92, is_true()) }) -## Transaction fees -test_that("There are no transaction fees", - { expect_that(sum(Tfees) == 0, is_true()) }) -## Transaction value -test_that("The system exits and enters with equal value", - { expect_that(as.numeric(Tvalue[3]) - as.numeric(Tvalue[4]) == 0, is_true()) }) -## Transaction cost -test_that("The transaction cost is equal to the transaction price (no fees)", - { expect_that(as.numeric(Tcost[2]) == as.numeric(Tprice[2]), is_true()) }) -## Transaction PL -test_that("The Net PnL on the first trade is 1004", - { expect_equal(as.numeric(TPL[3]), 1004, .0001) }) -test_that("The sum of Net PnL is 1708", - { expect_equal(sum(TPL), 1708, .0001) }) -test_that("The max of Net PnL is 1242", - { expect_equal(max(TPL), 1242, .0001) }) -test_that("The min of Net PnL is -1147", - { expect_equal(min(TPL), -1147, .0001) }) From noreply at r-forge.r-project.org Mon Dec 14 14:18:50 2015 From: noreply at r-forge.r-project.org (noreply at r-forge.r-project.org) Date: Mon, 14 Dec 2015 14:18:50 +0100 (CET) Subject: [Blotter-commits] r1727 - pkg/quantstrat/demo Message-ID: <20151214131850.D6510186EC5@r-forge.r-project.org> Author: bodanker Date: 2015-12-14 14:18:50 +0100 (Mon, 14 Dec 2015) New Revision: 1727 Modified: pkg/quantstrat/demo/luxor.sample.tradeGraphs.sma.R pkg/quantstrat/demo/luxor.sample.tradeGraphs.timespan.R pkg/quantstrat/demo/rsi.R pkg/quantstrat/demo/signal.RSI.R pkg/quantstrat/demo/signal.SMA.R Log: Check for required packages before running demos Packages rgl, gamlss, and gamlss.util are only Suggests, so check that they're installed before running the demo. Modified: pkg/quantstrat/demo/luxor.sample.tradeGraphs.sma.R =================================================================== --- pkg/quantstrat/demo/luxor.sample.tradeGraphs.sma.R 2015-12-14 13:09:43 UTC (rev 1726) +++ pkg/quantstrat/demo/luxor.sample.tradeGraphs.sma.R 2015-12-14 13:18:50 UTC (rev 1727) @@ -9,6 +9,7 @@ # 3D SMA graph example require(quantstrat) +require(rgl) ### load 'stats' back into .GlobalEnv Modified: pkg/quantstrat/demo/luxor.sample.tradeGraphs.timespan.R =================================================================== --- pkg/quantstrat/demo/luxor.sample.tradeGraphs.timespan.R 2015-12-14 13:09:43 UTC (rev 1726) +++ pkg/quantstrat/demo/luxor.sample.tradeGraphs.timespan.R 2015-12-14 13:18:50 UTC (rev 1727) @@ -9,6 +9,7 @@ # 3D timespan graph example require(quantstrat) +require(rgl) load(paste0( path.package('quantstrat'), Modified: pkg/quantstrat/demo/rsi.R =================================================================== --- pkg/quantstrat/demo/rsi.R 2015-12-14 13:09:43 UTC (rev 1726) +++ pkg/quantstrat/demo/rsi.R 2015-12-14 13:18:50 UTC (rev 1727) @@ -105,9 +105,3 @@ # $Id$ # ############################################################################### - -##### PLACE THIS BLOCK AT END OF DEMO SCRIPT ################### -# book = getOrderBook(port) -# stats = tradeStats(port) -# rets = PortfReturns(acct) -################################################################ Modified: pkg/quantstrat/demo/signal.RSI.R =================================================================== --- pkg/quantstrat/demo/signal.RSI.R 2015-12-14 13:09:43 UTC (rev 1726) +++ pkg/quantstrat/demo/signal.RSI.R 2015-12-14 13:18:50 UTC (rev 1727) @@ -7,6 +7,7 @@ # Load Packages: require(iterators) require(quantstrat) +require(gamlss.util) # depends on gamlss suppressWarnings(rm("order_book.RSI",pos=.strategy)) suppressWarnings(rm("account.RSI","portfolio.RSI",pos=.blotter)) Modified: pkg/quantstrat/demo/signal.SMA.R =================================================================== --- pkg/quantstrat/demo/signal.SMA.R 2015-12-14 13:09:43 UTC (rev 1726) +++ pkg/quantstrat/demo/signal.SMA.R 2015-12-14 13:18:50 UTC (rev 1727) @@ -7,6 +7,7 @@ # Load Packages: require(iterators) require(quantstrat) +require(gamlss.util) # depends on gamlss ########################################################################### # Configure Date Time Settings @@ -153,9 +154,3 @@ # for full details see the file COPYING # ############################################################################### - -##### PLACE THIS BLOCK AT END OF DEMO SCRIPT ################### -# book = getOrderBook(port) -# stats = tradeStats(port) -# rets = PortfReturns(acct) -################################################################ From noreply at r-forge.r-project.org Fri Dec 25 16:27:56 2015 From: noreply at r-forge.r-project.org (noreply at r-forge.r-project.org) Date: Fri, 25 Dec 2015 16:27:56 +0100 (CET) Subject: [Blotter-commits] r1728 - pkg/quantstrat/R Message-ID: <20151225152756.28572187EB3@r-forge.r-project.org> Author: bodanker Date: 2015-12-25 16:27:55 +0100 (Fri, 25 Dec 2015) New Revision: 1728 Modified: pkg/quantstrat/R/paramsets.R Log: Write more diagnostics when running paramsets Output param.combo number when starting to process each parameter combination. Output same number when finished, so the user can see that specific parameter combination ran without error and returned results. Modified: pkg/quantstrat/R/paramsets.R =================================================================== --- pkg/quantstrat/R/paramsets.R 2015-12-14 13:18:50 UTC (rev 1727) +++ pkg/quantstrat/R/paramsets.R 2015-12-25 15:27:55 UTC (rev 1728) @@ -476,6 +476,8 @@ # now call %dopar% results <- fe %dopar% { + param.combo.num <- rownames(param.combo) + print(paste("Processing param.combo", param.combo.num)) print(param.combo) # doSEQ and doMC make all environments available to the slave, but @@ -504,7 +506,7 @@ result <- list() result$param.combo <- param.combo - result$portfolio.st <- paste(portfolio.st, rownames(param.combo), sep='.') + result$portfolio.st <- paste(portfolio.st, param.combo.num, sep='.') clone.portfolio(portfolio.st, result$portfolio.st) clone.orderbook(portfolio.st, result$portfolio.st) @@ -545,6 +547,10 @@ result$portfolio <- getPortfolio(result$portfolio.st) result$orderbook <- getOrderBook(result$portfolio.st) + # portfolio name has param.combo rowname in suffix, so + # print param.combo number for diagnostics + print(paste("Returning results for param.combo", param.combo.num)) + return(result) } From noreply at r-forge.r-project.org Sat Dec 26 20:19:52 2015 From: noreply at r-forge.r-project.org (noreply at r-forge.r-project.org) Date: Sat, 26 Dec 2015 20:19:52 +0100 (CET) Subject: [Blotter-commits] r1729 - pkg/quantstrat/R Message-ID: <20151226191952.E258A187ED4@r-forge.r-project.org> Author: bodanker Date: 2015-12-26 20:19:52 +0100 (Sat, 26 Dec 2015) New Revision: 1729 Modified: pkg/quantstrat/R/paramsets.R pkg/quantstrat/R/signals.R Log: Fix signal analysis with only one distribution The signal analysis code would only run the first distribution value if there is only one distribution, because it subset a data.frame with only a value for 'i'. If there's only one distrubtion, there's only one column in the data.frame, so subsetting by 'i' returns a vector. Add a check in install.param.combo to throw an error if it is passed a vector instead of an object with a dim attribute. Modified: pkg/quantstrat/R/paramsets.R =================================================================== --- pkg/quantstrat/R/paramsets.R 2015-12-25 15:27:55 UTC (rev 1728) +++ pkg/quantstrat/R/paramsets.R 2015-12-26 19:19:52 UTC (rev 1729) @@ -151,6 +151,10 @@ install.param.combo <- function(strategy, param.combo, paramset.label) { + if (is.null(dim(param.combo))) { + stop("'param.combo' must have a dim attribute") + } + for(param.label in colnames(param.combo)) { distribution <- strategy$paramsets[[paramset.label]]$distributions[[param.label]] Modified: pkg/quantstrat/R/signals.R =================================================================== --- pkg/quantstrat/R/signals.R 2015-12-25 15:27:55 UTC (rev 1728) +++ pkg/quantstrat/R/signals.R 2015-12-26 19:19:52 UTC (rev 1729) @@ -472,7 +472,7 @@ # Loop through each symbol # TODO: parallelize it for(i in 1:nrow(param.combos)){ # param.combo = param.combos[1,] - param.combo = param.combos[i,] + param.combo <- param.combos[i,,drop=FALSE] if(verbose)cat("Applying Parameter Set: ",toString(param.combo),'\n')